Nella query del saldo, se l'anno è aperto, presi i movimenti dall'ultimo anno contabile aperto

This commit is contained in:
2024-11-25 10:42:15 +01:00
parent f563330832
commit 2c12233d84

View File

@@ -0,0 +1,147 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241125104041 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getBilancio", "CREATE FUNCTION [dbo].[GetBilancio] (@dataIniz datetime, @dataFine datetime )\n" +
"RETURNS TABLE AS RETURN (\n" +
"with smovp as (\n" +
"select\n" +
" cod_ccon,\n" +
" SUM(imp_Dare) AS imp_dare,\n" +
" SUM(imp_avere) AS imp_avere,\n" +
" SUM(saldo) AS saldo\n" +
"from\n" +
" (\n" +
" select\n" +
" ctb_movr.cod_ccon,\n" +
" sum(ctb_movr.imp_dare) as imp_dare,\n" +
" sum(ctb_movr.imp_avere) as imp_avere,\n" +
" 0 as saldo\n" +
" From\n" +
" ctb_movt,\n" +
" ctb_movr,\n" +
" ctb_cont,\n" +
" ctb_grup,\n" +
" ctb_caus \n" +
" Where\n" +
" ctb_movt.num_cmov = ctb_movr.num_cmov \n" +
" and ctb_movr.cod_ccon = ctb_cont.cod_ccon \n" +
" and ctb_cont.cod_cgrp = ctb_grup.cod_cgrp \n" +
" and ctb_movt.cod_ccau = ctb_caus.cod_ccau \n" +
" and ctb_caus.flag_ap_ch = ('N')\n" +
" and ctb_movt.data_cmov between @dataIniz and @dataFine\n" +
" group by\n" +
" ctb_movr.cod_ccon\n" +
" --ok\n" +
" union all\n" +
" select\n" +
" ctb_scon.cod_ccon,\n" +
" 0 as imp_dare,\n" +
" 0 as imp_Avere,\n" +
" SUM(saldo_iniz) as saldo \n" +
" From\n" +
" ctb_scon /*Aggiunto join con nuova tabella gtb_periodo_fisc*/ inner join gtb_periodo_fisc on ctb_scon.anno = gtb_periodo_fisc.anno,\n" +
" ctb_cont,\n" +
" ctb_grup,\n" +
" azienda\n" +
" Where ctb_scon.cod_ccon = ctb_cont.cod_ccon \n" +
" and ctb_cont.cod_cgrp = ctb_grup.cod_cgrp\n" +
" and YEAR(@dataIniz) <= azienda.anno_contab \n" +
" AND ctb_scon.anno = YEAR(@dataIniz)\n" +
" and /*CONVERT(datetime, (Convert(varchar(4), DATEPART(year, @dataIniz))+'/01/01'))*/ CONVERT(datetime, (Convert(varchar(4), DATEPART(year, @dataIniz))+'/' + convert(varchar (2), datepart(month, gtb_periodo_fisc.data_iniz)) + '/' + convert(varchar(2) , datepart(day, gtb_periodo_fisc.data_iniz)))) = @dataIniz \n" +
" and ctb_grup.sezione <>'2'\n" +
" group by\n" +
" ctb_scon.cod_ccon\n" +
"--ok\n" +
" union all\n" +
" select\n" +
" ctb_movr.cod_ccon,\n" +
" 0 as imp_dare,\n" +
" 0 as imp_Avere,\n" +
" SUM(imp_dare - imp_avere) as saldo \n" +
" From\n" +
" ctb_movt /*Aggiunto join con nuova tabella gtb_periodo_fisc*/ inner join gtb_periodo_fisc on ctb_movt.anno_comp = gtb_periodo_fisc.anno\n" +
" and ctb_movt.data_cmov between gtb_periodo_fisc.data_iniz and gtb_periodo_fisc.data_fine,\n" +
" ctb_movr,\n" +
" ctb_cont,\n" +
" ctb_grup,\n" +
" ctb_caus,\n" +
" azienda\n" +
" Where\n" +
" ctb_movt.num_cmov = ctb_movr.num_cmov \n" +
" and ctb_movr.cod_ccon = ctb_cont.cod_ccon \n" +
" and ctb_cont.cod_cgrp = ctb_grup.cod_cgrp \n" +
" and ctb_movt.cod_ccau = ctb_caus.cod_ccau\n" +
" and (year(@dataIniz) > azienda.anno_contab OR /*CONVERT(datetime, (Convert(varchar(4), DATEPART(year, @dataIniz))+'/01/01'))*/ CONVERT(datetime, (Convert(varchar(4), DATEPART(year, @dataIniz))+'/' + convert(varchar (2), datepart(month, gtb_periodo_fisc.data_iniz)) + '/' + convert(varchar(2) , datepart(day, gtb_periodo_fisc.data_iniz)))) <> @dataIniz ) \n" +
" and ctb_movt.data_cmov < @dataIniz\n" +
" and ctb_movt.anno_comp >= azienda.anno_contab\n" +
" and ctb_grup.sezione <>'2'\n" +
" group by\n" +
" ctb_movr.cod_ccon\n" +
" --ok\n" +
" union all\n" +
" select\n" +
" ctb_movr.cod_ccon,\n" +
" 0 as imp_dare,\n" +
" 0 as imp_Avere,\n" +
" SUM(imp_dare - imp_avere) as saldo\n" +
" From\n" +
" ctb_movt /*Aggiunto join con nuova tabella gtb_periodo_fisc*/ inner join gtb_periodo_fisc on ctb_movt.anno_comp = gtb_periodo_fisc.anno\n" +
" and ctb_movt.data_cmov between gtb_periodo_fisc.data_iniz and gtb_periodo_fisc.data_fine,\n" +
" ctb_movr,\n" +
" ctb_cont,\n" +
" ctb_grup,\n" +
" ctb_caus \n" +
" Where\n" +
" ctb_movt.num_cmov = ctb_movr.num_cmov \n" +
" and ctb_movr.cod_ccon = ctb_cont.cod_ccon \n" +
" and ctb_cont.cod_cgrp = ctb_grup.cod_cgrp \n" +
" and ctb_movt.cod_ccau = ctb_caus.cod_ccau\n" +
" and ctb_movt.data_cmov between /*CONVERT(datetime, (Convert(varchar(4), DATEPART(year, @dataIniz))+'/01/01'))*/ CONVERT(datetime, (Convert(varchar(4), DATEPART(year, @dataIniz))+'/' + convert(varchar (2), datepart(month, gtb_periodo_fisc.data_iniz)) + '/' + convert(varchar(2) , datepart(day, gtb_periodo_fisc.data_iniz)))) and DATEADD(DAY, -1, @dataIniz)\n" +
" and ctb_grup.sezione = '2'\n" +
" group by\n" +
" ctb_movr.cod_ccon \n" +
" )\n" +
" as t\n" +
"group by\n" +
" cod_Ccon\n" +
"),\n" +
"mov as (\n" +
"select smovp.*, \n" +
"ctb_cont.descrizione, \n" +
"ctb_grup.sezione, \n" +
"ctb_grup.tipo, \n" +
"ctb_mast.descrizione as descr_mastro, \n" +
"ctb_mast.cod_cmas\n" +
"from smovp INNER JOIN ctb_cont ON ctb_cont.cod_ccon = smovp.cod_ccon\n" +
" INNER JOIN ctb_mast ON ctb_mast.cod_cmas = ctb_cont.cod_cmas\n" +
" INNER JOIN ctb_grup ON ctb_grup.cod_cgrp = ctb_cont.cod_cgrp\n" +
") ,\n" +
"bilancio as (\n" +
"select cod_cmas, cod_cmas as cod_ccon, descr_mastro as descrizione, SUM(saldo + imp_dare - imp_avere) as saldo, sum(saldo) as saldo_prec, sum(imp_dare) as dare, sum(imp_avere) as avere, tipo, sezione, 1 as group_cont\n" +
"from mov\n" +
"group by cod_cmas, descr_mastro, tipo, sezione\n" +
"union all\n" +
"select cod_cmas, cod_ccon, descrizione, sum(saldo + imp_dare - imp_avere) as saldo, sum(saldo) as saldo_prec, sum(imp_dare) as dare, sum(imp_avere) as avere, tipo , sezione, 2 as group_cont\n" +
"from mov\n" +
"group by cod_cmas, cod_ccon, descrizione, tipo, sezione)\n" +
"\n" +
"SELECT * FROM bilancio\n" +
")");
}
@Override
public void down() throws Exception {
}
}