diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 61ab4774b..58c74e1c0 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -623,7 +623,7 @@ if ($dir == 'uscita' && $fattura->isFE()) { '.tr('Per allegare un documento alla fattura elettronica caricare il file PDF specificando come categoria "Fattura Elettronica"').'.'; +
'.tr('Per allegare un documento alla fattura elettronica caricare il file PDF specificando come categoria "Allegati Fattura Elettronica"').'.
'; } echo ' diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index 0bc875cf1..4405fb006 100644 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -526,7 +526,7 @@ class Fattura extends Document public function getBollo() { if (isset($this->bollo)) { - return $this->bollo; + return $this->bollo; } $righe_bollo = $this->getRighe()->filter(function ($item, $key) { @@ -548,7 +548,7 @@ class Fattura extends Document return $marca_da_bollo; } - protected function manageRigaMarcaDaBollo() + public function manageRigaMarcaDaBollo() { $riga = $this->rigaBollo; diff --git a/modules/partitario/edit.php b/modules/partitario/edit.php index ee837ad5f..3457d14ed 100644 --- a/modules/partitario/edit.php +++ b/modules/partitario/edit.php @@ -288,6 +288,8 @@ function add_conto(id) { } function load_movimenti(selector, id_conto) { + $("#main_loading").show(); + $.ajax({ url: "'.$structure->fileurl('dettagli_conto.php').'", type: "get", @@ -297,8 +299,9 @@ function load_movimenti(selector, id_conto) { }, success: function(data){ $("#" + selector).html(data); - $("#" + selector).slideToggle(); + + $("#main_loading").fadeOut(); } }); } diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 3c0978810..89f576a2d 100644 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -1195,7 +1195,7 @@ class FatturaElettronica // Inclusione foreach ($allegati as $allegato) { - if ($allegato['category'] == 'Fattura Elettronica' && $allegato['name'] != 'Stampa allegata') { + if ($allegato['category'] == 'Allegati Fattura Elettronica') { $file = DOCROOT.'/'.$directory.'/'.$allegato['filename']; $attachments[] = [ diff --git a/src/HTMLBuilder/Manager/FileManager.php b/src/HTMLBuilder/Manager/FileManager.php index d0f8bd267..be2f50dfb 100644 --- a/src/HTMLBuilder/Manager/FileManager.php +++ b/src/HTMLBuilder/Manager/FileManager.php @@ -42,7 +42,7 @@ class FileManager implements ManagerInterface

'.tr('Allegati').'

-
'.tr('Caricamento...').'
'; +
'.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') {