openstamanager/templates/liquidazione_iva/init.php

447 lines
28 KiB
PHP
Raw Normal View History

2020-10-13 17:50:37 +02:00
<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
2021-01-20 15:08:51 +01:00
* Copyright (C) DevCode s.r.l.
2020-10-13 17:50:37 +02:00
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
include_once __DIR__.'/../../core.php';
use Carbon\Carbon;
2024-03-05 16:01:45 +01:00
use Models\Module;
2020-10-13 17:50:37 +02:00
$date_start = filter('date_start');
$date_end = filter('date_end');
$anno_precedente_start = (new Carbon($date_start))->subYears(1)->format('Y-m-d');
$anno_precedente_end = (new Carbon($date_end))->subYears(1)->format('Y-m-d');
2024-03-11 16:15:49 +01:00
if (setting('Liquidazione IVA') == 'Mensile') {
2022-12-06 16:47:21 +01:00
$periodo_precedente_start = (new Carbon($date_start))->subMonth()->format('Y-m-d');
$periodo_precedente_end = (new Carbon($date_end))->subMonth()->format('Y-m-d');
2020-10-16 08:31:10 +02:00
} else {
2022-12-06 16:47:21 +01:00
$periodo_precedente_start = (new Carbon($date_start))->subMonths(3)->format('Y-m-d');
$periodo_precedente_end = (new Carbon($date_end))->subMonths(3)->format('Y-m-d');
2020-10-13 17:50:37 +02:00
}
2024-03-20 11:13:28 +01:00
$vendita_banco = (new Module())->getByField('name', 'Vendita al banco');
2020-10-13 17:50:37 +02:00
$maggiorazione = 0;
// calcolo IVA su fatture + vendite al banco
2023-08-04 14:54:28 +02:00
if (!empty($vendita_banco)) {
$iva_vendite_esigibile = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
2023-03-28 15:33:39 +02:00
SELECT
2024-02-06 17:36:05 +01:00
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
2023-03-28 15:33:39 +02:00
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
2023-03-28 15:33:39 +02:00
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
2023-03-28 15:33:39 +02:00
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(
2024-02-06 17:36:05 +01:00
`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`
) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id`
INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita`
INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id`
WHERE
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`data` >= '.prepare($date_start).' AND `vb_venditabanco`.`data` <= '.prepare($date_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato"
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
2020-10-13 17:50:37 +02:00
2023-08-04 14:54:28 +02:00
$iva_vendite = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
2023-03-28 15:33:39 +02:00
SELECT
2024-02-06 17:36:05 +01:00
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
2023-03-28 15:33:39 +02:00
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = co_iva.id
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
2023-03-28 15:33:39 +02:00
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN(SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
2023-03-28 15:33:39 +02:00
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id`
INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita`
INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id`
WHERE
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`data` >= '.prepare($date_start).' AND `vb_venditabanco`.`data` <= '.prepare($date_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato"
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
2023-08-04 14:54:28 +02:00
$iva_vendite_anno_precedente = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
2023-03-28 15:33:39 +02:00
SELECT
2024-02-06 17:36:05 +01:00
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
2023-03-28 15:33:39 +02:00
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
2023-03-28 15:33:39 +02:00
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
2023-03-28 15:33:39 +02:00
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id`
INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita`
INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id`
WHERE
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`data` >= '.prepare($anno_precedente_start).' AND `vb_venditabanco`.`data` <= '.prepare($anno_precedente_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato"
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
2023-08-04 14:54:28 +02:00
$iva_vendite_periodo_precedente = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
2023-03-28 15:33:39 +02:00
SELECT
2024-02-06 17:36:05 +01:00
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
2023-03-28 15:33:39 +02:00
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
2023-03-28 15:33:39 +02:00
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
2023-03-28 15:33:39 +02:00
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `vb_righe_venditabanco` ON `vb_righe_venditabanco`.`idiva` = `co_iva`.`id`
INNER JOIN `vb_venditabanco` ON `vb_venditabanco`.`id` = `vb_righe_venditabanco`.`idvendita`
INNER JOIN `vb_stati_vendita` ON `vb_venditabanco`.`idstato` = `vb_stati_vendita`.`id`
WHERE
2024-02-06 17:36:05 +01:00
`vb_venditabanco`.`data` >= '.prepare($periodo_precedente_start).' AND `vb_venditabanco`.`data` <= '.prepare($periodo_precedente_end).' AND `vb_righe_venditabanco`.`is_descrizione` = 0 AND `vb_stati_vendita`.`descrizione` = "Pagato"
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
2024-02-06 17:36:05 +01:00
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
2023-08-04 14:54:28 +02:00
}
2020-10-13 17:50:37 +02:00
// calcolo IVA solo su fatture
else {
2023-08-04 14:54:28 +02:00
$iva_vendite_esigibile = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
2020-10-13 17:50:37 +02:00
2023-08-04 14:54:28 +02:00
$iva_vendite = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
2020-10-13 17:50:37 +02:00
2023-08-04 14:54:28 +02:00
$iva_vendite_anno_precedente = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
2023-10-27 12:34:05 +02:00
ORDER BY aliquota desc');
2020-10-13 17:50:37 +02:00
2023-08-04 14:54:28 +02:00
$iva_vendite_periodo_precedente = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
}
$iva_vendite_nonesigibile = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "entrata" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 1 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_acquisti_detraibile = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `co_documenti`.`split_payment` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 100
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_acquisti_nondetraibile = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *`indetraibile`/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).' AND `co_iva`.`indetraibile` != 0
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
2020-10-13 17:50:37 +02:00
$iva_acquisti = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
2023-08-04 14:54:28 +02:00
2023-04-13 12:03:38 +02:00
$iva_acquisti_anno_precedente = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
2023-08-04 14:54:28 +02:00
2023-04-13 12:03:38 +02:00
$iva_acquisti_periodo_precedente = $dbo->fetchArray('
SELECT
2024-02-06 17:36:05 +01:00
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`name` AS descrizione,
SUM((`subtotale`-`sconto`+`co_righe_documenti`.`rivalsainps`) *`percentuale`/100 *(100-`indetraibile`)/100 *(IF(`co_tipidocumento`.`reversed` = 0, 1,-1 ))) AS iva,
SUM((`co_righe_documenti`.`subtotale` - `co_righe_documenti`.`sconto` + `co_righe_documenti`.`rivalsainps`) *(IF(`co_tipidocumento`.`reversed` = 0,1,-1))) AS subtotale
FROM
2024-02-06 17:36:05 +01:00
`co_iva`
2024-03-20 16:15:37 +01:00
LEFT JOIN `co_iva_lang` ON (`co_iva`.`id` = `co_iva_lang`.`id_record` AND `co_iva_lang`.`id_lang` = '.prepare(\Models\Locale::getDefault()->id).')
2024-02-06 17:36:05 +01:00
INNER JOIN `co_righe_documenti` ON `co_righe_documenti`.`idiva` = `co_iva`.`id`
INNER JOIN `co_documenti` ON `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`
INNER JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento`
WHERE
`co_tipidocumento`.`dir` = "uscita" AND `co_righe_documenti`.`is_descrizione` = 0 AND `idstatodocumento` NOT IN (SELECT `id_record` FROM `co_statidocumento_lang` WHERE `name` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
2024-02-06 17:36:05 +01:00
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');