Search in sources :

Example 1 with ProductBOMLineId

use of org.eevolution.api.ProductBOMLineId in project metasfresh-webui-api by metasfresh.

the class OrderLineQuickInputProcessor method explodePhantomBOM.

private List<OrderLineCandidate> explodePhantomBOM(final OrderLineCandidate initialCandidate) {
    final ProductId bomProductId = initialCandidate.getProductId();
    final I_PP_Product_BOM bom = bomsRepo.getDefaultBOMByProductId(bomProductId).orElse(null);
    if (bom == null) {
        return ImmutableList.of(initialCandidate);
    }
    final BOMUse bomUse = BOMUse.ofNullableCode(bom.getBOMUse());
    if (!BOMUse.Phantom.equals(bomUse)) {
        return ImmutableList.of(initialCandidate);
    }
    GroupId compensationGroupId = null;
    final ArrayList<OrderLineCandidate> result = new ArrayList<>();
    final List<I_PP_Product_BOMLine> bomLines = bomsRepo.retrieveLines(bom);
    for (final I_PP_Product_BOMLine bomLine : bomLines) {
        final ProductBOMLineId bomLineId = ProductBOMLineId.ofRepoId(bomLine.getPP_Product_BOMLine_ID());
        final ProductId bomLineProductId = ProductId.ofRepoId(bomLine.getM_Product_ID());
        final BigDecimal bomLineQty = bomsService.computeQtyRequired(bomLine, bomProductId, initialCandidate.getQty());
        final AttributeSetInstanceId bomLineAsiId = AttributeSetInstanceId.ofRepoIdOrNone(bomLine.getM_AttributeSetInstance_ID());
        final ImmutableAttributeSet attributes = asiBL.getImmutableAttributeSetById(bomLineAsiId);
        if (compensationGroupId == null) {
            compensationGroupId = orderGroupsRepo.createNewGroupId(GroupCreateRequest.builder().orderId(initialCandidate.getOrderId()).name(productBL.getProductName(bomProductId)).build());
        }
        result.add(initialCandidate.toBuilder().productId(bomLineProductId).attributes(attributes).qty(bomLineQty).compensationGroupId(compensationGroupId).explodedFromBOMLineId(bomLineId).build());
    }
    return result;
}
Also used : AttributeSetInstanceId(org.adempiere.mm.attributes.AttributeSetInstanceId) ArrayList(java.util.ArrayList) ProductId(de.metas.product.ProductId) HUPIItemProductId(de.metas.handlingunits.HUPIItemProductId) BigDecimal(java.math.BigDecimal) GroupId(de.metas.order.compensationGroup.GroupId) I_PP_Product_BOM(org.eevolution.model.I_PP_Product_BOM) ImmutableAttributeSet(org.adempiere.mm.attributes.api.ImmutableAttributeSet) ProductBOMLineId(org.eevolution.api.ProductBOMLineId) BOMUse(org.eevolution.api.BOMUse) I_PP_Product_BOMLine(org.eevolution.model.I_PP_Product_BOMLine)

Aggregations

HUPIItemProductId (de.metas.handlingunits.HUPIItemProductId)1 GroupId (de.metas.order.compensationGroup.GroupId)1 ProductId (de.metas.product.ProductId)1 BigDecimal (java.math.BigDecimal)1 ArrayList (java.util.ArrayList)1 AttributeSetInstanceId (org.adempiere.mm.attributes.AttributeSetInstanceId)1 ImmutableAttributeSet (org.adempiere.mm.attributes.api.ImmutableAttributeSet)1 BOMUse (org.eevolution.api.BOMUse)1 ProductBOMLineId (org.eevolution.api.ProductBOMLineId)1 I_PP_Product_BOM (org.eevolution.model.I_PP_Product_BOM)1 I_PP_Product_BOMLine (org.eevolution.model.I_PP_Product_BOMLine)1