Hi Hans,

you can get similar results by setting configItemTypeId to "STANDARD"

Jacopo

On Jul 12, 2009, at 10:09 AM, hans...@apache.org wrote:

Author: hansbak
Date: Sun Jul 12 08:09:54 2009
New Revision: 793286

URL: http://svn.apache.org/viewvc?rev=793286&view=rev
Log:
added the possbility that in a configurable product a subassembly is included with a BOM definition which need to be assembled fist, demo data to demonstrate this is included for the famous PC001

Modified:
ofbiz/trunk/applications/manufacturing/src/org/ofbiz/ manufacturing/jobshopmgt/ProductionRunServices.java
   ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml

Modified: ofbiz/trunk/applications/manufacturing/src/org/ofbiz/ manufacturing/jobshopmgt/ProductionRunServices.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java?rev=793286&r1=793285&r2=793286&view=diff
= = = = = = = = ====================================================================== --- ofbiz/trunk/applications/manufacturing/src/org/ofbiz/ manufacturing/jobshopmgt/ProductionRunServices.java (original) +++ ofbiz/trunk/applications/manufacturing/src/org/ofbiz/ manufacturing/jobshopmgt/ProductionRunServices.java Sun Jul 12 08:09:54 2009
@@ -48,6 +48,7 @@
import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.entity.util.EntityUtil;
import org.ofbiz.manufacturing.bom.BOMTree;
+import org.ofbiz.manufacturing.bom.BOMNode;
import org.ofbiz.manufacturing.techdata.TechDataServices;
import org.ofbiz.product.config.ProductConfigWrapper;
import org.ofbiz.product.config.ProductConfigWrapper.ConfigOption;
@@ -231,7 +232,6 @@
        } catch (GenericServiceException gse) {
            Debug.logWarning(gse.getMessage(), module);
        }
-        // =================================
        if (routing == null) {
return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductRoutingNotExist", locale));
        }
@@ -391,7 +391,7 @@
                while (pb.hasNext()) {
// The components variable contains a list of BOMNodes:
                    // each node represents a product (component).
- org.ofbiz.manufacturing.bom.BOMNode node = (org.ofbiz.manufacturing.bom.BOMNode) pb.next(); + BOMNode node = (org.ofbiz.manufacturing.bom.BOMNode) pb.next();
                    GenericValue productBom = node.getProductAssoc();
if ((productBom.getString("routingWorkEffortId") == null && first) || (productBom.getString("routingWorkEffortId") != null && productBom .getString ("routingWorkEffortId ").equals(routingTask.getString("workEffortId")))) {
                        serviceContext.clear();
@@ -2217,7 +2217,39 @@
BigDecimal totalQuantity = (BigDecimal)components.get(componentProductId); componentQuantity = totalQuantity.add(componentQuantity);
                }
- components.put(componentProductId, componentQuantity);
+
+                // check if a bom exists
+                List bomList = null;
+                try {
+ bomList = delegator.findByAnd("ProductAssoc", UtilMisc.toMap("productId", componentProductId, "productAssocTypeId", "MANUF_COMPONENT")); + bomList = EntityUtil.filterByDate(bomList, UtilDateTime.nowTimestamp());
+                } catch (GenericEntityException e) {
+ return ServiceUtil.returnError("try to get BOM list from productAssoc");
+                }
+ // if so create a mandatory predecessor to this production run
+                if(UtilValidate.isNotEmpty(bomList)) {
+                       serviceContext.clear();
+                       serviceContext.put("productId", componentProductId);
+                       serviceContext.put("quantity", componentQuantity);
+ serviceContext.put("startDate", UtilDateTime.nowTimestamp());
+                       serviceContext.put("facilityId", facilityId);
+                       serviceContext.put("userLogin", userLogin);
+                       resultService = null;
+                       try {
+ resultService = dispatcher.runSync("createProductionRunsForProductBom", serviceContext); + GenericValue workEffortPreDecessor = delegator.makeValue("WorkEffortAssoc", UtilMisc.toMap( + "workEffortIdTo", productionRunId, "workEffortIdFrom", resultService.get("productionRunId"), + "workEffortAssocTypeId", "WORK_EFF_PRECEDENCY", "fromDate", UtilDateTime.nowTimestamp()));
+                               workEffortPreDecessor.create();
+                       } catch (GenericServiceException e) {
+ return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale));
+                       } catch (GenericEntityException e) {
+ return ServiceUtil.returnError("try to create workeffort assoc");
+                       }
+                       
+                } else {
+ components.put(componentProductId, componentQuantity);
+                }

                //  create production run notes from comments
                String comments = co.getComments();

Modified: ofbiz/trunk/specialpurpose/ecommerce/data/ DemoConfigurator.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml?rev=793286&r1=793285&r2=793286&view=diff
= = = = = = = = ====================================================================== --- ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml (original) +++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoConfigurator.xml Sun Jul 12 08:09:54 2009
@@ -25,7 +25,10 @@
<Product productId="HD500GB_BRAND" productTypeId="FINISHED_GOOD" productName="HD500GB" internalName="HD 450 GB" description="500 GB Hard Drive" isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2004-08-20 12:50:54.794" createdByUserLogin="admin"/> <Product productId="ETH_BRAND" productTypeId="FINISHED_GOOD" productName="Ethernet100" internalName="Ethernet Card 10/100" description="Ethernet Card 10/100" isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2004-08-20 12:50:54.794" createdByUserLogin="admin"/> <Product productId="MOD_BRAND" productTypeId="FINISHED_GOOD" productName="Modem56k" internalName="Modem Card 56k" description="Modem Card 56k" isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2004-08-20 12:50:54.794" createdByUserLogin="admin"/>
-
+ <Product productId="MOTHER_BOARD_ASS" productTypeId="MARKETING_PKG_AUTO" productName="MotherBoard Assembly" internalName="Motherboard assembly" description="Motherboard Assembly" isVirtual="N" isVariant="N"/> + <Product productId="MOTHER_BOARD" productTypeId="FINISHED_GOOD" productName="MotherBoard" internalName="Motherboard" description="Motherboard" isVirtual="N" isVariant="N" billOfMaterialLevel="0"/> + <Product productId="CPU-586" productTypeId="FINISHED_GOOD" productName="CPU 586" internalName="CPU intel 586" description="CPU intel 586" isVirtual="N" isVariant="N" billOfMaterialLevel="0"/>
+
<ProductPrice productId="PC001" productPricePurposeId="PURCHASE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:53.223" price="50" createdDate="2004-08-20 12:55:53.223" createdByUserLogin="admin"/> <ProductPrice productId="RAM1GB_BRAND" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:53.223" price="115" createdDate="2004-08-20 12:55:53.223" createdByUserLogin="admin"/> <ProductPrice productId="RAM1GB_BRAND" productPricePurposeId="PURCHASE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:36.479" price="120" createdDate="2004-08-20 12:55:36.479" createdByUserLogin="admin"/>
@@ -33,30 +36,41 @@
<ProductPrice productId="HD500GB_BRAND" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:36.479" price="420" createdDate="2004-08-20 12:55:36.479" createdByUserLogin="admin"/> <ProductPrice productId="ETH_BRAND" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:36.479" price="18" createdDate="2004-08-20 12:55:36.479" createdByUserLogin="admin"/> <ProductPrice productId="MOD_BRAND" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:36.479" price="15" createdDate="2004-08-20 12:55:36.479" createdByUserLogin="admin"/> + <ProductPrice productId="MOTHER_BOARD" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:36.479" price="150" createdDate="2004-08-20 12:55:36.479" createdByUserLogin="admin"/> + <ProductPrice productId="CPU-586" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2004-08-20 12:55:36.479" price="250" createdDate="2004-08-20 12:55:36.479" createdByUserLogin="admin"/>
+
+    <!-- BOM -->
+ <ProductAssoc productId="MOTHER_BOARD_ASS" productIdTo="MOTHER_BOARD" productAssocTypeId="MANUF_COMPONENT" fromDate="2007-01-01 12:00:00.0" quantity="1.000000"/> + <ProductAssoc productId="MOTHER_BOARD_ASS" productIdTo="CPU-586" productAssocTypeId="MANUF_COMPONENT" fromDate="2007-01-01 12:00:00.0" quantity="1.000000"/>
+

<ProductConfigItem configItemId="IT0000" configItemTypeId="SINGLE" configItemName="RAM (brand)" description="Select the memory configuration:"/> <ProductConfigItem configItemId="IT0001" configItemTypeId="SINGLE" configItemName="HD (brand)" description="Select the Hard Disk:"/> <ProductConfigItem configItemId="IT0002" configItemTypeId="MULTIPLE" configItemName="PCI slot" description="Select the PCI cards:"/>
-
+ <ProductConfigItem configItemId="IT0003" configItemTypeId="SINGLE" configItemName="Standard Items" description="Standard Items"/>
+
<ProductConfigOption configItemId="IT0000" configOptionId="OP000" configOptionName="OPT001" description="1GB Dual Channel DDR2 SDRAM at 667MHz" sequenceNum="10"/> <ProductConfigOption configItemId="IT0000" configOptionId="OP001" configOptionName="OPT002" description="2GB Dual Channel DDR2 SDRAM at 667MHz" sequenceNum="20"/> <ProductConfigOption configItemId="IT0001" configOptionId="OP002" configOptionName="OPT001" description="HD 250 GB" sequenceNum="10"/> <ProductConfigOption configItemId="IT0001" configOptionId="OP003" configOptionName="OPT002" description="HD 500 GB" sequenceNum="20"/> <ProductConfigOption configItemId="IT0002" configOptionId="OP004" configOptionName="OPT001" description="Ethernet Card" sequenceNum="10"/> <ProductConfigOption configItemId="IT0002" configOptionId="OP005" configOptionName="OPT002" description="Modem 56k" sequenceNum="20"/>
-
+ <ProductConfigOption configItemId="IT0003" configOptionId="OP006" configOptionName="OPT001" description="Motherboard with BOM" sequenceNum="10"/>
+
<ProductConfigProduct configItemId="IT0000" configOptionId="OP000" productId="RAM1GB_BRAND" quantity="1"/> <ProductConfigProduct configItemId="IT0000" configOptionId="OP001" productId="RAM1GB_BRAND" quantity="2"/> <ProductConfigProduct configItemId="IT0001" configOptionId="OP002" productId="HD250GB_BRAND" quantity="1"/> <ProductConfigProduct configItemId="IT0001" configOptionId="OP003" productId="HD500GB_BRAND" quantity="1"/> <ProductConfigProduct configItemId="IT0002" configOptionId="OP004" productId="ETH_BRAND" quantity="1"/> <ProductConfigProduct configItemId="IT0002" configOptionId="OP005" productId="MOD_BRAND" quantity="1"/>
-
+ <ProductConfigProduct configItemId="IT0003" configOptionId="OP006" productId="MOTHER_BOARD_ASS" quantity="1"/>
+
<ProductConfig productId="PC001" configItemId="IT0000" sequenceNum="10" fromDate="2004-08-20 12:59:26.209" configTypeId="QUESTION" defaultConfigOptionId="OP001" isMandatory="Y"/> <ProductConfig productId="PC001" configItemId="IT0001" sequenceNum="20" fromDate="2004-08-20 12:59:26.209" description="1st Hard Disk drive" defaultConfigOptionId="OP003" configTypeId="QUESTION" isMandatory="Y"/> <ProductConfig productId="PC001" configItemId="IT0001" sequenceNum="30" fromDate="2004-08-20 12:59:26.209" description="2nd Hard Disk drive" configTypeId="QUESTION" isMandatory="N"/> <ProductConfig productId="PC001" configItemId="IT0002" sequenceNum="40" fromDate="2004-08-20 12:59:26.209" configTypeId="QUESTION" isMandatory="N"/>
-
+ <ProductConfig productId="PC001" configItemId="IT0003" sequenceNum="00" fromDate="2004-08-20 12:59:26.209" configTypeId="STANDARD" isMandatory="Y"/>
+
<WorkEffort workEffortId="TASK01" workEffortTypeId="ROU_TASK" workEffortPurposeTypeId="ROU_ASSEMBLING" currentStatusId="ROU_ACTIVE" workEffortName="Stock out" description="Components" revisionNumber="1" fixedAssetId="DEMO_MACHINE_GROUP" estimatedMilliSeconds="600000" estimatedSetupMillis="0"/> <WorkEffort workEffortId="TASK02" workEffortTypeId="ROU_TASK" workEffortPurposeTypeId="ROU_ASSEMBLING" currentStatusId="ROU_ACTIVE" workEffortName="Assembly" description="Assembly" revisionNumber="1" fixedAssetId="DEMO_MACHINE_GROUP" estimatedMilliSeconds="900000" estimatedSetupMillis="0"/> <WorkEffort workEffortId="TASK03" workEffortTypeId="ROU_TASK" workEffortPurposeTypeId="ROU_ASSEMBLING" currentStatusId="ROU_ACTIVE" workEffortName="Test" description="Test" revisionNumber="1" fixedAssetId="DEMO_MACHINE_GROUP" estimatedMilliSeconds="450000" estimatedSetupMillis="20000"/>



Reply via email to