From 28cb43613264e56388ed2c76b4dce473f18c848d Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 21 Jan 2020 10:21:21 +0100 Subject: [PATCH] Fix su calcolo num_cnf in Spedizione --- .../VenditaOrdineInevasoViewModel.java | 53 ++++++++++++++----- .../input_quantity/DialogInputQuantity.java | 2 +- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java index 38d94d17..8491eee7 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita_ordine_inevaso/viewmodel/VenditaOrdineInevasoViewModel.java @@ -1071,19 +1071,25 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO (!SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV() || (SettingsManager.iDB().isEnableCheckPartitaMagCheckPickingV() && ((x.getPartitaMag() == null && item.getPartitaMag() == null) || (x.getPartitaMag() != null && x.getPartitaMag().equalsIgnoreCase(item.getPartitaMag())))))) .toList(); - float qtaEvasaTotaleInMtbColr = 0; + BigDecimal qtaEvasaTotaleInMtbColr = BigDecimal.ZERO; + int numCnfTotaleInMtbColr = 0; + for (MtbColr mtbColr : filteredMtbColrs) { - qtaEvasaTotaleInMtbColr += mtbColr.getQtaCol().floatValue(); + qtaEvasaTotaleInMtbColr = qtaEvasaTotaleInMtbColr.add(mtbColr.getQtaCol()); + numCnfTotaleInMtbColr += mtbColr.getNumCnf().intValue(); } - float qtaEvasaTotale = qtaEvasaTotaleInMtbColr; - BigDecimal qtaDaEvadere = item.getQtaOrd().subtract(new BigDecimal(qtaEvasaTotale)); + BigDecimal qtaDaEvadere = item.getQtaOrd().subtract(qtaEvasaTotaleInMtbColr); if(qtaDaEvadere.floatValue() < 0) qtaDaEvadere = BigDecimal.ZERO; + int numCnfDaEvadere = item.getNumCnfOrd().intValue() - numCnfTotaleInMtbColr; + if(numCnfDaEvadere < 0) numCnfDaEvadere = 0; - AtomicBigDecimal qtaTest = new AtomicBigDecimal(); + + AtomicBigDecimal qtaColEvasaInCurrentUL = new AtomicBigDecimal(); + AtomicBigDecimal numCnfEvasaInCurrentUL = new AtomicBigDecimal(); Stream.of(item.getWithdrawRows()) .filter(x -> ((x.getNumColloRif() == null) || Objects.equals(x.getNumColloRif(), item.getNumCollo()) && @@ -1091,15 +1097,22 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO ((x.getSerColloRif() == null) || Objects.equals(x.getSerColloRif(), item.getSerCollo()))) && ((x.getGestioneRif() == null) || Objects.equals(x.getGestioneRif(), item.getGestione()))) .forEach(x -> { - qtaTest.addAndGet(x.getQtaCol()); + qtaColEvasaInCurrentUL.addAndGet(x.getQtaCol()); + numCnfEvasaInCurrentUL.addAndGet(x.getNumCnf()); }); - BigDecimal qtaDisponibile = (item.isDeactivated() ? item.getQtaOrd() : item.getQtaDisponibileCollo()).subtract(qtaTest.get()); - BigDecimal qtaTot = (item.isDeactivated() ? item.getQtaOrd() : item.getQtaCollo()).subtract(qtaTest.get()); + BigDecimal qtaDisponibile = (item.isDeactivated() ? item.getQtaOrd() : item.getQtaDisponibileCollo()).subtract(qtaColEvasaInCurrentUL.get()); + BigDecimal qtaTot = (item.isDeactivated() ? item.getQtaOrd() : item.getQtaCollo()).subtract(qtaColEvasaInCurrentUL.get()); + + BigDecimal numCnfDisponibile = (item.isDeactivated() ? item.getNumCnfOrd() : item.getNumCnfDisponibileCollo()).subtract(numCnfEvasaInCurrentUL.get()); + BigDecimal numCnfTot = (item.isDeactivated() ? item.getNumCnfOrd() : item.getNumCnfCollo()).subtract(numCnfEvasaInCurrentUL.get()); if(qtaDisponibile.floatValue() < 0) qtaDisponibile = BigDecimal.ZERO; if(qtaTot.floatValue() < 0) qtaTot = BigDecimal.ZERO; + if(numCnfDisponibile.floatValue() < 0) numCnfDisponibile = BigDecimal.ZERO; + if(numCnfTot.floatValue() < 0) numCnfTot = BigDecimal.ZERO; + DialogInputQuantity.DTO dto = new DialogInputQuantity.DTO() .setBatchLot(item.getPartitaMag()) .setCodArtFor(item.getCodArtFor()) @@ -1108,7 +1121,7 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO .setQtaDaEvadere(qtaDaEvadere) .setQtaDisponibile(qtaDisponibile) .setQtaTot(qtaTot) - .setQtaEvasa(new BigDecimal(qtaEvasaTotale)) + .setQtaEvasa(qtaEvasaTotaleInMtbColr) .setCanPartitaMagBeChanged(item.isDeactivated()) .setMaxQta(qtaDisponibile); @@ -1150,16 +1163,28 @@ public class VenditaOrdineInevasoViewModel implements IOnColloClosedCallback, IO // } } else { - dto.setQtaTot(qtaDaEvadere.floatValue() < tmpPickData.getQtaTot().floatValue() && !tmpPickData.isEanPeso() ? qtaDaEvadere : tmpPickData.getQtaTot()); - dto.setMaxQta(tmpPickData.getQtaTot()); + if(SettingsManager.iDB().isFlagForceAllToColli()) { + + int numCnfColDaEvadere = numCnfDaEvadere < tmpPickData.getNumCnf().intValue() ? numCnfDaEvadere : tmpPickData.getNumCnf().intValue(); + dto.setNumCnf(numCnfColDaEvadere); + dto.setQtaCnf(tmpPickData.getQtaCnf()); + dto.setQtaTot(tmpPickData.getQtaCnf().multiply(new BigDecimal(numCnfColDaEvadere))); + dto.setQtaDaEvadere(tmpPickData.getQtaCnf().multiply(new BigDecimal(numCnfColDaEvadere))); - if(tmpPickData.getNumCnf() != null) { - dto.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf(), 3, RoundingMode.HALF_UP)); } else { - dto.setQtaCnf(tmpPickData.getQtaTot()); + dto.setQtaTot(qtaDaEvadere.compareTo(tmpPickData.getQtaTot()) < 0 && !tmpPickData.isEanPeso() ? qtaDaEvadere : tmpPickData.getQtaTot()); + dto.setMaxQta(tmpPickData.getQtaTot()); + + if(tmpPickData.getNumCnf() != null) { + dto.setQtaCnf(tmpPickData.getQtaTot().divide(tmpPickData.getNumCnf(), 3, RoundingMode.HALF_UP)); + } else { + dto.setQtaCnf(tmpPickData.getQtaTot()); + } } + + } if (tmpPickData.getQtaCnf() != null && useQtaDaEvadere) { diff --git a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java index dbf3cd3b..e6323b58 100644 --- a/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java +++ b/app/src/main/java/it/integry/integrywmsnative/view/dialogs/input_quantity/DialogInputQuantity.java @@ -661,7 +661,7 @@ public class DialogInputQuantity { private void refreshQtaDescriptionText() { int numConf = (int) (currentQuantityDto.qtaDaEvadere.get() / currentQuantityDto.qtaCnf.get()); - float qtaTot = currentQuantityDto.qtaDaEvadere.get().floatValue(); + float qtaTot = currentQuantityDto.qtaDaEvadere.get(); float mod = qtaTot % numConf;