Skip to content

Commit 450bc52

Browse files
committed
refactor: gestione natura iva non piu valide
1 parent d91b69a commit 450bc52

File tree

4 files changed

+26
-10
lines changed

4 files changed

+26
-10
lines changed

modules/fatture/row-list.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -283,15 +283,25 @@
283283
</td>';
284284

285285
// Iva
286-
// Controllo aliquota esente senza codice natura
286+
// Controllo aliquota esente senza codice natura o con codice natura obsoleto (N2, N3, N6 senza sottocodice)
287+
$codici_natura_obsoleti = ['N2', 'N3', 'N6'];
287288
$iva_esente_senza_natura = $riga->aliquota && $riga->aliquota->esente && empty($riga->aliquota->codice_natura_fe);
288-
$iva_class = ($riga->aliquota->deleted_at || $iva_esente_senza_natura) ? 'text-danger' : 'text-muted';
289-
$iva_tooltip = $iva_esente_senza_natura ? ' title="'.tr('Attenzione: aliquota esente senza codice natura IVA. Correggere prima di emettere fattura elettronica.').'" style="cursor: help;"' : '';
289+
$iva_natura_obsoleta = $riga->aliquota && $riga->aliquota->esente && in_array($riga->aliquota->codice_natura_fe, $codici_natura_obsoleti);
290+
$iva_errore = $iva_esente_senza_natura || $iva_natura_obsoleta;
291+
$iva_class = ($riga->aliquota->deleted_at || $iva_errore) ? 'text-danger' : 'text-muted';
292+
293+
if ($iva_esente_senza_natura) {
294+
$iva_tooltip = ' title="'.tr('Attenzione: aliquota esente senza codice natura IVA. Correggere prima di emettere fattura elettronica.').'" style="cursor: help;"';
295+
} elseif ($iva_natura_obsoleta) {
296+
$iva_tooltip = ' title="'.tr('Attenzione: il codice natura "_NATURA_" non è più valido dal 1° gennaio 2021. Utilizzare un sottocodice specifico.', ['_NATURA_' => $riga->aliquota->codice_natura_fe]).'" style="cursor: help;"';
297+
} else {
298+
$iva_tooltip = '';
299+
}
290300

291301
echo '
292302
<td class="text-right">
293303
'.moneyFormat($riga->iva_unitaria_scontata).'
294-
<br><small class="'.$iva_class.'"'.$iva_tooltip.'>'.($iva_esente_senza_natura ? '<i class="fa fa-exclamation-triangle"></i> ' : '').($riga->aliquota ? $riga->aliquota->getTranslation('title') : '').' ('.$riga->aliquota->esigibilita.') '.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
304+
<br><small class="'.$iva_class.'"'.$iva_tooltip.'>'.($iva_errore ? '<i class="fa fa-exclamation-triangle"></i> ' : '').($riga->aliquota ? $riga->aliquota->getTranslation('title') : '').' ('.$riga->aliquota->esigibilita.') '.(($riga->aliquota->esente) ? ' ('.$riga->aliquota->codice_natura_fe.')' : null).'</small>
295305
</td>';
296306

297307
// Importo

modules/iva/actions.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@
7272
$esigibilita = post('esigibilita');
7373
$indetraibile = post('indetraibile');
7474

75-
$aliquota = Aliquota::where('id', '=', (new Aliquota())->getByField('title', $descrizione))->where('codice', '=', $codice)->first();
75+
$aliquota = Aliquota::where('name', '=', $descrizione)->where('codice', '=', $codice)->first();
7676
if (!$aliquota) {
77-
$iva = Aliquota::build($descrizione, $esente, $percentuale, $indetraibile, $dicitura, $codice, $codice_natura_fe, $esigibilita);
77+
$iva = Aliquota::build($descrizione, $esente, $percentuale, $indetraibile, $dicitura, $codice, $codice_natura, $esigibilita);
7878
$id_record = $dbo->lastInsertedID();
7979
$iva->save();
8080

modules/iva/ajax/select.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
if (empty($filter)) {
4242
$where[] = '`deleted_at` IS NULL';
4343

44-
// Escludo le aliquote esenti senza codice natura iva
45-
$where[] = '(`esente` = 0 OR (`esente` = 1 AND `codice_natura_fe` IS NOT NULL))';
44+
// Escludo le aliquote esenti senza codice natura iva o con codice natura obsoleto (N2, N3, N6 senza sottocodice)
45+
$where[] = '(`esente` = 0 OR (`esente` = 1 AND `codice_natura_fe` IS NOT NULL AND `codice_natura_fe` NOT IN ("N2", "N3", "N6")))';
4646

4747
// se sto valorizzando un documento con lo split payment impedisco la selezione delle aliquote iva con natura N6.X (reverse charge)
4848
if (isset($superselect['split_payment']) and !empty($superselect['split_payment'])) {

modules/iva/edit.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,18 @@
4646
$is_readonly = '1';
4747
}
4848

49-
// Alert per aliquota esente senza codice natura
49+
// Alert per aliquota esente senza codice natura o con codice natura obsoleto
50+
$codici_natura_obsoleti = ['N2', 'N3', 'N6'];
5051
if ($record['esente'] && empty($record['codice_natura_fe'])) {
5152
echo '
5253
<div class="alert alert-warning">
5354
<i class="fa fa-exclamation-triangle"></i> <strong>'.tr('Attenzione').':</strong> '.tr('Questa aliquota è marcata come esente ma non ha un codice natura IVA impostato. Per la fatturazione elettronica è obbligatorio specificare il codice natura per le aliquote esenti.').'
5455
</div>';
56+
} elseif ($record['esente'] && in_array($record['codice_natura_fe'], $codici_natura_obsoleti)) {
57+
echo '
58+
<div class="alert alert-warning">
59+
<i class="fa fa-exclamation-triangle"></i> <strong>'.tr('Attenzione').':</strong> '.tr('Il codice natura "_NATURA_" non è più valido dal 1° gennaio 2021. È necessario utilizzare un sottocodice specifico (es. _NATURA_.1, _NATURA_.2, ecc.).', ['_NATURA_' => $record['codice_natura_fe']]).'
60+
</div>';
5561
}
5662

5763
?><form action="" method="post" id="edit-form">
@@ -86,7 +92,7 @@
8692
</div>
8793

8894
<div class="col-md-4">
89-
{[ "type": "select", "label": "<?php echo tr('Codice Natura (Fatturazione Elettronica)'); ?>", "name": "codice_natura_fe", "value": "$codice_natura_fe$", "required": <?php echo intval($record['esente']); ?>, "disabled": <?php echo intval(!$record['esente']); ?>, "values": "query=SELECT `codice` as id, CONCAT(`codice`, ' - ', `title`) AS descrizione FROM fe_natura LEFT JOIN `fe_natura_lang` ON (`fe_natura`.`codice` = `fe_natura_lang`.`id_record` AND `fe_natura_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>)", "readonly": "<?php echo $is_readonly; ?>", "extra": "<?php echo $attr; ?>" ]}
95+
{[ "type": "select", "label": "<?php echo tr('Codice Natura (Fatturazione Elettronica)'); ?>", "name": "codice_natura_fe", "value": "$codice_natura_fe$", "required": <?php echo intval($record['esente']); ?>, "disabled": <?php echo intval(!$record['esente']); ?>, "values": "query=SELECT `codice` as id, CONCAT(`codice`, ' - ', `title`) AS descrizione FROM fe_natura LEFT JOIN `fe_natura_lang` ON (`fe_natura`.`codice` = `fe_natura_lang`.`id_record` AND `fe_natura_lang`.`id_lang` = <?php echo prepare(Models\Locale::getDefault()->id); ?>) WHERE `codice` NOT IN ('N2', 'N3', 'N6')", "readonly": "<?php echo $is_readonly; ?>", "extra": "<?php echo $attr; ?>" ]}
9096
</div>
9197
</div>
9298

0 commit comments

Comments
 (0)