Spostamento fix aggiustamenti contabili su penultimo conto

This commit is contained in:
loviuz 2024-02-14 16:15:07 +01:00
parent 88bd9c993d
commit 04c89f8596
1 changed files with 22 additions and 14 deletions

View File

@ -228,28 +228,36 @@ class Movimenti
$mastrino = $this->generateMastrino(); $mastrino = $this->generateMastrino();
foreach ($movimenti as $element) { foreach ($movimenti as $element) {
$dare = round($element['dare'], 6); $dare = round($element['dare'], 8);
$avere = round($element['avere'], 6); $avere = round($element['avere'], 8);
$totale_dare += $dare; $totale_dare += $dare;
$totale_avere += $avere; $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((float) $avere + $aggiustamento_avere, (float) $dare + $aggiustamento_dare); $movimento->setTotale($avere, $dare);
$movimento->save(); $movimento->save();
} }
// Nel penultimo conto del mastrino inserisco l'eventuale differenza per evitare sbilanci nel totale,
// evitando di mettere differenze nell'iva
$diff = round($totale_avere - $totale_dare, 4);
if ($diff) {
$movimenti = $mastrino->movimenti()->where('primanota', '=', 0)->get();
$m = 0;
foreach ($movimenti as $movimento) {
if ($m++ == $movimenti->count() - 2) {
if ($movimento->totale < 0) {
$movimento->setTotale(abs($movimento->totale) - $diff, 0);
} else {
$movimento->setTotale(0, abs($movimento->totale) + $diff);
}
$movimento->save();
}
}
}
} }
/** /**