Skip to content

Commit 4dc5dd6

Browse files
feat: stampa liquidazione suddivisa per segmenti
1 parent c286336 commit 4dc5dd6

4 files changed

Lines changed: 218 additions & 47 deletions

File tree

modules/stampe_contabili/modutil.php

Lines changed: 95 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
102102
$iva_vendite_esigibile = $dbo->fetchArray('
103103
SELECT
104104
`id`,
105+
`id_segment`,
105106
`cod_iva`,
106107
`aliquota`,
107108
`descrizione`,
@@ -111,6 +112,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
111112
(
112113
SELECT
113114
`co_documenti`.`id` AS id,
115+
`co_documenti`.`id_segment` AS id_segment,
114116
`co_iva`.`codice_natura_fe` AS cod_iva,
115117
`co_iva`.`percentuale` AS aliquota,
116118
`co_iva_lang`.`title` AS descrizione,
@@ -136,6 +138,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
136138
UNION
137139
SELECT
138140
`vb_venditabanco`.`id` AS id,
141+
`vb_venditabanco`.`id_segment` AS id_segment,
139142
`co_iva`.`codice_natura_fe` AS cod_iva,
140143
`co_iva`.`percentuale` AS aliquota,
141144
`co_iva_lang`.`title` AS descrizione,
@@ -161,11 +164,13 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
161164
`cod_iva`,
162165
`aliquota`,
163166
`descrizione`,
164-
`id`');
167+
`id`,
168+
`id_segment`');
165169

166170
$iva_vendite = $dbo->fetchArray('
167171
SELECT
168172
`id`,
173+
`id_segment`,
169174
`cod_iva`,
170175
`aliquota`,
171176
`descrizione`,
@@ -175,6 +180,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
175180
(
176181
SELECT
177182
`co_documenti`.`id` AS id,
183+
`co_documenti`.`id_segment` AS id_segment,
178184
`co_iva`.`codice_natura_fe` AS cod_iva,
179185
`co_iva`.`percentuale` AS aliquota,
180186
`co_iva_lang`.`title` AS descrizione,
@@ -200,6 +206,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
200206
UNION
201207
SELECT
202208
`vb_venditabanco`.`id` AS id,
209+
`vb_venditabanco`.`id_segment` AS id_segment,
203210
`co_iva`.`codice_natura_fe` AS cod_iva,
204211
`co_iva`.`percentuale` AS aliquota,
205212
`co_iva_lang`.`title` AS descrizione,
@@ -223,11 +230,13 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
223230
`cod_iva`,
224231
`aliquota`,
225232
`descrizione`,
226-
`id`');
233+
`id`,
234+
`id_segment`');
227235
} else {
228236
// Calcolo IVA solo su fatture (senza vendite al banco)
229237
$iva_vendite_esigibile = $dbo->fetchArray('
230238
SELECT
239+
`co_documenti`.`id_segment` AS id_segment,
231240
`co_iva`.`codice_natura_fe` AS cod_iva,
232241
`co_iva`.`percentuale` AS aliquota,
233242
`co_iva_lang`.`title` AS descrizione,
@@ -254,6 +263,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
254263

255264
$iva_vendite = $dbo->fetchArray('
256265
SELECT
266+
`co_documenti`.`id_segment` AS id_segment,
257267
`co_iva`.`codice_natura_fe` AS cod_iva,
258268
`co_iva`.`percentuale` AS aliquota,
259269
`co_iva_lang`.`title` AS descrizione,
@@ -282,6 +292,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
282292
// Calcolo IVA non esigibile (split payment)
283293
$iva_vendite_nonesigibile = $dbo->fetchArray('
284294
SELECT
295+
`co_documenti`.`id_segment` AS id_segment,
285296
`co_iva`.`codice_natura_fe` AS cod_iva,
286297
`co_iva`.`percentuale` AS aliquota,
287298
`co_iva_lang`.`title` AS descrizione,
@@ -309,6 +320,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
309320
// Calcolo IVA detraibile (acquisti)
310321
$iva_acquisti_detraibile = $dbo->fetchArray('
311322
SELECT
323+
`co_documenti`.`id_segment` AS id_segment,
312324
`co_iva`.`codice_natura_fe` AS cod_iva,
313325
`co_iva`.`percentuale` AS aliquota,
314326
`co_iva_lang`.`title` AS descrizione,
@@ -336,6 +348,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
336348
// Calcolo IVA non detraibile (acquisti)
337349
$iva_acquisti_nondetraibile = $dbo->fetchArray('
338350
SELECT
351+
`co_documenti`.`id_segment` AS id_segment,
339352
`co_iva`.`codice_natura_fe` AS cod_iva,
340353
`co_iva`.`percentuale` AS aliquota,
341354
`co_iva_lang`.`title` AS descrizione,
@@ -363,6 +376,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
363376
// Calcolo IVA acquisti totale
364377
$iva_acquisti = $dbo->fetchArray('
365378
SELECT
379+
`co_documenti`.`id_segment` AS id_segment,
366380
`co_iva`.`codice_natura_fe` AS cod_iva,
367381
`co_iva`.`percentuale` AS aliquota,
368382
`co_iva_lang`.`title` AS descrizione,
@@ -398,6 +412,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
398412
// Con vendite al banco - query più complesse
399413
$iva_vendite_anno_precedente = $dbo->fetchArray('
400414
SELECT
415+
`id_segment`,
401416
`cod_iva`,
402417
`aliquota`,
403418
`descrizione`,
@@ -406,6 +421,8 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
406421
FROM
407422
(
408423
SELECT
424+
`co_documenti`.`id` AS id,
425+
`co_documenti`.`id_segment` AS id_segment,
409426
`co_iva`.`codice_natura_fe` AS cod_iva,
410427
`co_iva`.`percentuale` AS aliquota,
411428
`co_iva_lang`.`title` AS descrizione,
@@ -430,6 +447,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
430447
data_competenza_iva BETWEEN '.prepare($anno_precedente_start).' AND '.prepare($anno_precedente_end).'
431448
UNION
432449
SELECT
450+
`vb_venditabanco`.`id_segment` AS id_segment,
433451
`co_iva`.`codice_natura_fe` AS cod_iva,
434452
`co_iva`.`percentuale` AS aliquota,
435453
`co_iva_lang`.`title` AS descrizione,
@@ -452,10 +470,12 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
452470
GROUP BY
453471
`cod_iva`,
454472
`aliquota`,
455-
`descrizione`');
473+
`descrizione`,
474+
`id_segment`');
456475

457476
$iva_vendite_periodo_precedente = $dbo->fetchArray('
458477
SELECT
478+
`id_segment`,
459479
`cod_iva`,
460480
`aliquota`,
461481
`descrizione`,
@@ -464,6 +484,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
464484
FROM
465485
(
466486
SELECT
487+
`co_documenti`.`id_segment` AS id_segment,
467488
`co_iva`.`codice_natura_fe` AS cod_iva,
468489
`co_iva`.`percentuale` AS aliquota,
469490
`co_iva_lang`.`title` AS descrizione,
@@ -488,6 +509,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
488509
data_competenza_iva BETWEEN '.prepare($periodo_precedente_start).' AND '.prepare($periodo_precedente_end).'
489510
UNION
490511
SELECT
512+
`vb_venditabanco`.`id_segment` AS id_segment,
491513
`co_iva`.`codice_natura_fe` AS cod_iva,
492514
`co_iva`.`percentuale` AS aliquota,
493515
`co_iva_lang`.`title` AS descrizione,
@@ -510,11 +532,13 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
510532
GROUP BY
511533
`cod_iva`,
512534
`aliquota`,
513-
`descrizione`');
535+
`descrizione`,
536+
`id_segment`');
514537
} else {
515538
// Solo fatture - query semplificate
516539
$iva_vendite_anno_precedente = $dbo->fetchArray('
517540
SELECT
541+
`co_documenti`.`id_segment` AS id_segment,
518542
`co_iva`.`codice_natura_fe` AS cod_iva,
519543
`co_iva`.`percentuale` AS aliquota,
520544
`co_iva_lang`.`title` AS descrizione,
@@ -541,6 +565,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
541565

542566
$iva_vendite_periodo_precedente = $dbo->fetchArray('
543567
SELECT
568+
`co_documenti`.`id_segment` AS id_segment,
544569
`co_iva`.`codice_natura_fe` AS cod_iva,
545570
`co_iva`.`percentuale` AS aliquota,
546571
`co_iva_lang`.`title` AS descrizione,
@@ -569,6 +594,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
569594
// Query per acquisti dei periodi precedenti
570595
$iva_acquisti_anno_precedente = $dbo->fetchArray('
571596
SELECT
597+
`co_documenti`.`id_segment` AS id_segment,
572598
`co_iva`.`codice_natura_fe` AS cod_iva,
573599
`co_iva`.`percentuale` AS aliquota,
574600
`co_iva_lang`.`title` AS descrizione,
@@ -595,6 +621,7 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
595621

596622
$iva_acquisti_periodo_precedente = $dbo->fetchArray('
597623
SELECT
624+
`co_documenti`.`id_segment` AS id_segment,
598625
`co_iva`.`codice_natura_fe` AS cod_iva,
599626
`co_iva`.`percentuale` AS aliquota,
600627
`co_iva_lang`.`title` AS descrizione,
@@ -674,6 +701,64 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
674701
$totale_iva_maggiorata = $totale_iva + $maggiorazione;
675702
}
676703

704+
// Raggruppo i dati IVA per segmento (vendite)
705+
$iva_vendite_esigibile_per_segmento = [];
706+
$iva_vendite_per_segmento = [];
707+
$iva_vendite_nonesigibile_per_segmento = [];
708+
709+
foreach ($iva_vendite_esigibile as $record) {
710+
$id_segment = $record['id_segment'];
711+
if (!isset($iva_vendite_esigibile_per_segmento[$id_segment])) {
712+
$iva_vendite_esigibile_per_segmento[$id_segment] = [];
713+
}
714+
$iva_vendite_esigibile_per_segmento[$id_segment][] = $record;
715+
}
716+
717+
foreach ($iva_vendite as $record) {
718+
$id_segment = $record['id_segment'];
719+
if (!isset($iva_vendite_per_segmento[$id_segment])) {
720+
$iva_vendite_per_segmento[$id_segment] = [];
721+
}
722+
$iva_vendite_per_segmento[$id_segment][] = $record;
723+
}
724+
725+
foreach ($iva_vendite_nonesigibile as $record) {
726+
$id_segment = $record['id_segment'];
727+
if (!isset($iva_vendite_nonesigibile_per_segmento[$id_segment])) {
728+
$iva_vendite_nonesigibile_per_segmento[$id_segment] = [];
729+
}
730+
$iva_vendite_nonesigibile_per_segmento[$id_segment][] = $record;
731+
}
732+
733+
// Raggruppo i dati IVA per segmento (acquisti)
734+
$iva_acquisti_detraibile_per_segmento = [];
735+
$iva_acquisti_nondetraibile_per_segmento = [];
736+
$iva_acquisti_per_segmento = [];
737+
738+
foreach ($iva_acquisti_detraibile as $record) {
739+
$id_segment = $record['id_segment'];
740+
if (!isset($iva_acquisti_detraibile_per_segmento[$id_segment])) {
741+
$iva_acquisti_detraibile_per_segmento[$id_segment] = [];
742+
}
743+
$iva_acquisti_detraibile_per_segmento[$id_segment][] = $record;
744+
}
745+
746+
foreach ($iva_acquisti_nondetraibile as $record) {
747+
$id_segment = $record['id_segment'];
748+
if (!isset($iva_acquisti_nondetraibile_per_segmento[$id_segment])) {
749+
$iva_acquisti_nondetraibile_per_segmento[$id_segment] = [];
750+
}
751+
$iva_acquisti_nondetraibile_per_segmento[$id_segment][] = $record;
752+
}
753+
754+
foreach ($iva_acquisti as $record) {
755+
$id_segment = $record['id_segment'];
756+
if (!isset($iva_acquisti_per_segmento[$id_segment])) {
757+
$iva_acquisti_per_segmento[$id_segment] = [];
758+
}
759+
$iva_acquisti_per_segmento[$id_segment][] = $record;
760+
}
761+
677762
return [
678763
'iva_vendite_esigibile' => $iva_vendite_esigibile,
679764
'iva_vendite' => $iva_vendite,
@@ -708,6 +793,12 @@ function calcolaImportiLiquidazioneIva($date_start, $date_end)
708793
'periodo_precedente_end' => $periodo_precedente_end,
709794
'anno_precedente_start' => $anno_precedente_start,
710795
'anno_precedente_end' => $anno_precedente_end,
796+
'iva_vendite_esigibile_per_segmento' => $iva_vendite_esigibile_per_segmento,
797+
'iva_vendite_per_segmento' => $iva_vendite_per_segmento,
798+
'iva_vendite_nonesigibile_per_segmento' => $iva_vendite_nonesigibile_per_segmento,
799+
'iva_acquisti_detraibile_per_segmento' => $iva_acquisti_detraibile_per_segmento,
800+
'iva_acquisti_nondetraibile_per_segmento' => $iva_acquisti_nondetraibile_per_segmento,
801+
'iva_acquisti_per_segmento' => $iva_acquisti_per_segmento,
711802
];
712803
}
713804

0 commit comments

Comments
 (0)