Merge branch 'develop'
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
jenkins
2025-10-05 07:41:50 +02:00
33 changed files with 1629 additions and 90 deletions

View File

@@ -0,0 +1,40 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250929111320 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
deleteSetup("w_jriep_presenze_dip_disp", "CB_AGGNOTE", "VISIBLE");
executeStatement("create table mtb_var_lisv_log (\n" +
"id bigint identity,\n" +
"datetime_var datetime not null,\n" +
"user_name varchar(40),\n" +
"cod_vlis varchar(5) not null, \n" +
"versione int not null,\n" +
"cod_promo varchar(10), \n" +
"data_iniz datetime,\n" +
"data_fine datetime,\n" +
"cod_mart varchar(15),\n" +
"note varchar(max))\n" ,
"alter table mtb_var_lisv_log add constraint pk_mtb_var_lisv_log primary key ( id ) ");
if (isCustomer(IntegryCustomer.Carelli)) {
executeStatement("update stb_abil set flag_abil = 'R'\n" +
"where gest_name = 'vpromo'\n" +
"and user_name not in ('Apapapicco', 'Gmezzapesa')\n" +
"and flag_abil not in ('N', 'R')");
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,481 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250929124316 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isDMS())
return;
executeStatement("alter table vtb_dest alter column cod_affiliazione varchar(40)");
createOrUpdateFunction("getDocuPrint_generica", "CREATE FUNCTION [dbo].[getDocuPrint_generica]\n" +
"( \n" +
" @codAnag varchar(5), @codDtip varchar(5), @dataDoc datetime, @serDoc varchar(2), @numDoc int\n" +
")\n" +
"RETURNS TABLE \n" +
"AS\n" +
"RETURN \n" +
"\n" +
"WITH righe_doc as (\n" +
" /*righe documento diretto */\n" +
" select dtb_docr.cod_anag, dtb_docr.cod_dtip, dtb_docr.data_doc, dtb_docr.ser_doc, dtb_docr.num_doc, id_riga, null as tipo_cessione, \n" +
" dtb_docr.cod_mart, mtb_aart.tipo_codice as tipo_codice_ean, mtb_aart.bar_code, \n" +
" CASE WHEN len(dtb_docr.descrizione_estesa)>0 then dtb_docr.descrizione_estesa ELSE dtb_docr.descrizione END as descrizione, dtb_docr.descrizione as descrizione_breve, \n" +
" convert(varchar(5), null) as cod_spes, dtb_docr.unt_doc, dtb_docr.qta_doc, dtb_docr.qta_cnf, dtb_docr.num_cnf, dtb_docr.val_unt, dtb_docr.val_unt_iva, \n" +
" dtb_docr.sconto5, dtb_docr.sconto6, dtb_docr.sconto7, dtb_docr.sconto8, dtb_docr.importo_riga as importo_riga, \n" +
" dtb_docr.cod_aliq, gtb_aliq.perc_aliq, CASE WHEN dtb_docr.cod_aliq is null THEN 'N2.2' ELSE gtb_aliq.natura END as natura, \n" +
" dtb_docr.cod_kit, composto.descrizione as descr_kit, dtb_docr.partita_mag, dtb_docr.matricola, dtb_docr.data_iniz_comp, dtb_docr.data_fine_comp, dtb_docr.cod_jcom, \n" +
" dtb_ordt.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord, dtb_ordt.rif_ord, dtb_ordt.rif_data_ord, dtb_ordt.rif_num_ord, \n" +
" dtb_doct.cod_dtip_val, dtb_doct.data_doc_val, dtb_doct.ser_doc_val, dtb_doct.num_doc_val, dtb_doct.num_doc_forn\n" +
" from dtb_docr inner join dtb_doct \n" +
" on dtb_docr.cod_anag = dtb_doct.cod_anag \n" +
" and dtb_docr.cod_dtip = dtb_doct.cod_dtip\n" +
" and dtb_docr.data_doc = dtb_doct.data_doc\n" +
" and dtb_docr.ser_doc = dtb_doct.ser_doc\n" +
" and dtb_docr.num_doc = dtb_doct.num_doc \n" +
" left outer join dtb_ordt \n" +
" on dtb_doct.gestione = dtb_ordt.gestione \n" +
" and dtb_docr.data_ord = dtb_ordt.data_ord\n" +
" and dtb_docr.num_ord = dtb_ordt.num_ord\n" +
" left outer join gtb_aliq \n" +
" on dtb_docr.cod_aliq = gtb_aliq.cod_aliq \n" +
" left outer join (select cod_mart, descrizione, articolo_composto from mtb_aart) as composto \n" +
" on composto.cod_mart = dtb_docr.cod_kit\n" +
" left outer join mtb_aart on dtb_docr.cod_mart = mtb_aart.cod_mart\n" +
" where dtb_doct.cod_anag = @codAnag and \n" +
" dtb_doct.cod_dtip_val = @codDtip and \n" +
" dtb_doct.data_doc_val = @dataDoc and \n" +
" dtb_doct.ser_doc_val = @serDoc and \n" +
" dtb_doct.num_doc_val = @numDoc and\n" +
" /*esclusione degli articoli composti che vengono esplosi nel documento*/\n" +
" not((composto.articolo_composto = 'S' and dtb_docr.cod_mart is null AND dtb_docr.qta_doc <> 0 and cod_kit is not null) OR \n" +
" (composto.articolo_composto = 'N' and dtb_docr.cod_mart is NOT null AND dtb_docr.qta_doc <> 0 and cod_kit is not null and gtb_aliq.tipo_iva = 'IVA COMPOSTA') )\n" +
" AND dtb_docr.descrizione NOT LIKE 'DDT N. %' \n" +
" AND dtb_docr.descrizione NOT LIKE 'BOLLA N. %' \n" +
" AND dtb_docr.descrizione NOT LIKE 'Rif.N.%' \n" +
" UNION ALL \n" +
" select dtb_docr.cod_anag, dtb_docr.cod_dtip, dtb_docr.data_doc, dtb_docr.ser_doc, dtb_docr.num_doc, id_riga, 'SC' as tipo_cessione, null as cod_mart, null as tipo_codice_ean, null as bar_code,\n" +
" 'Omaggio con Rivalsa IVA -' + dtb_docr.descrizione, dtb_docr.descrizione as descrizione_breve, null as cod_spes,\n" +
" null as unt_doc, 1 as qta_doc, null as qta_cnf, null as num_cnf, dtb_docr.qta_doc * dtb_docr.val_unt as val_unt, \n" +
" dtb_docr.qta_doc * dtb_docr.val_unt_iva as val_unt_iva, 0 as sconto5, 0 as sconto6, 0 as sconto7, 0 as sconto8, dtb_docr.qta_doc * dtb_docr.val_unt as importo_riga, \n" +
" dtb_docr.cod_aliq, gtb_aliq.perc_aliq, gtb_aliq.natura, \n" +
" null as cod_kit, null as descr_kit, null as partita_mag, null as matricola, null as data_iniz_comp, null as data_fine_comp, null as cod_jcom,\n" +
" dtb_ordt.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord, dtb_ordt.rif_ord, dtb_ordt.rif_data_ord, dtb_ordt.rif_num_ord, \n" +
" dtb_doct.cod_dtip_val, dtb_doct.data_doc_val, dtb_doct.ser_doc_val, dtb_doct.num_doc_val, dtb_doct.num_doc_forn\n" +
" from dtb_docr inner join dtb_doct \n" +
" on dtb_docr.cod_anag = dtb_doct.cod_anag \n" +
" and dtb_docr.cod_dtip = dtb_doct.cod_dtip \n" +
" and dtb_docr.data_doc = dtb_doct.data_doc \n" +
" and dtb_docr.ser_doc = dtb_doct.ser_doc \n" +
" and dtb_docr.num_doc = dtb_doct.num_doc \n" +
" left outer join dtb_ordt \n" +
" on dtb_doct.gestione = dtb_ordt.gestione \n" +
" and dtb_docr.data_ord = dtb_ordt.data_ord \n" +
" and dtb_docr.num_ord = dtb_ordt.num_ord \n" +
" left outer join gtb_aliq \n" +
" on dtb_docr.cod_aliq = gtb_aliq.cod_aliq \n" +
" where dtb_doct.cod_anag = @codAnag \n" +
" and dtb_doct.cod_dtip_val = @codDtip \n" +
" and dtb_doct.data_doc_val = @dataDoc \n" +
" and dtb_doct.ser_doc_val = @serDoc \n" +
" and dtb_doct.num_doc_val = @numDoc \n" +
" and (dtb_docr.sconto5 = 100 OR dtb_docr.sconto6 = 100 ) and gtb_aliq.perc_aliq >0\n" +
" ) ,\n" +
" \n" +
" righe_doc_val as (\n" +
" /*acquisizione dell'id_riga delle bolle in caso di documento differito per riportare lo stesso ordinamento */\n" +
" select id_riga, dtb_docr.cod_anag, SUBSTRING(descrizione_estesa, 1, CHARINDEX( 'N.', descrizione_estesa, 1) - 2 ) as cod_dtip, \n" +
" convert (datetime,\n" +
" CASE WHEN CHARINDEX(' Rif.', descrizione_estesa) > 0 THEN \n" +
" SUBSTRING(CASE WHEN CHARINDEX(' Dest.', descrizione_estesa) > 0 THEN \n" +
" SUBSTRING(descrizione_estesa, CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') +1 , CHARINDEX(' Dest.', descrizione_estesa) - ( CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') ) -1 ) ELSE \n" +
" SUBSTRING(descrizione_estesa, CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') +1 , len(descrizione_estesa) - ( CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') ))\n" +
" END, 1, CHARINDEX(' Rif.', CASE WHEN CHARINDEX(' Dest.', descrizione_estesa) > 0 THEN \n" +
" SUBSTRING(descrizione_estesa, CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') +1 , CHARINDEX(' Dest.', descrizione_estesa) - ( CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') ) -1 ) ELSE \n" +
" SUBSTRING(descrizione_estesa, CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') +1 , len(descrizione_estesa) - ( CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') ))\n" +
" END) - 1 )\n" +
" ELSE \n" +
" CASE WHEN CHARINDEX(' Dest.', descrizione_estesa) > 0 THEN \n" +
" SUBSTRING(descrizione_estesa, CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') +1 , CHARINDEX(' Dest.', descrizione_estesa) - ( CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') ) -1 ) ELSE \n" +
" SUBSTRING(descrizione_estesa, CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') +1 , len(descrizione_estesa) - ( CHARINDEX( ' DEL', descrizione_estesa, 1) + len (' DEL') ))\n" +
" END\n" +
" END , 103) as data_doc, \n" +
" cast (SUBSTRING(SUBSTRING(descrizione_estesa, CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 , CHARINDEX(' DEL', descrizione_estesa) - ( CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 ) ), 1 , CHARINDEX( ' ', SUBSTRING(descrizione_estesa, CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 , CHARINDEX(' DEL', descrizione_estesa) - ( CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 ) )) -1 ) as int ) AS num_doc, \n" +
" SUBSTRING(SUBSTRING(descrizione_estesa, CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 , CHARINDEX(' DEL', descrizione_estesa) - ( CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 ) ), CHARINDEX( ' ', SUBSTRING(descrizione_estesa, CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 , CHARINDEX(' DEL', descrizione_estesa) - ( CHARINDEX( 'N.', descrizione_estesa, 1) + len ('N.') + 1 ) ))+ 1 , 2 ) AS ser_doc \n" +
" \n" +
" from dtb_docr \n" +
" where dtb_docr.descrizione LIKE 'BOLLA N. %'\n" +
" AND descrizione_estesa is not null and CHARINDEX( 'N.', descrizione_estesa, 1) > 0\n" +
" AND cod_anag = @codAnag and cod_dtip = @codDtip and data_doc = @dataDoc and ser_doc = @serDoc and num_doc = @numDoc \n" +
" ) \n" +
"\n" +
"\n" +
"select dtb_docr_print.cod_anag,\n" +
" dtb_docr_print.cod_dtip,\n" +
" dtb_docr_print.data_doc,\n" +
" dtb_docr_print.ser_doc,\n" +
" dtb_docr_print.num_doc,\n" +
" convert(varchar(2), null) as tipo_cessione, \n" +
" dtb_docr_print.id_riga,\n" +
" dtb_docr_print.cod_mart,\n" +
" convert(varchar(4096), dtb_docr_print.descrizione) as descrizione,\n" +
" convert(varchar(40), null) as descrizione_breve,\n" +
" convert(varchar(5), null) as cod_spes,\n" +
" convert(varchar(35), null) as tipo_codice_ean,\n" +
" convert(varchar(40), null) as valore_codice_ean,\n" +
" convert(varchar(35), null) as tipo_codice_forn,\n" +
" convert(varchar(40), null) as valore_codice_forn,\n" +
" convert(varchar(35), null) as tipo_codice_clie,\n" +
" convert(varchar(40), null) as valore_codice_clie,\n" +
" convert(varchar(10), null) as tipodato_ct_art,\n" +
" convert(int, null) as rifNumero_ct_art,\n" +
" convert(varchar(60), null) as rifTesto_ct_art,\n" +
" convert(varchar(10), null) as tipodato_pz_art,\n" +
" convert(int, null) as rifNumero_pz_art,\n" +
" convert(varchar(60), null) as rifTesto_pz_art,\n" +
" convert(varchar(40), null) as bar_code,\n" +
" dtb_docr_print.unt_doc,\n" +
" dtb_docr_print.qta_doc,\n" +
" convert(numeric(15,5), null) as qta_cnf, \n" +
" convert(numeric(20,5), null) as num_cnf,\n" +
" convert(numeric(20,5), dtb_docr_print.val_unt) as val_unt,\n" +
" convert(numeric(5,2), 0) as sconto1,\n" +
" convert(numeric(5,2), 0) as sconto2,\n" +
" convert(numeric(5,2), 0) as sconto3,\n" +
" convert(numeric(5,2), 0) as sconto4,\n" +
" dtb_docr_print.sconto5,\n" +
" dtb_docr_print.sconto6,\n" +
" dtb_docr_print.sconto7,\n" +
" dtb_docr_print.sconto8,\n" +
" dtb_docr_print.importo_riga,\n" +
" dtb_docr_print.cod_aliq,\n" +
" convert(numeric(5,2), gtb_aliq.perc_aliq) as perc_aliq, \n" +
" convert(varchar(5), gtb_aliq.natura) as natura, \n" +
" convert(datetime, null) as data_iniz_comp, \n" +
" convert(datetime, null) as data_fine_comp,\n" +
" convert(varchar(15), null) as cod_kit,\n" +
" convert(varchar(40), null) as descr_kit,\n" +
" convert(varchar(20), null ) as partita_mag, \n" +
" convert(varchar(20), null ) as matricola,\n" +
" convert(varchar(10), null) as tipodato_lotto,\n" +
" convert(varchar(60), null) as rifTesto_lotto,\n" +
" convert(varchar(10), null) as tipodato_dest,\n" +
" convert(varchar(40), null) as rifNumero_dest,\n" +
" convert(varchar(60), null) as rifTesto_dest, \n" +
" convert(varchar(5), null) as cod_vdes,\n" +
" convert(varchar(40), null) as cod_affiliazione,\n" +
" convert(varchar(40), null) as cod_ean_dest,\n" +
" convert(varchar(255), null ) as indirizzo_dest, \n" +
" convert(varchar(5), null) as cod_dtip_ddt,\n" +
" convert(int, null ) as num_doc_ddt,\n" +
" convert(varchar(2), null) as ser_doc_ddt,\n" +
" convert(datetime, null) as data_ddt, \n" +
" convert(varchar(20), null) as num_ddt,\n" +
" convert(varchar(1), null) as gestione_ord,\n" +
" convert(datetime, null) as data_ord,\n" +
" convert(int, null ) as num_ord,\n" +
" convert(varchar(40), null ) as rif_ord, \n" +
" dtb_docr_print.rif_data_ord, \n" +
" dtb_docr_print.rif_num_ord, \n" +
" convert(varchar(10), null) as cod_jcom, \n" +
" dtb_docr_print.id_riga as id_riga_orig,\n" +
" CONVERT(varchar(60), null) as rifTesto_numDocCli, \n" +
" CONVERT(varchar(40), null) as tipoDato_numDocCli\n" +
"from dtb_docr_print left outer join gtb_aliq on dtb_docr_print.cod_aliq = gtb_aliq.cod_aliq \n" +
"where cod_anag = @codAnag and cod_Dtip = @codDtip and\n" +
"data_doc = @dataDoc and ser_doc = @serDoc and num_doc = @numDoc\n" +
"union all\n" +
"SELECT docu_tab.cod_anag,\n" +
" docu_tab.cod_dtip_val,\n" +
" docu_tab.data_doc_val, \n" +
" docu_tab.ser_doc_val,\n" +
" docu_tab.num_doc_val,\n" +
" docu_tab.tipo_cessione,\n" +
" cast(ROW_NUMBER() over(order by docu_tab.cod_anag,\n" +
" docu_tab.cod_dtip_val, \n" +
" docu_tab.data_doc_val, \n" +
" docu_tab.ser_doc_val,\n" +
" docu_tab.num_doc_val, \n" +
" --docu_tab.data_ddt, \n" +
" --docu_tab.num_ddt,\n" +
" docu_tab.id_riga_doc_val, \n" +
" docu_tab.id_riga ) as integer) as id_riga,\n" +
" docu_tab.cod_mart,\n" +
" docu_tab.descrizione,\n" +
" docu_tab.descrizione_breve,\n" +
" docu_tab.cod_spes,\n" +
" docu_tab.tipo_codice_ean,\n" +
" docu_tab.valore_codice_ean,\n" +
" docu_tab.tipo_codice_forn,\n" +
" docu_tab.valore_codice_forn,\n" +
" docu_tab.tipo_codice_clie,\n" +
" docu_tab.valore_codice_clie,\n" +
" docu_tab.tipodato_ct_art,\n" +
" docu_tab.rifNumero_ct_art,\n" +
" docu_tab.rifTesto_ct_art,\n" +
" docu_tab.tipodato_pz_art,\n" +
" docu_tab.rifNumero_pz_art,\n" +
" docu_tab.rifTesto_pz_art,\n" +
" docu_tab.bar_code,\n" +
" docu_tab.unt_doc,\n" +
" docu_tab.qta_doc,\n" +
" docu_tab.qta_cnf, \n" +
" docu_tab.num_cnf,\n" +
" convert(numeric(20,5), isNull(docu_tab.val_unt, 0)) as val_unt,\n" +
" docu_tab.sconto1,\n" +
" docu_tab.sconto2,\n" +
" docu_tab.sconto3,\n" +
" docu_tab.sconto4,\n" +
" docu_tab.sconto5,\n" +
" docu_tab.sconto6,\n" +
" docu_tab.sconto7,\n" +
" docu_tab.sconto8,\n" +
" convert(numeric(20,5), isNull(docu_tab.importo_riga, 0) ) as importo_riga,\n" +
" docu_tab.cod_aliq,\n" +
" docu_tab.perc_aliq, \n" +
" docu_tab.natura, \n" +
" docu_tab.data_iniz_comp, \n" +
" docu_tab.data_fine_comp,\n" +
" docu_tab.cod_kit,\n" +
" docu_tab.descr_kit,\n" +
" docu_tab.partita_mag,\n" +
" docu_tab.matricola,\n" +
" docu_tab.tipodato_lotto,\n" +
" docu_tab.rifTesto_lotto,\n" +
" docu_tab.tipodato_dest,\n" +
" docu_tab.rifNumero_dest,\n" +
" docu_tab.rifTesto_dest, \n" +
" docu_tab.cod_vdes,\n" +
" docu_tab.cod_affiliazione,\n" +
" docu_tab.cod_ean_dest,\n" +
" docu_tab.indirizzo_dest,\n" +
" docu_tab.cod_dtip_ddt,\n" +
" docu_tab.num_doc_ddt, \n" +
" docu_tab.ser_doc_ddt, \n" +
" docu_tab.data_ddt, \n" +
" docu_tab.num_ddt,\n" +
" docu_tab.gestione_ord, \n" +
" docu_tab.data_ord, \n" +
" docu_tab.num_ord, \n" +
" docu_tab.rif_ord,\n" +
" docu_tab.rif_data_ord, \n" +
" docu_tab.rif_num_ord, \n" +
" docu_tab.cod_jcom,\n" +
" docu_tab.id_riga as id_riga_orig, \n" +
" docu_tab.rifTesto_numDocCli, \n" +
" docu_tab.tipodato_numDocCli\n" +
"FROM \n" +
"(\n" +
" SELECT dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip_val, \n" +
" dtb_doct.data_doc_val, \n" +
" dtb_doct.ser_doc_val,\n" +
" dtb_doct.num_doc_val,\n" +
" righe_doc.tipo_cessione,\n" +
" righe_doc_val.id_riga as id_riga_doc_val, \n" +
" righe_doc.id_riga,\n" +
" righe_doc.cod_mart,\n" +
" righe_doc.descrizione, \n" +
" righe_doc.descrizione_breve, \n" +
" righe_doc.cod_spes,\n" +
" CASE WHEN PATINDEX('%EAN%', righe_doc.tipo_codice_ean ) > 0 THEN 'EAN' ELSE NULL END as tipo_codice_ean,\n" +
" CASE WHEN PATINDEX('%EAN%', righe_doc.tipo_codice_ean ) > 0 THEN righe_doc.bar_code ELSE NULL END as valore_codice_ean,\n" +
" CASE WHEN righe_doc.cod_mart IS NOT NULL THEN 'COD.ART.FORNIT' ELSE null END as tipo_codice_forn,\n" +
" righe_doc.cod_mart as valore_codice_forn,\n" +
" convert(varchar(35), null) as tipo_codice_clie,\n" +
" convert(varchar(40), null) as valore_codice_clie,\n" +
" convert(varchar(10), null) as tipodato_ct_art,\n" +
" convert(int, null) as rifNumero_ct_art,\n" +
" convert(varchar(60), null) as rifTesto_ct_art,\n" +
" convert(varchar(10), null) as tipodato_pz_art,\n" +
" convert(int, null) as rifNumero_pz_art,\n" +
" convert(varchar(60), null) as rifTesto_pz_art,\n" +
" righe_doc.bar_code,\n" +
" righe_doc.unt_doc,\n" +
" righe_doc.qta_doc \n" +
" * CASE WHEN (dtb_tipi.segno_val_scar * dtb_tipi_val.segno_val_scar) = 0 THEN 1 ELSE (dtb_tipi.segno_val_scar * dtb_tipi_val.segno_val_scar) END \n" +
" as qta_doc,\n" +
" righe_doc.qta_cnf, \n" +
" righe_doc.num_cnf,\n" +
" CASE WHEN dtb_tipi.flag_prz_iva = 'S' THEN Round( Round(righe_doc.qta_doc * righe_doc.val_unt_iva, 2) / (1 + perc_aliq /100) / CASE WHEN righe_doc.qta_doc = 0 THEN 1 ELSE righe_doc.qta_doc END, 5) ELSE righe_doc.val_unt END \n" +
" * isNull(dvw_tipi_integrazioni.segno, 1) as val_unt, \n" +
" CASE WHEN flag_prz_scontati = 'S' THEN 0 ELSE dtb_doct.sconto1 END as sconto1 , \n" +
" CASE WHEN flag_prz_scontati = 'S' THEN 0 ELSE dtb_doct.sconto2 END as sconto2 , \n" +
" CASE WHEN flag_prz_scontati = 'S' THEN 0 ELSE dtb_doct.sconto3 END as sconto3 ,\n" +
" CASE WHEN flag_prz_scontati = 'S' THEN 0 ELSE dtb_doct.sconto4 END as sconto4 , \n" +
" righe_doc.sconto5,\n" +
" righe_doc.sconto6,\n" +
" righe_doc.sconto7,\n" +
" righe_doc.sconto8,\n" +
" round(CASE WHEN dtb_tipi.flag_prz_iva = 'S' THEN Round( Round(righe_doc.qta_doc * righe_doc.val_unt_iva * (1 - righe_doc.sconto5 / 100) * (1 - righe_doc.sconto6 / 100) * (1 - righe_doc.sconto7 / 100) * (1 - righe_doc.sconto8 / 100), 2) / (1 + perc_aliq /100), 5) ELSE righe_doc.importo_riga END \n" +
" * CASE WHEN flag_prz_scontati <> 'S' THEN (1 - dtb_doct.sconto1 / 100) * (1 - dtb_doct.sconto2 / 100) * (1 - dtb_doct.sconto3 / 100) * (1 - dtb_doct.sconto4 / 100) ELSE 1 END * CASE WHEN (dtb_tipi.segno_val_scar * dtb_tipi_val.segno_val_scar) = 0 THEN 1 ELSE (dtb_tipi.segno_val_scar * dtb_tipi_val.segno_val_scar) END\n" +
" * isNull(dvw_tipi_integrazioni.segno, 1) \n" +
" ,\n" +
" CASE WHEN dtb_tipi.flag_prz_iva = 'S' THEN 5 ELSE 2 END ) as importo_riga,\n" +
" righe_doc.cod_aliq,\n" +
" isnull(righe_doc.perc_aliq, 0) as perc_aliq, \n" +
" righe_doc.natura,\n" +
" righe_doc.data_iniz_comp, \n" +
" righe_doc.data_fine_comp,\n" +
" righe_doc.cod_kit,\n" +
" righe_doc.descr_kit, \n" +
" righe_doc.partita_mag, \n" +
" righe_doc.matricola, \n" +
" CASE WHEN len(righe_doc.partita_mag ) > 0 THEN 'LOTTO' ELSE null END as tipodato_lotto,\n" +
" CASE WHEN len(righe_doc.partita_mag ) > 0 THEN righe_doc.partita_mag ELSE null END as rifTesto_lotto,\n" +
" CASE WHEN len(vtb_dest.cod_affiliazione) > 0 THEN 'PV' ELSE \n" +
" CASE WHEN len(dtb_doct.cod_vdes) > 0 THEN 'PV.FORNIT' ELSE null END END as tipodato_dest,\n" +
" CASE WHEN len(vtb_dest.cod_affiliazione) > 0 AND ISNUMERIC(vtb_dest.cod_affiliazione) = 1 THEN vtb_dest.cod_affiliazione ELSE null END as rifNumero_dest,\n" +
" CASE WHEN len(vtb_dest.cod_affiliazione) > 0 THEN \n" +
" CASE WHEN ISNUMERIC(vtb_dest.cod_affiliazione) = 1 THEN vtb_dest.indirizzo ELSE vtb_dest.cod_affiliazione END\n" +
" ELSE \n" +
" CASE WHEN len(dtb_doct.cod_vdes) > 0 THEN dtb_doct.cod_vdes + ' - '+ vtb_dest.indirizzo ELSE null END\n" +
" END as rifTesto_dest,\n" +
" dtb_doct.cod_vdes, \n" +
" vtb_dest.cod_affiliazione,\n" +
" vtb_dest.cod_ean as cod_ean_dest,\n" +
" vtb_dest.indirizzo as indirizzo_dest,\n" +
" CASE WHEN dtb_doct.cod_dtip_val <> dtb_doct.cod_dtip THEN dtb_doct.cod_dtip ELSE null END as cod_dtip_ddt, \n" +
" CASE WHEN dtb_doct.cod_dtip_val <> dtb_doct.cod_dtip THEN dtb_doct.num_doc ELSE null END as num_doc_ddt,\n" +
" CASE WHEN dtb_doct.cod_dtip_val <> dtb_doct.cod_dtip THEN dtb_doct.ser_doc ELSE null END as ser_doc_ddt,\n" +
" CASE WHEN dtb_doct.cod_dtip_val <> dtb_doct.cod_dtip THEN dtb_doct.data_doc ELSE null END as data_ddt ,\n" +
" CASE WHEN dtb_doct.cod_dtip_val <> dtb_doct.cod_dtip THEN cast(dtb_doct.num_doc as varchar) + ' '+ dtb_doct.ser_doc ELSE null END as num_ddt, \n" +
" righe_doc.gestione as gestione_ord, righe_doc.data_ord, righe_doc.num_ord, \n" +
" righe_doc.rif_ord, righe_doc.rif_data_ord, righe_doc.rif_num_ord, righe_doc.cod_jcom , righe_doc.num_doc_forn as rifTesto_numDocCli, 'N.DOC.CLI.' as tipodato_numDocCli\n" +
" FROM dtb_doct inner join dtb_tipi \n" +
" on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" inner join dtb_tipi as dtb_tipi_val \n" +
" on dtb_doct.cod_dtip_val = dtb_tipi_val.cod_dtip\n" +
" inner join righe_doc \n" +
" on dtb_doct.cod_anag = righe_doc.cod_anag \n" +
" and dtb_doct.cod_dtip = righe_doc.cod_dtip \n" +
" and dtb_doct.data_doc = righe_doc.data_doc \n" +
" and dtb_doct.ser_doc = righe_doc.ser_doc \n" +
" and dtb_doct.num_doc = righe_doc.num_doc \n" +
" left outer join righe_doc_val \n" +
" on righe_doc.cod_anag = righe_doc_val.cod_anag \n" +
" and righe_doc.cod_dtip = righe_doc_val.cod_dtip \n" +
" and righe_doc.data_doc = righe_doc_val.data_doc \n" +
" and righe_doc.ser_doc = righe_doc_val.ser_doc \n" +
" and righe_doc.num_doc =righe_doc_val.num_doc\n" +
" left outer join vtb_dest \n" +
" on dtb_doct.cod_anag = vtb_dest.cod_anag \n" +
" and dtb_doct.cod_vdes = vtb_dest.cod_vdes\n" +
" left outer join ctb_caus \n" +
" on dtb_tipi_val.cod_ccau = ctb_caus.cod_ccau\n" +
" left outer join dvw_tipi_integrazioni \n" +
" on dtb_doct.cod_dtip = dvw_tipi_integrazioni.cod_dtip\n" +
" WHERE dtb_tipi.tipo_emissione ='DIRETTA' and \n" +
" dtb_doct.cod_anag = @codAnag and \n" +
" dtb_doct.cod_dtip_val = @codDtip and \n" +
" dtb_doct.data_doc_val = @dataDoc and \n" +
" dtb_doct.ser_doc_val = @serDoc and \n" +
" dtb_doct.num_doc_val = @numDoc \n" +
"UNION ALL\n" +
" SELECT dtb_doct.cod_anag,\n" +
" dtb_doct.cod_dtip_val, \n" +
" dtb_doct.data_doc_val, \n" +
" dtb_doct.ser_doc_val,\n" +
" dtb_doct.num_doc_val,\n" +
" 'AC' as tipo_cessione, \n" +
" (SELECT Max(id_riga) id FROM dtb_docr as docr\n" +
" WHERE docr.cod_anag = dtb_doct.cod_anag AND docr.cod_dtip = dtb_doct.cod_dtip \n" +
" AND docr.data_doc = dtb_doct.data_doc \n" +
" AND docr.ser_doc = dtb_doct.ser_doc \n" +
" AND docr.num_doc = dtb_doct.num_doc) as id_riga_doc_val ,\n" +
" dtb_docs.riga as id_riga , \n" +
" convert(varchar(15), null) as cod_mart,\n" +
" convert(varchar(4096), dtb_docs.descrizione) as descrizione, \n" +
" convert(varchar(40), dtb_docs.descrizione) as descrizione_breve, \n" +
" dtb_docs.cod_spes ,\n" +
" convert(varchar(35), null) as tipo_codice_ean,\n" +
" convert(varchar(40), null) as valore_codice_ean,\n" +
" convert(varchar(35), null) as tipo_codice_forn,\n" +
" convert(varchar(40), null) as valore_codice_forn,\n" +
" convert(varchar(35), null) as tipo_codice_clie,\n" +
" convert(varchar(40), null) as valore_codice_clie,\n" +
" convert(varchar(10), null) as tipodato_ct_art,\n" +
" convert(int, null) as rifNumero_ct_art,\n" +
" convert(varchar(60), null) as rifTesto_ct_art,\n" +
" convert(varchar(10), null) as tipodato_pz_art,\n" +
" convert(int, null) as rifNumero_pz_art,\n" +
" convert(varchar(60), null) as rifTesto_pz_art,\n" +
" convert(varchar(40), null) as bar_code,\n" +
" dtb_docs.unt_mis as unt_doc,\n" +
" 1 as qta_doc,\n" +
" convert(numeric(15,5), null) as qta_cnf, \n" +
" convert(numeric(20,5), null) as num_cnf,\n" +
" convert(numeric(20,5), CASE WHEN flag_prz_iva = 'S' THEN Round( dtb_docs.importo / (1 + perc_aliq /100), 5) ELSE dtb_docs.importo END ) as val_unt,\n" +
" convert(numeric(5,2), 0) as sconto1,\n" +
" convert(numeric(5,2), 0) as sconto2,\n" +
" convert(numeric(5,2), 0) as sconto3,\n" +
" convert(numeric(5,2), 0) as sconto4,\n" +
" convert(numeric(5,2), 0) as sconto5,\n" +
" convert(numeric(5,2), 0) as sconto6,\n" +
" convert(numeric(5,2), 0) as sconto7,\n" +
" convert(numeric(5,2), 0) as sconto8, \n" +
" convert(numeric(20,5), CASE WHEN flag_prz_iva = 'S' THEN Round( dtb_docs.importo / (1 + perc_aliq /100), 5) ELSE dtb_docs.importo END) as importo_riga,\n" +
" dtb_docs.cod_aliq,\n" +
" isnull(gtb_aliq.perc_aliq, 0) as perc_aliq, \n" +
" gtb_aliq.natura,\n" +
" convert(datetime, null) as data_iniz_comp, \n" +
" convert(datetime, null) as data_fine_comp,\n" +
" convert(varchar(15), null) as cod_kit,\n" +
" convert(varchar(40), null) as descr_kit,\n" +
" convert(varchar(20), null ) as partita_mag, \n" +
" convert(varchar(20), null ) as matricola, \n" +
" convert(varchar(10), null) as tipodato_lotto,\n" +
" convert(varchar(60), null) as rifTesto_lotto,\n" +
" convert(varchar(10), null) as tipodato_dest,\n" +
" convert(varchar(40), null) as rifNumero_dest,\n" +
" convert(varchar(60), null) as rifTesto_dest, \n" +
" convert(varchar(5), null) as cod_vdes,\n" +
" convert(varchar(10), null) as cod_affiliazione,\n" +
" convert(varchar(40), null) as cod_ean_dest,\n" +
" convert(varchar(255), null ) as indirizzo_dest, \n" +
" convert(varchar(5), null) as cod_dtip_ddt,\n" +
" convert(int, null ) as num_doc_ddt,\n" +
" convert(varchar(2), null) as ser_doc_ddt,\n" +
" convert(datetime, null) as data_ddt, \n" +
" convert(varchar(20), null) as num_ddt,\n" +
" convert(varchar(1), null) as gestione_ord,\n" +
" convert(datetime, null) as data_ord,\n" +
" convert(int, null ) as num_ord,\n" +
" convert(varchar(40), null) as rif_ord,\n" +
" convert(datetime, null) as rif_data_ord, \n" +
" convert(varchar(20), null) as rif_num_ord,\n" +
" convert(varchar(10), null) as cod_jcom,\n" +
" CONVERT(varchar(60), null) as rifTesto_numDocCli, \n" +
" CONVERT(varchar(40), null) as tipodato_numDocCli\n" +
" FROM dtb_doct inner join dtb_docs on dtb_docs.cod_anag = dtb_doct.cod_anag and \n" +
" dtb_docs.cod_dtip = dtb_doct.cod_dtip and \n" +
" dtb_docs.data_doc = dtb_doct.data_doc and \n" +
" dtb_docs.ser_doc = dtb_doct.ser_doc and \n" +
" dtb_docs.num_doc = dtb_doct.num_doc \n" +
" INNER JOIN dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" left outer join gtb_aliq on dtb_docs.cod_aliq = gtb_aliq.cod_aliq \n" +
" WHERE dtb_doct.cod_anag = @codAnag and \n" +
" dtb_doct.cod_dtip = @codDtip and \n" +
" dtb_doct.data_doc = @dataDoc and \n" +
" dtb_doct.ser_doc = @serDoc and \n" +
" dtb_doct.num_doc = @numDoc ) as docu_tab left outer join dtb_docr_print on docu_tab.cod_anag = dtb_docr_print.cod_anag AND\n" +
" docu_tab.cod_dtip_val = dtb_docr_print.cod_dtip AND\n" +
" docu_tab.data_doc_val = dtb_docr_print.data_doc AND\n" +
" docu_tab.ser_doc_val = dtb_docr_print.ser_doc AND\n" +
" docu_tab.num_doc_val = dtb_docr_print.num_doc\n" +
"WHERE dtb_docr_print.cod_anag is null");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,216 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250930121417 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isDMS())
return;
createOrUpdateProcedure("UpdProgOrdini", "CREATE PROCEDURE [dbo].[UpdProgOrdini](\n" +
" @codAnag varchar(5),\n" +
" @codDtip varchar(5),\n" +
" @dataDoc dateTime,\n" +
" @serDoc varchar(2),\n" +
" @numDoc integer,\n" +
" @segno integer,\n" +
" @Operation varchar(1))\n" +
" /***DESCRIZIONE: Questa storedProcedure aggiorna la quantitÃÆÃ†â€™Ãƒâ€šÃ  evasa degli ordini e anche il \n" +
" numero di pezzi, non contiene una serie di logiche particolarti tipo la \n" +
" sostuzione dell'articolo nell'ordine\n" +
" \n" +
" */\n" +
"AS\n" +
"BEGIN\n" +
" SET NOCOUNT ON;\n" +
" \n" +
"\n" +
" UPDATE dtb_ordr\n" +
" SET dtb_ordr.qta_evasa = \n" +
" CASE WHEN (SELECT application_name from azienda ) = 'WINGEST' THEN \n" +
" dtb_ordr.qta_evasa + \n" +
" (@segno * \n" +
" (CASE dtb_ordr.unt_ord\n" +
" when doc.unt_doc then doc.qta_doc\n" +
" when doc.unt_doc2 then doc.qta_doc2\n" +
" when doc.unt_doc3 then doc.qta_doc3\n" +
" else \n" +
" Round(((doc.qta_doc_no_um / dtb_ordr.rap_conv)),mtb_unt_mis.cifre_dec) \n" +
" end ))\n" +
" ELSE \n" +
" dtb_ordr.qta_evasa \n" +
" END, \n" +
" dtb_ordr.num_cnf_evasa = dtb_ordr.num_cnf_evasa + (@segno * doc.num_cnf),\n" +
" dtb_ordr.flag_evaso_forzato = CASE WHEN @Operation = 'D' THEN 'N' ELSE doc.flag_evaso_forzato END,\n" +
" dtb_ordr.flag_evaso = CASE WHEN @Operation = 'D' THEN 'I'\n" +
" WHEN doc.flag_evaso_forzato = 'S' THEN 'E' ELSE dtb_ordr.flag_evaso END \n" +
" FROM dtb_ordr INNER JOIN mtb_unt_mis ON dtb_ordr.unt_ord = mtb_unt_mis.unt_mis\n" +
" INNER JOIN \n" +
" (SELECT dtb_doct.gestione,\n" +
" dtb_docr.data_ord,\n" +
" dtb_docr.num_ord,\n" +
" dtb_docr.riga_ord,\n" +
" sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc_no_um,\n" +
" \n" +
" dtb_docr.unt_doc,\n" +
" sum(dtb_docr.qta_doc) as qta_doc,\n" +
" \n" +
" dtb_docr.unt_doc2,\n" +
" sum(dtb_docr.qta_doc2) as qta_doc2,\n" +
" \n" +
" dtb_docr.unt_doc3,\n" +
" sum(dtb_docr.qta_doc3) as qta_doc3,\n" +
" sum(dtb_docr.num_cnf) as num_cnf,\n" +
" max(dtb_docr.flag_evaso_forzato) as flag_evaso_forzato\n" +
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc \n" +
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
" dtb_doct.cod_anag = @codAnag AND\n" +
" dtb_doct.data_doc = @dataDoc AND\n" +
" dtb_doct.ser_doc = @serDoc AND\n" +
" dtb_doct.num_doc = @numDoc AND\n" +
" dtb_docr.data_ord is not null AND\n" +
" ( dtb_doct.gestione <> 'L' AND (dtb_tipi.segno_qta_car = 1 OR dtb_tipi.segno_qta_scar = 1 ) OR \n" +
" ( dtb_doct.gestione = 'L' AND dtb_tipi.segno_qta_scar = 1 ))\n" +
" GROUP BY dtb_doct.gestione,\n" +
" dtb_docr.data_ord,\n" +
" dtb_docr.num_ord,\n" +
" dtb_docr.riga_ord, \n" +
" dtb_docr.unt_doc, \n" +
" dtb_docr.unt_doc2, \n" +
" dtb_docr.unt_doc3 \n" +
" UNION ALL\n" +
" SELECT dtb_ordt.gestione_rif,\n" +
" dtb_ordt.data_ord_rif, \n" +
" dtb_ordt.num_ord_rif, \n" +
" dtb_ordt.riga_ord_rif,\n" +
" sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc_no_um,\n" +
" \n" +
" dtb_docr.unt_doc,\n" +
" sum(dtb_docr.qta_doc) as qta_doc,\n" +
" \n" +
" dtb_docr.unt_doc2,\n" +
" sum(dtb_docr.qta_doc2) as qta_doc2,\n" +
" \n" +
" dtb_docr.unt_doc3,\n" +
" sum(dtb_docr.qta_doc3) as qta_doc3,\n" +
" sum(dtb_docr.num_cnf) as num_cnf,\n" +
" max(dtb_docr.flag_evaso_forzato) as flag_evaso_forzato\n" +
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
" left outer join dtb_ordt ON dtb_tipi.gestione = dtb_ordt.gestione and\n" +
" dtb_docr.data_ord = dtb_ordt.data_ord and\n" +
" dtb_docr.num_ord = dtb_ordt.num_ord\n" +
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
" dtb_doct.cod_anag = @codAnag AND\n" +
" dtb_doct.data_doc = @dataDoc AND\n" +
" dtb_doct.ser_doc = @serDoc AND\n" +
" dtb_doct.num_doc = @numDoc AND\n" +
" dtb_docr.data_ord is not null AND\n" +
" dtb_doct.gestione = 'L' AND dtb_tipi.segno_qta_car = 1 AND\n" +
" (SELECT application_name from azienda ) = 'WINGEST'\n" +
" GROUP BY dtb_ordt.gestione_rif,\n" +
" dtb_ordt.data_ord_rif,\n" +
" dtb_ordt.num_ord_rif,\n" +
" dtb_ordt.riga_ord_rif, \n" +
" dtb_docr.unt_doc, \n" +
" dtb_docr.unt_doc2, \n" +
" dtb_docr.unt_doc3 ) doc ON\n" +
" dtb_ordr.gestione = doc.gestione AND\n" +
" dtb_ordr.data_ord = doc.data_ord AND\n" +
" dtb_ordr.num_ord = doc.num_ord AND\n" +
" dtb_ordr.riga_ord = doc.riga_ord;\n" +
" \n" +
" UPDATE dtb_ordt\n" +
" SET dtb_ordt.qta_evasa_prod = dtb_ordt.qta_evasa_prod + (@segno * (doc.qta_doc / case when dtb_ordt.rap_conv_prod = 0 then 1 ELSE dtb_ordt.rap_conv_prod END)),\n" +
" dtb_ordt.flag_evaso_prod = \n" +
" CASE WHEN dtb_ordt.flag_evaso_prod = 'A' THEN dtb_ordt.flag_evaso_prod\n" +
" WHEN @segno = -1 THEN CASE WHEN dtb_ordt.flag_evaso_forzato ='S' and dtb_ordt.flag_evaso_prod <> 'A' THEN 'E' ELSE 'I' END\n" +
" WHEN @segno = 1 THEN \n" +
" CASE WHEN doc.flag_evaso_forzato ='S' and dtb_ordt.flag_evaso_prod <> 'A' THEN 'E' \n" +
" WHEN dtb_ordt.qta_evasa_prod + (@segno * (doc.qta_doc / case when dtb_ordt.rap_conv_prod = 0 then 1 ELSE dtb_ordt.rap_conv_prod END)) = dtb_ordt.qta_prod then 'E' \n" +
" ELSE dtb_ordt.flag_evaso_prod END\n" +
" END\n" +
" FROM dtb_ordt INNER JOIN \n" +
" (SELECT dtb_doct.gestione,\n" +
" dtb_docr.data_ord,\n" +
" dtb_docr.num_ord,\n" +
" Sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc,\n" +
" Sum(dtb_docr.num_cnf) as num_cnf,\n" +
" max(dtb_docr.flag_evaso_forzato) as flag_evaso_forzato\n" +
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
" dtb_doct.cod_anag = @codAnag AND\n" +
" dtb_doct.data_doc = @dataDoc AND\n" +
" dtb_doct.ser_doc = @serDoc AND\n" +
" dtb_doct.num_doc = @numDoc AND\n" +
" dtb_docr.data_ord is not null AND\n" +
" dtb_doct.gestione = 'L' AND \n" +
" dtb_tipi.segno_qta_car = 1 \n" +
" GROUP BY dtb_doct.gestione,\n" +
" dtb_docr.data_ord,\n" +
" dtb_docr.num_ord\n" +
" UNION ALL\n" +
" SELECT dtb_doct.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord,\n" +
" Sum(dtb_docr.qta_doc * dtb_docr.rap_conv) as qta_doc,\n" +
" Sum(dtb_docr.num_cnf) as num_cnf,\n" +
" case when (SELECT application_name from azienda ) = 'WINGEST' THEN min (CASE WHEN dtb_docr.qta_doc >= ord_prod.qta_ord OR (dtb_docr.qta_doc < ord_prod.qta_ord AND dtb_docr.flag_evaso_forzato = 'S' ) THEN 'S' ELSE 'N' END ) ELSE 'N' END as flag_evaso_forzato \n" +
" FROM dtb_doct inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" inner join dtb_docr on dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc\n" +
" inner join dtb_ordr ord_prod on dtb_docr.data_ord = ord_prod.data_ord and\n" +
" dtb_docr.num_ord = ord_prod.num_ord and\n" +
" dtb_docr.riga_ord = ord_prod.riga_ord and\n" +
" ord_prod.gestione = 'A'\n" +
" inner join dtb_ordt on dtb_docr.data_ord = dtb_ordt.data_ord_rif and\n" +
" dtb_docr.num_ord = dtb_ordt.num_ord_rif and\n" +
" dtb_ordt.gestione = 'L' \n" +
" WHERE dtb_doct.cod_dtip = @codDtip AND\n" +
" dtb_doct.cod_anag = @codAnag AND\n" +
" dtb_doct.data_doc = @dataDoc AND\n" +
" dtb_doct.ser_doc = @serDoc AND\n" +
" dtb_doct.num_doc = @numDoc AND\n" +
" dtb_docr.data_ord is not null AND\n" +
" dtb_doct.gestione = 'L' AND (dtb_tipi.segno_qta_car = 0 AND dtb_tipi.segno_val_car = 1)\n" +
" \n" +
" GROUP BY dtb_doct.gestione,\n" +
" dtb_ordt.data_ord,\n" +
" dtb_ordt.num_ord \n" +
" ) doc ON\n" +
" dtb_ordt.gestione = doc.gestione AND\n" +
" dtb_ordt.data_ord = doc.data_ord AND\n" +
" dtb_ordt.num_ord = doc.num_ord ;\n" +
" \n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,27 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250930122122 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("w_ddocu_ord_rc", "SETUP", "CHK_DATA_DECORRENZA", "S",
"Verifica che la data decorrenza sia precedente alla data del documento", false, null, false, false,
false, false, false, null, false, null);
if(isCustomer(IntegryCustomer.RossoGargano))
updateSetupValue("w_ddocu_ord_rc", "SETUP", "CHK_DATA_DECORRENZA", "N");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -10,6 +10,8 @@ public class Migration_20250930151328 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if(isDMS())
return;
createOrUpdateFunction("[GetDatiProvv]", "CREATE FUNCTION [dbo].[GetDatiProvv](@codVlis varchar(5), \n" +
" @dataValidita datetime, \n" +

View File

@@ -10,6 +10,8 @@ public class Migration_20250930152326 extends BaseMigration implements Migration
if (isHistoryDB())
return;
if(isDMS())
return;
createOrUpdateProcedure("UpdProgOrdini", "CREATE PROCEDURE [dbo].[UpdProgOrdini](\n" +
" @codAnag varchar(5),\n" +
" @codDtip varchar(5),\n" +

View File

@@ -0,0 +1,24 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250930182717 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'");
createSetup("w_jriep_presenze_dip_disp", "CBX_VISUALIZZANOTEAGG", "VISIBLE", "N",
"Inserire S/N se si vuole o meno visualizzare il flag", false, "SI_NO", false, false,
false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251001103200 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("update stb_gest_setup set key_section = 'FLAG_COSTO_DISTINTA_NO_MDO' where key_section = 'COSTO_DA_DISTINTA_SENZA_MDO' and gest_name = 'w_mriassegna_costo_dlg'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,19 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251001104616 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("update stb_gest_setup set section = 'SETUP' where key_section = 'FLAG_COSTO_DISTINTA_NO_MDO'");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,22 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251002113809 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isTextiles()) return;
dropIndex("ttb_qta_min_ord", "ix_unique_ttb_qta_min_ord");
executeStatement("create unique index ix_unique_ttb_qta_min_ord on ttb_qta_min_ord (cod_line, cod_style, cod_grtg, range_taglie);");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,293 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomer;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251002114819 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (!isCustomer(IntegryCustomer.Biolevante)) return;
createOrUpdateFunction("f_pp_consuntivo_prod_tracc", "CREATE function [dbo].[f_pp_consuntivo_prod_tracc] (@as_codProdParent varchar(15), @as_partitaMagParent varchar(20), @ac_qtaProdParent numeric(20,5), @as_codProd varchar(15), @as_partitaMag varchar(20), @ac_qtaProd numeric(20, 5), @ai_livello integer, @as_item_id varchar(255), @ai_idRiga integer) \n" +
"RETURNS @dettCosti TABLE(livello integer, \n" +
" item_id varchar(255),\n" +
" cod_prod_parent varchar(15),\n" +
" partita_mag_parent varchar(20), \n" +
" qta_prod_parent numeric(20,5),\n" +
" cod_prod varchar(15),\n" +
" partita_mag varchar(20), \n" +
" qta_prod numeric(20,5),\n" +
" gruppo_conto varchar(40), \n" +
" conto varchar(40), \n" +
" descrizione_conto varchar(255), \n" +
" dettaglio_conto varchar(40),\n" +
" unt_mis varchar(5), \n" +
" qta_consumata numeric(20, 5)) AS\n" +
"Begin\n" +
" DECLARE \n" +
" @lc_qtaProd numeric(20,5), \n" +
" @ls_gruppoConto varchar(40), \n" +
" @ls_codMart varchar(15), \n" +
" @ls_partitaMag varchar(20), \n" +
" @ls_descrizione varchar(255), \n" +
" @ls_untMis varchar(5), \n" +
" @lc_qtaMP numeric(20,5), \n" +
" @li_existDist integer, \n" +
" @lc_rapporto numeric(20, 5),\n" +
" @lc_qtaProdScaricata numeric(20,5),\n" +
" @li_livello integer, \n" +
" @ls_itemID varchar(255),\n" +
" @li_idRiga integer,\n" +
" @ls_codMiscela varchar(15),\n" +
" @ls_posizione varchar(20),\n" +
" @ls_posizione_da varchar(20),\n" +
" @ls_posizione_a varchar(20)\n" +
"\n" +
" SELECT @ls_codMiscela = cod_mart FROM olvw_miscele_olio\n" +
"\n" +
" if @ai_idRiga is null\n" +
" begin\n" +
" SELECT @ai_livello = 1\n" +
" SELECT @as_item_id = '00001';\n" +
" end ;\n" +
" IF @as_item_id = '' \n" +
" begin\n" +
" Select @ls_posizione = mtb_depo_posizioni.posizione from mtb_partita_mag, mtb_depo_posizioni \n" +
" where mtb_depo_posizioni.posizione = mtb_partita_mag.posizione and\n" +
" mtb_partita_mag.cod_mart = @as_codProdParent and partita_mag = @as_partitaMagParent and\n" +
" mtb_depo_posizioni.flag_silos_liquidi = 1;\n" +
" If @ls_posizione is not null Select @as_item_id = 'SILOS' --Serve ad identificare le miscele di olio\n" +
" end\n" +
"\n" +
" /* Acquisizione quantita totale prodotta per prodotto-partita */\n" +
" Select @lc_qtaProd = ISNULL(sum(dtb_docr.qta_doc * dtb_docr.rap_conv * dtb_tipi.segno_qta_car), 0)\n" +
" from dtb_docr, \n" +
" dtb_tipi, \n" +
" mtb_aart, \n" +
" mtb_grup\n" +
" where dtb_docr.cod_dtip = dtb_tipi.cod_dtip and\n" +
" dtb_docr.cod_mart = mtb_aart.cod_mart and\n" +
" mtb_aart.cod_mgrp = mtb_Grup.cod_mgrp and\n" +
" dtb_docr.cod_mart = @as_codProd and\n" +
" dtb_docr.partita_mag = @as_partitaMag and\n" +
" dtb_tipi.gestione = 'L' and\n" +
" dtb_tipi.tipo_emissione = 'DIRETTA' and\n" +
" dtb_tipi.segno_qta_car <> 0\n" +
"\n" +
" /* Calcolo del rapporto della qta passata come parametro e di quella totale*/\n" +
" if @ac_qtaProd is not null\n" +
" if @lc_qtaProd = 0 select @lc_rapporto = 0 else select @lc_rapporto = @ac_qtaProd / @lc_qtaProd\n" +
" else\n" +
" begin \n" +
" select @lc_rapporto = 1\n" +
" select @ac_qtaProdParent = @lc_qtaProd\n" +
" end\n" +
" \n" +
" /* Acquisizione totale quantita' prodotta per prododo-partita_mag dagli scarichi\n" +
" E' necessario prendere la quantita dalla testata degli scarichi perche' ci \n" +
" potrebbero essere delle perdite rispetto alla quantita' caricata.\n" +
" N.B. al momento questa variabile viene acquisita solo per controllo in fase di debug\n" +
" */\n" +
" Select @lc_qtaProdScaricata = sum(dtb_doct.qta_prod*dtb_doct.rap_conv_prod * @lc_rapporto)\n" +
" From dtb_doct, \n" +
" dtb_tipi\n" +
" Where dtb_doct.cod_dtip = dtb_tipi.cod_dtip and\n" +
" dtb_tipi.gestione = 'L' and \n" +
" dtb_tipi.segno_qta_scar = 1 and\n" +
" dtb_doct.cod_prod = @as_codProd and\n" +
" ISNULL(dtb_doct.partita_mag, '') = ISNULL(@as_partitaMag, '')\n" +
" \n" +
"\n" +
" /* Acquisizione scarichi per prodotto-partita_mag */\n" +
" select @li_idRiga = 0;\n" +
" IF @as_codProd = @ls_codMiscela\n" +
" begin\n" +
" Select @ai_livello = @ai_livello+1\n" +
" end\n" +
" Declare csr_scarichi Cursor LOCAL SCROLL FOR\n" +
" Select PP_gruppiCostiMP.GruppoConto,\n" +
" dtb_docr.cod_mart, \n" +
" dtb_docr.partita_mag,\n" +
" dtb_docr.descrizione_estesa as descrizione,\n" +
" mtb_aart.unt_mis,\n" +
" sum(dtb_docr.qta_doc*dtb_docr.rap_conv*dtb_tipi.segno_qta_scar*@lc_rapporto) as Qta_mp\n" +
" From dtb_doct, \n" +
" dtb_docr, \n" +
" dtb_tipi, \n" +
" mtb_aart, \n" +
" mtb_grup, \n" +
" PP_gruppiCostiMP\n" +
" Where dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc and\n" +
" dtb_doct.cod_dtip = dtb_tipi.cod_dtip and\n" +
" dtb_tipi.gestione = 'L' and \n" +
" dtb_tipi.segno_qta_scar = 1 and\n" +
" dtb_docr.cod_mart = mtb_aart.cod_mart and\n" +
" mtb_aart.cod_mgrp = mtb_grup.cod_mgrp and\n" +
" dtb_docr.cod_mart = PP_gruppiCostiMP.cod_mart and\n" +
" dtb_doct.cod_prod = @as_codProd and\n" +
" ISNULL(dtb_doct.partita_mag, '') = ISNULL(@as_partitaMag, '')\n" +
" and NOT (dtb_docr.cod_mart = @as_codProd and ISNULL(dtb_docr.partita_mag, '') = ISNULL(@as_partitaMag, ''))\n" +
" group by PP_gruppiCostiMP.GruppoConto,\n" +
" dtb_docr.cod_mart, \n" +
" dtb_docr.partita_mag,\n" +
" dtb_docr.descrizione_estesa,\n" +
" mtb_aart.unt_mis\n" +
" union all\n" +
" \n" +
" Select PP_gruppiCostiMP.GruppoConto,\n" +
" car.cod_mart, \n" +
" car.partita_mag,\n" +
" car.descrizione_estesa as descrizione,\n" +
" mtb_aart.unt_mis,\n" +
" sum(car.qta_doc*car.rap_conv*dtb_tipi.segno_qta_scar*@lc_rapporto) as Qta_mp \n" +
" from dtb_doct inner join dtb_docr on dtb_doct.cod_anag = dtb_docr.cod_anag and\n" +
" dtb_doct.cod_dtip = dtb_docr.cod_dtip and\n" +
" dtb_doct.data_doc = dtb_docr.data_doc and\n" +
" dtb_doct.ser_doc = dtb_docr.ser_doc and\n" +
" dtb_doct.num_doc = dtb_docr.num_doc \n" +
" inner join dtb_tipi on dtb_doct.cod_dtip = dtb_tipi.cod_dtip \n" +
" inner join dtb_docr car on dtb_doct.activity_id = car.activity_id_row \n" +
" inner join dtb_tipi tipo_car on car.cod_dtip = tipo_car.cod_dtip\n" +
" inner join olvw_caratteristiche on car.cod_mart = olvw_caratteristiche.cod_mart\n" +
" inner join PP_gruppiCostiMP on car.cod_mart = PP_gruppiCostiMP.cod_mart\n" +
" inner join mtb_aart on car.cod_mart = mtb_aart.cod_mart \n" +
" inner join mtb_grup on mtb_aart.cod_mgrp = mtb_grup.cod_mgrp \n" +
" where tipo_car.gestione = 'L' and \n" +
" tipo_car.segno_qta_car - tipo_car.segno_qta_scar < 0 and \n" +
" olvw_caratteristiche.Confezionato = 'S' and \n" +
" dtb_tipi.gestione = 'L' and \n" +
" dtb_tipi.segno_qta_scar = 1 and\n" +
" dtb_doct.cod_prod = @as_codProd and\n" +
" ISNULL(dtb_doct.partita_mag, '') = ISNULL(@as_partitaMag, '')\n" +
" and NOT (dtb_docr.cod_mart = @as_codProd and ISNULL(dtb_docr.partita_mag, '') = ISNULL(@as_partitaMag, '')) \n" +
" group by PP_gruppiCostiMP.GruppoConto,\n" +
" car.cod_mart, \n" +
" car.partita_mag,\n" +
" car.descrizione_estesa,\n" +
" mtb_aart.unt_mis\n" +
" Order by PP_gruppiCostiMP.GruppoConto desc \n" +
" \n" +
" OPEN csr_scarichi\n" +
" FETCH NEXT FROM csr_scarichi INTO @ls_gruppoConto, @ls_codMart, @ls_partitaMag, @ls_descrizione, @ls_untMis, @lc_qtaMP\n" +
" WHILE @@FETCH_STATUS = 0\n" +
" begin\n" +
" IF ABS(@lc_qtaMP) > 0.01\n" +
" Begin\n" +
" select @li_idRiga = @li_idRiga + 1;\n" +
" SELECT @ls_itemID = @as_item_id + '_' + REPLICATE('0', 5 - len(CONVERT(varchar(15), @li_idRiga))) + CONVERT(varchar(15), @li_idRiga); \n" +
"\n" +
" /* verifica esistenza scarico, Indica che siamo in presenza di un semilavorato/lotto */\n" +
" select @li_existDist = count(*)\n" +
" from dtb_doct, dtb_tipi\n" +
" where dtb_doct.cod_prod = @ls_codMart and partita_mag = @ls_partitaMag and \n" +
" dtb_doct.cod_dtip = dtb_tipi.cod_dtip and\n" +
" dtb_tipi.segno_qta_scar = 1 and \n" +
" dtb_doct.gestione = 'L'\n" +
" \n" +
" \n" +
" /* Materia prima */\n" +
" if @li_existDist = 0 or @@NESTLEVEL >= 30\n" +
" begin\n" +
" insert into @dettCosti \n" +
" select @ai_livello,\n" +
" @ls_itemID,\n" +
" @as_codProdParent, \n" +
" @as_partitaMagParent, \n" +
" @ac_qtaProdParent, \n" +
" @as_codProd, \n" +
" @as_partitaMag, \n" +
" @lc_qtaProdScaricata, \n" +
" @ls_gruppoConto, \n" +
" @ls_codMart, \n" +
" @ls_descrizione, \n" +
" @ls_partitaMag, \n" +
" @ls_untMis, \n" +
" @lc_qtaMP\n" +
" end\n" +
" else\n" +
" Begin\n" +
" /* Semilavorato */\n" +
" \n" +
" Select @ls_posizione_a = mtb_depo_posizioni.posizione \n" +
" from mtb_partita_mag, mtb_depo_posizioni \n" +
" where mtb_depo_posizioni.posizione = mtb_partita_mag.posizione and\n" +
" mtb_partita_mag.cod_mart = @as_codProd and partita_mag = @as_partitaMag and\n" +
" mtb_depo_posizioni.flag_silos_liquidi = 1;\n" +
" Select @ls_posizione_da = mtb_depo_posizioni.posizione \n" +
" from mtb_partita_mag, mtb_depo_posizioni \n" +
" where mtb_depo_posizioni.posizione = mtb_partita_mag.posizione and\n" +
" mtb_partita_mag.cod_mart = @ls_codMart and partita_mag = @ls_partitaMag and\n" +
" mtb_depo_posizioni.flag_silos_liquidi = 1;\n" +
"\n" +
" If @ls_posizione_da is not null and\n" +
" (ISNULL(@ls_posizione_da,'') <> ISNULL(@ls_posizione_a,00) or \n" +
" @ls_posizione_da is null or @ls_posizione_a is null or \n" +
" (@ai_livello <1 and @as_codProd = @ls_codMiscela) or \n" +
" (ISNULL(@ls_posizione_da,'') = ISNULL(@ls_posizione_a,00) and @as_codProd= @ls_codMiscela))\n" +
" --Questa insert serve per trattare l'olio che proviene da altro serbatoio come una materia prima a partire dal 2° livello di ricorsione\n" +
" Begin\n" +
" insert into @dettCosti \n" +
" select @ai_livello,\n" +
" @ls_itemID,\n" +
" @as_codProdParent, \n" +
" @as_partitaMagParent, \n" +
" @ac_qtaProdParent, \n" +
" @as_codProd, \n" +
" @as_partitaMag, \n" +
" @lc_qtaProdScaricata, \n" +
" @ls_gruppoConto, \n" +
" @ls_codMart, \n" +
" @ls_descrizione, \n" +
" @ls_partitaMag, \n" +
" @ls_untMis, \n" +
" @lc_qtaMP;\n" +
" End\n" +
" \n" +
" /*Ricorsione su semilavorato-partita_mag*/\n" +
" If ISNULL(@ls_posizione_da,'') = ISNULL(@ls_posizione_a,00) and @as_codProd <> @ls_codMiscela or \n" +
" @ls_posizione_da is null or @ls_posizione_a is null or \n" +
" (@ai_livello <1 and @as_codProd = @ls_codMiscela)\n" +
" --La ricorsione non avviene sugli olii provenienti da altro serbatoio e neanche nel caso di Miscele fittizie create nello stesso serbatoio dell'olio di provenienza in assenza di polmone\n" +
" insert into @dettCosti \n" +
" select costi.livello, \n" +
" costi.item_id,\n" +
" @as_codProdParent, \n" +
" @as_partitaMagParent,\n" +
" @ac_qtaProdParent,\n" +
" costi.cod_prod, \n" +
" costi.partita_mag, \n" +
" costi.qta_prod,\n" +
" costi.gruppo_conto, \n" +
" costi.conto, \n" +
" costi.descrizione_conto, \n" +
" costi.dettaglio_conto,\n" +
" costi.unt_mis, \n" +
" costi.qta_consumata \n" +
" from dbo.f_pp_consuntivo_prod_tracc(@as_codProdParent, @as_partitaMagParent, @ac_qtaProdParent, @ls_codMart, @ls_partitaMag, @lc_qtaMP, @ai_livello, @ls_itemID, @li_idRiga) costi\n" +
" \n" +
" \n" +
" end\n" +
" end\n" +
" FETCH NEXT FROM csr_scarichi INTO @ls_gruppoConto, @ls_codMart, @ls_partitaMag, @ls_descrizione, @ls_untMis, @lc_qtaMP\n" +
" end\n" +
" close csr_scarichi\n" +
" deallocate csr_scarichi\n" +
" return\n" +
"END");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,41 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.IntegryCustomerDB;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251002154118 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (isCustomerDb(IntegryCustomerDB.Carelli_Winact)) {
executeStatement(
"ALTER TABLE mtb_aart\n" +
" ALTER COLUMN cod_mart VARCHAR(15) NOT NULL;\n" +
"ALTER TABLE mtb_aart\n" +
" ADD CONSTRAINT pk_mtb_aart PRIMARY KEY (cod_mart);"
);
}
executeStatement(
"CREATE TABLE mrl_aart_clie_blacklist\n" +
"(\n" +
" cod_anag VARCHAR(5)\n" +
" CONSTRAINT mrl_aart_clie_blacklist_gtb_anag_cod_anag_fk\n" +
" REFERENCES dbo.gtb_anag,\n" +
" cod_mart VARCHAR(15)\n" +
" CONSTRAINT mrl_aart_clie_blacklist_mtb_aart_cod_mart_fk\n" +
" REFERENCES dbo.mtb_aart,\n" +
" CONSTRAINT mrl_aart_clie_blacklist_pk\n" +
" PRIMARY KEY (cod_anag, cod_mart)\n" +
");"
);
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,20 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20251003120037 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isTextiles())
enableSaveToRest("ttline");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -280,6 +280,7 @@ public class ReportProcessor {
hm_parameters.put("ROOT_DIR", pathJrxmlHome);
hm_parameters.put("SUBREPORT_DIR", this.getSubreportPath()/* pathJrxmlHome*/);
HashMap<String, String> ipAddressAndPort = UtilityURL.getIpAddressAndPort();
String url = null;
if (ipAddressAndPort.get("host") != null) {
@@ -288,7 +289,9 @@ public class ReportProcessor {
}
hm_parameters.put("api_webservices", url);
if ( userSession.getCurrentUser() != null ) {
hm_parameters.put("user_name", userSession.getUsername());
String firmaUtente;
String sql =
Query.format(

View File

@@ -27,6 +27,13 @@ public class ComuniController {
return ServiceRestResponse.createPositiveResponse(comuniService.savePosition(request));
}
@PostMapping(value = "retrievePosition")
public ServiceRestResponse retrievePosition(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestBody String id) throws Exception {
return ServiceRestResponse.createPositiveResponse(comuniService.retrievePosition(id));
}
@PostMapping(value = "infoComuni")
public ServiceRestResponse getInfoComuni(@RequestParam(required = false) String nome,
@RequestParam(required = false) String cap,

View File

@@ -59,6 +59,15 @@ public class ComuniService {
return position;
}
public StbPosizioni retrievePosition(String id) throws Exception {
StbPosizioni position = new StbPosizioni().setId(Long.valueOf(id));
position.setOperation(OperationType.SELECT_OBJECT);
entityProcessor.processEntity(position, multiDBTransactionManager);
return position;
}
/**
* Metodo che filtra l'intera lista dei comuni corrispondenti ai parametri specificati
*

View File

@@ -219,7 +219,7 @@ public class ProductionOrderDataHandlerService {
" ordl.colli_pedana,\n" +
" ordl.riga_ord_rif riga_ord_prod,\n" +
" ISNULL(mtb_aart.descrizione_estesa, mtb_aart.descrizione) AS descrizione_prod,\n" +
" colli.data_scad,\n" +
" isNull(colli.data_scad,mtb_partita_mag.data_scad) AS data_scad,\n" +
" jtb_comt.cod_jcom,\n" +
" jtb_comt.descrizione as descrizione_commessa,\n" +
" jl.id_lotto\n" +
@@ -231,9 +231,11 @@ public class ProductionOrderDataHandlerService {
" ordl.data_ord = steps.data_ord AND\n" +
" ordl.num_ord = steps.num_ord\n" +
" INNER JOIN mtb_aart ON ordl.cod_prod = mtb_aart.cod_mart\n" +
" INNER JOIN colli ON colli.gestione = ordl.gestione AND\n" +
" LEFT OUTER JOIN colli ON colli.gestione = ordl.gestione AND\n" +
" ordl.data_ord = colli.data_ord AND\n" +
" ordl.num_ord = colli.num_ord \n" +
" LEFT OUTER JOIN mtb_partita_mag ON ordl.cod_prod = mtb_partita_mag.cod_mart\n" +
" AND ordl.partita_mag = mtb_partita_mag.partita_mag\n" +
" LEFT OUTER JOIN jtb_comt ON ordl.cod_jcom = jtb_comt.cod_jcom\n" +
" LEFT OUTER JOIN jtb_lotr jl\n" +
" ON steps.cod_jfas = jl.cod_jfas AND\n" +

View File

@@ -0,0 +1,50 @@
package it.integry.ems_model.entity;
import com.fasterxml.jackson.annotation.JsonTypeName;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
@Master
@PropertyReactive
@Table(MrlAartClieBlacklist.ENTITY)
@JsonTypeName(MrlAartClieBlacklist.ENTITY)
public class MrlAartClieBlacklist extends EntityBase {
public static final String ENTITY = "mrl_aart_clie_blacklist";
private static final Logger logger = LogManager.getLogger();
private static final long serialVersionUID = 1L;
public MrlAartClieBlacklist() {
super(logger);
}
@PK
@SqlField(value = "cod_anag", maxLength = 5, nullable = false)
private String codAnag;
@PK
@SqlField(value = "cod_mart", maxLength = 15, nullable = false)
private String codMart;
public String getCodAnag() {
return codAnag;
}
public MrlAartClieBlacklist setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public String getCodMart() {
return codMart;
}
public MrlAartClieBlacklist setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
}

View File

@@ -5,13 +5,14 @@ import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems_model.annotation.*;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.utility.UtilityDB;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@Master
@PropertyReactive
@@ -152,6 +153,9 @@ public class MtbDepo extends EntityBase {
@EntityChild
private List<MrlDepoArtEsclusiWms> mrlDepoArtEsclusiWms = new ArrayList<>();
@EntityChild
private List<WtbDepo> wtbDepo = new ArrayList<>();
public MtbDepo() {
super(logger);
}
@@ -559,37 +563,13 @@ public class MtbDepo extends EntityBase {
return this;
}
@Override
protected void insertChilds() throws Exception {
for (MtbDepoPosizioni mtbDepoPosizioni : getMtbDepoPosizioni()) {
mtbDepoPosizioni.manageWithParentConnection(connection, mtbDepoPosizioni.getOperation(), dataCompleting, entityHolder);
}
for (MtbDepoArea mtbDepoArea : getMtbDepoArea()) {
mtbDepoArea.manageWithParentConnection(connection, mtbDepoArea.getOperation(), dataCompleting, entityHolder);
}
for (MtbDepoCasse mtbDepoCasse : getMtbDepoCasse()) {
mtbDepoCasse.manageWithParentConnection(connection, mtbDepoCasse.getOperation(), dataCompleting, entityHolder);
}
for (MtbDepoIntercode mtbDepoIntercode : getMtbDepoIntercode()) {
mtbDepoIntercode.manageWithParentConnection(connection, mtbDepoIntercode.getOperation(), dataCompleting, entityHolder);
}
for (MtbDepoOper mtbDepoOper : getMtbDepoOper()) {
mtbDepoOper.manageWithParentConnection(connection, mtbDepoOper.getOperation(), dataCompleting, entityHolder);
}
for (MtbDepoMarcatempo mtbDepoMarcatempo : getMtbDepoMarcatempo()) {
mtbDepoMarcatempo.manageWithParentConnection(connection, mtbDepoMarcatempo.getOperation(), dataCompleting, entityHolder);
}
for (NtbTipiInca ntbTipiInca : getNtbTipiInca()) {
ntbTipiInca.manageWithParentConnection(connection, ntbTipiInca.getOperation(), dataCompleting, entityHolder);
}
for (MrlDepoArtEsclusiWms mrlDepoArtEsclusiWms : getMrlDepoArtEsclusiWms()) {
mrlDepoArtEsclusiWms.manageWithParentConnection(connection, mrlDepoArtEsclusiWms.getOperation(), dataCompleting, entityHolder);
}
public List<WtbDepo> getWtbDepo() {
return wtbDepo;
}
@Override
protected void updateChilds() throws Exception {
insertChilds();
public MtbDepo setWtbDepo(List<WtbDepo> wtbDepo) {
this.wtbDepo = wtbDepo;
return this;
}
@Override
@@ -608,5 +588,7 @@ public class MtbDepo extends EntityBase {
ntbTipiInca.deleteAllEntities(connection, this);
MrlDepoArtEsclusiWms mrlDepoArtEsclusiWms = new MrlDepoArtEsclusiWms();
mrlDepoArtEsclusiWms.deleteAllEntities(connection, this);
WtbDepo wtbDepo = new WtbDepo();
wtbDepo.deleteAllEntities(connection, this);
}
}

View File

@@ -0,0 +1,158 @@
package it.integry.ems_model.entity;
import it.integry.common.var.CommonConstants;
import org.apache.logging.log4j.LogManager;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
import java.util.ArrayList;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.annotation.Master;
import org.kie.api.definition.type.PropertyReactive;
import it.integry.ems_model.annotation.Table;
import com.fasterxml.jackson.annotation.JsonTypeName;
import org.apache.logging.log4j.Logger;
import it.integry.ems_model.annotation.PK;
import it.integry.ems_model.annotation.Identity;
import it.integry.ems_model.annotation.SqlField;
import java.util.Date;
@Master()
@PropertyReactive()
@Table(value = MtbVarLisvLog.ENTITY)
@JsonTypeName(value = MtbVarLisvLog.ENTITY)
public class MtbVarLisvLog extends EntityBase {
public final static String ENTITY = "mtb_var_lisv_log";
private final static Long serialVersionUID = 1L;
private final static Logger logger = LogManager.getLogger();
public MtbVarLisvLog() {
super(logger);
}
@PK()
@Identity()
@SqlField(value = "id", nullable = false)
private Long id;
@SqlField(value = "datetime_var", nullable = false, defaultObjectValue = CommonConstants.TIMESTAMP)
private LocalDateTime datetimeVar;
@SqlField(value = "user_name", maxLength = 40, nullable = true)
private String userName;
@SqlField(value = "cod_vlis", maxLength = 5, nullable = false)
private String codVlis;
@SqlField(value = "versione", nullable = false)
private Integer versione;
@SqlField(value = "cod_promo", maxLength = 10, nullable = true)
private String codPromo;
@SqlField(value = "data_iniz", nullable = true)
private LocalDate dataIniz;
@SqlField(value = "data_fine", nullable = true)
private LocalDate dataFine;
@SqlField(value = "cod_mart", maxLength = 15, nullable = true)
private String codMart;
@SqlField(value = "note", nullable = true)
private String note;
public Long getId() {
return id;
}
public MtbVarLisvLog setId(Long id) {
this.id = id;
return this;
}
public LocalDateTime getDatetimeVar() {
return datetimeVar;
}
public MtbVarLisvLog setDatetimeVar(LocalDateTime datetimeVar) {
this.datetimeVar = datetimeVar;
return this;
}
public String getUserName() {
return userName;
}
public MtbVarLisvLog setUserName(String userName) {
this.userName = userName;
return this;
}
public String getCodVlis() {
return codVlis;
}
public MtbVarLisvLog setCodVlis(String codVlis) {
this.codVlis = codVlis;
return this;
}
public Integer getVersione() {
return versione;
}
public MtbVarLisvLog setVersione(Integer versione) {
this.versione = versione;
return this;
}
public String getCodPromo() {
return codPromo;
}
public MtbVarLisvLog setCodPromo(String codPromo) {
this.codPromo = codPromo;
return this;
}
public LocalDate getDataIniz() {
return dataIniz;
}
public MtbVarLisvLog setDataIniz(LocalDate dataIniz) {
this.dataIniz = dataIniz;
return this;
}
public LocalDate getDataFine() {
return dataFine;
}
public MtbVarLisvLog setDataFine(LocalDate dataFine) {
this.dataFine = dataFine;
return this;
}
public String getCodMart() {
return codMart;
}
public MtbVarLisvLog setCodMart(String codMart) {
this.codMart = codMart;
return this;
}
public String getNote() {
return note;
}
public MtbVarLisvLog setNote(String note) {
this.note = note;
return this;
}
}

View File

@@ -143,6 +143,9 @@ public class TtbLine extends EntityBase {
@EntityChild
private List<TtbLineLingua> ttbLineLingua = new ArrayList<>();
@EntityChild
private List<TtbQtaMinOrd> ttbQtaMinOrd = new ArrayList<>();
public TtbLine() {
super(logger);
}
@@ -478,19 +481,13 @@ public class TtbLine extends EntityBase {
return this;
}
@Override
protected void insertChilds() throws Exception {
for (TtbLinePeriod ttbLinePeriod : getTtbLinePeriod()) {
ttbLinePeriod.manageWithParentConnection(connection, ttbLinePeriod.getOperation(), dataCompleting, entityHolder);
}
for (TtbLineLingua ttbLineLingua : getTtbLineLingua()) {
ttbLineLingua.manageWithParentConnection(connection, ttbLineLingua.getOperation(), dataCompleting, entityHolder);
}
public List<TtbQtaMinOrd> getTtbQtaMinOrd() {
return ttbQtaMinOrd;
}
@Override
protected void updateChilds() throws Exception {
insertChilds();
public TtbLine setTtbQtaMinOrd(List<TtbQtaMinOrd> ttbQtaMinOrd) {
this.ttbQtaMinOrd = ttbQtaMinOrd;
return this;
}
@Override
@@ -499,5 +496,7 @@ public class TtbLine extends EntityBase {
ttbLinePeriod.deleteAllEntities(connection, this);
TtbLineLingua ttbLineLingua = new TtbLineLingua();
ttbLineLingua.deleteAllEntities(connection, this);
TtbQtaMinOrd ttbQtaMinOrd = new TtbQtaMinOrd();
ttbQtaMinOrd.deleteAllEntities(connection, this);
}
}

View File

@@ -15,7 +15,6 @@ import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.FK;
import java.math.BigDecimal;
@Master()
@PropertyReactive()
@Table(value = TtbQtaMinOrd.ENTITY)
@JsonTypeName(value = TtbQtaMinOrd.ENTITY)

View File

@@ -96,7 +96,7 @@ public class VtbDest extends EntityBase implements EquatableEntityInterface<VtbD
@SqlField(value = "part_iva", maxLength = 20)
private String partIva;
@SqlField(value = "cod_affiliazione", maxLength = 10)
@SqlField(value = "cod_affiliazione", maxLength = 40)
private String codAffiliazione;
@SqlField(value = "indirizzo_legale", maxLength = 255)

View File

@@ -5,9 +5,9 @@ import it.integry.ems_model.annotation.PK;
import it.integry.ems_model.annotation.SqlField;
import it.integry.ems_model.annotation.Table;
import it.integry.ems_model.base.EntityBase;
import org.kie.api.definition.type.PropertyReactive;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.kie.api.definition.type.PropertyReactive;
@PropertyReactive
@Table(WtbDepo.ENTITY)
@@ -29,7 +29,7 @@ public class WtbDepo extends EntityBase {
private String codMdep;
@SqlField(value = "default_depo", nullable = false)
private boolean defaultDepo;
private Boolean defaultDepo;
public WtbDepo() {
super(logger);
@@ -58,11 +58,11 @@ public class WtbDepo extends EntityBase {
return this;
}
public boolean isDefaultDepo() {
public Boolean getDefaultDepo() {
return defaultDepo;
}
public WtbDepo setDefaultDepo(boolean defaultDepo) {
public WtbDepo setDefaultDepo(Boolean defaultDepo) {
this.defaultDepo = defaultDepo;
return this;
}

File diff suppressed because one or more lines are too long

View File

@@ -357,31 +357,37 @@ public class ActivityController {
@RequestMapping(value = EmsRestConstants.PATH_POST_ACTIVITY_PLAN, method = RequestMethod.POST)
public ServiceRestResponse postActivityPlan(
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestBody ActivityPlanDTO planDto
) throws Exception{
public ServiceRestResponse postActivityPlan(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestBody ActivityPlanDTO planDto) throws Exception {
return ServiceRestResponse.createPositiveResponse(activityService.createActivityPlan(planDto));
}
@RequestMapping(value = EmsRestConstants.PATH_DELETE_ACTIVITY_PLAN, method = RequestMethod.POST)
public ServiceRestResponse deleteActivityPlan(
@RequestParam(CommonConstants.PROFILE_DB) String config,
@PathVariable("id") Long id
) throws Exception{
return ServiceRestResponse.createPositiveResponse(activityService.deleteActivityPlan(id));
@RequestMapping(value = EmsRestConstants.PATH_DELETE_ACTIVITY_PLAN, method = RequestMethod.POST)
public ServiceRestResponse deleteActivityPlan(@RequestParam(CommonConstants.PROFILE_DB) String config,
@PathVariable("id") Long id) throws Exception {
return ServiceRestResponse.createPositiveResponse(activityService.deleteActivityPlan(id));
}
@RequestMapping(value = EmsRestConstants.PATH_GET_SCHEDULED_ACTIVITIES, method = RequestMethod.GET)
public ServiceRestResponse getScheduledActivities(
@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String username,
@RequestParam String startDate,
@RequestParam String endDate
) throws Exception{
return ServiceRestResponse.createPositiveResponse(activityService.getScheduledActivities(username, UtilityString.parseLocalDate(startDate),UtilityString.parseLocalDate(endDate)));
public ServiceRestResponse getScheduledActivities(@RequestParam(CommonConstants.PROFILE_DB) String config,
@RequestParam String username,
@RequestParam String startDate,
@RequestParam String endDate) throws Exception {
return ServiceRestResponse.createPositiveResponse(
activityService.getScheduledActivities(
username,
UtilityString.parseLocalDate(startDate),
UtilityString.parseLocalDate(endDate)
)
);
}
@GetMapping(value = "activity/getAvgResolutionTime")
public ServiceRestResponse getAvgResolutionTime(@RequestParam(CommonConstants.PROFILE_DB) String config) throws Exception {
return ServiceRestResponse.createPositiveResponse(activityService.getAvgResolutionTime());
}
}

View File

@@ -10,6 +10,9 @@ public class TreeViewDTO {
@SqlField("cod_jcom")
private String codJcom;
@SqlField("cod_anag")
private String codAnag;
@SqlField("livello")
private int livello;
@@ -46,6 +49,15 @@ public class TreeViewDTO {
return this;
}
public String getCodAnag() {
return codAnag;
}
public TreeViewDTO setCodAnag(String codAnag) {
this.codAnag = codAnag;
return this;
}
public int getRow() {
return row;
}

View File

@@ -1528,8 +1528,9 @@ public class ActivityService {
String sql;
if (codJcom == null) {
sql = "WITH commesse AS (SELECT cod_jcom FROM jtb_comt WHERE stato_commessa IN ('IN CORSO', 'POST VENDITA', 'TRATTATIVA'))\n" +
sql = "WITH commesse AS (SELECT cod_jcom, cod_anag FROM jtb_comt WHERE stato_commessa IN ('IN CORSO', 'POST VENDITA', 'TRATTATIVA'))\n" +
"SELECT t.cod_jcom,\n" +
" commesse.cod_anag,\n" +
" t.livello,\n" +
" t.activity_id,\n" +
" stb_activity.activity_description,\n" +
@@ -2130,4 +2131,41 @@ public class ActivityService {
return dto;
}
public int getAvgResolutionTime() throws Exception {
String sql = "WITH parent AS (\n" +
" SELECT p.*\n" +
" FROM stb_activity p\n" +
" INNER JOIN jtb_comt ON jtb_comt.cod_jcom = p.cod_jcom\n" +
" WHERE stato_commessa IN ('IN CORSO', 'POST VENDITA', 'TRATTATIVA')\n" +
" AND activity_type_id = 'ticket'\n" +
"),\n" +
"figlie AS (\n" +
" SELECT f.activity_id,\n" +
" f.parent_activity_id,\n" +
" f.effective_time,\n" +
" f.effective_endtime\n" +
" FROM stb_activity f\n" +
" WHERE f.effective_endtime IS NOT NULL\n" +
"),\n" +
"riepilogo AS (\n" +
" SELECT\n" +
" p.activity_id AS parent_id,\n" +
" p.data_ins_act,\n" +
" MAX(f.effective_endtime) AS max_endtime,\n" +
" SUM(DATEDIFF(MINUTE, f.effective_time, f.effective_endtime)) AS minuti_figlie\n" +
" FROM parent p\n" +
" LEFT JOIN figlie f ON f.parent_activity_id = p.activity_id\n" +
" GROUP BY p.activity_id, p.data_ins_act\n" +
"),\n" +
"minuti_effettivi AS (\n" +
" SELECT IIF(CAST(r.data_ins_act AS DATE) >= CAST(r.max_endtime AS DATE), r.minuti_figlie,\n" +
" DATEDIFF(MINUTE, r.data_ins_act, r.max_endtime)) AS minuti\n" +
" FROM riepilogo r\n" +
")\n" +
"SELECT AVG(minuti) AS media_minuti_effettivi\n" +
"FROM minuti_effettivi";
return UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
}
}

View File

@@ -12,6 +12,7 @@ import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
import java.io.ByteArrayOutputStream;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -118,7 +119,11 @@ public class DataSheetServices {
HashMap<String, String> resultMap = new HashMap<>();
allVariables.forEach(variable -> {
if (mtb_aart.containsKey(variable)) {
if (variable.equalsIgnoreCase("colli_pedana") || variable.equalsIgnoreCase("colli_strato")){
BigDecimal value = UtilityHashMap.getValueIfExists(mtb_aart, variable);
resultMap.put(variable, value.toBigInteger().toString());
} else if (mtb_aart.containsKey(variable)) {
resultMap.put(variable, String.valueOf(mtb_aart.get(variable)));
}

View File

@@ -179,20 +179,50 @@ public class DigitalInvoiceService {
Azienda datiAzienda = this.getDatiAzienda(data);
// GET Dati Testata
String queryDatiHeader = "SELECT dtb_doct.num_cmov, dtb_doct.gestione, dtb_doct.num_doc, isNull(vtb_dest.cuu_pa, gtb_anag.cuu_pa ) as cuu_pa, IsNull(vtb_dest.e_mail_pec, gtb_anag.e_mail_pec) as e_mail_pec, gtb_anag.flag_persona_fg, naziAnag.cod_nazi_alpha_2 as nazione, " +
" gtb_anag.part_iva, gtb_anag.rag_soc + isNull(' ' + gtb_anag.rag_soc2, '') as rag_soc, gtb_anag.cod_fisc, gtb_anag.nome, " +
" gtb_anag.cognome, gtb_anag.indirizzo, gtb_anag.cap, gtb_anag.citta, gtb_anag.prov, gtb_anag.reg_fisc, vtb_dest.destinatario as rag_soc_dest, vtb_dest.indirizzo AS indirizzo_dest, " +
" vtb_dest.citta AS citta_dest, vtb_dest.cap AS cap_dest, vtb_dest.prov AS prov_dest, naziDest.cod_nazi_alpha_2 AS nazione_dest, " +
" vtb_dest.part_iva AS part_iva_dest, CASE WHEN Len(isNull(vtb_dest.cuu_pa, gtb_anag.cuu_pa )) = 6 THEN 'FPA12' ELSE 'FPR12' END AS formato, isNull(vtb_dest.flag_stabile_org, 'N') as flag_stabile_org " +
"FROM dtb_doct " +
" LEFT OUTER JOIN gtb_anag ON gtb_anag.cod_anag = dtb_doct.cod_anag " +
" LEFT OUTER JOIN (select gtb_nazi.nazione, gtb_nazi_iso.cod_nazione_iso, gtb_nazi_iso.cod_nazi_alpha_2 " +
" from gtb_nazi left outer join gtb_nazi_iso on gtb_nazi.cod_nazione_iso = gtb_nazi_iso.cod_nazione_iso) naziAnag ON gtb_anag.nazione = naziAnag.nazione " +
" LEFT OUTER JOIN vtb_dest " +
" ON vtb_dest.cod_anag = dtb_doct.cod_anag " +
" AND vtb_dest.cod_vdes = dtb_doct.cod_vdes " +
" LEFT OUTER JOIN (select gtb_nazi.nazione, gtb_nazi_iso.cod_nazione_iso, gtb_nazi_iso.cod_nazi_alpha_2 " +
" from gtb_nazi left outer join gtb_nazi_iso on gtb_nazi.cod_nazione_iso = gtb_nazi_iso.cod_nazione_iso) naziDest ON vtb_dest.nazione = naziDest.nazione " +
String queryDatiHeader = "SELECT dtb_doct.num_cmov,\n" +
" dtb_doct.gestione,\n" +
" dtb_doct.num_doc,\n" +
" IIF(ISNULL(dtb_tipi_fe.flag_integrazione, 0) = 1, azienda.cod_sdi_ditta,\n" +
" ISNULL(vtb_dest.cuu_pa, gtb_anag.cuu_pa)) AS cuu_pa,\n" +
" ISNULL(vtb_dest.e_mail_pec, gtb_anag.e_mail_pec) AS e_mail_pec,\n" +
" gtb_anag.flag_persona_fg,\n" +
" naziAnag.cod_nazi_alpha_2 AS nazione,\n" +
" gtb_anag.part_iva,\n" +
" gtb_anag.rag_soc + ISNULL(' ' + gtb_anag.rag_soc2, '') AS rag_soc,\n" +
" gtb_anag.cod_fisc,\n" +
" gtb_anag.nome,\n" +
" gtb_anag.cognome,\n" +
" gtb_anag.indirizzo,\n" +
" IIF(ISNULL(dtb_tipi_fe.flag_integrazione, 0) = 1, '00000', gtb_anag.cap) AS cap,\n" +
" gtb_anag.citta,\n" +
" gtb_anag.prov,\n" +
" gtb_anag.reg_fisc,\n" +
" vtb_dest.destinatario AS rag_soc_dest,\n" +
" vtb_dest.indirizzo AS indirizzo_dest,\n" +
" vtb_dest.citta AS citta_dest,\n" +
" vtb_dest.cap AS cap_dest,\n" +
" vtb_dest.prov AS prov_dest,\n" +
" naziDest.cod_nazi_alpha_2 AS nazione_dest,\n" +
" vtb_dest.part_iva AS part_iva_dest,\n" +
" IIF(LEN(ISNULL(vtb_dest.cuu_pa, gtb_anag.cuu_pa)) = 6, 'FPA12', 'FPR12') AS formato,\n" +
" ISNULL(vtb_dest.flag_stabile_org, 'N') AS flag_stabile_org\n" +
"FROM dtb_doct\n" +
" INNER JOIN dtb_tipi ON dtb_doct.cod_dtip = dtb_tipi.cod_dtip\n" +
" LEFT OUTER JOIN ctb_caus ON dtb_tipi.cod_ccau = ctb_caus.cod_ccau\n" +
" LEFT OUTER JOIN dtb_tipi_fe ON ctb_caus.cod_dtip_ccau = dtb_tipi_fe.cod_dtip_ccau\n" +
" LEFT OUTER JOIN gtb_anag ON gtb_anag.cod_anag = dtb_doct.cod_anag\n" +
" LEFT OUTER JOIN (SELECT gtb_nazi.nazione, gtb_nazi_iso.cod_nazione_iso, gtb_nazi_iso.cod_nazi_alpha_2\n" +
" FROM gtb_nazi\n" +
" LEFT OUTER JOIN gtb_nazi_iso ON gtb_nazi.cod_nazione_iso = gtb_nazi_iso.cod_nazione_iso) naziAnag\n" +
" ON gtb_anag.nazione = naziAnag.nazione\n" +
" LEFT OUTER JOIN vtb_dest\n" +
" ON vtb_dest.cod_anag = dtb_doct.cod_anag\n" +
" AND vtb_dest.cod_vdes = dtb_doct.cod_vdes\n" +
" LEFT OUTER JOIN (SELECT gtb_nazi.nazione, gtb_nazi_iso.cod_nazione_iso, gtb_nazi_iso.cod_nazi_alpha_2\n" +
" FROM gtb_nazi\n" +
" LEFT OUTER JOIN gtb_nazi_iso ON gtb_nazi.cod_nazione_iso = gtb_nazi_iso.cod_nazione_iso) naziDest\n" +
" ON vtb_dest.nazione = naziDest.nazione\n" +
" CROSS APPLY azienda\n" +
"WHERE dtb_doct.cod_anag = " + UtilityDB.valueToString(codAnag) +
" AND dtb_doct.cod_dtip = " + UtilityDB.valueToString(codDtip) +
" AND dtb_doct.data_doc = " + UtilityDB.valueToString(dataDoc) +

View File

@@ -67,6 +67,14 @@ public class DocumentiDirettiService {
dtbDoc.setIdRiga(null);
});
}
if (UtilityString.isNullOrEmpty(dtbDoct.getCodAnag() )) {
throw new Exception("Codice cliente/fornitore obbligatorio");
}
if (UtilityString.isNullOrEmpty(dtbDoct.getCodDtip() )) {
throw new Exception("Tipo documento obbligatorio");
}
entityList.add(dtbDoct);
String sql =

View File

@@ -1139,14 +1139,14 @@ public class CrmService {
consegna = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(conn, sql, DtbDocr.class);
sql = Query.format(
"SELECT CAST(COUNT(*) AS BIT)\n" +
"SELECT CAST(IIF(flag_evaso = 'i', 1, 0) AS BIT) AS in_corso\n" +
"FROM dtb_ordr\n" +
" INNER JOIN dtb_ordt ON dtb_ordr.num_ord = dtb_ordt.num_ord AND\n" +
" dtb_ordr.data_ord = dtb_ordt.data_ord AND\n" +
" dtb_ordr.gestione = dtb_ordt.gestione\n" +
"WHERE dtb_ordr.cod_jcom = %s\n" +
" AND dtb_ordr.gestione = 'V'\n" +
" AND flag_evaso = 'I'\n" +
" AND qta_evasa > 0\n" +
" AND flag_evaso <> 'A'\n" +
" AND flag_annulla = 'N'\n" +
" AND flag_sospeso = 'N'\n" +
@@ -1155,12 +1155,13 @@ public class CrmService {
" FROM mtb_aart\n" +
" INNER JOIN ctb_cont ON mtb_aart.cod_ccon_ricavi = ctb_cont.cod_ccon\n" +
" INNER JOIN ctb_grup ON ctb_cont.cod_cgrp = ctb_grup.cod_cgrp\n" +
" WHERE ctb_grup.sezione = 1)",
" WHERE ctb_grup.sezione = 1)\n" +
"GROUP BY CAST(IIF(FLAG_EVASO = 'i', 1, 0) AS BIT)",
codJcom
);
boolean isLoading = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
Boolean isLoading = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(conn, sql);
if (consegna == null)
if (isLoading == null)
jobProgressResponse.addSkippedStep("Consegna & Montaggio");
else {
if (isLoading)

View File

@@ -535,6 +535,30 @@ public class ListiniVenditaServices {
}
entities.addAll(getVtbListData(listini));
if ( userSession.getCurrentUser() != null ) {
List<MtbVarLisvLog> chiusuraPromo = listini
.stream()
.map(
l -> {
MtbVarLisvLog log = new MtbVarLisvLog()
.setUserName(userSession.getUsername())
.setVersione(l.getVersione())
.setCodVlis(l.getCodVlis())
.setDataIniz(UtilityLocalDate.localDateFromDate(l.getDataIniz()))
.setDataFine(UtilityLocalDate.localDateFromDate(l.getDataFine()))
.setCodPromo(l.getCodPromo())
.setCodMart(l.getCodMart())
.setNote("Chiusura Promo");
log.setOperation(OperationType.INSERT);
return log;
}
).collect(Collectors.toList());
entities.addAll(chiusuraPromo);
}
if (saveEntity) {
entities = entityProcessor.processEntityList(entities, true);