svn commit: r793286 - in /ofbiz/trunk: applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java specialpurpose/ecommerce/data/DemoConfigurator.xml

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r793286 - in /ofbiz/trunk: applications/manufacturing/src/org/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java specialpurpose/ecommerce/data/DemoConfigurator.xml

hansbak-2
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"/>