From 523f2591776e22913c7a5e3c259bcb25eecdc201 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Thu, 11 Jul 2019 18:10:38 +0200 Subject: [PATCH] Correzione stampa fatture --- include/src/Components/Discount.php | 10 ++++ modules/contratti/row-list.php | 2 +- modules/ddt/row-list.php | 2 +- modules/fatture/row-list.php | 4 +- modules/ordini/row-list.php | 2 +- modules/preventivi/row-list.php | 2 +- templates/contratti/body.php | 4 +- templates/fatture/body.php | 81 ++++------------------------- templates/fatture/footer.php | 26 ++++++--- 9 files changed, 47 insertions(+), 86 deletions(-) diff --git a/include/src/Components/Discount.php b/include/src/Components/Discount.php index 9faf30fdd..502a162db 100644 --- a/include/src/Components/Discount.php +++ b/include/src/Components/Discount.php @@ -24,6 +24,16 @@ abstract class Discount extends Row return $this->attributes['iva']; } + public function isSconto() + { + return $this->totale_imponibile > 0; + } + + public function isMaggiorazione() + { + return !$this->isSconto(); + } + /** * Effettua i conti per l'IVA. */ diff --git a/modules/contratti/row-list.php b/modules/contratti/row-list.php index 03d8d9a05..4bf5b5097 100644 --- a/modules/contratti/row-list.php +++ b/modules/contratti/row-list.php @@ -164,7 +164,7 @@ if (abs($sconto) > 0) { echo ' - '.tr('Sconto', [], ['upper' => true]).': + '.tr('Sconto/maggiorazione', [], ['upper' => true]).': '.moneyFormat($sconto, 2).' diff --git a/modules/ddt/row-list.php b/modules/ddt/row-list.php index 822e9bc36..67aad66d9 100644 --- a/modules/ddt/row-list.php +++ b/modules/ddt/row-list.php @@ -231,7 +231,7 @@ if (abs($sconto) > 0) { echo ' - '.tr('Sconto', [], ['upper' => true]).': + '.tr('Sconto/maggiorazione', [], ['upper' => true]).': diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php index 8d37080c0..38cfcb4ed 100644 --- a/modules/fatture/row-list.php +++ b/modules/fatture/row-list.php @@ -188,7 +188,7 @@ foreach ($righe as $row) { echo ' '.moneyFormat($row->prezzo_unitario_vendita); - if ($dir == 'entrata') { + if ($dir == 'entrata' && $row->prezzo_unitario_acquisto != 0) { echo '
'.tr('Acquisto').': '.moneyFormat($row->prezzo_unitario_acquisto).' @@ -308,7 +308,7 @@ if (!empty($sconto)) { echo ' - '.tr('Sconto', [], ['upper' => true]).': + '.tr('Sconto/maggiorazione', [], ['upper' => true]).': '.moneyFormat($sconto, 2).' diff --git a/modules/ordini/row-list.php b/modules/ordini/row-list.php index 95d6cf2ff..1e3dea0c6 100644 --- a/modules/ordini/row-list.php +++ b/modules/ordini/row-list.php @@ -224,7 +224,7 @@ if (abs($sconto) > 0) { echo ' - '.tr('Sconto', [], ['upper' => true]).': + '.tr('Sconto/maggiorazione', [], ['upper' => true]).': '.moneyFormat($sconto, 2).' diff --git a/modules/preventivi/row-list.php b/modules/preventivi/row-list.php index c0973ed99..c96fb609a 100644 --- a/modules/preventivi/row-list.php +++ b/modules/preventivi/row-list.php @@ -167,7 +167,7 @@ if (abs($sconto) > 0) { echo ' - '.tr('Sconto', [], ['upper' => true]).': + '.tr('Sconto/maggiorazione', [], ['upper' => true]).': '.moneyFormat($sconto, 2).' diff --git a/templates/contratti/body.php b/templates/contratti/body.php index 86458b633..de103d689 100644 --- a/templates/contratti/body.php +++ b/templates/contratti/body.php @@ -187,7 +187,7 @@ echo ' // TOTALE COSTI FINALI if ($options['pricing']) { // Eventuale sconto incondizionato - if (!empty($sconto)) { + if ($sconto > 0) { // Totale imponibile echo ' @@ -207,7 +207,7 @@ if ($options['pricing']) { - -'.moneyFormat($sconto, 2).' + '.moneyFormat($sconto, 2).' '; } diff --git a/templates/fatture/body.php b/templates/fatture/body.php index 7fffd9a40..03d51f0a6 100644 --- a/templates/fatture/body.php +++ b/templates/fatture/body.php @@ -13,10 +13,6 @@ $autofill = [ $v_iva = []; $v_totale = []; -$sconto = []; -$imponibile = []; -$iva = []; - // Intestazione tabella per righe echo " @@ -43,35 +39,20 @@ echo " '; // RIGHE FATTURA CON ORDINAMENTO UNICO -$righe = $dbo->fetchArray("SELECT *, - IFNULL((SELECT `codice` FROM `mg_articoli` WHERE `id` = `co_righe_documenti`.`idarticolo`), '') AS codice_articolo, - (SELECT GROUP_CONCAT(`serial` SEPARATOR ', ') FROM `mg_prodotti` WHERE `id_riga_documento` = `co_righe_documenti`.`id`) AS seriali, - (SELECT `percentuale` FROM `co_iva` WHERE `id` = `co_righe_documenti`.`idiva`) AS perc_iva -FROM `co_righe_documenti` WHERE `iddocumento` = ".prepare($id_record).' ORDER BY `order`'); -foreach ($righe as $r) { +$righe = $fattura->getRighe(); +foreach ($righe as $riga) { + $r = $riga->toArray(); $count = 0; $count += ceil(strlen($r['descrizione']) / $autofill['words']); $count += substr_count($r['descrizione'], PHP_EOL); $v_iva[$r['desc_iva']] = sum($v_iva[$r['desc_iva']], $r['iva']); - $v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], [ - $r['subtotale'], -$r['sconto'], - ]); + $v_totale[$r['desc_iva']] = sum($v_totale[$r['desc_iva']], $riga->totale_imponibile); // Valori assoluti $r['qta'] = abs($r['qta']); - if (empty($r['sconto_globale'])) { - $r['subtotale'] = abs($r['subtotale']); - } else { - $r['subtotale'] = ($r['subtotale']); - } $r['sconto_unitario'] = abs($r['sconto_unitario']); $r['sconto'] = abs($r['sconto']); - if (empty($r['sconto_globale'])) { - $r['iva'] = abs($r['iva']); - } else { - $r['iva'] = ($r['iva']); - } echo ' @@ -148,13 +129,13 @@ foreach ($righe as $r) { '; @@ -191,9 +160,9 @@ foreach ($righe as $r) { // Iva echo ' @@ -250,31 +219,3 @@ echo ' '; echo '
"; if (empty($r['is_descrizione'])) { echo ' - '.(empty($r['qta']) ? '' : moneyFormat($r['subtotale'] / $r['qta'])); + '.(empty($r['qta']) ? '' : moneyFormat($riga->prezzo_unitario_vendita)); - if ($r['sconto'] > 0) { + if ($riga->sconto > 0) { echo "
".tr('sconto _TOT_ _TYPE_', [ - '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), - '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : currency()), + '_TOT_' => Translator::numberToLocale($riga->sconto_unitario), + '_TYPE_' => ($riga->tipo_sconto == 'PRC' ? '%' : currency()), ]).''; if ($count <= 1) { @@ -171,19 +152,7 @@ foreach ($righe as $r) {
"; if (empty($r['is_descrizione'])) { echo ' - '.moneyFormat($r['subtotale'] - $r['sconto']); - - if ($r['sconto'] > 0) { - /*echo " -
".tr('sconto _TOT_ _TYPE_', [ - '_TOT_' => Translator::numberToLocale($r['sconto']), - '_TYPE_' => currency(), - ]).'';*/ - - if ($count <= 1) { - $count += 0.4; - } - } + '.moneyFormat($riga->totale_imponibile); } echo '
'; - if (empty($r['is_descrizione']) && empty($r['sconto_globale'])) { + if (empty($r['is_descrizione'])) { echo ' - '.Translator::numberToLocale($r['perc_iva'], 0); + '.Translator::numberToLocale($riga->aliquota->percentuale, 0); } echo '
'; - -// Calcoli -$imponibile = sum(array_column($righe, 'subtotale')); -$sconto = sum(array_column($righe, 'sconto')); -$iva = sum(array_column($righe, 'iva')); - -$totale_imponibile = sum($imponibile, -$sconto); - -$totale_iva = sum($iva, $record['iva_rivalsainps']); - -$totale = sum([ - $totale_imponibile, - $record['rivalsainps'], - $totale_iva, -]); - -$netto_a_pagare = sum([ - $totale, - -$record['ritenutaacconto'], -]); - -$imponibile = abs($imponibile); -$sconto = abs($sconto); -$iva = abs($iva); -$totale_imponibile = abs($totale_imponibile); -$totale_iva = abs($totale_iva); -$totale = abs($totale); -$netto_a_pagare = abs($netto_a_pagare); diff --git a/templates/fatture/footer.php b/templates/fatture/footer.php index 5bb7c9c02..c9d65c197 100644 --- a/templates/fatture/footer.php +++ b/templates/fatture/footer.php @@ -1,11 +1,22 @@ imponibile; +$sconto = $fattura->sconto; +$totale_imponibile = $fattura->totale_imponibile; +$totale_iva = $fattura->iva; +$totale = $fattura->totale; +$netto_a_pagare = $fattura->netto; + +$show_sconto = $sconto > 0; +$width = round(100 / ($show_sconto ? 5 : 3), 2); + // SCADENZE | TOTALI // TABELLA PRINCIPALE echo " - - "; + '; // Fine tabelle iva echo ' @@ -102,14 +113,13 @@ echo ' '; // TOTALI -$width = round(100 / (!empty($sconto) ? 5 : 3), 2); echo " '; -if (!empty($sconto)) { +if ($show_sconto) { echo " '; -if (!empty($sconto)) { +if ($show_sconto) { echo " '; }
"; + "; // Tabella (scadenze + iva) echo " @@ -92,7 +103,7 @@ if (!empty($v_iva)) { echo '   
".tr('Imponibile', [], ['upper' => true]).' ".tr('Sconto', [], ['upper' => true])." @@ -132,18 +142,18 @@ echo "
- ".moneyFormat($imponibile, 2).' + ".moneyFormat($show_sconto ? $imponibile : $totale_imponibile, 2).' - ".moneyFormat($sconto, 2)." + ".moneyFormat(abs($sconto), 2)." - ".moneyFormat($imponibile - $sconto, 2).' + ".moneyFormat($totale_imponibile, 2).'