diff --git a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java index 62c120ab..79b8db0d 100644 --- a/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java +++ b/app/src/main/java/it/integry/integrywmsnative/core/utility/UtilityBigDecimal.java @@ -54,6 +54,13 @@ public class UtilityBigDecimal { return new BigDecimal(input1.divide(divisor,3, BigDecimal.ROUND_HALF_EVEN).intValue()); } + + public static BigDecimal divideAndRoundToInteger(BigDecimal input1, BigDecimal divisor) { + if(divisor == null || equalsTo(divisor, BigDecimal.ZERO)) return null; + + return new BigDecimal(input1.divide(divisor,0, BigDecimal.ROUND_HALF_EVEN).intValue()); + } + public static BigDecimal multiply(BigDecimal input1, BigDecimal multiplier) { return input1.multiply(multiplier); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java index 1126fb44..4c0cd7d8 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoFragment.java @@ -319,7 +319,7 @@ public class PickingLiberoFragment extends Fragment implements ITitledFragment, onAbort.run(); BarcodeManager.enable(); }) - .show(); + .show(); } @Override diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java index f47f9bd5..0a91af21 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/picking_libero/PickingLiberoViewModel.java @@ -34,6 +34,7 @@ import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityBigDecimal; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; +import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickDataDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; @@ -244,14 +245,31 @@ public class PickingLiberoViewModel { if (mtbAart.isFlagQtaCnfFissaBoolean()) { qtaCnfDaPrelevare = mtbAart.getQtaCnf(); + + if(manualPickDTO.isEanPeso()) { + if(mtbAart.getUntMisRifPeso() == MtbAart.UntMisRifPesoEnum.M) { + if (UtilityBigDecimal.equalsTo(mtbAart.getPesoKg(), BigDecimal.ZERO)) { + this.sendError(new InvalidPesoKGException()); + } else { + qtaColDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, mtbAart.getPesoKg()); + } + } + } + } else if (qtaColDaPrelevare != null && numCnfDaPrelevare != null) { qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); } if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) { - numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); - qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + if(!mtbAart.isFlagQtaCnfFissaBoolean()) { + numCnfDaPrelevare = UtilityBigDecimal.divideAndRoundToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); + if(UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO)) numCnfDaPrelevare = BigDecimal.ONE; + qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + } else { + numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); + } + } else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) { qtaCnfDaPrelevare = mtbAart.getQtaCnf(); qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare); @@ -284,9 +302,9 @@ public class PickingLiberoViewModel { initialNumCnf, initialQtaCnf, initialQtaTot, - qtaColDaPrelevare, - numCnfDaPrelevare, - qtaCnfDaPrelevare, + null, + null, + null, null, null, null, diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java index 3e4007bd..4a49d9fd 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/rettifica_giacenze/RettificaGiacenzeViewModel.java @@ -39,6 +39,7 @@ import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.rettifica_giacenze.core.RettificaGiacenzeRESTConsumer; import it.integry.integrywmsnative.gest.rettifica_giacenze.dto.FornitoreDTO; +import it.integry.integrywmsnative.gest.spedizione.exceptions.InvalidPesoKGException; import it.integry.integrywmsnative.gest.spedizione.model.PickDataDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickedQuantityDTO; import it.integry.integrywmsnative.gest.spedizione.model.PickingObjectDTO; @@ -233,14 +234,29 @@ public class RettificaGiacenzeViewModel { if (mtbAart.isFlagQtaCnfFissaBoolean()) { qtaCnfDaPrelevare = mtbAart.getQtaCnf(); + + if(manualPickDTO.isEanPeso()) { + if(mtbAart.getUntMisRifPeso() == MtbAart.UntMisRifPesoEnum.M) { + if (UtilityBigDecimal.equalsTo(mtbAart.getPesoKg(), BigDecimal.ZERO)) { + this.sendError(new InvalidPesoKGException()); + } else { + qtaColDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, mtbAart.getPesoKg()); + } + } + } } else if (qtaColDaPrelevare != null && numCnfDaPrelevare != null) { qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); } if (qtaColDaPrelevare != null && numCnfDaPrelevare == null) { - numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); - qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + if(!mtbAart.isFlagQtaCnfFissaBoolean()) { + numCnfDaPrelevare = UtilityBigDecimal.divideAndRoundToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); + if(UtilityBigDecimal.equalsTo(numCnfDaPrelevare, BigDecimal.ZERO)) numCnfDaPrelevare = BigDecimal.ONE; + qtaCnfDaPrelevare = UtilityBigDecimal.divide(qtaColDaPrelevare, numCnfDaPrelevare); + } else { + numCnfDaPrelevare = UtilityBigDecimal.divideToInteger(qtaColDaPrelevare, mtbAart.getQtaCnf()); + } } else if (numCnfDaPrelevare != null && qtaColDaPrelevare == null) { qtaCnfDaPrelevare = mtbAart.getQtaCnf(); qtaColDaPrelevare = UtilityBigDecimal.multiply(numCnfDaPrelevare, qtaCnfDaPrelevare);