Skip to content

Commit 60a5ac1

Browse files
committed
fix: calcolo arrotondamento per fatture elettroniche
1 parent 91dde6c commit 60a5ac1

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

plugins/importFE/src/FatturaOrdinaria.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -502,19 +502,23 @@ public function saveRighe($articoli, $iva, $conto, $movimentazione = true, $crea
502502
// se ImportoTotaleDocumento non è valorizzato recupero l'importo dal nodo ImportoPagamento
503503
$totale_documento = $this->getBody()['DatiPagamento']['DettaglioPagamento']['ImportoPagamento'];
504504
}
505+
505506
$differenza_iva = round(abs($fattura->iva) - abs($imposta_riepilogo), 2);
506-
$diff = round(abs($fattura->totale_imponibile + abs($imposta_riepilogo) + $fattura->rivalsa_inps) - ($totale_documento ? abs($totale_documento) : 0), 2);
507+
// Calcolo corretto mantenendo i segni originali per gestire correttamente i totali negativi
508+
$totale_calcolato = $fattura->totale_imponibile + $fattura->iva + $fattura->rivalsa_inps;
509+
$diff = round($totale_calcolato - ($totale_documento ?: 0), 2);
507510

508511
$iva_arrotondamento = database()->fetchOne('SELECT * FROM `co_iva` WHERE `percentuale`= 0 AND `deleted_at` IS NULL LIMIT 1');
509512
if ($diff || $differenza_iva) {
510513
if ($diff && $differenza_iva) {
511-
$diff = ($diff + $differenza_iva) * '-1';
514+
$diff = ($diff + $differenza_iva);
512515
} elseif ($diff == 0 && $differenza_iva) {
513-
$diff = $differenza_iva * '-1';
514-
} else {
515-
$diff = -$diff;
516+
$diff = $differenza_iva;
516517
}
517518

519+
// L'arrotondamento deve avere segno opposto alla differenza per correggere il totale
520+
$diff = -$diff;
521+
518522
$obj = Riga::build($fattura);
519523

520524
$obj->descrizione = tr('Arrotondamento calcolato in automatico');

0 commit comments

Comments
 (0)