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; $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) // 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. // 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; $qta = $riga['Quantita'] ?: 1;
// Prezzo e quantità // Prezzo e quantità
@ -331,19 +345,6 @@ class FatturaOrdinaria extends FatturaElettronica
$fattura->refresh(); $fattura->refresh();
// Arrotondamenti differenti nella fattura XML // 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); $diff = round(abs($totale_righe) - abs($fattura->totale_imponibile + $fattura->rivalsa_inps), 2);
if (!empty($diff)) { if (!empty($diff)) {
// Rimozione dell'IVA calcolata automaticamente dal gestionale // Rimozione dell'IVA calcolata automaticamente dal gestionale