Fix importazione fatture con importi negativi

This commit is contained in:
MatteoPistorello 2022-11-15 18:00:53 +01:00
parent f123d506f5
commit ee7ddac7e9
1 changed files with 15 additions and 14 deletions

View File

@ -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