diff --git a/plugins/importFE/src/FatturaOrdinaria.php b/plugins/importFE/src/FatturaOrdinaria.php index d8fcf32f9..128519654 100755 --- a/plugins/importFE/src/FatturaOrdinaria.php +++ b/plugins/importFE/src/FatturaOrdinaria.php @@ -221,9 +221,23 @@ class FatturaOrdinaria extends FatturaElettronica $obj->calcolo_ritenuta_acconto = $calcolo_ritenuta_acconto; } + // Totale documento + $totale_righe = 0; + $dati_riepilogo = $this->getBody()['DatiBeniServizi']['DatiRiepilogo']; + if (!empty($dati_riepilogo['ImponibileImporto'])) { + $totale_righe = $dati_riepilogo['ImponibileImporto']; + } elseif (is_array($dati_riepilogo)) { + foreach ($dati_riepilogo as $dato) { + $totale_righe += $dato['ImponibileImporto']; + } + } else { + $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. - $prezzo = $riga['PrezzoUnitario']; + $prezzo = $totale_righe > 0 ? $riga['PrezzoUnitario'] : -$riga['PrezzoUnitario']; $qta = $riga['Quantita'] ?: 1; // Prezzo e quantità @@ -331,19 +345,6 @@ class FatturaOrdinaria extends FatturaElettronica $fattura->refresh(); // Arrotondamenti differenti nella fattura XML - $totale_righe = 0; - $dati_riepilogo = $this->getBody()['DatiBeniServizi']['DatiRiepilogo']; - if (!empty($dati_riepilogo['ImponibileImporto'])) { - $totale_righe = $dati_riepilogo['ImponibileImporto']; - } elseif (is_array($dati_riepilogo)) { - foreach ($dati_riepilogo as $dato) { - $totale_righe += $dato['ImponibileImporto']; - } - } else { - $totali_righe = array_column($righe, 'PrezzoTotale'); - $totale_righe = sum($totali_righe, null, 2); - } - $diff = round(abs($totale_righe) - abs($fattura->totale_imponibile + $fattura->rivalsa_inps), 2); if (!empty($diff)) { // Rimozione dell'IVA calcolata automaticamente dal gestionale