I agree that it is troubling. The designs are questionable as well.

-Adrian

On 12/19/2011 8:38 AM, Jacopo Cappellato wrote:
Yep,

the problem was the line:

-<ProductFeatureCategory productFeatureCategoryId="IMAGE" description="Image"/>
+<ProductFeatureCategory productFeatureCategoryI="IMAGE" description="Image"/>
I have fixed it.
Even without reviewing this big commit, this kind of errors (that imply that 
very few tests were done) makes me feel nervous about the quality of the code 
committed.

Jacopo


On Dec 19, 2011, at 9:24 AM, Adrian Crum wrote:

This commit is throwing a lot of exceptions during data loading. See the 
buildbot report.

-Adrian

On 12/19/2011 6:40 AM, hans...@apache.org wrote:
Author: hansbak
Date: Mon Dec 19 06:40:18 2011
New Revision: 1220622

URL: http://svn.apache.org/viewvc?rev=1220622&view=rev
Log:
new producttype: configurable product service, using inventory

Modified:
     ofbiz/trunk/applications/manufacturing/data/ManufacturingExampleData.xml
     ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
     
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
     
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
     
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy
     
ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl
     ofbiz/trunk/applications/product/data/ProductTypeData.xml
     
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml
     
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
     
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWrapper.java
     
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java
     ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml

Modified: 
ofbiz/trunk/applications/manufacturing/data/ManufacturingExampleData.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/manufacturing/data/ManufacturingExampleData.xml?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- ofbiz/trunk/applications/manufacturing/data/ManufacturingExampleData.xml 
(original)
+++ ofbiz/trunk/applications/manufacturing/data/ManufacturingExampleData.xml 
Mon Dec 19 06:40:18 2011
@@ -45,6 +45,11 @@ under the License.
      <FixedAsset fixedAssetId="DEMO_PROD_EQUIPMT_2" fixedAssetName="Demo Production Equipment Two" fixedAssetTypeId="PRODUCTION_EQUIPMENT" 
dateAcquired="2005-01-01 00:01:00.0" expectedEndOfLife="2010-01-01" calendarId="DEMO_CALENDAR" salvageValue="50" 
purchaseCost="1000" purchaseCostUomId="USD"/>
      <FixedAssetGeoPoint fixedAssetId="DEMO_PROD_EQUIPMT_2" geoPointId="9000" 
fromDate="2009-01-09 00:00:00.000"/>

+<FixedAsset fixedAssetId="DEMO_BOOK_GROUP" fixedAssetTypeId="GROUP_EQUIPMENT" 
fixedAssetName="Demo Book Group"/>
+<FixedAssetGeoPoint fixedAssetId="DEMO_BOOK_GROUP" geoPointId="9000" 
fromDate="2011-08-02 00:00:00.000"/>
+<FixedAsset fixedAssetId="DEMO_BOOK" fixedAssetName="Demo Book" fixedAssetTypeId="PRODUCTION_EQUIPMENT" 
parentFixedAssetId="DEMO_BOOK_GROUP" calendarId="DEMO_CALENDAR" purchaseCost="200" purchaseCostUomId="USD"/>
+<FixedAssetGeoPoint fixedAssetId="DEMO_BOOK" geoPointId="9000" fromDate="2011-08-02 
00:00:00.000"/>
+
      <FixedAssetDepMethod depreciationCustomMethodId="STR_LINE_DEP_FORMULA" 
fixedAssetId="DEMO_PROD_EQUIPMT_1"/>
      <FixedAssetDepMethod depreciationCustomMethodId="DBL_DECL_DEP_FORMULA" 
fixedAssetId="DEMO_PROD_EQUIPMT_2"/>
  </entity-engine-xml>

Modified: 
ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java 
(original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java 
Mon Dec 19 06:40:18 2011
@@ -1138,7 +1138,7 @@ public class OrderServices {
                      String productId = (String) orderItem.get("productId");
                      GenericValue product = delegator.getRelatedOne("Product", 
orderItem);

-                    if("SERVICE_PRODUCT".equals(product.get("productTypeId"))){
+                    if("SERVICE_PRODUCT".equals(product.get("productTypeId")) || 
"AGGREGATEDSERV_CONF".equals(product.get("productTypeId"))){
                          String inventoryFacilityId = null;
                          if 
("Y".equals(productStore.getString("oneInventoryFacility"))) {
                              inventoryFacilityId = 
productStore.getString("inventoryFacilityId");

Modified: 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
 (original)
+++ 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
 Mon Dec 19 06:40:18 2011
@@ -644,7 +644,7 @@ public class CheckOutHelper {
                      GenericValue permUserLogin = delegator.findByPrimaryKeyCache("UserLogin", 
UtilMisc.toMap("userLoginId", "system"));
                      GenericValue productStore = 
ProductStoreWorker.getProductStore(productStoreId, delegator);
                      GenericValue product = delegator.findByPrimaryKey("Product", 
UtilMisc.toMap("productId", productId));
-                    if 
("AGGREGATED_CONF".equals(product.getString("productTypeId"))) {
+                    if ("AGGREGATED_CONF".equals(product.getString("productTypeId")) || 
"AGGREGATEDSERV_CONF".equals(product.getString("productTypeId"))) {
                          org.ofbiz.product.config.ProductConfigWrapper config 
= this.cart.findCartItem(counter).getConfigWrapper();
                          Map<String, Object>   inputMap = new HashMap<String, 
Object>();
                          inputMap.put("config", config);

Modified: 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
 (original)
+++ 
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
 Mon Dec 19 06:40:18 2011
@@ -3430,7 +3430,11 @@ public class ShoppingCart implements Ite
              serviceContext.put("internalName", internalName);
              serviceContext.put("productName", productName);
              serviceContext.put("description", description);
-            serviceContext.put("productTypeId", "AGGREGATED_CONF");
+            if(ProductWorker.isAggregateService(delegator, 
item.getProductId()))
+                serviceContext.put("productTypeId", "AGGREGATEDSERV_CONF");
+            else
+                serviceContext.put("productTypeId", "AGGREGATED_CONF");
+
              serviceContext.put("configId", configId);
              if 
(UtilValidate.isNotEmpty(product.getString("requirementMethodEnumId"))) {
                  serviceContext.put("requirementMethodEnumId", 
product.getString("requirementMethodEnumId"));

Modified: 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy
 (original)
+++ 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/entry/catalog/Product.groovy
 Mon Dec 19 06:40:18 2011
@@ -124,7 +124,7 @@ if (productId) {
          }

          // Set the default template for aggregated product (product component 
configurator ui)
-        if (product.productTypeId&&   
"AGGREGATED".equals(product.productTypeId)&&   context.configproductdetailScreen) {
+        if (product.productTypeId&&   ("AGGREGATED".equals(product.productTypeId) || 
"AGGREGATED_SERVICE".equals(product.productTypeId))&&   context.configproductdetailScreen) {
              detailScreen = context.configproductdetailScreen;
          }


Modified: 
ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl 
(original)
+++ 
ofbiz/trunk/applications/order/webapp/ordermgr/entry/catalog/productsummary.ftl 
Mon Dec 19 06:40:18 2011
@@ -101,7 +101,7 @@ ${virtualJavaScript?if_exists}
            <#elseif product.productTypeId?if_exists == "ASSET_USAGE">
              <a href="${productUrl}" 
class="buttontext">${uiLabelMap.OrderMakeBooking}...</a>
            <#-- check to see if it is an aggregated or configurable product; will 
enter parameters on the detail screen-->
-<#elseif product.productTypeId?if_exists == "AGGREGATED">
+<#elseif product.productTypeId?if_exists == "AGGREGATED" || product.productTypeId?if_exists 
== "AGGREGATED_SERVICE">
              <a href="${productUrl}" 
class="buttontext">${uiLabelMap.OrderConfigure}...</a>
            <#-- check to see if the product is a virtual product -->
            <#elseif product.isVirtual?exists&&   product.isVirtual == "Y">

Modified: ofbiz/trunk/applications/product/data/ProductTypeData.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/data/ProductTypeData.xml?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/data/ProductTypeData.xml (original)
+++ ofbiz/trunk/applications/product/data/ProductTypeData.xml Mon Dec 19 
06:40:18 2011
@@ -500,7 +500,9 @@ under the License.
      <ProductType description="Work In Process" isPhysical="Y" isDigital="N" hasTable="N" 
parentTypeId="GOOD" productTypeId="WIP"/>
      <ProductType description="Configurable Good Configuration" isPhysical="Y" isDigital="N" 
hasTable="N" parentTypeId="AGGREGATED" productTypeId="AGGREGATED_CONF"/>
      <ProductType description="Fixed Asset Usage For Rental of an asset which is shipped from and returned to inventory" 
isPhysical="Y" isDigital="N" hasTable="N" parentTypeId="" 
productTypeId="ASSET_USAGE_OUT_IN"/>
-<ProductType description="Service a product which is received to- and shipped from inventory" isPhysical="Y" 
isDigital="N" hasTable="N" parentTypeId="" productTypeId="SERVICE_PRODUCT"/>
+<ProductType description="Service a product using inventory" isPhysical="Y" isDigital="N" 
hasTable="N" parentTypeId="" productTypeId="SERVICE_PRODUCT"/>
+<ProductType description="Configurable Service using inventory" isPhysical="Y" isDigital="N" 
hasTable="N" parentTypeId="SERVICE_PRODUCT" productTypeId="AGGREGATED_SERVICE"/>
+<ProductType description="Configurable Service Configuration" isPhysical="Y" isDigital="N" 
hasTable="N" parentTypeId="AGGREGATED_SERVICE" productTypeId="AGGREGATEDSERV_CONF"/>

      <EnumerationType description="Product Requirement Method" enumTypeId="PROD_REQ_METHOD" 
hasTable="N" parentTypeId=""/>
      <!-- NONE: no requirement is created (default) -->
@@ -618,7 +620,7 @@ under the License.
      <StatusItem description="Approved" sequenceId="02" statusCode="APPROVED" 
statusId="IM_APPROVED" statusTypeId="IMAGE_MANAGEMENT_ST"/>
      <StatusItem description="Rejected" sequenceId="03" statusCode="REJECTED" 
statusId="IM_REJECTED" statusTypeId="IMAGE_MANAGEMENT_ST"/>

-<ProductFeatureCategory productFeatureCategoryId="IMAGE" description="Image"/>
+<ProductFeatureCategory productFeatureCategoryI="IMAGE" description="Image"/>
      <ProductFeatureCategory productFeatureCategoryId="TEXT" 
description="Text"/>

      <ProductFeature productFeatureId="IMAGE_AVATAR" productFeatureTypeId="SIZE" 
productFeatureCategoryId="IMAGE" description="100 X 75 (avatar)" defaultSequenceNum="1"/>

Modified: 
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml
 (original)
+++ 
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/issuance/IssuanceServices.xml
 Mon Dec 19 06:40:18 2011
@@ -53,6 +53,7 @@ under the License.
                          <or>
                              <if-compare field="product.productTypeId" operator="equals" 
value="SERVICE_PRODUCT"/>
                              <if-compare field="product.productTypeId" operator="equals" 
value="ASSET_USAGE_OUT_IN"/>
+<if-compare field="product.productTypeId" operator="equals" 
value="AGGREGATEDSERV_CONF"/>
                          </or>
                      </condition>
                      <then>

Modified: 
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
 (original)
+++ 
ofbiz/trunk/applications/product/script/org/ofbiz/shipment/receipt/ShipmentReceiptServices.xml
 Mon Dec 19 06:40:18 2011
@@ -53,6 +53,7 @@ under the License.
                  <or>
                      <if-compare field="product.productTypeId" operator="equals" 
value="SERVICE_PRODUCT"/>
                      <if-compare field="product.productTypeId" operator="equals" 
value="ASSET_USAGE_OUT_IN"/>
+<if-compare field="product.productTypeId" operator="equals" 
value="AGGREGATEDSERV_CONF"/>
                  </or>
              </condition>
              <then>

Modified: 
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWrapper.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWrapper.java?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWrapper.java
 (original)
+++ 
ofbiz/trunk/applications/product/src/org/ofbiz/product/config/ProductConfigWrapper.java
 Mon Dec 19 06:40:18 2011
@@ -97,7 +97,7 @@ public class ProductConfigWrapper implem

      private void init(Delegator delegator, LocalDispatcher dispatcher, String 
productId, String productStoreId, String catalogId, String webSiteId, String 
currencyUomId, Locale locale, GenericValue autoUserLogin) throws Exception {
          product = delegator.findByPrimaryKey("Product", 
UtilMisc.toMap("productId", productId));
-        if (product == null || 
!product.getString("productTypeId").equals("AGGREGATED")) {
+        if (product == null || !product.getString("productTypeId").equals("AGGREGATED")&&   
!product.getString("productTypeId").equals("AGGREGATED_SERVICE")) {
              throw new ProductConfigWrapperException("Product " + productId + " is 
not an AGGREGATED product.");
          }
          this.dispatcher = dispatcher;
@@ -123,7 +123,7 @@ public class ProductConfigWrapper implem
              basePrice = price;
          }
          questions = FastList.newInstance();
-        if ("AGGREGATED".equals(product.getString("productTypeId"))) {
+        if ("AGGREGATED".equals(product.getString("productTypeId")) || 
"AGGREGATED_SERVICE".equals(product.getString("productTypeId"))) {
              List<GenericValue>   questionsValues = delegator.findByAnd("ProductConfig", 
UtilMisc.toMap("productId", productId), UtilMisc.toList("sequenceNum"));
              questionsValues = EntityUtil.filterByDate(questionsValues);
              Set<String>   itemIds = FastSet.newInstance();

Modified: 
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java
 (original)
+++ 
ofbiz/trunk/applications/product/src/org/ofbiz/product/product/ProductWorker.java
 Mon Dec 19 06:40:18 2011
@@ -146,7 +146,7 @@ public class ProductWorker {
      public static String getInstanceAggregatedId(Delegator delegator, String 
instanceProductId) throws GenericEntityException {
          GenericValue instanceProduct = delegator.findByPrimaryKey("Product", 
UtilMisc.toMap("productId", instanceProductId));

-        if (UtilValidate.isNotEmpty(instanceProduct)&&   
"AGGREGATED_CONF".equals(instanceProduct.getString("productTypeId"))) {
+        if (UtilValidate.isNotEmpty(instanceProduct)&&   
("AGGREGATED_CONF".equals(instanceProduct.getString("productTypeId")) || 
"AGGREGATEDSERV_CONF".equals(instanceProduct.getString("productTypeId")))) {
              GenericValue productAssoc = 
EntityUtil.getFirst(EntityUtil.filterByDate(instanceProduct.getRelatedByAnd("AssocProductAssoc",
                      UtilMisc.toMap("productAssocTypeId", "PRODUCT_CONF"))));
              if (UtilValidate.isNotEmpty(productAssoc)) {
@@ -172,7 +172,7 @@ public class ProductWorker {
      public static List<GenericValue>   getAggregatedAssocs(Delegator 
delegator, String  aggregatedProductId) throws GenericEntityException {
          GenericValue aggregatedProduct = delegator.findByPrimaryKey("Product", 
UtilMisc.toMap("productId", aggregatedProductId));

-        if (UtilValidate.isNotEmpty(aggregatedProduct)&&   
"AGGREGATED".equals(aggregatedProduct.getString("productTypeId"))) {
+        if (UtilValidate.isNotEmpty(aggregatedProduct)&&   
("AGGREGATED".equals(aggregatedProduct.getString("productTypeId")) || 
"AGGREGATED_SERVICE".equals(aggregatedProduct.getString("productTypeId")))) {
              List<GenericValue>   productAssocs = 
EntityUtil.filterByDate(aggregatedProduct.getRelatedByAnd("MainProductAssoc",
                      UtilMisc.toMap("productAssocTypeId", "PRODUCT_CONF")));
              return productAssocs;
@@ -1193,4 +1193,16 @@ nextProd:
          return Boolean.TRUE;
      }

+    public static boolean isAggregateService(Delegator delegator, String 
aggregatedProductId) {
+        try {
+            GenericValue aggregatedProduct = delegator.findByPrimaryKeyCache("Product", 
UtilMisc.toMap("productId", aggregatedProductId));
+            if (UtilValidate.isNotEmpty(aggregatedProduct)&&   
"AGGREGATED_SERVICE".equals(aggregatedProduct.getString("productTypeId"))) {
+                return true;
+            }
+        } catch (GenericEntityException e) {
+            Debug.logWarning(e.getMessage(), module);
+        }
+
+        return false;
+    }
  }

Modified: ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml?rev=1220622&r1=1220621&r2=1220622&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml (original)
+++ ofbiz/trunk/specialpurpose/ecommerce/data/DemoProduct.xml Mon Dec 19 
06:40:18 2011
@@ -737,6 +737,93 @@ under the License.
      <ContentAssoc contentId="SV-1001-ALT" contentIdTo="CSV-1001-ALTEN" 
contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-08-02 12:00:00.0"/>
      <ProductContent productId="SV-1001" contentId="SV-1001-ALT" 
productContentTypeId="ALTERNATIVE_URL" fromDate="2011-08-02 12:00:00.0"/>

+<!-- test for the configurable product type which is received to- and shipped 
from inventory-->
+<Product productId="CFSV1001" productTypeId="AGGREGATED_SERVICE" primaryProductCategoryId="SERV-001" productName="Scanning book service" internalName="The configurable product type which 
is received to- and shipped from inventory" description="The configurable product type which is received to- and shipped from inventory for demonstration use" taxable="Y" chargeShipping="N" 
autoCreateKeywords="Y" isVirtual="N" isVariant="N" createdDate="2008-12-02 12:00:00.0" createdByUserLogin="admin" lastModifiedDate="2008-12-02 12:00:00.0" 
lastModifiedByUserLogin="admin"/>
+<Product productId="SCAN_TYPE" productTypeId="SERVICE_PRODUCT" productName="Scanning Type" internalName="Scanning Type" 
description="Scanning Type" isVirtual="Y" isVariant="N" billOfMaterialLevel="0" createdDate="2004-08-20 12:50:54.794" 
createdByUserLogin="admin"/>
+<Product productId="SCAN-EC" productTypeId="SERVICE_PRODUCT" internalName="Economy Scanning type" productName="Economy Scanning type" description="Economy Scanning type" 
returnable="N" includeInPromotions="N" taxable="N" chargeShipping="N" isVirtual="N" isVariant="Y" createdDate="2003-11-20 13:48:19.105" 
createdByUserLogin="admin" lastModifiedDate="2003-11-20 13:48:19.105" lastModifiedByUserLogin="admin"/>
+<Product productId="SCAN-ST" productTypeId="SERVICE_PRODUCT" internalName="Standard Scanning type" productName="Standard Scanning type" description="Standard Scanning type" 
returnable="N" includeInPromotions="N" taxable="N" chargeShipping="N" isVirtual="N" isVariant="Y" createdDate="2003-11-20 13:48:19.105" 
createdByUserLogin="admin" lastModifiedDate="2003-11-20 13:48:19.105" lastModifiedByUserLogin="admin"/>
+<Product productId="SCAN-SU" productTypeId="SERVICE_PRODUCT" internalName="Superfine Scanning type" productName="Superfine Scanning type" description="Superfine Scanning type" 
returnable="N" includeInPromotions="N" taxable="N" chargeShipping="N" isVirtual="N" isVariant="Y" createdDate="2003-11-20 13:48:19.105" 
createdByUserLogin="admin" lastModifiedDate="2003-11-20 13:48:19.105" lastModifiedByUserLogin="admin"/>
+
+<ProductFeatureCategory productFeatureCategoryId="SCAN_TYPE" description="Scanning 
Type"/>
+<ProductFeature productFeatureId="ECONOMY" productFeatureTypeId="TYPE" 
productFeatureCategoryId="SCAN_TYPE" description="Economy Scan" defaultSequenceNum="1"/>
+<ProductFeature productFeatureId="STANDARD" productFeatureTypeId="TYPE" 
productFeatureCategoryId="SCAN_TYPE" description="Standard Scan" defaultSequenceNum="2"/>
+<ProductFeature productFeatureId="SUPERFINE" productFeatureTypeId="TYPE" 
productFeatureCategoryId="SCAN_TYPE" description="Superfine Scan" defaultSequenceNum="3"/>
+
+<Product productId="EXPRESS" productTypeId="SERVICE_PRODUCT" productName="Express" internalName="Express" description="Express" 
isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2007-12-27 12:00:00.0" createdByUserLogin="admin"/>
+<Product productId="SUPER_EXPRESS" productTypeId="SERVICE_PRODUCT" productName="Super Express" internalName="Super Express" 
description="Super Express" isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2007-12-27 12:00:00.0" 
createdByUserLogin="admin"/>
+<Product productId="SCAN_COVER" productTypeId="SERVICE_PRODUCT" productName="Scan Cover" internalName="Scan Cover" description="Scan 
Cover" isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2007-12-27 12:00:00.0" createdByUserLogin="admin"/>
+<Product productId="OCR" productTypeId="SERVICE_PRODUCT" productName="OCR" internalName="OCR" description="OCR" 
isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2007-12-27 12:00:00.0" createdByUserLogin="admin"/>
+<Product productId="METADATA" productTypeId="SERVICE_PRODUCT" productName="Metadata" internalName="Metadata" description="Metadata" 
isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2007-12-27 12:00:00.0" createdByUserLogin="admin"/>
+<Product productId="DVD" productTypeId="SERVICE_PRODUCT" productName="DVD" internalName="DVD" description="DVD" 
isVirtual="N" isVariant="N" billOfMaterialLevel="0" createdDate="2007-12-27 12:00:00.0" createdByUserLogin="admin"/>
+
+<ProductAssoc productId="SCAN_TYPE" productIdTo="SCAN-EC" 
productAssocTypeId="PRODUCT_VARIANT" fromDate="2011-08-02 12:00:00.0"/>
+<ProductAssoc productId="SCAN_TYPE" productIdTo="SCAN-ST" 
productAssocTypeId="PRODUCT_VARIANT" fromDate="2011-08-02 12:00:00.0"/>
+<ProductAssoc productId="SCAN_TYPE" productIdTo="SCAN-SU" 
productAssocTypeId="PRODUCT_VARIANT" fromDate="2011-08-02 12:00:00.0"/>
+
+<ProductFeatureAppl productId="SCAN_TYPE" productFeatureId="ECONOMY" 
productFeatureApplTypeId="SELECTABLE_FEATURE" fromDate="2011-08-02 12:00:00.0" sequenceNum="1"/>
+<ProductFeatureAppl productId="SCAN_TYPE" productFeatureId="STANDARD" 
productFeatureApplTypeId="SELECTABLE_FEATURE" fromDate="2011-08-02 12:00:00.0" sequenceNum="2"/>
+<ProductFeatureAppl productId="SCAN_TYPE" productFeatureId="SUPERFINE" 
productFeatureApplTypeId="SELECTABLE_FEATURE" fromDate="2011-08-02 12:00:00.0" sequenceNum="3"/>
+
+<ProductFeatureAppl productId="SCAN-EC" productFeatureId="ECONOMY" 
productFeatureApplTypeId="STANDARD_FEATURE" fromDate="2011-08-02 12:00:00.0" sequenceNum="1"/>
+<ProductFeatureAppl productId="SCAN-ST" productFeatureId="STANDARD" 
productFeatureApplTypeId="STANDARD_FEATURE" fromDate="2011-08-02 12:00:00.0" sequenceNum="1"/>
+<ProductFeatureAppl productId="SCAN-SU" productFeatureId="SUPERFINE" 
productFeatureApplTypeId="STANDARD_FEATURE" fromDate="2011-08-02 12:00:00.0" sequenceNum="1"/>
+
+<ProductPrice productId="CFSV1001" productPricePurposeId="PURCHASE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" 
productStoreGroupId="_NA_" fromDate="2011-08-02 12:00:00.0" price="9.99" createdDate="2011-08-02 12:00:00.0" 
createdByUserLogin="admin"/>
+<ProductPrice productId="SCAN-EC" productPricePurposeId="PURCHASE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" 
productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="1.00" createdDate="2011-01-01 00:00:00.0"/>
+<ProductPrice productId="SCAN-EC" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="1.00" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="SCAN-ST" productPricePurposeId="PURCHASE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" 
productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="2.00" createdDate="2011-01-01 00:00:00.0"/>
+<ProductPrice productId="SCAN-ST" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="2.00" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="SCAN-SU" productPricePurposeId="PURCHASE" productPriceTypeId="DEFAULT_PRICE" currencyUomId="USD" 
productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="3.00" createdDate="2011-01-01 00:00:00.0"/>
+<ProductPrice productId="SCAN-SU" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="3.00" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="EXPRESS" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="1.50" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="SUPER_EXPRESS" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="3.00" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="SCAN_COVER" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="1.00" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="OCR" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="2.00" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="METADATA" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="1.00" createdDate="2011-01-01 
00:00:00.0"/>
+<ProductPrice productId="DVD" productPricePurposeId="COMPONENT_PRICE" productPriceTypeId="DEFAULT_PRICE" 
currencyUomId="USD" productStoreGroupId="_NA_" fromDate="2011-01-01 00:00:00.0" price="0.25" createdDate="2011-01-01 
00:00:00.0"/>
+
+<ProductConfigItem configItemId="SC00000" configItemTypeId="MULTIPLE" configItemName="Scanning 
Type" description="Select the scanning type :"/>
+<ProductConfigItem configItemId="SCF0001" configItemTypeId="MULTIPLE" configItemName="Scanning 
Options" description="Scanning options :"/>
+
+<ProductConfigOption configItemId="SC00000" configOptionId="SCOP001" configOptionName="OPT0001" 
description="Scanning Type" sequenceNum="10"/>
+<ProductConfigOption configItemId="SCF0001" configOptionId="SCOP006" configOptionName="OPT0006" 
description="Express" sequenceNum="10"/>
+<ProductConfigOption configItemId="SCF0001" configOptionId="SCOP007" configOptionName="OPT0007" 
description="Super Express" sequenceNum="20"/>
+<ProductConfigOption configItemId="SCF0001" configOptionId="SCOP008" configOptionName="OPT0008" 
description="Scan Cover" sequenceNum="30"/>
+<ProductConfigOption configItemId="SCF0001" configOptionId="SCOP009" configOptionName="OPT0009" 
description="OCR" sequenceNum="40"/>
+<ProductConfigOption configItemId="SCF0001" configOptionId="SCOP010" configOptionName="OPT0010" 
description="Metadata" sequenceNum="60"/>
+<ProductConfigOption configItemId="SCF0001" configOptionId="SCOP011" configOptionName="OPT0011" 
description="DVD" sequenceNum="50"/>
+
+<ProductConfigProduct configItemId="SC00000" configOptionId="SCOP001" productId="SCAN_TYPE" 
quantity="1"/>
+<ProductConfigProduct configItemId="SCF0001" configOptionId="SCOP006" productId="EXPRESS" 
quantity="1"/>
+<ProductConfigProduct configItemId="SCF0001" configOptionId="SCOP007" 
productId="SUPER_EXPRESS" quantity="1"/>
+<ProductConfigProduct configItemId="SCF0001" configOptionId="SCOP008" 
productId="SCAN_COVER" quantity="1"/>
+<ProductConfigProduct configItemId="SCF0001" configOptionId="SCOP009" productId="OCR" 
quantity="1"/>
+<ProductConfigProduct configItemId="SCF0001" configOptionId="SCOP010" productId="METADATA" 
quantity="1"/>
+<ProductConfigProduct configItemId="SCF0001" configOptionId="SCOP011" productId="DVD" 
quantity="1"/>
+
+<ProductCategoryMember productCategoryId="SERV-001" productId="CFSV1001" 
fromDate="2011-08-02 12:00:00.0"/>
+<ProductCategoryMember productCategoryId="CATALOG1_SEARCH" productId="CFSV1001" 
fromDate="2011-08-02 12:00:00.0"/>
+<DataResource dataResourceId="CFSV1001-ALT" dataResourceTypeId="LINK" 
objectInfo="scanning-book-service-CFSV1001-p"/>
+<DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="CFSV1001-ALT" 
localeString="en"/>
+<DataResource dataResourceTypeId="ELECTRONIC_TEXT" dataResourceId="DRCFSV1001-ALTEN" 
localeString="en_US"/>
+<ElectronicText dataResourceId="CFSV1001-ALT" 
textData="scanning-book-product"/>
+<ElectronicText dataResourceId="DRCFSV1001-ALTEN" 
textData="scanning-book-product"/>
+
+<ProductConfig productId="CFSV1001" configItemId="SC00000" sequenceNum="10" fromDate="2011-01-01 00:00:00.0" 
description="Select the scanning type :" configTypeId="QUESTION" isMandatory="N"/>
+<ProductConfig productId="CFSV1001" configItemId="SCF0001" sequenceNum="20" fromDate="2011-01-01 00:00:00.0" 
description="Scanning options :" configTypeId="QUESTION" isMandatory="N"/>
+
+<WorkEffort workEffortId="SCTASK01" workEffortTypeId="ROU_TASK" workEffortPurposeTypeId="ROU_ASSEMBLING" currentStatusId="ROU_ACTIVE" 
workEffortName="Stock out" description="Components" revisionNumber="1" fixedAssetId="DEMO_BOOK_GROUP" estimatedMilliSeconds="600000" 
estimatedSetupMillis="0"/>
+<WorkEffort workEffortId="SCTASK02" workEffortTypeId="ROU_TASK" workEffortPurposeTypeId="ROU_ASSEMBLING" currentStatusId="ROU_ACTIVE" 
workEffortName="Preparation" description="Preparation" revisionNumber="1" fixedAssetId="DEMO_BOOK_GROUP" estimatedMilliSeconds="900000" 
estimatedSetupMillis="0"/>
+<WorkEffort workEffortId="SCROUT01" workEffortTypeId="ROUTING" currentStatusId="ROU_ACTIVE" workEffortName="Pizza 
preparation" description="Scanning preparation" revisionNumber="1" quantityToProduce="0"/>
+<WorkEffortGoodStandard workEffortId="SCROUT01" productId="CFSV1001" 
workEffortGoodStdTypeId="ROU_PROD_TEMPLATE" statusId="WEGS_CREATED" fromDate="2011-01-01 00:00:00.0"/>
+<WorkEffortAssoc workEffortIdFrom="SCROUT01" workEffortIdTo="SCTASK01" 
workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="10" fromDate="2011-01-01 00:00:00.0"/>
+<WorkEffortAssoc workEffortIdFrom="SCROUT01" workEffortIdTo="SCTASK02" 
workEffortAssocTypeId="ROUTING_COMPONENT" sequenceNum="20" fromDate="2011-01-01 00:00:00.0"/>
+
+<Content contentId="CFSV1001-ALT" contentTypeId="DOCUMENT" dataResourceId="CFSV1001-ALT" 
localeString="en"/>
+<Content contentId="CCFSV1001-ALTEN" contentTypeId="DOCUMENT" 
dataResourceId="DRCFSV1001-ALTEN" localeString="en_US"/>
+<ContentAssoc contentId="CFSV1001-ALT" contentIdTo="CCFSV1001-ALTEN" 
contentAssocTypeId="ALTERNATE_LOCALE" fromDate="2011-08-02 12:00:00.0"/>
+<ProductContent productId="CFSV1001" contentId="CFSV1001-ALT" 
productContentTypeId="ALTERNATIVE_URL" fromDate="2011-08-02 12:00:00.0"/>
+
      <ProductFeatureCategory productFeatureCategoryId="8000" description="License 
Features"/>
      <ProductFeatureCategoryAppl productFeatureCategoryId="8000" 
productCategoryId="CATALOG1_SEARCH" fromDate="2001-05-13 12:00:00.0"/>



Reply via email to