Gestito sblocco sospesi
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2024-11-05 10:58:57 +01:00
parent b6680971e4
commit 8a80c5b91d

View File

@@ -0,0 +1,210 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20241105105800 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createOrUpdateFunction("getSospesoClienti_completa", "CREATE FUNCTION [dbo].[getSospesoClienti_completa]\n" +
"\n" +
"(\n" +
" @dataSospeso datetime, @codAnag varchar(5), @filtaClienti varchar(1), @filtraCondPaga varchar(1)\n" +
")\n" +
"RETURNS TABLE AS\n" +
"RETURN (\n" +
" with \n" +
" setup AS (\n" +
" SELECT max(case when key_section ='ESCLUDI_CLIENTI' THEN value ELSE null END) as ESCLUDI_CLIENTI,\n" +
" max(case when key_section ='ESCLUDI_COND_PAGA' THEN value ELSE null END) as ESCLUDI_COND_PAGA ,\n" +
" max(case when key_section ='GESTISCI_SOSPESI_BOLLA' THEN value ELSE null END) as GESTISCI_SOSPESI_BOLLA\n" +
" FROM stb_gest_setup\n" +
" where gest_name = 'VTB_DIST_INCA'\n" +
" AND section = 'SETUP'\n" +
" ),\n" +
" clienti as \n" +
"(SELECT gtb_anag.cod_anag\n" +
"FROM gtb_anag inner join vtb_clie on gtb_anag.cod_anag = vtb_clie.cod_anag\n" +
"where gtb_anag.cod_anag not in (SELECT value_string FROM dbo.ParseStringIntoArray((SELECT case when @filtaClienti = 'S' THEN (SELECT ESCLUDI_CLIENTI FROM SETUP ) else null end ),'|'))\n" +
"and ( @codAnag is null or gtb_anag.cod_anag = @codAnag)),\n" +
"incassi as \n" +
"(SELECT dtb_doct.cod_dtip_val as cod_dtip, \n" +
" dtb_doct.cod_anag, \n" +
" dtb_doct.data_doc_val as data_doc, \n" +
" dtb_doct.ser_doc_val as ser_doc, \n" +
" dtb_doct.num_doc_val as num_doc, \n" +
" Sum(vtb_dist_incar.imp_incasso) as imp_incasso \n" +
" FROM vtb_dist_incat INNER JOIN vtb_dist_incar on vtb_dist_incat.data_dist = vtb_dist_incar.data_dist and \n" +
" vtb_dist_incat.num_dist = vtb_dist_incar.num_dist\n" +
" INNER JOIN clienti ON vtb_dist_incar.cod_anag = clienti.cod_anag\n" +
" INNER JOIN dtb_doct ON ( vtb_dist_incar.cod_anag = dtb_doct.cod_anag ) AND \n" +
" ( vtb_dist_incar.cod_dtip = dtb_doct.cod_dtip ) AND \n" +
" ( vtb_dist_incar.data_doc = dtb_doct.data_doc ) AND \n" +
" ( vtb_dist_incar.ser_doc = dtb_doct.ser_doc ) AND \n" +
" ( vtb_dist_incar.num_doc = dtb_doct.num_doc )\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip_val = dtb_tipi.cod_dtip \n" +
"WHERE ( vtb_dist_incat.num_cmov is null ) and \n" +
" ( dtb_tipi.prevista_fat = 'N' ) and \n" +
" ( vtb_dist_incat.data_dist <= IsNull(@dataSospeso, CONVERT(datetime, convert(varchar(10),GetDate(), 121))))\n" +
"\n" +
"GROUP BY dtb_doct.cod_dtip_val, \n" +
" dtb_doct.cod_anag, \n" +
" dtb_doct.data_doc_val, \n" +
" dtb_doct.ser_doc_val, \n" +
" dtb_doct.num_doc_val )\n" +
"\n" +
"select * from (\n" +
" SELECT CONVERT(INT, 1) AS gruppo, \n" +
" ctb_part.cod_anag, \n" +
" dtb_doct.cod_dtip, \n" +
" ctb_part.data_doc, \n" +
" ctb_part.ser_doc, \n" +
" ctb_part.num_doc, \n" +
" dtb_doct.cod_vdes, \n" +
" Convert(numeric(20,5), \n" +
" Sum((case when ctb_part.tipo_partita = 0 then - ctb_scad.imp_avere else ctb_scad.imp_dare end)) - IsNull(incassi_part.imp_incasso, 0) ) as imp_sospeso, \n" +
" ctb_part.cod_vage, \n" +
" dtb_doct.cod_vvet,\n" +
" Min(ctb_scad.data_scad) as data_scad,\n" +
" 'N' as 'flag_doc_da_fatturare',\n" +
" dtb_doct.listino,\n" +
" ctb_scad.cod_paga\n" +
" FROM ( SELECT DISTINCT ctb_parr.tipo_anag, \n" +
" ctb_parr.cod_anag, \n" +
" ctb_parr.anno_part, \n" +
" ctb_parr.ser_doc, \n" +
" ctb_parr.num_doc \n" +
" FROM ctb_parr, \n" +
" ctb_cont \n" +
" WHERE ctb_parr.cod_ccon = ctb_cont.cod_ccon AND \n" +
" ctb_cont.tipo_riep = 'CREDITI V/CLIENTI' ) as crediti ,\n" +
" ctb_part LEFT OUTER JOIN (select * from dtb_doct where dtb_doct.gestione = 'V' and dtb_doct.prevista_fat = 'N' ) dtb_doct ON ctb_part.cod_anag = dtb_doct.cod_anag and \n" +
" ctb_part.data_doc = dtb_doct.data_doc and \n" +
" ctb_part.ser_doc = dtb_doct.ser_doc and \n" +
" ctb_part.num_doc = dtb_doct.num_doc \n" +
" \n" +
" LEFT OUTER JOIN incassi incassi_part ON dtb_doct.cod_anag = incassi_part.cod_anag AND \n" +
" dtb_doct.data_doc = incassi_part.data_doc AND \n" +
" dtb_doct.cod_dtip = incassi_part.cod_dtip AND \n" +
" dtb_doct.num_doc = incassi_part.num_doc AND \n" +
" dtb_doct.ser_doc = incassi_part.ser_doc, \n" +
" ctb_scad, \n" +
" clienti \n" +
" WHERE ( ctb_part.tipo_anag = ctb_scad.tipo_anag ) and \n" +
" ( ctb_part.cod_anag = ctb_scad.cod_anag ) and \n" +
" ( ctb_part.anno_part = ctb_scad.anno_part ) and \n" +
" ( ctb_part.ser_doc = ctb_scad.ser_doc ) and \n" +
" ( ctb_part.num_doc = ctb_scad.num_doc ) and \n" +
" ( ctb_part.data_doc = ctb_scad.data_doc ) and \n" +
" ( ctb_part.cod_anag = crediti.cod_anag ) and \n" +
" ( ctb_part.anno_part = crediti.anno_part ) and \n" +
" ( ctb_part.ser_doc = crediti.ser_doc ) and \n" +
" ( ctb_part.num_doc = crediti.num_doc ) and \n" +
" ( ctb_part.tipo_anag = crediti.tipo_anag ) and \n" +
" ( ctb_part.cod_anag = clienti.cod_anag ) and \n" +
" ( ctb_part.tipo_anag = 'C' ) AND \n" +
" ( ctb_scad.data_doc <= IsNull(@dataSospeso, CONVERT(datetime, convert(varchar(10),GetDate(), 121)))) and \n" +
" ( ctb_scad.data_pag is null or ctb_scad.data_pag > IsNull(@dataSospeso, CONVERT(datetime, convert(varchar(10),GetDate(), 121)))) AND\n" +
" ( ctb_scad.cod_paga not in (SELECT value_string FROM dbo.ParseStringIntoArray((SELECT case when @filtraCondPaga = 'S' THEN (SELECT ESCLUDI_COND_PAGA FROM setup ) ELSE null end),'|')) ) \n" +
" GROUP BY ctb_part.cod_anag, \n" +
" dtb_doct.cod_dtip, \n" +
" ctb_part.data_doc, \n" +
" ctb_part.ser_doc, \n" +
" ctb_part.num_doc, \n" +
" ctb_part.cod_vage, \n" +
" dtb_doct.cod_vvet, \n" +
" dtb_doct.cod_vdes, \n" +
" incassi_part.imp_incasso,\n" +
" dtb_doct.listino,\n" +
" ctb_scad.cod_paga\n" +
" HAVING Sum((case when ctb_part.tipo_partita = 0 then - ctb_scad.imp_avere else ctb_scad.imp_dare end)) - IsNull(incassi_part.imp_incasso, 0)<> 0\n" +
" \n" +
" UNION ALL \n" +
" SELECT CONVERT(INT, 2) AS gruppo, \n" +
" dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip, \n" +
" dtb_doct.data_doc, \n" +
" dtb_doct.ser_doc, \n" +
" dtb_doct.num_doc, \n" +
" Convert(varchar(5), dtb_doct.cod_vdes) as cod_vdes, \n" +
" Convert(numeric(20,5), (dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi ) - IsNull(SUM(vtb_dist_incar.imp_incasso), 0))) as imp_sospeso, \n" +
" dtb_doct.cod_vage, \n" +
" dtb_doct.cod_vvet, \n" +
" dtb_doct.data_doc as data_scad /* GESTIRE SCADENZE CON FUNZIONE ROSANNA*/,\n" +
" 'S' as 'flag_doc_da_fatturare',\n" +
" dtb_doct.listino,\n" +
" dtb_doct.cod_paga\n" +
" FROM dtb_doct left outer join vtb_dist_incar on vtb_dist_incar.cod_anag = dtb_doct.cod_anag and vtb_dist_incar.cod_dtip= dtb_doct.cod_dtip and vtb_dist_incar.data_doc= dtb_doct.data_doc and vtb_dist_incar.ser_doc = dtb_doct.ser_doc and vtb_dist_incar.num_doc = dtb_doct.num_doc , \n" +
" dtb_tipi, \n" +
" clienti \n" +
" WHERE (dtb_doct.data_doc_val is null OR (dtb_doct.data_doc_val is not null AND \n" +
" dtb_tipi.cod_ccau is null AND dtb_tipi.prevista_fat = 'N'))AND \n" +
" dtb_doct.cod_dtip = dtb_tipi.cod_dtip AND \n" +
" dtb_doct.cod_anag = clienti.cod_anag AND \n" +
" dtb_doct.gestione = 'V' AND \n" +
" dtb_doct.data_doc <= IsNull(@dataSospeso, CONVERT(datetime, convert(varchar(10),GetDate(), 121))) AND \n" +
" dtb_tipi.flag_doc_td = 'N' \n" +
" AND (((SELECT GESTISCI_SOSPESI_BOLLA FROM SETUP) = 'N' AND dtb_doct.prevista_fat = 'N') OR (SELECT GESTISCI_SOSPESI_BOLLA FROM SETUP) = 'S' )\n" +
" \n" +
" GROUP BY dtb_doct.cod_anag, \n" +
" dtb_doct.cod_dtip, \n" +
" dtb_doct.data_doc, \n" +
" dtb_doct.ser_doc, \n" +
" dtb_doct.num_doc, \n" +
" dtb_doct.cod_vage, \n" +
" dtb_doct.cod_vvet, \n" +
" dtb_doct.cod_vdes, \n" +
" dtb_tipi.segno_qta_scar, \n" +
" dtb_doct.tot_imponib,\n" +
" dtb_doct.tot_iva , \n" +
" dtb_doct.tot_omaggi , \n" +
" dtb_doct.acconto ,\n" +
" dtb_doct.listino,\n" +
" dtb_doct.cod_paga\n" +
" HAVING (dtb_tipi.segno_qta_scar * (dtb_doct.tot_imponib + dtb_doct.tot_iva - dtb_doct.tot_omaggi ) - IsNull(SUM(vtb_dist_incar.imp_incasso), 0)) <> 0\n" +
" UNION ALL \n" +
" SELECT CONVERT(INT, 3) AS gruppo, \n" +
" vtb_dist_incar.cod_anag, \n" +
" null as cod_dtip, \n" +
" null as data_doc, \n" +
" null as ser_doc, \n" +
" null as num_doc, \n" +
" vtb_dist_incar.cod_vdes as cod_vdes, \n" +
" Convert(numeric(20,5), -sum(vtb_dist_incar.imp_incasso)) as imp_sospeso, \n" +
" IsNUll(vtb_dist_incat.cod_vage, vtb_dist_incat.cod_vvet) as cod_vage, \n" +
" IsNull(vtb_dist_incat.cod_vvet, vtb_dist_incat.cod_vage) as cod_vvet,\n" +
" vtb_dist_incat.data_dist,\n" +
" 'N' as 'flag_doc_da_fatturare',\n" +
" null as listino,\n" +
" vtb_dist_incar.cod_paga\n" +
" FROM vtb_dist_incat, \n" +
" vtb_dist_incar, \n" +
" clienti \n" +
" WHERE vtb_dist_incat.data_dist = vtb_dist_incar.data_dist AND \n" +
" vtb_dist_incat.num_dist = vtb_dist_incar.num_dist AND \n" +
" vtb_dist_incar.cod_anag = clienti.cod_anag AND \n" +
" vtb_dist_incat.num_cmov is null AND \n" +
" vtb_dist_incat.data_dist <= IsNull(@dataSospeso, CONVERT(datetime, convert(varchar(10),GetDate(), 121))) AND \n" +
" vtb_dist_incar.cod_dtip is null \n" +
" GROUP BY vtb_dist_incat.cod_vage, \n" +
" vtb_dist_incat.cod_vvet, \n" +
" vtb_dist_incar.cod_anag, \n" +
" vtb_dist_incar.cod_vdes,\n" +
" vtb_dist_incat.data_dist ,\n" +
" vtb_dist_incar.cod_paga\n" +
" ) tmp\n" +
" WHERE NOT EXISTS(SELECT * FROM GTB_ANAG_NOTE WHERE COD_ANAG = @CODaNAG AND (data_scad IS NULL OR data_scad >=ISNULL(@dataSospeso, CAST(GETDATE() AS date)) AND tipo_note = 'SOSPESI' ))\n" +
")");
}
@Override
public void down() throws Exception {
}
}