diff --git a/lib/functions.php b/lib/functions.php index ba558ec02..f3feb8b14 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -797,7 +797,7 @@ function sum($first, $second = null, $decimals = null) } } - return $result; + return floatval($result); } function redirectOperation($id_module, $id_record) diff --git a/templates/base/style.css b/templates/base/style.css index b9cea9058..0043f9833 100644 --- a/templates/base/style.css +++ b/templates/base/style.css @@ -8,6 +8,7 @@ p { margin: 0px; } +.text-bold, .small-bold { font-weight: bold; } @@ -42,10 +43,24 @@ table.table-bordered thead tr:nth-child(2) th { small, .small, .small-bold, -table.table-bordered>th { +table.table-bordered thead th, +table#contents thead th { font-size: 70%; } +table.table-normal, +table.table-normal td, +table.table-normal th { + border: 0; +} + +table.border-bottom, +table.border-bottom td, +table.border-bottom th { + border: 0; + border-bottom: 1px solid #aaa; +} + table.table-bordered, table.table-bordered td, table.table-bordered th { @@ -63,10 +78,6 @@ table#contents tbody td { border-bottom: 0; } -table#contents thead th { - font-size: 80%; -} - .row, .col-xs-1, .col-xs-2, diff --git a/templates/contratti/body.php b/templates/contratti/body.php index 4d0bdf9d1..069be024c 100644 --- a/templates/contratti/body.php +++ b/templates/contratti/body.php @@ -208,7 +208,7 @@ $pagamento = $rs[0]['descrizione']; echo ' - diff --git a/templates/ddt/body.php b/templates/ddt/body.php index 907002ec4..44bf8ac59 100644 --- a/templates/ddt/body.php +++ b/templates/ddt/body.php @@ -9,17 +9,12 @@ $autofill = [ 'words' => 70, 'rows' => 16, 'additional' => 15, - 'columns' => $mostra_prezzi ? 6 : 2, + 'columns' => $mostra_prezzi ? 5 : 2, ]; -$v_iva = []; -$v_totale = []; - -$totale_ddt = 0.00; -$totale_imponibile = 0.00; -$totale_iva = 0.00; -$sconto = 0.00; -$sconto_generico = 0.00; +$imponibile = []; +$iva = []; +$sconto = []; // Intestazione tabella per righe echo " @@ -27,14 +22,13 @@ echo " - '; + '; if ($mostra_prezzi) { echo " - - '; + '; } echo ' @@ -44,81 +38,77 @@ if ($mostra_prezzi) { '; // Righe -$rs_gen = $dbo->fetchArray("SELECT *, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `dt_righe_ddt` WHERE idddt='$idddt'"); -$imponibile_gen = 0.0; -$iva_gen = 0.0; - +$rs_gen = $dbo->fetchArray('SELECT *, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva, IFNULL((SELECT peso_lordo FROM mg_articoli WHERE id=idarticolo),0) AS peso_lordo, IFNULL((SELECT volume FROM mg_articoli WHERE id=idarticolo),0) AS volume FROM `dt_righe_ddt` WHERE idddt='.prepare($idddt)); foreach ($rs_gen as $r) { - $autofill['count'] += ceil(strlen($r['descrizione']) / $autofill['words']); - $autofill['count'] += substr_count($r['descrizione'], PHP_EOL); + $count = 0; + $count += ceil(strlen($r['descrizione']) / $autofill['words']); + $count += substr_count($r['descrizione'], PHP_EOL); - $descrizione = $r['descrizione']; - $qta = $r['qta']; - $subtot = $r['subtotale'] / $r['qta']; - $subtotale = $r['subtotale']; - $sconto = $r['sconto']; - $iva = $r['iva']; + echo ' + + - '; - - echo " - '; - - if ($mostra_prezzi) { - echo " - '; - - // Imponibile - echo " - '; - - // Sconto - echo " - '; - - // Iva - echo " - '; - } - echo ' - '; - - $imponibile_gen += $subtotale; - $iva_gen += $iva; - $sconto += $sconto; } + + echo ' + '; + + echo " + '; + + if ($mostra_prezzi) { + echo " + '; + + // Imponibile + echo " + '; + + // Iva + echo " + '; + } + echo ' + '; + + $autofill['count'] += $count; + + $imponibile[] = $r['subtotale']; + $iva[] = $r['iva']; + $sconto[] = $r['sconto']; } echo ' @@ -127,6 +117,10 @@ echo '
+ '.tr('Condizioni generali di fornitura', [], ['upper' => true]).'
".tr('Descrizione', [], ['upper' => true])."".tr('Q.tà', [], ['upper' => true]).'".tr('Q.tà', [], ['upper' => true]).'".tr('Prezzo unitario', [], ['upper' => true])." ".tr('Importo', [], ['upper' => true])."".tr('Sconto', [], ['upper' => true])."".tr('IVA', [], ['upper' => true]).' (%)".tr('IVA', [], ['upper' => true]).' (%)
+ '.nl2br($r['descrizione']); + + // Aggiunta riferimento a ordine + if (!empty($r['idordine'])) { + $rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM or_ordini WHERE id='.prepare($r['idordine'])); + $numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero']; - if (empty($r['sconto_globale'])) { - $sconto_generico = $r['subtotale']; - $iva_gen += $r['iva']; - } else { echo ' -
- '.nl2br($descrizione); +
'.tr('Rif. ordine no_NUM_ del _DATE_', [ + '_NUM_' => $numero, + '_DATE_' => Translator::dateToLocale($rso[0]['data']), + ]).''; - // Aggiunta riferimento a ordine - if (!empty($r['idordine'])) { - $rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM or_ordini WHERE id='.prepare($r['idordine'])); - $numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero']; - echo ' -
'.tr('Rif. ordine no_NUM_ del _DATE_', [ - '_NUM_' => $numero, - '_DATE_' => Translator::dateToLocale($rso[0]['data']), - ]).''; - $autofill['count'] += 0.4; + if ($count <= 1) { + $count += 0.4; } - - echo ' -
- ".Translator::numberToLocale($qta, 2).' - - ".Translator::numberToLocale($subtot, 2).' € - - ".Translator::numberToLocale($subtotale, 2).' € - - ".Translator::numberToLocale($r['sconto_unitario'], 2).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').' - - ".Translator::numberToLocale($r['perc_iva'], 2).' -
+ ".Translator::numberToLocale($r['qta'], 2).' '.$r['um'].' + + ".Translator::numberToLocale($r['subtotale'] / $r['qta'], 2).' € + + ".Translator::numberToLocale($r['subtotale'], 2).' €'; + + if ($r['sconto'] > 0) { + if ($count <= 1) { + $count += 0.4; + } + echo " +
- sconto ".Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; + } + + echo ' +
+ ".Translator::numberToLocale($r['perc_iva'], 2).' +
'; // Info per il footer -$imponibile_ddt = $imponibile_gen; -$totale_iva = $iva_gen; -$totale_ddt = $imponibile_gen; +$imponibile = sum($imponibile) - sum($sconto); +$iva = sum($iva); + +$totale = $imponibile + $iva; + +$volume = sum(array_column($rs_gen, 'volume')); +$peso_lordo = sum(array_column($rs_gen, 'peso_lordo')); diff --git a/templates/ddt/footer.php b/templates/ddt/footer.php index 4975f5201..6051a9bb6 100644 --- a/templates/ddt/footer.php +++ b/templates/ddt/footer.php @@ -21,7 +21,7 @@ if ($mostra_prezzi) { echo " - ".Translator::numberToLocale($imponibile_ddt, 2).' € + ".Translator::numberToLocale($imponibile, 2).' € '; @@ -35,7 +35,7 @@ if ($mostra_prezzi) { - ".Translator::numberToLocale($totale_iva, 2).' € + ".Translator::numberToLocale($iva, 2).' € '; @@ -49,7 +49,7 @@ if ($mostra_prezzi) { - ".Translator::numberToLocale($totale_ddt, 2).' € + ".Translator::numberToLocale($totale, 2).' € '; } else { @@ -66,84 +66,103 @@ if ($mostra_prezzi) { echo ' '; +// Informazioni aggiuntive echo ' - - + + - - - + + + - - - + + - - + - + + +
+ '.tr('Aspetto beni', [], ['upper' => true]).' + + '.tr('No colli', [], ['upper' => true]).' + '.tr('Causale trasporto', [], ['upper' => true]).' + '.tr('Porto', [], ['upper' => true]).'
+ $aspettobeni$   + + + $n_colli$   + $causalet$   $porto$  
- '.tr('No colli', [], ['upper' => true]).' + + '.tr('Peso lordo', [], ['upper' => true]).' - '.tr('Tipo di spedizione', [], ['upper' => true]).' + + '.tr('Volume', [], ['upper' => true]).' + '.tr('Vettore', [], ['upper' => true]).' + '.tr('Tipo di spedizione', [], ['upper' => true]).' +
- $n_colli$   + + '.(!empty($peso_lordo) ? Translator::numberToLocale($peso_lordo) : '').'   - $spedizione$   + + + '.(!empty($volume) ? Translator::numberToLocale($volume) : '').'   $vettore$  
+ $spedizione$   +
'; + +// Firme +echo ' + - - - - - - + + +
+ '.tr('Firma conducente', [], ['upper' => true]).' + '.tr('Firma vettore', [], ['upper' => true]).' + '.tr('Firma destinatario', [], ['upper' => true]).'
-  
  -
-  
  -
-  
  -
'; diff --git a/templates/ddt/header.php b/templates/ddt/header.php index 10c497c57..654cef469 100644 --- a/templates/ddt/header.php +++ b/templates/ddt/header.php @@ -71,7 +71,7 @@ echo '
- - - + - + @@ -38,8 +37,9 @@ echo " // RIGHE FATTURA CON ORDINAMENTO UNICO $righe = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice_articolo, (SELECT percentuale FROM co_iva WHERE id=idiva) AS perc_iva FROM `co_righe_documenti` WHERE iddocumento=".prepare($iddocumento).' ORDER BY `order`'); foreach ($righe as $r) { - $autofill['count'] += ceil(strlen($r['descrizione']) / $autofill['words']); - $autofill['count'] += substr_count($r['descrizione'], PHP_EOL); + $count = 0; + $count += ceil(strlen($r['descrizione']) / $autofill['words']); + $count += substr_count($r['descrizione'], PHP_EOL); echo ' @@ -51,7 +51,6 @@ foreach ($righe as $r) {
'.tr('COD. _COD_', [ '_COD_' => $r['codice_articolo'], ]).''; - $autofill['count'] += 0.4; } // Aggiunta riferimento a ordine @@ -64,7 +63,6 @@ foreach ($righe as $r) { '_NUM_' => $numero, '_DATE_' => Translator::dateToLocale($rso[0]['data']), ]).''; - $autofill['count'] += 0.4; } // Aggiunta riferimento a ddt @@ -77,20 +75,19 @@ foreach ($righe as $r) { '_NUM_' => $numero, '_DATE_' => Translator::dateToLocale($rso[0]['data']), ]).''; - $autofill['count'] += 0.4; } + + // Aumento del conteggio + if ((!empty($r['codice_articolo']) || !empty($r['idordine']) || !empty($r['idddt'])) && $count <= 1) { + $count += 0.4; + } + echo ' '; echo " '; - - // Unità di miusura - echo " - '; // Prezzo unitario @@ -105,7 +102,9 @@ foreach ($righe as $r) { ".(empty($r['subtotale']) ? '' : Translator::numberToLocale($r['subtotale'], 2)).' €'; if ($r['sconto'] > 0) { - $autofill['count'] += 0.4; + if ($count <= 1) { + $count += 0.4; + } echo "
- sconto ".Translator::numberToLocale($r['sconto_unitario']).($r['tipo_sconto'] == 'PRC' ? '%' : ' €').''; } @@ -120,9 +119,11 @@ foreach ($righe as $r) { '; - $imponibile += $r['subtotale']; - $iva += $r['iva']; - $sconto += $r['sconto']; + $autofill['count'] += $count; + + $imponibile[] = $r['subtotale']; + $iva[] = $r['iva']; + $sconto[] = $r['sconto']; $v_iva[$r['desc_iva']] += $r['iva']; $v_totale[$r['desc_iva']] += $r['subtotale'] - $r['sconto']; @@ -133,7 +134,6 @@ echo '
+

'.tr('Spett.le', [], ['upper' => true]).'

$c_ragionesociale$

$c_indirizzo$ $c_citta_full$

diff --git a/templates/fatture/body.php b/templates/fatture/body.php index dc0c048c0..1b5bf2351 100644 --- a/templates/fatture/body.php +++ b/templates/fatture/body.php @@ -9,15 +9,15 @@ $autofill = [ 'words' => 70, // Numero di parolo dopo cui contare una riga nuova 'rows' => 20, // Numero di righe massimo presente nella pagina 'additional' => 15, // Numero di righe massimo da aggiungere - 'columns' => 6, // Numero di colonne della tabella + 'columns' => 5, // Numero di colonne della tabella ]; $v_iva = []; $v_totale = []; -$sconto = 0; -$imponibile = 0; -$iva = 0; +$sconto = []; +$imponibile = []; +$iva = []; // Intestazione tabella per righe echo " @@ -25,11 +25,10 @@ echo "
".tr('Descrizione', [], ['upper' => true])."".tr('Q.tà', [], ['upper' => true])."".tr('Um', [], ['upper' => true])."".tr('Q.tà', [], ['upper' => true])." ".tr('Prezzo unitario', [], ['upper' => true])." ".tr('Importo', [], ['upper' => true])."".tr('IVA', [], ['upper' => true]).' (%)".tr('IVA', [], ['upper' => true]).' (%)
- ".(empty($r['qta']) ? '' : Translator::numberToLocale($r['qta'], 2)).' - - ".nl2br(strtoupper($r['um'])).' + ".Translator::numberToLocale($r['qta'], 2).' '.$r['um'].'
'; - // Aggiungo diciture per condizioni iva particolari foreach ($v_iva as $key => $value) { $dicitura = $dbo->fetchArray('SELECT dicitura FROM co_iva WHERE descrizione = '.prepare($key)); @@ -143,8 +143,8 @@ foreach ($v_iva as $key => $value) { echo "

- ".nl2br($testo)." -

"; + ".nl2br($testo).' +

'; } } @@ -156,6 +156,8 @@ if (!empty($records[0]['note'])) { } // Info per il footer -$totale_iva = $iva; -$imponibile_documento = $imponibile - $sconto; -$totale_documento = $imponibile - $sconto + $totale_iva; +$imponibile = sum($imponibile); +$iva = sum($iva); +$sconto = sum($sconto); + +$totale = $imponibile + $iva - $sconto; diff --git a/templates/fatture/footer.php b/templates/fatture/footer.php index 904f7cfed..99a73b751 100644 --- a/templates/fatture/footer.php +++ b/templates/fatture/footer.php @@ -3,24 +3,20 @@ // SCADENZE | TOTALI // TABELLA PRINCIPALE echo " - +
- - - - -
-

".tr('Totale imponibile', [], ['upper' => true])."

-
"; + "; // Tabella (scadenze + iva) echo " - +
+ + '; @@ -64,34 +51,34 @@ echo "
  - +
- '; @@ -31,25 +27,16 @@ if (!empty($rs2)) { for ($i = 0; $i < sizeof($rs2); ++$i) { echo " - - '; } -} else { - echo " - - - - "; } + echo '
+

".tr('Scadenze pagamenti', [], ['upper' => true]).'

+ ".Translator::dateToLocale($rs2[$i]['scadenza'])." + ".Translator::numberToLocale($rs2[$i]['da_pagare'], 2).' €
-   - -   -
"; if (!empty($v_iva)) { echo " - +
- - - '; foreach ($v_iva as $desc_iva => $tot_iva) { if (!empty($desc_iva)) { - echo " + echo ' - - - '; @@ -114,67 +101,86 @@ echo ' echo ' '; -// TOTALE IMPONIBILE +// TOTALI +$width = round(100/(!empty($sconto) ? 5 : 3), 2); echo " - + "; + +if (!empty($sconto)) { + echo " + + + "; +} + +echo " + + + + + + + "; + +if (!empty($sconto)) { + echo " + + + + "; +} + + echo " + + + '; -// Riga 2 -echo " - - - - - - - - - - - - - - - '; - -// Riga 4 (opzionale, solo se c'è la ritenuta d'acconto) +// Ritenuta d'acconto if ($records[0]['ritenutaacconto'] != 0) { $rs2 = $dbo->fetchArray('SELECT percentuale FROM co_ritenutaacconto WHERE id=(SELECT idritenutaacconto FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND idritenutaacconto!=0 LIMIT 0,1)'); echo " - + + + - - - - - - - - '; } @@ -183,13 +189,12 @@ echo '
+

".tr('Aliquota IVA', [], ['upper' => true])."

+

".tr('Importo', [], ['upper' => true])."

+

".tr('Importo IVA', [], ['upper' => true]).'

- ".$desc_iva." + + '.$desc_iva." + ".Translator::numberToLocale($v_totale[$desc_iva], 2)." € + ".Translator::numberToLocale($v_iva[$desc_iva], 2).' €
- ".Translator::numberToLocale($imponibile_documento, 2).' € +
+ ".tr('Imponibile', [], ['upper' => true])." + + ".tr('Sconto', [], ['upper' => true])." + + ".tr('Imponibile scontato', [], ['upper' => true])." + + ".tr('Totale IVA', [], ['upper' => true])." + + ".tr('Totale documento', [], ['upper' => true])." +
+ ".Translator::numberToLocale($imponibile, 2)." € + + ".Translator::numberToLocale($sconto, 2)." € + + ".Translator::numberToLocale($imponibile - $sconto, 2)." € + + ".Translator::numberToLocale($iva, 2)." € + + ".Translator::numberToLocale($totale, 2).' €
-

".tr('Totale IVA', [], ['upper' => true])."

-
- ".Translator::numberToLocale($totale_iva, 2)." € -
-

".tr('Totale documento', [], ['upper' => true])."

-
- ".Translator::numberToLocale($totale_documento, 2).' € -
-

".tr("Ritenuta d'acconto _PRC_%", [ - '_PRC_' => $rs2[0]['percentuale'], - ], ['upper' => true])."

-
+ ".tr("Ritenuta d'acconto _PRC_%", [ + '_PRC_' => Translator::numberToLocale($rs2[0]['percentuale'], 0), + ], ['upper' => true])." + + ".tr('Netto a pagare', [], ['upper' => true])." +
+ ".Translator::numberToLocale($records[0]['ritenutaacconto'], 2)." €
-

".tr('Netto a pagare', [], ['upper' => true])."

-
- ".Translator::numberToLocale($totale_documento - $records[0]['ritenutaacconto'], 2).' € + + ".Translator::numberToLocale($totale - $records[0]['ritenutaacconto'], 2).' €
'; echo ' -
- + + +
- $dicitura_fissa_fattura$ -
+ $dicitura_fissa_fattura$ +
-
- $pagination$'; diff --git a/templates/fatture/header.php b/templates/fatture/header.php index 8476b4746..e192b5008 100644 --- a/templates/fatture/header.php +++ b/templates/fatture/header.php @@ -75,7 +75,7 @@ echo '
-
+

'.tr('Spett.le', [], ['upper' => true]).'

$c_ragionesociale$

$c_indirizzo$ $c_citta_full$

diff --git a/templates/fatture/settings.php b/templates/fatture/settings.php index 62dfa7023..ac0c57975 100644 --- a/templates/fatture/settings.php +++ b/templates/fatture/settings.php @@ -1,6 +1,6 @@ 80, + 'header-height' => 75, 'footer-height' => 60, ]; diff --git a/templates/interventi/body.php b/templates/interventi/body.php index 21d009363..fd7ade232 100644 --- a/templates/interventi/body.php +++ b/templates/interventi/body.php @@ -12,7 +12,7 @@ $report_name = 'intervento_'.$idintervento.'.pdf'; echo ' - + diff --git a/templates/preventivi/body.php b/templates/preventivi/body.php index 16cad69f8..fc49ce217 100644 --- a/templates/preventivi/body.php +++ b/templates/preventivi/body.php @@ -246,7 +246,7 @@ $resa_materiale = $rs[0]['descrizione']; echo '
'.tr('Rapporto operazioni e interventi', [], ['upper' => true]).''.tr('Rapporto operazioni e interventi', [], ['upper' => true]).'
-
+ '.tr('Condizioni generali di fornitura', [], ['upper' => true]).'