use of org.eevolution.model.I_PP_Product_BOM 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;
}
use of org.eevolution.model.I_PP_Product_BOM in project metasfresh-webui-api by metasfresh.
the class CableSalesOrderLineQuickInputProcessor method getBOMProductId.
private ProductId getBOMProductId(ICablesOrderLineQuickInput quickInputModel) {
final ProductId plugProduct1Id = ProductId.ofRepoId(quickInputModel.getPlug1_Product_ID());
final ProductId plugProduct2Id = ProductId.ofRepoId(quickInputModel.getPlug2_Product_ID());
final ProductId cableProductId = ProductId.ofRepoId(quickInputModel.getCable_Product_ID());
final IProductBOMDAO productBOMsRepo = Services.get(IProductBOMDAO.class);
final List<I_PP_Product_BOM> boms = productBOMsRepo.retrieveBOMsContainingExactProducts(plugProduct1Id.getRepoId(), cableProductId.getRepoId(), plugProduct2Id.getRepoId());
if (boms.isEmpty()) {
throw new AdempiereException("@NotFound@ @PP_Product_BOM_ID@");
} else if (boms.size() > 1) {
final String bomValues = boms.stream().map(I_PP_Product_BOM::getValue).collect(Collectors.joining(", "));
throw new AdempiereException("More than one BOMs found: " + bomValues);
} else {
final I_PP_Product_BOM bom = boms.get(0);
return ProductId.ofRepoId(bom.getM_Product_ID());
}
}
Aggregations