@Override public Quantity convertQtyToLUTUConfigurationUOM( final BigDecimal qtyValue, final I_C_UOM qtyUOM, final I_M_HU_LUTU_Configuration lutuConfiguration) { final IUOMConversionBL uomConversionBL = Services.get(IUOMConversionBL.class); final IUOMConversionContext uomConversionCtx = uomConversionBL.createConversionContext(lutuConfiguration.getM_Product()); final Quantity qty = new Quantity(qtyValue, qtyUOM); final I_C_UOM uomTo = lutuConfiguration.getC_UOM(); return qty.convertTo(uomConversionCtx, uomTo); }
@Override public ILUTUProducerAllocationDestination createLUTUProducerAllocationDestination( final I_M_HU_LUTU_Configuration lutuConfiguration) { Check.assumeNotNull(lutuConfiguration, "lutuConfiguration not null"); final IHandlingUnitsBL handlingUnitsBL = Services.get(IHandlingUnitsBL.class); final ILUTUProducerAllocationDestination luProducerDestination = new LUTUProducerDestination(); luProducerDestination.setM_HU_LUTU_Configuration(lutuConfiguration); // // LU Configuration final I_M_HU_PI_Item luPIItem = lutuConfiguration.getM_LU_HU_PI_Item(); final int qtyLU = lutuConfiguration.getQtyLU().intValueExact(); final boolean qtyLUInfinite = lutuConfiguration.isInfiniteQtyLU(); final int qtyTU = lutuConfiguration.getQtyTU().intValueExact(); final boolean qtyTUInfinite = lutuConfiguration.isInfiniteQtyTU(); if (!handlingUnitsBL.isNoPI(luPIItem)) { final I_M_HU_PI luPI = luPIItem.getM_HU_PI_Version().getM_HU_PI(); luProducerDestination.setLUItemPI(luPIItem); luProducerDestination.setLUPI(luPI); if (qtyLUInfinite) { luProducerDestination.setMaxLUsInfinite(); // // 07378: Fix behavior when max LUs are infinite, created max TUs are the ones we specify // (otherwise we end up creating infinite HUs for 3 x Tomatoes) luProducerDestination.setMaxTUsForRemainingQty(qtyTU); } else { luProducerDestination.setMaxLUs(qtyLU); } // TU configuration Check.assume(!qtyTUInfinite, "qtyTUInfinite shall be false when dealing with concrete LUs"); luProducerDestination.setMaxTUsPerLU(qtyTU); luProducerDestination.setCreateTUsForRemainingQty(false); } else { luProducerDestination.setLUItemPI(null); luProducerDestination.setLUPI(null); luProducerDestination.setMaxLUs(0); // TU configuration // luProducerDestination.setMaxTUsPerLU(0); // no need to set luProducerDestination.setCreateTUsForRemainingQty(true); // we will create only TUs if (qtyTUInfinite) { luProducerDestination.setMaxTUsForRemainingQtyInfinite(); } else { luProducerDestination.setMaxTUsForRemainingQty(qtyTU); } } // // TU Configuration final I_M_HU_PI tuPI = lutuConfiguration.getM_TU_HU_PI(); luProducerDestination.setTUPI(tuPI); // TU Capacity final I_M_Product cuProduct = lutuConfiguration.getM_Product(); final I_C_UOM cuUOM = lutuConfiguration.getC_UOM(); final boolean qtyCUInfinite = lutuConfiguration.isInfiniteQtyCU(); final BigDecimal qtyCUPerTU = qtyCUInfinite ? IHUCapacityDefinition.INFINITY : lutuConfiguration.getQtyCU(); luProducerDestination.addTUCapacity(cuProduct, qtyCUPerTU, cuUOM); // // Misc configuration luProducerDestination.setC_BPartner(lutuConfiguration.getC_BPartner()); luProducerDestination.setC_BPartner_Location_ID(lutuConfiguration.getC_BPartner_Location_ID()); luProducerDestination.setHUStatus(lutuConfiguration.getHUStatus()); luProducerDestination.setM_Locator(lutuConfiguration.getM_Locator()); // // Return it return luProducerDestination; }