1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2024-12-23 05:54:03 +01:00

Correzione stampa fatture

This commit is contained in:
Thomas Zilio 2019-07-11 18:10:38 +02:00
parent 93b2565b14
commit 523f259177
9 changed files with 47 additions and 86 deletions

View File

@ -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.
*/

View File

@ -164,7 +164,7 @@ if (abs($sconto) > 0) {
echo '
<tr>
<td colspan="5"" class="text-right">
<b>'.tr('Sconto', [], ['upper' => true]).':</b>
<b>'.tr('Sconto/maggiorazione', [], ['upper' => true]).':</b>
</td>
<td class="text-right">
'.moneyFormat($sconto, 2).'

View File

@ -231,7 +231,7 @@ if (abs($sconto) > 0) {
echo '
<tr>
<td colspan="5" class="text-right">
<b>'.tr('Sconto', [], ['upper' => true]).':</b>
<b>'.tr('Sconto/maggiorazione', [], ['upper' => true]).':</b>
</td>
<td align="right">

View File

@ -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 '
<br><small>
'.tr('Acquisto').': '.moneyFormat($row->prezzo_unitario_acquisto).'
@ -308,7 +308,7 @@ if (!empty($sconto)) {
echo '
<tr>
<td colspan="5" class="text-right">
<b>'.tr('Sconto', [], ['upper' => true]).':</b>
<b>'.tr('Sconto/maggiorazione', [], ['upper' => true]).':</b>
</td>
<td align="right">
'.moneyFormat($sconto, 2).'

View File

@ -224,7 +224,7 @@ if (abs($sconto) > 0) {
echo '
<tr>
<td colspan="5" class="text-right">
<b>'.tr('Sconto', [], ['upper' => true]).':</b>
<b>'.tr('Sconto/maggiorazione', [], ['upper' => true]).':</b>
</td>
<td align="right">
'.moneyFormat($sconto, 2).'

View File

@ -167,7 +167,7 @@ if (abs($sconto) > 0) {
echo '
<tr>
<td colspan="5" class="text-right">
<b>'.tr('Sconto', [], ['upper' => true]).':</b>
<b>'.tr('Sconto/maggiorazione', [], ['upper' => true]).':</b>
</td>
<td align="right">
'.moneyFormat($sconto, 2).'

View File

@ -187,7 +187,7 @@ echo '
// TOTALE COSTI FINALI
if ($options['pricing']) {
// Eventuale sconto incondizionato
if (!empty($sconto)) {
if ($sconto > 0) {
// Totale imponibile
echo '
<tr>
@ -207,7 +207,7 @@ if ($options['pricing']) {
</td>
<th class="text-right">
<b>-'.moneyFormat($sconto, 2).'</b>
<b>'.moneyFormat($sconto, 2).'</b>
</th>
</tr>';
}

View File

@ -13,10 +13,6 @@ $autofill = [
$v_iva = [];
$v_totale = [];
$sconto = [];
$imponibile = [];
$iva = [];
// Intestazione tabella per righe
echo "
<table class='table table-striped table-bordered' id='contents'>
@ -43,35 +39,20 @@ echo "
<tbody>';
// 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 '
<tr>
@ -148,13 +129,13 @@ foreach ($righe as $r) {
<td class='text-right'>";
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 "
<br><small class='text-muted'>".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()),
]).'</small>';
if ($count <= 1) {
@ -171,19 +152,7 @@ foreach ($righe as $r) {
<td class='text-right'>";
if (empty($r['is_descrizione'])) {
echo '
'.moneyFormat($r['subtotale'] - $r['sconto']);
if ($r['sconto'] > 0) {
/*echo "
<br><small class='text-muted'>".tr('sconto _TOT_ _TYPE_', [
'_TOT_' => Translator::numberToLocale($r['sconto']),
'_TYPE_' => currency(),
]).'</small>';*/
if ($count <= 1) {
$count += 0.4;
}
}
'.moneyFormat($riga->totale_imponibile);
}
echo '
</td>';
@ -191,9 +160,9 @@ foreach ($righe as $r) {
// Iva
echo '
<td class="text-center">';
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 '
</td>
@ -250,31 +219,3 @@ echo '
</tr>';
echo '
</table>';
// 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);

View File

@ -1,11 +1,22 @@
<?php
// Calcoli
$imponibile = $fattura->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 "
<table class='table-bordered'>
<tr>
<td colspan=".(!empty($sconto) ? 5 : 3)." class='cell-padded' style='height:".($record['ritenutaacconto'] != 0 ? 20 : 30)."mm'>";
<td colspan=".($show_sconto ? 5 : 3)." class='cell-padded' style='height:".($record['ritenutaacconto'] != 0 ? 20 : 30)."mm'>";
// Tabella (scadenze + iva)
echo "
@ -92,7 +103,7 @@ if (!empty($v_iva)) {
echo '
</td>
<td style="width:10mm;">&nbsp;</td>";
<td style="width:10mm;">&nbsp;</td>
</tr>';
// Fine tabelle iva
echo '
@ -102,14 +113,13 @@ echo '
</td>';
// TOTALI
$width = round(100 / (!empty($sconto) ? 5 : 3), 2);
echo "
<tr>
<th class='text-center small' style='width:".$width."'>
".tr('Imponibile', [], ['upper' => true]).'
</th>';
if (!empty($sconto)) {
if ($show_sconto) {
echo "
<th class='text-center small' style='width:".$width."'>
".tr('Sconto', [], ['upper' => true])."
@ -132,18 +142,18 @@ echo "
<tr>
<td class='cell-padded text-center'>
".moneyFormat($imponibile, 2).'
".moneyFormat($show_sconto ? $imponibile : $totale_imponibile, 2).'
</td>';
if (!empty($sconto)) {
if ($show_sconto) {
echo "
<td class='cell-padded text-center'>
".moneyFormat($sconto, 2)."
".moneyFormat(abs($sconto), 2)."
</td>
<td class='cell-padded text-center'>
".moneyFormat($imponibile - $sconto, 2).'
".moneyFormat($totale_imponibile, 2).'
</td>';
}