Merge branch 'develop' into feature/Feature-ImportScontriniMMPOS
All checks were successful
IntegryManagementSystem_Multi/pipeline/head This commit looks good

This commit is contained in:
2025-10-01 15:38:41 +02:00
27 changed files with 2010 additions and 544 deletions

View File

@@ -1,10 +1,10 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat 9 (RistoCash)" type="Remote">
<configuration default="false" name="Tomcat 9 (AnydeskTunnel)" type="Remote">
<module name="ems-engine" />
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" />
<option name="HOST" value="127.0.0.1" />
<option name="HOST" value="localhost" />
<option name="PORT" value="8001" />
<option name="AUTO_RESTART" value="false" />
<RunnerSettings RunnerId="Debug">

View File

@@ -1,16 +0,0 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Tomcat (AnydeskTunnel)" type="Remote">
<module name="ems-engine" />
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" />
<option name="HOST" value="servertomcat" />
<option name="PORT" value="8001" />
<option name="AUTO_RESTART" value="false" />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="8001" />
<option name="LOCAL" value="false" />
</RunnerSettings>
<method v="2" />
</configuration>
</component>

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_20250929103228 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
executeStatement("alter table jtb_rlavt add note_agg varchar(max)");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,28 @@
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_20250929103932 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
createSetup("w_jriep_presenze_dip_disp", "CB_AGGNOTE", "VISIBLE", "N",
null, false, null, false, false,
false, false, false, null, false, null);
if (isCustomer(IntegryCustomer.Integry)) {
updateSetupValue("w_jriep_presenze_dip_disp", "CB_AGGNOTE", "VISIBLE", "S");
}
}
@Override
public void down() throws Exception {
}
}

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

@@ -0,0 +1,86 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250930151328 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if(isDMS())
return;
createOrUpdateFunction("[GetDatiProvv]", "CREATE FUNCTION [dbo].[GetDatiProvv](@codVlis varchar(5), \n" +
" @dataValidita datetime, \n" +
" @codAnag varchar(5), \n" +
" @codVdes varchar(5), \n" +
" @codVage varchar(5), \n" +
" @codMart varchar(15), \n" +
" @codDivi varchar(5), \n" +
" @cambio numeric(20,5))\n" +
" RETURNS TABLE AS\n" +
" RETURN(\n" +
"WITH lisv AS (SELECT lisv.cod_vlis,\n" +
" lisv.cod_mart,\n" +
" ISNULL(promo.perc_ispe, lisv.perc_ispe) AS perc_ispe,\n" +
" ISNULL(promo.val_ispe, lisv.val_ispe) AS val_ispe,\n" +
" ISNULL(promo.perc_prov, lisv.perc_prov) AS perc_prov,\n" +
" ISNULL(promo.fisso_prov, lisv.fisso_prov) AS fisso_prov,\n" +
" cambio\n" +
" FROM dbo.getlistinovendita(@datavalidita, @codvlis, @codmart) lisv\n" +
" LEFT OUTER JOIN dbo.getpromozionevendita(@datavalidita, @datavalidita, @codvlis, NULL,\n" +
" @codmart) promo ON lisv.cod_vlis = promo.cod_vlis AND\n" +
" lisv.cod_mart = promo.cod_mart)\n" +
"\n" +
" , scon AS (SELECT *\n" +
" FROM vtb_scon\n" +
" WHERE\n" +
" vtb_scon.cod_sco_art = (SELECT mtb_aart.cod_sco_art FROM mtb_aart WHERE mtb_aart.cod_mart = @codmart)\n" +
" AND vtb_scon.cod_sco_cli = (SELECT ISNULL(vtb_dest.cod_sco_cli, vtb_clie.cod_sco_cli)\n" +
" FROM vtb_clie\n" +
" LEFT OUTER JOIN vtb_dest\n" +
" ON vtb_clie.cod_anag = vtb_dest.cod_anag AND\n" +
" vtb_dest.cod_vdes = @codvdes\n" +
" WHERE vtb_clie.cod_anag = @codanag))\n" +
" , scon_age AS (SELECT *\n" +
" FROM vtb_agen_prov\n" +
" WHERE vtb_agen_prov.cod_sco_art =\n" +
" (SELECT mtb_aart.cod_sco_art FROM mtb_aart WHERE mtb_aart.cod_mart = @codmart)\n" +
" AND vtb_agen_prov.cod_sco_cli = (SELECT ISNULL(vtb_dest.cod_sco_cli, vtb_clie.cod_sco_cli)\n" +
" FROM vtb_clie\n" +
" LEFT OUTER JOIN vtb_dest ON vtb_clie.cod_anag =\n" +
" vtb_dest.cod_anag AND\n" +
" vtb_dest.cod_vdes = @codvdes\n" +
" WHERE vtb_clie.cod_anag = @codanag)\n" +
" AND vtb_agen_prov.cod_vage = @codvage)\n" +
"\n" +
"\n" +
"/*Acquisizione provvigioni agente e ispettore */\n" +
"/* @percProv = round(CASE WHEN vtb_agen_prov.cod_vage IS NULL THEN (CASE WHEN vtb_scon.cod_sco_cli IS NULL THEN (CASE WHEN mtb_lisv.cod_mart IS NULL THEN CASE WHEN vtb_clie.perc_prov = 0 THEN ISNULL(vtb_agen.perc_prov_age, 0) ELSE vtb_Clie.perc_prov END ELSE mtb_lisv.perc_prov END) ELSE vtb_scon.perc_prov END) ELSE vtb_agen_prov.perc_prov END, 5), */\n" +
"/* 6.2.2018 (FABIO): implementata nuovamente la logica della provvigione da cliente e agente se presente in anagrafica, ma senza provviggioni */\n" +
"/* 14/10/2021 (FABIO): abbiamo aggiunto il campo perc_prov_age nella VTB_AGEN in modo da non leggere da vtb_agen.perc_prov_age che invece è la provvigione dell'ispettore */\n" +
"SELECT ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, IIF(vtb_clie.perc_prov = 0, ISNULL(vtb_agen.perc_prov_age, 0), vtb_clie.perc_prov), IIF(mtb_lisv.perc_prov = 0 OR mtb_lisv.perc_prov IS NULL, IIF(vtb_clie.perc_prov <> 0, vtb_clie.perc_prov, ISNULL(vtb_agen.perc_prov_age, 0)), mtb_lisv.perc_prov))), vtb_scon.perc_prov)), vtb_agen_prov.perc_prov), 5) AS perc_prov,\n" +
" ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, 0, mtb_lisv.fisso_prov * @cambio / mtb_lisv.cambio)), vtb_scon.fisso_prov * @cambio / vtb_scon.cambio_divi_cont)), vtb_agen_prov.fisso_prov * @cambio / vtb_agen_prov.cambio_divi_cont), 5) AS val_prov,\n" +
" ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, 0, mtb_lisv.perc_ispe)), vtb_scon.perc_ispe)), vtb_agen_prov.perc_ispe), 5) AS perc_ispe,\n" +
" ROUND(IIF(vtb_agen_prov.cod_vage IS NULL, (IIF(vtb_scon.cod_sco_cli IS NULL, (IIF(mtb_lisv.cod_mart IS NULL, 0, mtb_lisv.val_ispe * @cambio / mtb_lisv.cambio)), vtb_scon.val_ispe * @cambio / vtb_scon.cambio_divi_cont)), vtb_agen_prov.val_ispe * @cambio / vtb_agen_prov.cambio_divi_cont), 5) AS val_ispe,\n" +
" ISNULL(vtb_clie.perc_prov2, 0) AS perc_prov2\n" +
"\n" +
"FROM vtb_clie\n" +
" OUTER APPLY scon vtb_scon\n" +
" OUTER APPLY scon_age vtb_agen_prov\n" +
" OUTER APPLY (SELECT * FROM vtb_agen WHERE vtb_agen.cod_vage = @codvage) vtb_agen\n" +
" OUTER APPLY lisv mtb_lisv\n" +
"WHERE vtb_clie.cod_anag = @codanag\n" +
" \n" +
")");
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,214 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
public class Migration_20250930152326 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,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

@@ -15,7 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.File;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -31,7 +31,7 @@ public class CleanDirectoryComponent {
private SetupGest setupGest;
@Scheduled(fixedDelay = 12, timeUnit = TimeUnit.HOURS, zone = "Europe/Rome")
private void cleanDirectory() throws Exception {
public void cleanDirectory() throws Exception {
if (!UtilityDebug.isDebugExecution()) {
List<AvailableConnectionsModel> databases = settingsModel.getAvailableConnectionsWithoutDuplicatedProfiles(true);
@@ -89,7 +89,7 @@ public class CleanDirectoryComponent {
// UtilityFile.cleanDirectory(UtilityDirs.getTempDirectoryPath(), 1, "");
//Cancello i log di Tomcat
String logsPath = String.format("%s%slogs", UtilityDirs.getCatalinaHome(), File.separator);
String logsPath = Paths.get(UtilityDirs.getCatalinaHome(), "logs").toString();
UtilityFile.cleanDirectory(logsPath, settingsModel.getLoggerConfiguration().getDeleteDays(), "");

View File

@@ -87,8 +87,6 @@ public class SyncManager {
entityToSave.manageWithParentConnection(connection);
proceedSyncronization(entitySource, entityCloned, lastProfileUsed, multiDBTransactionManager);
multiDBTransactionManager.commitAll();
logger.debug("Fine sincronizzazione per " + entitySource.getTableName() + " su " + multiDBTransactionManager.getDistributoreProfileName());
} catch (Exception e) {
multiDBTransactionManager.rollbackAll();

View File

@@ -76,8 +76,8 @@ public class UtilityUser {
String sql = "SELECT md.* FROM " + MtbDepo.ENTITY + " md " +
" INNER JOIN " + WtbDepo.ENTITY + " wd " +
" ON md.cod_mdep = wd.cod_mdep" +
" WHERE wd.user_name = " + UtilityDB.valueToString(userDTO.getUsername()+
" order by wd.default_depo desc");
" WHERE wd.user_name = " + UtilityDB.valueToString(userDTO.getUsername()) +
" order by wd.default_depo desc";
List<MtbDepo> depos = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, MtbDepo.class);

View File

@@ -34,7 +34,11 @@ import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.security.Security;
import java.util.*;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
import java.util.regex.Matcher;
@@ -94,21 +98,21 @@ public class UtilityFile {
public static void cleanDirectory(@NotNull final String pathFile, int days, String regex) throws ExecutionException, InterruptedException, TimeoutException {
GregorianCalendar calendar = new GregorianCalendar();
calendar.add(Calendar.DAY_OF_YEAR, -1 * days);
cleanDirectory(pathFile, calendar.getTime(), regex);
cleanDirectory(pathFile, LocalDate.now().minusDays(days), regex);
}
public static void cleanDirectory(@NotNull final String pathFile, @NotNull final Date fromDate, final String regex) throws ExecutionException, InterruptedException, TimeoutException {
public static void cleanDirectory(@NotNull final String pathFile, @NotNull final LocalDate fromDate, final String regex) throws ExecutionException, InterruptedException, TimeoutException {
final TaskExecutorService taskExecutorService = ApplicationContextProvider.getApplicationContext().getBean(TaskExecutorService.class);
taskExecutorService.executeTask(() -> {
// taskExecutorService.executeTask(() -> {
File directory = new File(pathFile);
if (!directory.exists()) return;
final long purgeTime = fromDate.getTime();
final long purgeTime = fromDate.atStartOfDay()
.atZone(ZoneId.systemDefault())
.toInstant()
.toEpochMilli();
final Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
@@ -133,22 +137,26 @@ public class UtilityFile {
Files.walkFileTree(Paths.get(pathFile), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) {
try {
if (!Files.list(dir).findAny().isPresent()) {
Files.delete(dir);
if (exc != null) {
logger.error("Errore durante la cancellazione della directory vuota: " + dir, exc);
return FileVisitResult.SKIP_SUBTREE;
}
} catch (IOException e) {
logger.error("Errore durante la cancellazione della directory vuota: " + dir, e);
File d = dir.toFile();
if (d.listFiles().length == 0) {
d.delete();
}
return FileVisitResult.CONTINUE;
}
});
} catch (Exception e) {
logger.error(e.getMessage());
logger.error(String.format("Errore durante la clean della directory: %s", pathFile), e);
}
}, true);
// }, true);
}

View File

@@ -84,6 +84,9 @@ public class JtbRLavt extends EntityBase {
@SqlField(value = "data_controllo")
private Date dataControllo;
@SqlField(value = "note_agg")
private String noteAgg;
@EntityChild
private List<JtbRLavr> jtbRlavr = new ArrayList<>();
@@ -265,6 +268,15 @@ public class JtbRLavt extends EntityBase {
return this;
}
public String getNoteAgg() {
return noteAgg;
}
public JtbRLavt setNoteAgg(String noteAgg) {
this.noteAgg = noteAgg;
return this;
}
public List<JtbRLavr> getJtbRlavr() {
return jtbRlavr;
}

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

@@ -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

@@ -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)

File diff suppressed because one or more lines are too long

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 =
@@ -122,13 +130,22 @@ public class DocumentiDirettiService {
entityRet = entityProcessor.processEntityList(mtbLisaCostoData, true);
UtilityEntity.throwEntitiesException(entityRet);
}
} else if (gestione.equalsIgnoreCase("V") && !UtilityString.isNullOrEmpty(dtbDoct.getCodFornTrasp()) &&
} else if (gestione.equalsIgnoreCase("V") &&
TipoEmissione.valueOf(UtilityHashMap.getValueIfExists(datiTipoDoc, "tipo_emissione")) == TipoEmissione.DIRETTA &&
!dtbDoct.getDtbDocImb().isEmpty() && salvaImballiAttiva) {
sql =
Query.format(
"SELECT costo FROM gtb_porto WHERE porto = %s",
dtbDoct.getIncoterms());
GtbPorto porto = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sql, GtbPorto.class);
if ((porto != null && porto.getCosto() == GtbPorto.Costo.ACQUIRENTE) || !UtilityString.isNullOrEmpty(dtbDoct.getCodFornTrasp())) {
DtbDoct dtbDoctSave =
entityRet.stream().filter(x -> x instanceof DtbDoct && ((DtbDoct) x).getCodDtip().equals(dtbDoct.getCodDtip())).map(x -> (DtbDoct) x).findFirst().orElse(null);
saveDocImballi(dtbDoctSave, isInsert);
}
}
multiDBTransactionManager.commitAll();

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);

View File

@@ -14,10 +14,7 @@ import it.integry.ems_model.entity.*;
import it.integry.ems_model.entity.common.DtbBaseDocT;
import it.integry.ems_model.service.SetupGest;
import it.integry.ems_model.types.OperationType;
import it.integry.ems_model.utility.UtilityBigDecimal;
import it.integry.ems_model.utility.UtilityDB;
import it.integry.ems_model.utility.UtilityLocalDate;
import it.integry.ems_model.utility.UtilityString;
import it.integry.ems_model.utility.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@@ -224,22 +221,30 @@ public class PvmAccettazioneService {
}
}
if ("S".equals(accettazioneDTO.getEvadiOrdine()) && !accettazioneDTO.getOrdine().isEmpty()) {
List<DtbOrdt> ordini =
Stream
.of(accettazioneDTO.getOrdine())
.map(
x -> {
DtbOrdt dtbOrdt = new DtbOrdt()
.setDataOrd(x.getDataOrd())
.setNumOrd(x.getNumOrd())
.setGestione(gestione)
.setFlagEvasoForzato("S")
if ("S".equals(accettazioneDTO.getEvadiOrdine())) {
String sql =
Query.format(
"SELECT DISTINCT dtb_ordt.gestione, dtb_ordt.data_ord, dtb_ordt.num_ord\n" +
"FROM dtb_ordt\n" +
" INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione\n" +
" AND dtb_ordt.data_ord = dtb_ordr.data_ord\n" +
" AND dtb_ordt.num_ord = dtb_ordr.num_ord\n" +
"WHERE dtb_ordt.cod_mdep = %S\n" +
" AND dtb_ordt.cod_anag = %s\n" +
" AND dtb_ordt.flag_evaso_forzato = 'N'\n" +
" AND dtb_ordr.data_cons BETWEEN DATEADD(WEEK, -1, %s) AND %s",
codMdep, accettazioneDTO.getDocumento().getCodAnag(),
accettazioneDTO.getDocumento().getDataDoc(),
accettazioneDTO.getDocumento().getDataDoc());
List<DtbOrdt> ordini = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, DtbOrdt.class);
ordini.stream().forEach(x -> {
x.setFlagEvasoForzato("S")
.setModificatoDa("EVASIONE DA ACCETTAZIONE");
dtbOrdt.setOperation(OperationType.UPDATE);
return dtbOrdt;
x.setOperation(OperationType.UPDATE);
}
).toList();
);
entityList.addAll(ordini);
}

View File

@@ -21,10 +21,7 @@ import it.integry.ems.report.dto.PairsDTO;
import it.integry.ems.response.*;
import it.integry.ems.retail.ReportVariazioni.dto.VariazioniDettaglioDTO;
import it.integry.ems.rules.completing.ConfigActivityRules;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.service.MailService;
import it.integry.ems.service.PrinterService;
import it.integry.ems.service.ReportProcessor;
import it.integry.ems.service.*;
import it.integry.ems.service.dto.CustomEmailDTO;
import it.integry.ems.service.dto.TicketNotificationMailTemplateDataDTO;
import it.integry.ems.service.exception.EmptyReportException;
@@ -120,6 +117,8 @@ public class SystemController {
private RequestDataDTO requestDataDTO;
@Autowired
private NotificationService notificationService;
@Autowired
private CleanDirectoryComponent cleanDirectoryComponent;
@GetMapping(value = "/system/ok")
@@ -1831,4 +1830,12 @@ public class SystemController {
return ServiceRestResponse.createPositiveResponse("Fixate " + processedEntities.size() + " entity");
}
@GetMapping(value = "system/clean-temp-dir")
public ServiceRestResponse validate() throws Exception {
cleanDirectoryComponent.cleanDirectory();
return ServiceRestResponse.createPositiveResponse();
}
}