From 45dff17c4433c36cb8414330789573732b2f7fb2 Mon Sep 17 00:00:00 2001 From: Pek5892 Date: Fri, 28 Jul 2023 17:50:25 +0200 Subject: [PATCH] Fix arrotondamenti import FE --- plugins/importFE/src/FatturaOrdinaria.php | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/plugins/importFE/src/FatturaOrdinaria.php b/plugins/importFE/src/FatturaOrdinaria.php index c4d9f1c5b..30732edef 100755 --- a/plugins/importFE/src/FatturaOrdinaria.php +++ b/plugins/importFE/src/FatturaOrdinaria.php @@ -232,17 +232,15 @@ class FatturaOrdinaria extends FatturaElettronica $totale_arrotondamento = 0; $dati_riepilogo = $this->getBody()['DatiBeniServizi']['DatiRiepilogo']; if (!empty($dati_riepilogo['ImponibileImporto'])) { - $totale_righe = $dati_riepilogo['ImponibileImporto']; $totale_arrotondamento = $dati_riepilogo['Arrotondamento']; } elseif (is_array($dati_riepilogo)) { foreach ($dati_riepilogo as $dato) { - $totale_righe += $dato['ImponibileImporto']; $totale_arrotondamento += $dato['Arrotondamento']; } - } else { - $totali_righe = array_column($righe, 'PrezzoTotale'); - $totale_righe = sum($totali_righe, null, 2); - } + } + + $totali_righe = array_column($righe, 'PrezzoTotale'); + $totale_righe = sum($totali_righe, null, 2); // Nel caso il prezzo sia negativo viene gestito attraverso l'inversione della quantità (come per le note di credito) // TODO: per migliorare la visualizzazione, sarebbe da lasciare negativo il prezzo e invertire gli sconti. @@ -364,8 +362,9 @@ class FatturaOrdinaria extends FatturaElettronica $fattura->refresh(); // Arrotondamenti differenti nella fattura XML - $diff = round(abs($totale_righe) - $totale_arrotondamento - abs($fattura->totale_imponibile) - $fattura->rivalsa_inps, 2); - if (!empty($diff)) { + $diff = round(abs($totale_righe) + $totale_arrotondamento - abs($fattura->totale_imponibile), 2); + // Aggiunta della riga di arrotondamento nel caso in cui ci sia una differenza tra i totali, questa diferenza sia diversa dal totale arrotondamento o nell'xml non sia specificato un'arrotondamento ma sia presente nei totali + if (!empty($diff) && ($diff != $totale_arrotondamento || empty($totale_arrotondamento))) { // Rimozione dell'IVA calcolata automaticamente dal gestionale $iva_arrotondamento = database()->fetchOne('SELECT * FROM co_iva WHERE percentuale=0 AND deleted_at IS NULL'); $diff = $diff * 100 / (100 + $iva_arrotondamento['percentuale']);