Correzione problemi di sbilanciamento contabile

This commit is contained in:
loviuz 2024-02-09 17:12:47 +01:00
parent 94c630b8de
commit 801ed47ef8
1 changed files with 25 additions and 1 deletions

View File

@ -220,10 +220,34 @@ class Movimenti
} }
// Registrazione dei singoli Movimenti nel relativo Mastrino // Registrazione dei singoli Movimenti nel relativo Mastrino
$i = 0;
$totale_dare = 0;
$totale_avere = 0;
$mastrino = $this->generateMastrino(); $mastrino = $this->generateMastrino();
foreach ($movimenti as $element) { foreach ($movimenti as $element) {
$dare = round($element['dare'], 2);
$avere = round($element['avere'], 2);
$totale_dare += $dare;
$totale_avere += $avere;
// Nell'ultimo conto del mastrino inserisco l'eventuale differenza per evitare sbilanci nel totale
$aggiustamento_dare = 0;
$aggiustamento_avere = 0;
if ($i++ == count($movimenti) -1) {
if ($element['dare']) {
$aggiustamento_dare -= round( $totale_dare - $totale_avere, 6 );
} elseif ($element['avere']) {
$aggiustamento_avere -= round( $totale_avere - $totale_dare, 6 );
}
}
$movimento = Movimento::build($mastrino, $element['id_conto'], $this->fattura); $movimento = Movimento::build($mastrino, $element['id_conto'], $this->fattura);
$movimento->setTotale($element['avere'] ?: 0, $element['dare'] ?: 0); $movimento->setTotale((float)$avere + $aggiustamento_avere, (float)$dare + $aggiustamento_dare);
$movimento->save(); $movimento->save();
} }
} }