From d148de7617aa2757104fee4bfd39949e4463cbee Mon Sep 17 00:00:00 2001 From: MinaR Date: Tue, 28 May 2024 14:45:31 +0200 Subject: [PATCH] modificata procedura di esportazione ordini per slim2k --- .../model/Migration_20240528131317.java | 105 ++++++++++++++++++ .../model/Migration_20240528131622.java | 23 ++++ .../service/OrdiniVenditaExportServices.java | 43 +++---- 3 files changed, 143 insertions(+), 28 deletions(-) create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131317.java create mode 100644 ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131622.java diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131317.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131317.java new file mode 100644 index 0000000000..da439f0d26 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131317.java @@ -0,0 +1,105 @@ +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.IntegryCustomerDB; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240528131317 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + if (isCustomerDb(IntegryCustomerDB.Carelli_Format)) + createOrUpdateFunction("[slim2k_exportOrdV]", "CREATE FUNCTION [dbo].[slim2k_exportOrdV](@codMdep varchar(5), @dataOrd datetime, @numOrd int, @listcode varchar(max),\n" + + "@singoloOrdine bit, @raggruppaArticoli bit) RETURNS TABLE AS \n" + + "return \n" + + "with ord as (\n" + + "select distinct dtb_ordt.data_ord,\n" + + "case when @raggruppaArticoli = 1 THEN min(dtb_ordt.num_ord) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordt.num_ord end as num_ord,\n" + + "dtb_ordt.cod_anag,\n" + + "dtb_ordt.cod_vdes,\n" + + "dtb_ordt.cod_mdep,\n" + + "dtb_ordt.serie,\n" + + "case when @raggruppaArticoli = 1 THEN min(dtb_ordr.riga_ord) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordr.riga_ord end as riga_ord,\n" + + "dtb_ordr.cod_mart,\n" + + "dtb_ordr.data_cons,\n" + + "case when @raggruppaArticoli = 1 THEN sum(round(dtb_ordr.qta_ord - dtb_ordr.qta_evasa,3)) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordr.qta_ord - dtb_ordr.qta_evasa end as qta_ord,\n" + + "case when @raggruppaArticoli = 1 THEN sum(num_cnf) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else dtb_ordr.num_cnf end as num_cnf,\n" + + "case when @raggruppaArticoli = 1 THEN sum(Round((dtb_ordr.qta_ord - dtb_ordr.qta_evasa ) / dtb_ordr.qta_cnf, 0)) over (partition by dtb_ordt.data_ord, dtb_ordt.serie, dtb_ordr.cod_mart) else Round((dtb_ordr.qta_ord - dtb_ordr.qta_evasa ) / dtb_ordr.qta_cnf, 0) end as num_cnf_inevasa\n" + + "FROM dtb_ordt \n" + + " INNER JOIN dtb_ordr ON dtb_ordt.gestione = dtb_ordr.gestione AND\n" + + " dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" + + " dtb_ordt.num_ord = dtb_ordr.num_ord \n" + + " INNER JOIN gtb_anag ON dtb_ordt.cod_anag = gtb_anag.cod_anag \n" + + " INNER JOIN mtb_aart ON dtb_ordr.cod_mart = mtb_aart.cod_mart\n" + + " LEFT OUTER JOIN mtb_unt_mis ON dtb_ordr.unt_ord = mtb_unt_mis.unt_mis\n" + + " LEFT OUTER JOIN vtb_dest ON dtb_ordt.cod_anag = vtb_dest.cod_anag AND\n" + + " dtb_ordt.cod_vdes = vtb_dest.cod_vdes \n" + + " WHERE dtb_ordt.gestione = 'V' AND\n" + + " dtb_ordt.flag_annulla = 'N' AND\n" + + " dtb_ordr.data_cons in (\n" + + " SELECT top 1 dtb_ordr.data_cons\n" + + " FROM dtb_ordt inner join dtb_ordr on dtb_ordt.gestione = dtb_ordr.gestione AND\n" + + " dtb_ordt.data_ord = dtb_ordr.data_ord AND\n" + + " dtb_ordt.num_ord = dtb_ordr.num_ord\n" + + " where dtb_ordt.gestione = 'V' AND\n" + + " dtb_ordt.flag_annulla = 'N' AND\n" + + " dtb_ordr.flag_evaso = 'I' AND\n" + + " dtb_ordt.data_ord = @dataOrd AND \n" + + " dtb_ordt.num_ord = @numOrd AND\n" + + " dtb_ordt.cod_mdep = @codMdep\n" + + " order by dtb_ordr.data_cons) ANd\n" + + " ( dtb_ordt.num_ord = @numOrd OR \n" + + " dbo.slim2k_getListCode(dtb_ordt.data_ord, dtb_ordt.num_ord, dtb_ordt.cod_anag, dtb_ordt.cod_vdes, dtb_ordt.cod_mdep) = @listcode ) AND\n" + + " dtb_ordt.cod_mdep = @codMdep AND\n" + + " dtb_ordr.flag_evaso ='I' AND\n" + + " dtb_ordr.gestione ='V' AND \n" + + " dtb_ordt.cod_anag in (select cod_anag from format.dbo.vvw_clienti_slim2k) and\n" + + " (IsNull(mtb_unt_mis.flag_unita_kg, 'N') = 'N' OR\n" + + " (IsNull(mtb_unt_mis.flag_unita_kg, 'N') = 'S' AND Round((dtb_ordr.qta_ord - dtb_ordr.qta_evasa ) / dtb_ordr.qta_cnf, 0) > 0 ))\n" + + " )\n" + + "\n" + + " \n" + + " SELECT 'I' as rowstate,\n" + + " 'FOD' as firm,\n" + + " 'SHP' as listtype, \n" + + " @listcode as listcode, \n" + + " CASE \n" + + " WHEN\n" + + " @singoloOrdine = 0 \n" + + " then \n" + + " DENSE_RAnK() over (ORDER BY ord.data_ord, ord.num_ord ) *1000\n" + + " ELSE 0\n" + + " END + ord.riga_ord as cnt ,\n" + + " Convert(integer, convert(varchar(8), ord.data_ord, 112)) as listdate,\n" + + " Convert(varchar(40), CASE WHEN ord.cod_vdes is not null THEN vtb_dest.citta + ' - ' + vtb_dest.indirizzo ELSE gtb_anag.citta + ' - ' + gtb_anag.indirizzo END) as indirizzo,\n" + + " 'CLI' as doctype,\n" + + " Convert(varchar(15), ord.num_ord) as num_ord,\n" + + " Convert(integer, convert(varchar(8),ord.data_ord, 112)) as data_ord,\n" + + " ord.riga_ord,\n" + + " 'C' as tipo_anag,\n" + + " ord.cod_anag,\n" + + " ord.cod_vdes,\n" + + " ord.cod_mart,\n" + + " Convert(numeric(10,3), ord.qta_ord) as qta_ord,\n" + + " 'D' as rowtype,\n" + + " Convert(integer, convert(varchar(8), ord.data_cons, 112)) as data_cons,\n" + + " ord.cod_mdep,\n" + + " ord.num_cnf,\n" + + " ord.num_cnf_inevasa \n" + + " FROM ord\n" + + " \n" + + " INNER JOIN gtb_anag ON ord.cod_anag = gtb_anag.cod_anag \n" + + " LEFT OUTER JOIN vtb_dest ON ord.cod_anag = vtb_dest.cod_anag AND\n" + + " ord.cod_vdes = vtb_dest.cod_vdes"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131622.java b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131622.java new file mode 100644 index 0000000000..7a44378740 --- /dev/null +++ b/ems-core/src/main/java/it/integry/ems/migration/model/Migration_20240528131622.java @@ -0,0 +1,23 @@ +package it.integry.ems.migration.model; + +import it.integry.ems.migration._base.BaseMigration; +import it.integry.ems.migration._base.MigrationModelInterface; + +public class Migration_20240528131622 extends BaseMigration implements MigrationModelInterface { + + @Override + public void up() throws Exception { + if (isHistoryDB()) + return; + + + createSetupQuery("SI_NO", "SI_NO", "SELECT 'S' UNION ALL SELECT 'N'", false); + createSetup("EXPORT_ORDINI VENDITA", "SLIM2K", "RAGGRUPPA_ARTICOLI", "S", "permette di ragguppare gli articoli uguali presenti su più ordini escludendo le suddivisioni", false, "SI_NO", true, false, false, false, false, null, false, "SELECT 'S' UNION ALL SELECT 'N'"); + } + + @Override + public void down() throws Exception { + + } + +} diff --git a/ems-engine/src/main/java/it/integry/ems/order/export/service/OrdiniVenditaExportServices.java b/ems-engine/src/main/java/it/integry/ems/order/export/service/OrdiniVenditaExportServices.java index 00e83f61b0..e5a9c2735c 100644 --- a/ems-engine/src/main/java/it/integry/ems/order/export/service/OrdiniVenditaExportServices.java +++ b/ems-engine/src/main/java/it/integry/ems/order/export/service/OrdiniVenditaExportServices.java @@ -13,10 +13,7 @@ import it.integry.ems_model.entity.WtbUsersInfo; import it.integry.ems_model.resolver.SqlFieldHolder; import it.integry.ems_model.service.SetupGest; import it.integry.ems_model.types.OperationType; -import it.integry.ems_model.utility.UtilityDB; -import it.integry.ems_model.utility.UtilityDate; -import it.integry.ems_model.utility.UtilityString; -import it.integry.ems_model.utility.UtilityZip; +import it.integry.ems_model.utility.*; import org.apache.commons.io.FilenameUtils; import org.apache.http.entity.ContentType; import org.apache.logging.log4j.LogManager; @@ -71,7 +68,8 @@ public class OrdiniVenditaExportServices { } try { - String listaSingoloOrdine = setup.get("LISTA_SINGOLO_ORDINE"); + boolean listaSingoloOrdine = UtilityHashMap.getValueIfExists(setup, "LISTA_SINGOLO_ORDINE", "N"). equalsIgnoreCase("S"); + boolean ragguppaArticolo = UtilityHashMap.getValueIfExists(setup, "RAGGRUPPA_ARTICOLI", "N"). equalsIgnoreCase("S"); String sql = "SELECT data_ord, " + @@ -82,23 +80,15 @@ public class OrdiniVenditaExportServices { "WHERE gestione = 'V' "; sql = UtilityDB.addwhereCond(sql, whereCond, false); - PreparedStatement ps = multiDBTransactionManager.prepareStatement(sql); - ResultSet rs = ps.executeQuery(); - Integer numOrd = null; - String codMdep = null, listCode = null; - Date dataOrd = null; - if (rs.next()) { - dataOrd = rs.getDate("data_ord"); - numOrd = rs.getInt("num_ord"); - codMdep = rs.getString("cod_mdep"); - listCode = rs.getString("listcode"); - } - rs.close(); - ps.close(); + HashMap datiOrdine = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql); - if (listCode == null) { + if (datiOrdine == null || datiOrdine.size() == 0 ) throw new Exception("Nessun ordine trovato"); - } + + Date dataOrd = UtilityHashMap.getValueIfExists(datiOrdine, "data_ord"); + Integer numOrd = UtilityHashMap.getValueIfExists(datiOrdine,"num_ord"); + String codMdep = UtilityHashMap.getValueIfExists(datiOrdine,"cod_mdep"); + String listCode = UtilityHashMap.getValueIfExists(datiOrdine,"listcode"); sql = "DELETE FROM slim2k.dbo.shippingplan_import " + @@ -108,6 +98,7 @@ public class OrdiniVenditaExportServices { cmd.executeUpdate(sql); multiDBTransactionManager.commitAll(); sql = + Query.format( "INSERT INTO slim2k.dbo.shippingplan_import( " + "rowstate, " + "firm, " + @@ -131,25 +122,21 @@ public class OrdiniVenditaExportServices { "qtyorderalt, " + "qtyreservedalt) " + "SELECT * " + - " FROM dbo.slim2k_exportOrdV( " + UtilityDB.valueToString(codMdep) + ", " - + UtilityDB.valueDateToString(dataOrd, CommonConstants.DATE_FORMAT_YMD) + ", " - + UtilityDB.valueToString(numOrd) + ", " - + UtilityDB.valueToString(listCode) + ") "; + " FROM dbo.slim2k_exportOrdV( %s, %s, %s, %s, %s, %s)", + codMdep, dataOrd, numOrd, listCode, listaSingoloOrdine, ragguppaArticolo); int row = cmd.executeUpdate(sql); multiDBTransactionManager.commitAll(); - StringBuilder responseBody; - HashMap queryParams = new HashMap(); queryParams.put("prj", "FOD"); queryParams.put("listtype", "SHP"); queryParams.put("listcode", String.valueOf(listCode)); - responseBody = new StringBuilder(); + StringBuilder responseBody = new StringBuilder(); int status = HttpRestWrapper.callGenericGet(url, null, null, responseBody, queryParams); if (status != 200) { - throw new Exception("Errore nell' esportazione della lista " + String.valueOf(listCode) + "
Body: " + responseBody); + throw new Exception("Errore nell' esportazione della lista " + listCode + "
Body: " + responseBody); } else { logger.info(responseBody); }