'.tr('Caricamento...').'
';
}
$count = 0;
diff --git a/update/2_4_10.php b/update/2_4_10.php
index 8e85adefe..306c65f1e 100644
--- a/update/2_4_10.php
+++ b/update/2_4_10.php
@@ -5,7 +5,7 @@ use Modules\Anagrafiche\Anagrafica;
// Fix del calcolo del bollo
$fatture = \Modules\Fatture\Fattura::all();
foreach ($fatture as $fattura) {
- $fattura->save();
+ $fattura->manageRigaMarcaDaBollo();
}
// Fix per le relazioni tariffe-tecnici
diff --git a/update/2_4_10.sql b/update/2_4_10.sql
index 63a17bcd2..57a3cbbd3 100644
--- a/update/2_4_10.sql
+++ b/update/2_4_10.sql
@@ -254,3 +254,16 @@ UPDATE `zz_prints` SET `filename` = 'Stampa calendario {periodo}' WHERE `name` =
-- Aggiornamento Statistiche delle Anagrafiche
UPDATE `zz_plugins` SET `options` = 'custom', `directory` = 'statistiche_anagrafiche', `script` = '' WHERE `name` = 'Statistiche' AND `idmodule_from` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Anagrafiche');
+
+-- Fix sconti globali
+UPDATE `co_righe_documenti` SET `sconto` = -`subtotale`, `sconto_unitario` = -`subtotale` WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `co_righe_preventivi` SET `sconto` = -`subtotale`, `sconto_unitario` = -`subtotale` WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `co_righe_contratti` SET `sconto` = -`subtotale`, `sconto_unitario` = -`subtotale` WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `or_righe_ordini` SET `sconto` = -`subtotale`, `sconto_unitario` = -`subtotale` WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `dt_righe_ddt` SET `sconto` = -`subtotale`, `sconto_unitario` = -`subtotale` WHERE `is_sconto` = 1 AND `subtotale` != 0;
+
+UPDATE `co_righe_documenti` SET `subtotale` = 0 WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `co_righe_preventivi` SET `subtotale` = 0 WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `co_righe_contratti` SET `subtotale` = 0 WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `or_righe_ordini` SET `subtotale` = 0 WHERE `is_sconto` = 1 AND `subtotale` != 0;
+UPDATE `dt_righe_ddt` SET `subtotale` = 0 WHERE `is_sconto` = 1 AND `subtotale` != 0;
diff --git a/update/2_4_9.php b/update/2_4_9.php
index 5a34bc964..cf6934be4 100644
--- a/update/2_4_9.php
+++ b/update/2_4_9.php
@@ -1,7 +1,168 @@
fetchArray('SELECT descrizione, percentuale, indetraibile FROM co_iva WHERE id='.prepare($idiva));
+
+ $tecnici = $dbo->fetchArray('SELECT
+
+ COALESCE(SUM(
+ ROUND(prezzo_ore_unitario_tecnico*ore, '.$decimals.')
+ ), 0) AS manodopera_costo,
+ COALESCE(SUM(
+ ROUND(prezzo_ore_unitario*ore, '.$decimals.')
+ ), 0) AS manodopera_addebito,
+ COALESCE(SUM(
+ ROUND(prezzo_ore_unitario*ore, '.$decimals.') - ROUND(sconto, '.$decimals.')
+ ), 0) AS manodopera_scontato,
+
+
+ COALESCE(SUM(
+ ROUND(prezzo_dirittochiamata_tecnico, '.$decimals.')
+ ), 0) AS dirittochiamata_costo,
+ COALESCE(SUM(
+ ROUND(prezzo_dirittochiamata, '.$decimals.')
+ ), 0) AS dirittochiamata_addebito,
+ COALESCE(SUM(
+ ROUND(prezzo_dirittochiamata, '.$decimals.')
+ ), 0) AS dirittochiamata_scontato,
+
+ COALESCE(SUM(
+ ROUND(prezzo_km_consuntivo_tecnico, '.$decimals.')
+ ), 0) AS viaggio_costo,
+ COALESCE(SUM(
+ ROUND(prezzo_km_consuntivo, '.$decimals.')
+ ), 0) viaggio_addebito,
+ COALESCE(SUM(
+ ROUND(prezzo_km_consuntivo, '.$decimals.') - ROUND(scontokm, '.$decimals.')
+ ), 0) AS viaggio_scontato
+
+ FROM in_interventi_tecnici WHERE idintervento='.prepare($id_intervento));
+
+ $articoli = $dbo->fetchArray('SELECT
+ COALESCE(SUM(
+ ROUND(prezzo_acquisto, '.$decimals.') * ROUND(qta, '.$decimals.')
+ ), 0) AS ricambi_costo,
+ COALESCE(SUM(
+ ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.')
+ ), 0) AS ricambi_addebito,
+ COALESCE(SUM(
+ ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.')
+ ), 0) AS ricambi_scontato,
+ ROUND(
+ (SELECT percentuale FROM co_iva WHERE co_iva.id=mg_articoli_interventi.idiva), '.$decimals.'
+ ) AS ricambi_iva
+
+ FROM mg_articoli_interventi WHERE idintervento='.prepare($id_intervento));
+
+ $altro = $dbo->fetchArray('SELECT
+ COALESCE(SUM(
+ ROUND(prezzo_acquisto, '.$decimals.') * ROUND(qta, '.$decimals.')
+ ), 0) AS altro_costo,
+ COALESCE(SUM(
+ ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.')
+ ), 0) AS altro_addebito,
+ COALESCE(SUM(
+ ROUND(prezzo_vendita, '.$decimals.') * ROUND(qta, '.$decimals.') - ROUND(sconto, '.$decimals.')
+ ), 0) AS altro_scontato,
+ ROUND(
+ (SELECT percentuale FROM co_iva WHERE co_iva.id=in_righe_interventi.idiva), '.$decimals.'
+ ) AS altro_iva
+
+ FROM in_righe_interventi WHERE idintervento='.prepare($id_intervento));
+
+ $result = array_merge($tecnici[0], $articoli[0], $altro[0]);
+
+ $result['totale_costo'] = sum([
+ $result['manodopera_costo'],
+ $result['dirittochiamata_costo'],
+ $result['viaggio_costo'],
+ $result['ricambi_costo'],
+ $result['altro_costo'],
+ ]);
+
+ $result['totale_addebito'] = sum([
+ $result['manodopera_addebito'],
+ $result['dirittochiamata_addebito'],
+ $result['viaggio_addebito'],
+ $result['ricambi_addebito'],
+ $result['altro_addebito'],
+ ]);
+
+ $result['totale_scontato'] = sum([
+ $result['manodopera_scontato'],
+ $result['dirittochiamata_scontato'],
+ $result['viaggio_scontato'],
+ $result['ricambi_scontato'],
+ $result['altro_scontato'],
+ ]);
+
+ $result['iva_costo'] = sum([
+ $result['manodopera_costo'] * $rs_iva[0]['percentuale'] / 100,
+ $result['dirittochiamata_costo'] * $rs_iva[0]['percentuale'] / 100,
+ $result['viaggio_costo'] * $rs_iva[0]['percentuale'] / 100,
+ $result['ricambi_costo'] * $result['ricambi_iva'] / 100,
+ $result['altro_costo'] * $result['altro_iva'] / 100,
+ ]);
+
+ $result['iva_addebito'] = sum([
+ $result['manodopera_addebito'] * $rs_iva[0]['percentuale'] / 100,
+ $result['dirittochiamata_addebito'] * $rs_iva[0]['percentuale'] / 100,
+ $result['viaggio_addebito'] * $rs_iva[0]['percentuale'] / 100,
+ $result['ricambi_addebito'] * $result['ricambi_iva'] / 100,
+ $result['altro_addebito'] * $result['altro_iva'] / 100,
+ ]);
+
+ $result['iva_totale'] = sum([
+ $result['manodopera_scontato'] * $rs_iva[0]['percentuale'] / 100,
+ $result['dirittochiamata_scontato'] * $rs_iva[0]['percentuale'] / 100,
+ $result['viaggio_scontato'] * $rs_iva[0]['percentuale'] / 100,
+ $result['ricambi_scontato'] * $result['ricambi_iva'] / 100,
+ $result['altro_scontato'] * $result['altro_iva'] / 100,
+ ]);
+
+ $result['totaleivato_costo'] = sum([
+ $result['manodopera_costo'] + ($result['manodopera_costo'] * $rs_iva[0]['percentuale'] / 100),
+ $result['dirittochiamata_costo'] + ($result['dirittochiamata_costo'] * $rs_iva[0]['percentuale'] / 100),
+ $result['viaggio_costo'] + ($result['viaggio_costo'] * $rs_iva[0]['percentuale'] / 100),
+ $result['ricambi_costo'] + ($result['ricambi_costo'] * $result['ricambi_iva'] / 100),
+ $result['altro_costo'] + ($result['altro_costo'] * $result['altro_iva'] / 100),
+ ]);
+
+ $result['totaleivato_addebito'] = sum([
+ $result['manodopera_addebito'] + ($result['manodopera_addebito'] * $rs_iva[0]['percentuale'] / 100),
+ $result['dirittochiamata_addebito'] + ($result['dirittochiamata_addebito'] * $rs_iva[0]['percentuale'] / 100),
+ $result['viaggio_addebito'] + ($result['viaggio_addebito'] * $rs_iva[0]['percentuale'] / 100),
+ $result['ricambi_addebito'] + ($result['ricambi_addebito'] * $result['ricambi_iva'] / 100),
+ $result['altro_addebito'] + ($result['altro_addebito'] * $result['altro_iva'] / 100),
+ ]);
+
+ $result['totale'] = sum([
+ $result['manodopera_scontato'] + ($result['manodopera_scontato'] * $rs_iva[0]['percentuale'] / 100),
+ $result['dirittochiamata_scontato'] + ($result['dirittochiamata_scontato'] * $rs_iva[0]['percentuale'] / 100),
+ $result['viaggio_scontato'] + ($result['viaggio_scontato'] * $rs_iva[0]['percentuale'] / 100),
+ $result['ricambi_scontato'] + ($result['ricambi_scontato'] * $result['ricambi_iva'] / 100),
+ $result['altro_scontato'] + ($result['altro_scontato'] * $result['altro_iva'] / 100),
+ ]);
+
+ // Calcolo dello sconto incondizionato
+ $sconto = $dbo->fetchArray('SELECT sconto_globale, tipo_sconto_globale FROM in_interventi WHERE id='.prepare($id_intervento))[0];
+ $result['sconto_globale'] = ($sconto['tipo_sconto_globale'] == 'PRC') ? $result['totale_scontato'] * $sconto['sconto_globale'] / 100 : $sconto['sconto_globale'];
+ $result['sconto_globale'] = round($result['sconto_globale'], $decimals);
+
+ $result['totale_scontato'] = sum($result['totale_scontato'], -$result['sconto_globale']);
+ $result['iva_totale'] = sum($result['iva_totale'], -($result['sconto_globale'] * $rs_iva[0]['percentuale'] / 100));
+ $result['totale'] = sum($result['totale'], -($result['sconto_globale'] + ($result['sconto_globale'] * $rs_iva[0]['percentuale'] / 100)));
+
+ return $result;
+}
// Aggiornamento sconti incodizionati per Interventi
$id_iva = setting('Iva predefinita');
@@ -9,7 +170,7 @@ $iva = $dbo->fetchOne('SELECT * FROM co_iva WHERE id='.prepare($id_iva));
$interventi = $dbo->fetchArray('SELECT * FROM in_interventi WHERE sconto_globale != 0 AND sconto_globale != NULL');
foreach ($interventi as $intervento) {
- $costi = get_costi_intervento($intervento['id']);
+ $costi = get_costi_intervento_fix($intervento['id']);
$sconto_globale = $costi['sconto_globale'];
if ($intervento['tipo_sconto_globale'] == 'PRC') {