fetchArray('SELECT id, bollo, split_payment FROM co_documenti'); foreach ($fatture as $fattura) { $bollo = $fattura['bollo']; if (empty($bollo)) { if (empty($fattura['split_payment'])) { $totale = 'subtotale - sconto + iva + rivalsainps'; } else { $totale = 'subtotale - sconto + rivalsainps'; } $righe = $database->fetchArray('SELECT ('.$totale.') AS netto FROM co_righe_documenti INNER JOIN co_iva ON co_iva.id = co_righe_documenti.idiva WHERE iddocumento = '.prepare($fattura['id'])." AND codice_natura_fe IN ('N1', 'N2', 'N3', 'N4')"); $totale = sum(array_column($righe, 'netto')); $importo_bollo = setting('Importo marca da bollo'); if (abs($importo_bollo) > 0 && abs($totale) > setting("Soglia minima per l'applicazione della marca da bollo")) { $bollo = $importo_bollo; } } $bollo = floatval($bollo); if ($bollo > 0) { $fatture = $database->query( 'insert into `co_righe_documenti` (`iddocumento`, `order`, `descrizione`, `um`, `idiva`, `idconto`, `calcolo_ritenuta_acconto`, `idritenutaacconto`, `ritenuta_contributi`, `idrivalsainps`, `prezzo_unitario_acquisto`, `sconto_unitario`, `tipo_sconto`, `qta`, `data_inizio_periodo`, `data_fine_periodo`, `riferimento_amministrazione`, `tipo_cessione_prestazione`, `ritenutaacconto`, `rivalsainps`, `subtotale`, `sconto`, `iva`, `desc_iva`, `iva_indetraibile`, `created_at`) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', [ 0 => $fattura['id'], 1 => 0, 2 => 'Marca da bollo', 3 => null, 4 => '110', 5 => '99', 6 => null, 7 => null, 8 => false, 9 => null, 10 => 0, 11 => 0.0, 12 => 'PRC', 13 => 1.0, 14 => null, 15 => null, 16 => '', 17 => '', 18 => 0.0, 19 => 0.0, 20 => $bollo, 21 => 0.0, 22 => 0.0, 23 => 'Escluso art. 15', 24 => 0.0, 25 => '2020-10-17 10:00:00', ]); $id_riga_bollo = $database->lastInsertedId(); $database->query('UPDATE co_documenti SET id_riga_bollo = '.prepare($id_riga_bollo).' WHERE id = '.prepare($fattura['id'])); } } // Fix per le relazioni tariffe-tecnici $tecnici = $database->fetchArray("SELECT DISTINCT(an_anagrafiche.idanagrafica) AS id FROM an_anagrafiche INNER JOIN an_tipianagrafiche ON an_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica = an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE an_tipianagrafiche.descrizione = 'Tecnico'"); foreach ($tecnici as $tecnico) { $presenti = $database->fetchArray('SELECT idtipointervento AS id FROM in_tariffe WHERE idtecnico = '.prepare($tecnico['id'])); // Aggiunta associazioni costi unitari al contratto $query = 'SELECT in_tipiintervento.*, in_tipiintervento.idtipointervento AS id FROM in_tipiintervento'; $elenco_presenti = array_column($presenti, 'id'); if (!empty($elenco_presenti)) { $query .= ' WHERE idtipointervento NOT IN ('.implode(', ', $elenco_presenti).')'; } $tipi = $database->fetchArray($query); foreach ($tipi as $tipo) { $database->insert('in_tariffe', [ 'idtecnico' => $tecnico['id'], 'idtipointervento' => $tipo['id'], 'costo_ore' => $tipo['costo_orario'], 'costo_km' => $tipo['costo_km'], 'costo_dirittochiamata' => $tipo['costo_diritto_chiamata'], 'costo_ore_tecnico' => $tipo['costo_orario_tecnico'], 'costo_km_tecnico' => $tipo['costo_km_tecnico'], 'costo_dirittochiamata_tecnico' => $tipo['costo_diritto_chiamata_tecnico'], ]); } } // Spostamento automezzi su sedi $automezzi = $database->fetchArray('SELECT * FROM dt_automezzi'); foreach ($automezzi as $automezzo) { $nomesede = []; (!empty($automezzo['nome'])) ? $nomesede[] = $automezzo['nome'] : null; (!empty($automezzo['descrizione'])) ? $nomesede[] = $automezzo['descrizione'] : null; (!empty($automezzo['targa'])) ? $nomesede[] = $automezzo['targa'] : null; $database->insert( 'an_sedi', [ 'nomesede' => implode(' - ', $nomesede), 'idanagrafica' => setting('Azienda predefinita'), ] ); $idsede = $database->lastInsertedId(); // Aggiornamento sede di partenza su $database->update( 'in_interventi', [ 'idsede_partenza' => $idsede, ], [ 'idautomezzo' => $automezzo['id'], ] ); } // Aggiornamento della sede azienda nei movimenti degli interventi $database->query('UPDATE mg_movimenti SET idsede_azienda=(SELECT idsede_partenza FROM in_interventi WHERE in_interventi.id=mg_movimenti.idintervento) WHERE idintervento IS NOT NULL'); // Cancellazione idautomezzo da mg_movimenti e in_interventi $database->query('ALTER TABLE in_interventi DROP idautomezzo'); $database->query('ALTER TABLE mg_movimenti DROP idautomezzo'); $database->query('ALTER TABLE co_promemoria_articoli DROP idautomezzo'); $database->query('ALTER TABLE co_righe_documenti DROP idautomezzo'); $database->query('ALTER TABLE mg_articoli_interventi DROP idautomezzo'); // Eliminazione tabelle degli automezzi non piĆ¹ usate $database->query('DROP TABLE mg_articoli_automezzi'); $database->query('DROP TABLE dt_automezzi'); $database->query('DROP TABLE dt_automezzi_tecnici'); $database->query('DELETE FROM zz_modules WHERE name="Automezzi"'); //Rimuovo il codice come indice per in_interventi $database->query('ALTER TABLE `in_interventi` DROP INDEX `codice`'); // File e cartelle deprecate $files = [ 'modules\automezzi', 'modules\anagrafiche\plugins\statistiche.php', 'modules\interventi\src\TipoSessione.php', 'templates\registro_iva\body.php', 'templates\registro_iva\header.php', 'templates\scadenzario\scadenzario.html', 'templates\scadenzario\scadenzario_body.html', 'templates\scadenzario\pdfgen.scadenzario.php', ]; foreach ($files as $key => $value) { $files[$key] = realpath(base_dir().'/'.$value); } delete($files);