Skip to content

Commit c69bb1f

Browse files
committed
fix: #1441 creazione autofattura iva indetraibile
1 parent 216e076 commit c69bb1f

1 file changed

Lines changed: 28 additions & 5 deletions

File tree

modules/fatture/actions.php

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -924,16 +924,39 @@
924924
->join('co_iva', 'co_iva.id', '=', 'co_righe_documenti.idiva')
925925
->where('co_righe_documenti.iddocumento', $fattura->id)
926926
->whereIn('co_iva.codice_natura_fe', ['N2', 'N2.1', 'N2.2', 'N3', 'N3.1', 'N3.2', 'N3.3', 'N3.4', 'N3.5', 'N3.6', 'N6', 'N6.1', 'N6.2', 'N6.3', 'N6.4', 'N6.5', 'N6.6', 'N6.7', 'N6.8', 'N6.9'])
927-
->sum('subtotale');
927+
->sum('subtotale');
928928

929929
$sconto = $database->table('co_righe_documenti')
930930
->join('co_iva', 'co_iva.id', '=', 'co_righe_documenti.idiva')
931931
->where('co_righe_documenti.iddocumento', $fattura->id)
932932
->whereIn('co_iva.codice_natura_fe', ['N2', 'N2.1', 'N2.2', 'N3', 'N3.1', 'N3.2', 'N3.3', 'N3.4', 'N3.5', 'N3.6', 'N6', 'N6.1', 'N6.2', 'N6.3', 'N6.4', 'N6.5', 'N6.6', 'N6.7', 'N6.8', 'N6.9'])
933933
->sum('sconto');
934934

935-
$totale_imponibile = setting('Utilizza prezzi di vendita comprensivi di IVA') ? ($imponibile - $sconto) + (($imponibile - $sconto) * $iva->percentuale / 100) : ($imponibile - $sconto);
936-
$totale_imponibile = $fattura->tipo->reversed == 1 ? -$totale_imponibile : $totale_imponibile;
935+
$imponibile_indetraibile = $database->table('co_righe_documenti')
936+
->join('co_iva', 'co_iva.id', '=', 'co_righe_documenti.idiva')
937+
->where('co_righe_documenti.iddocumento', $fattura->id)
938+
->where('co_iva.indetraibile', 100)
939+
->sum('subtotale');
940+
941+
$sconto_indetraibile = $database->table('co_righe_documenti')
942+
->join('co_iva', 'co_iva.id', '=', 'co_righe_documenti.idiva')
943+
->where('co_righe_documenti.iddocumento', $fattura->id)
944+
->where('co_iva.indetraibile', 100)
945+
->sum('sconto');
946+
947+
$iva_indetraibile = $database->table('co_righe_documenti')
948+
->join('co_iva', 'co_iva.id', '=', 'co_righe_documenti.idiva')
949+
->where('co_righe_documenti.iddocumento', $fattura->id)
950+
->where('co_iva.indetraibile', 100)
951+
->first();
952+
953+
if ($imponibile) {
954+
$totale_imponibile = setting('Utilizza prezzi di vendita comprensivi di IVA') ? ($imponibile - $sconto) + (($imponibile - $sconto) * $iva->percentuale / 100) : ($imponibile - $sconto);
955+
$totale_imponibile = $fattura->tipo->reversed == 1 ? -$totale_imponibile : $totale_imponibile;
956+
} else if ($imponibile_indetraibile) {
957+
$totale_imponibile = setting('Utilizza prezzi di vendita comprensivi di IVA') ? ($imponibile_indetraibile - $sconto_indetraibile) + (($imponibile_indetraibile - $sconto_indetraibile) * $iva_indetraibile->percentuale / 100) : ($imponibile_indetraibile - $sconto_indetraibile);
958+
$totale_imponibile = $fattura->tipo->reversed == 1 ? -$totale_imponibile : $totale_imponibile;
959+
}
937960

938961
$autofattura = Fattura::build($anagrafica, $tipo, $data, $id_segment);
939962
$autofattura->idconto = $fattura->idconto;
@@ -944,9 +967,9 @@
944967

945968
$riga = Riga::build($autofattura);
946969
$riga->descrizione = $tipo->getTranslation('title');
947-
$riga->id_iva = $iva->id;
970+
$riga->id_iva = $imponibile ? $iva->id: $iva_indetraibile->id;
948971
$riga->idconto = setting('Conto per autofattura') ?: setting('Conto predefinito fatture di vendita');
949-
$riga->setPrezzoUnitario($totale_imponibile, $iva->id);
972+
$riga->setPrezzoUnitario($totale_imponibile, $imponibile ? $iva->id: $iva_indetraibile->id);
950973
$riga->qta = 1;
951974
$riga->save();
952975

0 commit comments

Comments
 (0)