openstamanager/templates/liquidazione_iva/init.php

446 lines
28 KiB
PHP

<?php
/*
* OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
* Copyright (C) DevCode s.r.l.
*
* 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;
use Models\Module;
$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');
if (setting('Liquidazione IVA') == 'Mensile') {
$periodo_precedente_start = (new Carbon($date_start))->subMonth()->format('Y-m-d');
$periodo_precedente_end = (new Carbon($date_end))->subMonth()->format('Y-m-d');
} else {
$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');
}
$vendita_banco = Module::where('name', 'Vendita al banco')->first()->id;
$maggiorazione = 0;
// calcolo IVA su fatture + vendite al banco
if (!empty($vendita_banco)) {
$iva_vendite_esigibile = $dbo->fetchArray('
SELECT
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
SELECT
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(
`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`
) AS subtotale
FROM
`co_iva`
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).')
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
`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
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
$iva_vendite = $dbo->fetchArray('
SELECT
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
SELECT
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale
FROM
`co_iva`
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).')
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
`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
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
$iva_vendite_anno_precedente = $dbo->fetchArray('
SELECT
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
SELECT
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale
FROM
`co_iva`
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).')
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
`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
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
$iva_vendite_periodo_precedente = $dbo->fetchArray('
SELECT
`id`,
`cod_iva`,
`aliquota`,
`descrizione`,
SUM(`iva`) AS iva,
SUM(`subtotale`) AS subtotale
FROM
(
SELECT
`co_documenti`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
`cod_iva`, `aliquota`, `descrizione`, `co_documenti`.`id`
UNION
SELECT
`vb_venditabanco`.`id` AS id,
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` AS descrizione,
SUM(`vb_righe_venditabanco`.`iva`) AS iva,
SUM(`vb_righe_venditabanco`.`subtotale` - `vb_righe_venditabanco`.`sconto`) AS subtotale
FROM
`co_iva`
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).')
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
`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
`cod_iva`, `aliquota`, `descrizione`, `vb_venditabanco`.`id`
) AS tabella
GROUP BY
`cod_iva`,
`aliquota`,
`descrizione`,
`id`');
}
// calcolo IVA solo su fatture
else {
$iva_vendite_esigibile = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_vendite = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_vendite_anno_precedente = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY aliquota desc');
$iva_vendite_periodo_precedente = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
}
$iva_vendite_nonesigibile = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_acquisti_detraibile = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` 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
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_acquisti_nondetraibile = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` 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
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_acquisti = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($date_start).' AND `co_documenti`.`data_competenza` <= '.prepare($date_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_acquisti_anno_precedente = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($anno_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($anno_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');
$iva_acquisti_periodo_precedente = $dbo->fetchArray('
SELECT
`co_iva`.`codice_natura_fe` AS cod_iva,
`co_iva`.`percentuale` AS aliquota,
`co_iva_lang`.`title` 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
`co_iva`
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).')
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 `title` IN ("Bozza", "Annullata")) AND `co_documenti`.`data_competenza` >= '.prepare($periodo_precedente_start).' AND `co_documenti`.`data_competenza` <= '.prepare($periodo_precedente_end).'
GROUP BY
`co_iva`.`id`, `co_documenti`.`id`
ORDER BY `aliquota` desc');