From 6fd6431f7e4fda9dc0acdf86a3577d5f89f1ec7b Mon Sep 17 00:00:00 2001 From: AnthonyS Date: Tue, 23 Jul 2024 16:26:18 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20recalc=20posizione=20viaggi=20ed=20aggiun?= =?UTF-8?q?to=20controllo=20ord=20L=20gi=C3=A0=20creato=20in=20saveProduct?= =?UTF-8?q?ionPlan?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ems/rules/completing/SalesRules.java | 44 +++++++++++++------ .../Import/service/ProductionPlanService.java | 21 +++++++++ 2 files changed, 52 insertions(+), 13 deletions(-) diff --git a/ems-core/src/main/java/it/integry/ems/rules/completing/SalesRules.java b/ems-core/src/main/java/it/integry/ems/rules/completing/SalesRules.java index 3265a23219..fbae908180 100644 --- a/ems-core/src/main/java/it/integry/ems/rules/completing/SalesRules.java +++ b/ems-core/src/main/java/it/integry/ems/rules/completing/SalesRules.java @@ -852,19 +852,19 @@ public class SalesRules extends QueryRules { Boolean ret = false; String query = Query.format( - "SELECT TOP 1 cod_promo, " + - "data_iniz, " + - "data_fine, " + - "versione " + - " FROM dbo.getPromozioneVendita( %s, %s, %s , null, %s) " + - " WHERE tipo_variazione <> 'D' AND" + - " versione <> %s", + "SELECT TOP 1 cod_promo, " + + "data_iniz, " + + "data_fine, " + + "versione " + + " FROM dbo.getPromozioneVendita( %s, %s, %s , null, %s) " + + " WHERE tipo_variazione <> 'D' AND" + + " versione <> %s", entity.getDataIniz(), entity.getDataFine(), entity.getCodVlis(), entity.getCodMart(), - entity.getVersione()==null?0:entity.getVersione() - ); + entity.getVersione() == null ? 0 : entity.getVersione() + ); HashMap datiPromo = UtilityDB.executeSimpleQueryOnlyFirstRow(conn, query); if (UtilityHashMap.isPresent(datiPromo)) { @@ -1175,11 +1175,29 @@ public class SalesRules extends QueryRules { return; } - int indexOfLastPosizione = viaggiGiorno.indexOf(viaggiGiorno.stream() - .filter(viaggio -> !viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio()) && Objects.equals(viaggio.getPosizione(), vtbViaggi.getPosizione())).findFirst().orElse(null)); + VtbViaggi lastDataViaggio = viaggiGiorno.stream() + .filter(viaggio -> viaggio.getIdViaggio().equalsIgnoreCase(vtbViaggi.getIdViaggio())) + .findFirst().orElse(null); - if (indexOfLastPosizione != -1) { - viaggiGiorno.add(indexOfLastPosizione, vtbViaggi); + if (lastDataViaggio != null) { + viaggiGiorno.remove(lastDataViaggio); + } + + int indexOfViaggioConNuovaPos = viaggiGiorno.indexOf(viaggiGiorno.stream() + .filter(viaggio -> viaggio.getPosizione().equals(vtbViaggi.getPosizione())).findFirst().orElse(null)); + + if (indexOfViaggioConNuovaPos != -1) { + if (lastDataViaggio != null && vtbViaggi.getPosizione() > lastDataViaggio.getPosizione()) { + indexOfViaggioConNuovaPos += 1; + } + + viaggiGiorno.add(indexOfViaggioConNuovaPos, vtbViaggi); + } else { + viaggiGiorno.add(vtbViaggi); + + viaggiGiorno = Stream.of(viaggiGiorno) + .sortBy(VtbViaggi::getPosizione) + .toList(); } Stream.of(viaggiGiorno) diff --git a/ems-engine/src/main/java/it/integry/ems/production/Import/service/ProductionPlanService.java b/ems-engine/src/main/java/it/integry/ems/production/Import/service/ProductionPlanService.java index 1c0ee878f4..750ece2cf9 100644 --- a/ems-engine/src/main/java/it/integry/ems/production/Import/service/ProductionPlanService.java +++ b/ems-engine/src/main/java/it/integry/ems/production/Import/service/ProductionPlanService.java @@ -302,6 +302,27 @@ public class ProductionPlanService { } ordLavDTO.setPartite(saveProductionPlanDTO.getPartite()); + + sql = Query.format( + "SELECT num_ord, qta_prod\n" + + "FROM dtb_ordt\n" + + "WHERE cod_jcom = %s\n" + + " AND cod_prod = %s", + saveProductionPlanDTO.getCodJcom(), + saveProductionPlanDTO.getCodProd() + ); + + if (numOrdL == null || numOrdL == 0) { + HashMap ordData = UtilityDB.executeSimpleQueryOnlyFirstRow(multiDBTransactionManager.getPrimaryConnection(), sql); + + if (ordData != null) { + numOrdL = UtilityHashMap.getValueIfExists(ordData, "num_ord"); + + qtaProd = (qtaProd != null ? qtaProd : BigDecimal.ZERO) + .add(UtilityHashMap.getValueIfExists(ordData, "qta_prod")); + } + } + if (numOrdL == null || numOrdL == 0) { operation = OperationType.INSERT;