Skip to content

Commit 62cb764

Browse files
feat: gestione impostazioni conti iva per autofatture e storno movimento per split payment
1 parent 2ffe4c8 commit 62cb764

2 files changed

Lines changed: 49 additions & 13 deletions

File tree

modules/fatture/src/Gestori/Movimenti.php

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -150,15 +150,23 @@ public function registra()
150150
* IVA detraibile -> AVERE per Vendita, DARE per Acquisto
151151
*/
152152
if (!empty($iva_detraibile)) {
153-
// Caso 1: Fattura di acquisto con split payment - IVA su vendite
154-
if ($is_acquisto && $split_payment) {
155-
$id_conto = setting('Conto per Iva su vendite');
156-
$movimenti[] = [
157-
'id_conto' => $id_conto,
158-
'avere' => $iva_detraibile,
159-
];
153+
if ($this->fattura->tipo->codice_tipo_documento_fe == 'TD17') {
154+
$id_conto = $is_acquisto ? setting('Conto per Iva su acquisti Extra UE') : setting('Conto per Iva su vendite Extra UE');
155+
} elseif ($this->fattura->tipo->codice_tipo_documento_fe == 'TD18') {
156+
$id_conto = $is_acquisto ? setting('Conto per Iva su acquisti Intra UE') : setting('Conto per Iva su vendite Intra UE');
157+
} elseif ($this->fattura->tipo->codice_tipo_documento_fe == 'TD19') {
158+
$id_conto = $is_acquisto ? setting('Conto per Iva su acquisti Reverse charge') : setting('Conto per Iva su vendite Reverse charge');
159+
} else {
160+
$id_conto = $is_acquisto ? setting('Conto per Iva su acquisti') : setting('Conto per Iva su vendite');
161+
}
160162

161-
// Aggiunta dell'IVA al conto di costo per fatture di acquisto con split payment
163+
$movimenti[] = [
164+
'id_conto' => $id_conto,
165+
'avere' => $iva_detraibile,
166+
];
167+
168+
// Aggiunta dell'IVA al conto di costo per fatture di acquisto con split payment
169+
if ($is_acquisto && $split_payment) {
162170
foreach ($righe as $riga) {
163171
$id_conto = $riga->idconto ?: $this->fattura->idconto;
164172
$iva_riga = $riga->iva;
@@ -171,15 +179,14 @@ public function registra()
171179
}
172180
}
173181
}
174-
// Caso 2: Fattura senza split payment - IVA normale (acquisti o vendite)
175-
elseif (empty($split_payment)) {
176-
$id_conto = $is_acquisto ? setting('Conto per Iva su acquisti') : setting('Conto per Iva su vendite');
182+
183+
// Storno dell'IVA per fatture con split payment
184+
if ($split_payment) {
177185
$movimenti[] = [
178186
'id_conto' => $id_conto,
179-
'avere' => $iva_detraibile,
187+
'dare' => $iva_detraibile,
180188
];
181189
}
182-
// Caso 3: Fattura di vendita con split payment - Non si registra l'IVA
183190
}
184191

185192
/*

update/2_11.sql

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,3 +195,32 @@ INSERT INTO `my_statiimpianti_lang` (`id_lang`, `id_record`, `title`) VALUES
195195
ALTER TABLE `my_impianti`
196196
ADD COLUMN `id_stato` INT(11) NULL DEFAULT NULL AFTER `id`,
197197
ADD CONSTRAINT `fk_my_impianti_stato` FOREIGN KEY (`id_stato`) REFERENCES `my_statiimpianti` (`id`) ON UPDATE CASCADE ON DELETE SET NULL;
198+
199+
-- Aggiunta conti per Iva Extra Intra UE e Reverse charge
200+
INSERT INTO `co_pianodeiconti3` (`id`, `numero`, `descrizione`, `idpianodeiconti2`, `dir`, `created_at`, `updated_at`, `percentuale_deducibile`) VALUES (NULL, '000040', 'Iva su vendite Extra UE', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione`= "Conti transitori"), '', NULL, NULL, '100.00');
201+
INSERT INTO `co_pianodeiconti3` (`id`, `numero`, `descrizione`, `idpianodeiconti2`, `dir`, `created_at`, `updated_at`, `percentuale_deducibile`) VALUES (NULL, '000050', 'Iva su acquisti Extra UE', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione`= "Conti transitori"), '', NULL, NULL, '100.00');
202+
INSERT INTO `co_pianodeiconti3` (`id`, `numero`, `descrizione`, `idpianodeiconti2`, `dir`, `created_at`, `updated_at`, `percentuale_deducibile`) VALUES (NULL, '000060', 'Iva su vendite Intra UE', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione`= "Conti transitori"), '', NULL, NULL, '100.00');
203+
INSERT INTO `co_pianodeiconti3` (`id`, `numero`, `descrizione`, `idpianodeiconti2`, `dir`, `created_at`, `updated_at`, `percentuale_deducibile`) VALUES (NULL, '000070', 'Iva su acquisti Intra UE', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione`= "Conti transitori"), '', NULL, NULL, '100.00');
204+
INSERT INTO `co_pianodeiconti3` (`id`, `numero`, `descrizione`, `idpianodeiconti2`, `dir`, `created_at`, `updated_at`, `percentuale_deducibile`) VALUES (NULL, '000080', 'Iva su vendite Reverse charge', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione`= "Conti transitori"), '', NULL, NULL, '100.00');
205+
INSERT INTO `co_pianodeiconti3` (`id`, `numero`, `descrizione`, `idpianodeiconti2`, `dir`, `created_at`, `updated_at`, `percentuale_deducibile`) VALUES (NULL, '000090', 'Iva su acquisti Reverse charge', (SELECT `id` FROM `co_pianodeiconti2` WHERE `descrizione`= "Conti transitori"), '', NULL, NULL, '100.00');
206+
207+
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`) VALUES (NULL, 'Conto per Iva su acquisti Extra UE', (SELECT `id` FROM `co_pianodeiconti3` WHERE `descrizione`= "Iva su acquisti Extra UE"), 'query=SELECT `id`, CONCAT_WS(\' - \', `numero`, `descrizione`) AS descrizione FROM `co_pianodeiconti3` ORDER BY `descrizione` ASC', '1', 'Piano dei Conti', NULL, NULL, NULL);
208+
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`) VALUES (NULL, 'Conto per Iva su vendite Extra UE', (SELECT `id` FROM `co_pianodeiconti3` WHERE `descrizione`= "Iva su vendite Extra UE"), 'query=SELECT `id`, CONCAT_WS(\' - \', `numero`, `descrizione`) AS descrizione FROM `co_pianodeiconti3` ORDER BY `descrizione` ASC', '1', 'Piano dei Conti', NULL, NULL, NULL);
209+
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`) VALUES (NULL, 'Conto per Iva su acquisti Intra UE', (SELECT `id` FROM `co_pianodeiconti3` WHERE `descrizione`= "Iva su acquisti Intra UE"), 'query=SELECT `id`, CONCAT_WS(\' - \', `numero`, `descrizione`) AS descrizione FROM `co_pianodeiconti3` ORDER BY `descrizione` ASC', '1', 'Piano dei Conti', NULL, NULL, NULL);
210+
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`) VALUES (NULL, 'Conto per Iva su vendite Intra UE', (SELECT `id` FROM `co_pianodeiconti3` WHERE `descrizione`= "Iva su vendite Intra UE"), 'query=SELECT `id`, CONCAT_WS(\' - \', `numero`, `descrizione`) AS descrizione FROM `co_pianodeiconti3` ORDER BY `descrizione` ASC', '1', 'Piano dei Conti', NULL, NULL, NULL);
211+
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`) VALUES (NULL, 'Conto per Iva su acquisti Reverse charge', (SELECT `id` FROM `co_pianodeiconti3` WHERE `descrizione`= "Iva su acquisti Reverse charge"), 'query=SELECT `id`, CONCAT_WS(\' - \', `numero`, `descrizione`) AS descrizione FROM `co_pianodeiconti3` ORDER BY `descrizione` ASC', '1', 'Piano dei Conti', NULL, NULL, NULL);
212+
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `created_at`, `updated_at`, `order`) VALUES (NULL, 'Conto per Iva su vendite Reverse charge', (SELECT `id` FROM `co_pianodeiconti3` WHERE `descrizione`= "Iva su vendite Reverse charge"), 'query=SELECT `id`, CONCAT_WS(\' - \', `numero`, `descrizione`) AS descrizione FROM `co_pianodeiconti3` ORDER BY `descrizione` ASC', '1', 'Piano dei Conti', NULL, NULL, NULL);
213+
214+
INSERT INTO `zz_settings_lang` (`id_lang`, `id_record`, `title`, `help`) VALUES
215+
(1, (SELECT MAX(`id`)-5 FROM `zz_settings`), 'Conto per Iva su acquisti Extra UE', ''),
216+
(2, (SELECT MAX(`id`)-5 FROM `zz_settings`), 'Account for IVA on purchases from outside the EU', ''),
217+
(1, (SELECT MAX(`id`)-4 FROM `zz_settings`), 'Conto per Iva su vendite Extra UE', ''),
218+
(2, (SELECT MAX(`id`)-4 FROM `zz_settings`), 'Account for IVA on sales outside the EU', ''),
219+
(1, (SELECT MAX(`id`)-3 FROM `zz_settings`), 'Conto per Iva su acquisti Intra UE', ''),
220+
(2, (SELECT MAX(`id`)-3 FROM `zz_settings`), 'Account for IVA on purchases within the EU', ''),
221+
(1, (SELECT MAX(`id`)-2 FROM `zz_settings`), 'Conto per Iva su vendite Intra UE', ''),
222+
(2, (SELECT MAX(`id`)-2 FROM `zz_settings`), 'Account for IVA on sales within the EU', ''),
223+
(1, (SELECT MAX(`id`)-1 FROM `zz_settings`), 'Conto per Iva su acquisti Reverse charge', ''),
224+
(2, (SELECT MAX(`id`)-1 FROM `zz_settings`), 'Account for IVA on purchases with reverse charge', ''),
225+
(1, (SELECT MAX(`id`) FROM `zz_settings`), 'Conto per Iva su vendite Reverse charge', ''),
226+
(2, (SELECT MAX(`id`) FROM `zz_settings`), 'Account for IVA on sales with reverse charge', '');

0 commit comments

Comments
 (0)