Hans, could you please fix the Java code in order to be in line with our formatting conventions?
Thanks, Jacopo On Dec 19, 2011, at 7: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"/> > > >