diff --git a/ems-core/src/main/java/it/integry/ems/service/EntityProcessor.java b/ems-core/src/main/java/it/integry/ems/service/EntityProcessor.java index 7ad469079a..a68f31b930 100644 --- a/ems-core/src/main/java/it/integry/ems/service/EntityProcessor.java +++ b/ems-core/src/main/java/it/integry/ems/service/EntityProcessor.java @@ -175,7 +175,7 @@ public class EntityProcessor { private void checkEntityChildsUsage(EntityInterface entityInterface, MultiDBTransactionManager multiDBTransactionManager, RequestDataDTO requestDataDTO) throws Exception { boolean isMaster = entityPropertyHolder.isEntityMaster(((EntityBase) entityInterface).getClass()); - ; + OperationType operationType = entityInterface.getOperation(); if (!isMaster && (operationType != OperationType.SELECT_OBJECT && operationType != OperationType.SELECT)) { diff --git a/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java b/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java index 3b71a0c87e..f070a3e1bb 100644 --- a/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java +++ b/ems-core/src/main/java/it/integry/ems_model/business_logic/GeneraOrdLav.java @@ -1486,8 +1486,8 @@ public class GeneraOrdLav { List dtbOrdSteps = UtilityDB.executeSimpleQueryDTO(conn, sql, DtbOrdSteps.class); dtbOrdSteps.stream().forEach(x -> { - x.setDataIniz(UtilityDate.dateAdd(x.getDataIniz(), ggDiff)); - x.setDataFine(UtilityDate.dateAdd(x.getDataFine(), ggDiff)); + x.setDataIniz(x.getDataIniz()!=null?UtilityDate.dateAdd(x.getDataIniz(), ggDiff):null); + x.setDataFine(x.getDataFine() != null ?UtilityDate.dateAdd(x.getDataFine(), ggDiff):null); x.setOperation(OperationType.UPDATE); }); @@ -1571,7 +1571,7 @@ public class GeneraOrdLav { if (dtbOrds != null && !dtbOrds.isEmpty()) { dtbOrds.forEach(x -> { - x.setQta(x.getQta().multiply(moltiplicatore).setScale(2, RoundingMode.HALF_UP)).setValUnt(valUntProd).setImporto((x.getQta().multiply(moltiplicatore).setScale(2, RoundingMode.HALF_UP)).multiply(valUntProd)); + x.setQta(x.getQta().multiply(moltiplicatore).setScale(5, RoundingMode.HALF_UP)).setValUnt(valUntProd).setImporto((x.getQta().multiply(moltiplicatore).setScale(2, RoundingMode.HALF_UP)).multiply(valUntProd)); x.setOperation(OperationType.UPDATE); }); diff --git a/ems-core/src/main/java/it/integry/ems_model/utility/UtilityBigDecimal.java b/ems-core/src/main/java/it/integry/ems_model/utility/UtilityBigDecimal.java index a354562a76..42d771257e 100644 --- a/ems-core/src/main/java/it/integry/ems_model/utility/UtilityBigDecimal.java +++ b/ems-core/src/main/java/it/integry/ems_model/utility/UtilityBigDecimal.java @@ -125,8 +125,8 @@ public class UtilityBigDecimal { return calculatePercentage(base,percentValue,5); } public static BigDecimal calculatePercentage(BigDecimal base, double percentValue, int scale) { - BigDecimal percent = new BigDecimal(percentValue).divide(new BigDecimal("100"), scale, RoundingMode.HALF_UP); - return base.multiply(percent); + BigDecimal percent = new BigDecimal(percentValue).divide(new BigDecimal("100"), 5, RoundingMode.HALF_EVEN); + return base.multiply(percent).setScale(scale,RoundingMode.HALF_UP); } } diff --git a/ems-core/src/main/resources/rules/post_calc.drl b/ems-core/src/main/resources/rules/post_calc.drl index a71b091c83..e448d4592a 100644 --- a/ems-core/src/main/resources/rules/post_calc.drl +++ b/ems-core/src/main/resources/rules/post_calc.drl @@ -37,14 +37,14 @@ end //ANNULLAMENTO RICALCOLO TOTALI ORDINI PRODUZIONE -rule "annullamentoCalcTotaliOrdP" -no-loop -when - eval(postRulesEnabled) - $ordT : DtbOrdt(executeRecalc == true && gestione == "A" && gestioneRif != null) -then - modify ( $ordT ) { setExecuteRecalc(false) } -end +//rule "annullamentoCalcTotaliOrdP" +//no-loop +//when +// eval(postRulesEnabled) +// $ordT : DtbOrdt(executeRecalc == true && gestione == "A" && gestioneRif != null) +//then +// modify ( $ordT ) { setExecuteRecalc(false) } +//end rule "completeCalcTotaliOrd" no-loop diff --git a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java index e607c30f6c..89118cd4c3 100644 --- a/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java +++ b/ems-engine/src/main/java/it/integry/ems/document/service/DocumentProdService.java @@ -3416,7 +3416,7 @@ public class DocumentProdService { } } if (docT == null) { - docT = generaTestataDocDaOrdineLav(ordine, datiScarico.getCodDtip(), chiusuraLavorazioneDTO.getDataDoc(), datiScarico.getSerDoc(), datiScarico.getCodAnag(), null, datiScarico.getCodMdep(), produzioneOrdine.getPartitaMag()); + docT = generaTestataDocDaOrdineLav(ordine, datiScarico.getCodDtip(), UtilityLocalDate.localDateToDate(produzioneOrdine.getDataProd()), datiScarico.getSerDoc(), datiScarico.getCodAnag(), null, datiScarico.getCodMdep(), produzioneOrdine.getPartitaMag()); docT.setOperation(OperationType.INSERT); if (datiScarico.getDataVersamento() != null) { docT.setDataIns(datiScarico.getDataVersamento()); diff --git a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java index b313a3b1a1..1ad174035e 100644 --- a/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java +++ b/ems-engine/src/main/java/it/integry/ems/retail/wms/lavorazione/service/WMSLavorazioneService.java @@ -881,7 +881,11 @@ public class WMSLavorazioneService { // // for (ScarichiArticoloDTO scarichiMp : scarichiArticoli.values()) { - BigDecimal qtaDaScaricare = UtilityBigDecimal.calculatePercentage(scarichiMp.getQtaScaricata(), produzione.getPesoProduzione().doubleValue()); + String codMart = scarichiMp.getCodMart(); + BigDecimal cifreDec = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn( multiDBTransactionManager.getPrimaryConnection(), + Query.format("select mtb_unt_mis.cifre_dec from mtb_unt_mis inner join mtb_aart on mtb_unt_mis.unt_mis = mtb_aart.unt_mis and cod_mart = {}", codMart) + ); + BigDecimal qtaDaScaricare = UtilityBigDecimal.calculatePercentage(scarichiMp.getQtaScaricata(), produzione.getPesoProduzione().doubleValue(),cifreDec.intValue()); if (UtilityBigDecimal.equalsTo(qtaDaScaricare, BigDecimal.ZERO)) { continue; }