svn commit: r661283 - in /ofbiz/trunk/applications: order/data/ order/servicedef/ order/src/org/ofbiz/order/order/ product/entitydef/ product/script/org/ofbiz/product/subscription/ product/servicedef/ product/src/org/ofbiz/product/subscription/ product...

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

svn commit: r661283 - in /ofbiz/trunk/applications: order/data/ order/servicedef/ order/src/org/ofbiz/order/order/ product/entitydef/ product/script/org/ofbiz/product/subscription/ product/servicedef/ product/src/org/ofbiz/product/subscription/ product...

hansbak-2
Author: hansbak
Date: Thu May 29 03:31:14 2008
New Revision: 661283

URL: http://svn.apache.org/viewvc?rev=661283&view=rev
Log:
created a automatic subscription extension, improved the (product) subscription screens, and added 3 fields in the subscription and subscription resource to enable this function

Modified:
    ofbiz/trunk/applications/order/data/OrderScheduledServices.xml
    ofbiz/trunk/applications/order/servicedef/services.xml
    ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderServices.java
    ofbiz/trunk/applications/product/entitydef/entitymodel.xml
    ofbiz/trunk/applications/product/script/org/ofbiz/product/subscription/SubscriptionServices.xml
    ofbiz/trunk/applications/product/servicedef/services_subscription.xml
    ofbiz/trunk/applications/product/src/org/ofbiz/product/subscription/SubscriptionServices.java
    ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml
    ofbiz/trunk/applications/product/widget/catalog/SubscriptionForms.xml

Modified: ofbiz/trunk/applications/order/data/OrderScheduledServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/data/OrderScheduledServices.xml?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/data/OrderScheduledServices.xml (original)
+++ ofbiz/trunk/applications/order/data/OrderScheduledServices.xml Thu May 29 03:31:14 2008
@@ -34,4 +34,5 @@
     -->
     <JobSandbox jobId="8003" jobName="Run Auto-Reorders" runTime="2000-01-01 03:00:00.000" serviceName="runShoppingListAutoReorder" poolId="pool" runAsUser="system" recurrenceInfoId="203"/>
     <JobSandbox jobId="8004" jobName="Re-Try Failed Auths NSF" runTime="2000-01-01 01:00:00.000" serviceName="retryFailedAuthNsfs" poolId="pool" runAsUser="system" recurrenceInfoId="204"/>
+    <JobSandbox jobId="8005" jobName="Extend expired Subscriptions" runTime="2000-01-01 03:00:00.000" serviceName="runSubscriptionAutoReorders" poolId="pool" runAsUser="system" recurrenceInfoId="203"/>
 </entity-engine-xml>

Modified: ofbiz/trunk/applications/order/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/services.xml?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/servicedef/services.xml (original)
+++ ofbiz/trunk/applications/order/servicedef/services.xml Thu May 29 03:31:14 2008
@@ -839,4 +839,9 @@
         <override name="orderItemSeqId" optional="false"/>
         <override name="changeTypeEnumId" optional="false"/>          
     </service>    
+    <service name="runSubscriptionAutoReorders" engine="java" auth="true" use-transaction="false"
+        location="org.ofbiz.order.order.OrderServices" invoke="runSubscriptionAutoReorders">
+        <description>A service designed to be automatically run by job scheduler to create orders from subscriptions which need to be extended.
+            This is done by looking for all subscriptions which are active and where the automaticExtend flag is set to "Y"</description>
+    </service>
 </services>

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=661283&r1=661282&r2=661283&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 Thu May 29 03:31:14 2008
@@ -30,6 +30,7 @@
 import org.ofbiz.base.util.*;
 import org.ofbiz.base.util.collections.ResourceBundleMapWrapper;
 import org.ofbiz.common.DataModelConstants;
+import org.ofbiz.common.uom.UomWorker;
 import org.ofbiz.entity.GenericDelegator;
 import org.ofbiz.entity.GenericEntity;
 import org.ofbiz.entity.GenericEntityException;
@@ -4760,5 +4761,130 @@
 
         return ServiceUtil.returnSuccess();
     }
+    public static Map runSubscriptionAutoReorders(DispatchContext dctx, Map context) {
+        LocalDispatcher dispatcher = dctx.getDispatcher();
+        GenericDelegator delegator = dctx.getDelegator();
+
+        GenericValue userLogin = (GenericValue) context.get("userLogin");
+        Locale locale = (Locale) context.get("locale");
+        int count = 0;
+        Map result = null;
+        
+        boolean beganTransaction = false;
+        try {
+            beganTransaction = TransactionUtil.begin();
+        
+            List exprs = UtilMisc.toList(new EntityExpr("automaticExtend", EntityOperator.EQUALS, "Y"),
+             new EntityExpr("orderId", EntityOperator.NOT_EQUAL, null),
+             new EntityExpr("productId", EntityOperator.NOT_EQUAL, null));
+            EntityCondition cond = new EntityConditionList(exprs, EntityOperator.AND);
+            EntityListIterator eli = null;
+            eli = delegator.find("Subscription", cond, null, null, null, null);
+    
+            if (eli != null) {
+                GenericValue subscription;
+                while (((subscription = (GenericValue) eli.next()) != null)) {
+
+                    Calendar endDate = Calendar.getInstance();
+                    endDate.setTime(UtilDateTime.nowTimestamp());
+                 //check if the thruedate - cancel period (if provided) is earlier than todays date
+                    int field = Calendar.MONTH;
+                 if (subscription.get("canclAutmExtTime") != null && subscription.get("canclAutmExtTimeUomId") != null) {
+                        if ("TF_day".equals(subscription.getString("canclAutmExtTimeUomId"))) {
+                            field = Calendar.DAY_OF_YEAR;  
+                        } else if ("TF_wk".equals(subscription.getString("canclAutmExtTimeUomId"))) {
+                            field = Calendar.WEEK_OF_YEAR;  
+                        } else if ("TF_mon".equals(subscription.getString("canclAutmExtTimeUomId"))) {
+                            field = Calendar.MONTH;  
+                        } else if ("TF_yr".equals(subscription.getString("canclAutmExtTimeUomId"))) {
+                            field = Calendar.YEAR;  
+                        } else {
+                            Debug.logWarning("Don't know anything about useTimeUomId [" + subscription.getString("canclAutmExtTimeUomId") + "], defaulting to month", module);
+                        }
+
+                 endDate.add(field, new Integer(subscription.getString("canclAutmExtTime")).intValue());
+                 }
+                
+                    Calendar endDateSubscription = Calendar.getInstance();
+                    endDateSubscription.setTime(subscription.getTimestamp("thruDate"));
+                
+                    if (endDate.before(endDateSubscription)) {
+                     // nor expired yet.....
+                     continue;
+                    }
+                
+                 result = dispatcher.runSync("loadCartFromOrder", UtilMisc.toMap("orderId", subscription.get("orderId"), "userLogin", userLogin));
+                 ShoppingCart cart = (ShoppingCart) result.get("shoppingCart");
+                
+                 // only keep the orderitem with the related product.
+                 List cartItems = cart.items();
+                 Iterator ci = cartItems.iterator();
+                 while (ci.hasNext()) {
+                 ShoppingCartItem shoppingCartItem = (ShoppingCartItem) ci.next();
+                 if (!subscription.get("productId").equals(shoppingCartItem.getProductId())) {
+                 cart.removeCartItem(shoppingCartItem, dispatcher);
+                 }
+                 }
+                
+                    CheckOutHelper helper = new CheckOutHelper(dispatcher, delegator, cart);
+    
+                    // store the order
+                    Map createResp = helper.createOrder(userLogin);
+                    if (createResp != null && ServiceUtil.isError(createResp)) {
+                        Debug.logError("Cannot create order for shopping list - " + subscription, module);
+                    } else {
+                        String orderId = (String) createResp.get("orderId");
+    
+                        // authorize the payments
+                        Map payRes = null;
+                        try {
+                            payRes = helper.processPayment(ProductStoreWorker.getProductStore(cart.getProductStoreId(), delegator), userLogin);
+                        } catch (GeneralException e) {
+                            Debug.logError(e, module);
+                        }
+    
+                        if (payRes != null && ServiceUtil.isError(payRes)) {
+                            Debug.logError("Payment processing problems with shopping list - " + subscription, module);
+                        }
+                        
+                        // remove the automatic extension flag
+                        subscription.put("automaticExtend", "N");
+                        subscription.store();
+                        
+                        // send notification
+                        dispatcher.runAsync("sendOrderPayRetryNotification", UtilMisc.toMap("orderId", orderId));
+                        count++;
+                    }
+                }
+                eli.close();
+            }
+            
+        } catch (GenericServiceException e) {
+            Debug.logError("Could call service to create cart", module);
+            return ServiceUtil.returnError(e.toString());
+        } catch (CartItemModifyException e) {
+            Debug.logError("Could not modify cart: " + e.toString(), module);
+            return ServiceUtil.returnError(e.toString());
+        } catch (GenericEntityException e) {
+            try {
+                // only rollback the transaction if we started one...
+                TransactionUtil.rollback(beganTransaction, "Error creating subscription auto-reorders", e);
+            } catch (GenericEntityException e2) {
+                Debug.logError(e2, "[GenericDelegator] Could not rollback transaction: " + e2.toString(), module);
+            }
+
+            String errMsg = "Error while creating new shopping list based automatic reorder" + e.toString();
+            Debug.logError(e, errMsg, module);
+            return ServiceUtil.returnError(errMsg);
+        } finally {
+            try {
+                // only commit the transaction if we started one... this will throw an exception if it fails
+                TransactionUtil.commit(beganTransaction);
+            } catch (GenericEntityException e) {
+                Debug.logError(e, "Could not commit transaction for creating new shopping list based automatic reorder", module);
+            }
+        }
+        return ServiceUtil.returnSuccess("runSubscriptionAutoReorders finished, " + count + " subscription extended.");
+    }
 
 }

Modified: ofbiz/trunk/applications/product/entitydef/entitymodel.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/entitymodel.xml?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/entitydef/entitymodel.xml (original)
+++ ofbiz/trunk/applications/product/entitydef/entitymodel.xml Thu May 29 03:31:14 2008
@@ -4005,15 +4005,18 @@
         <field name="thruDate" type="date-time"></field>
         <field name="purchaseFromDate" type="date-time"></field>
         <field name="purchaseThruDate" type="date-time"></field>
-        <field name="maxLifeTime" type="numeric"></field>
+        <field name="maxLifeTime" type="numeric"><description>The length in time of the subscription</description></field>
         <field name="maxLifeTimeUomId" type="id"></field>
         <field name="availableTime" type="numeric"></field>
         <field name="availableTimeUomId" type="id"></field>
         <field name="useCountLimit" type="numeric"></field>
-        <field name="useTime" type="numeric"></field>
+        <field name="useTime" type="numeric"><description>The length of time this subscription can be used</description></field>
         <field name="useTimeUomId" type="id"></field>
         <field name="useRoleTypeId" type="id"></field>
-        <prim-key field="productId"/>
+      <field name="automaticExtend" type="indicator"><description>If this subscription is automatically extended with the same period as the initial period.</description></field>
+      <field name="canclAutmExtTime" type="numeric"><description>The time period (before the end of the thruedate) after which the automatic extension of the subscription will be executed.</description></field>
+      <field name="canclAutmExtTimeUomId" type="id"><description>If this flag is set to 'Y' the subscription will be extended at the end of the subscription period with a new order.</description></field>
+      <prim-key field="productId"/>
         <prim-key field="subscriptionResourceId"/>
         <prim-key field="fromDate"/>
         <relation type="one" fk-name="PROD_SBRS_PROD" rel-entity-name="Product">
@@ -4028,6 +4031,9 @@
         <relation type="one" fk-name="PROD_SBRS_UTU" title="UseTime" rel-entity-name="Uom">
             <key-map field-name="useTimeUomId" rel-field-name="uomId"/>
         </relation>
+      <relation type="one" fk-name="PROD_SBRS_CTU" title="CancelTime" rel-entity-name="Uom">
+        <key-map field-name="canclAutmExtTimeUomId" rel-field-name="uomId"/>
+      </relation>
         <relation type="one" fk-name="PROD_SBRS_ATU" title="AvailableTime" rel-entity-name="Uom">
             <key-map field-name="availableTimeUomId" rel-field-name="uomId"/>
         </relation>
@@ -4041,7 +4047,7 @@
         <field name="subscriptionId" type="id-ne"></field>
         <field name="description" type="description"></field>
         <field name="subscriptionResourceId" type="id"></field>
-        <field name="communicationEventId" type="id"></field><!-- now replaced by entity: SubscriptionCommEvent -->
+      <field name="communicationEventId" type="id"><description>now replaced by entity: SubscriptionCommEvent</description></field>
         <field name="contactMechId" type="id"></field>
         <field name="originatedFromPartyId" type="id"></field>
         <field name="originatedFromRoleTypeId" type="id"></field>
@@ -4061,14 +4067,17 @@
         <!-- this subscription instance resource values -->
         <field name="purchaseFromDate" type="date-time"></field>
         <field name="purchaseThruDate" type="date-time"></field>
-        <field name="maxLifeTime" type="numeric"></field>
+        <field name="maxLifeTime" type="numeric"><description>The length in time of the (extended) subscription</description></field>
         <field name="maxLifeTimeUomId" type="id"></field>
         <field name="availableTime" type="numeric"></field>
         <field name="availableTimeUomId" type="id"></field>
         <field name="useCountLimit" type="numeric"></field>
         <field name="useTime" type="numeric"></field>
         <field name="useTimeUomId" type="id"></field>
-        <prim-key field="subscriptionId"/>
+      <field name="automaticExtend" type="indicator"><description>If this subscription is automatically extended with the same period as the initial period.</description></field>
+      <field name="canclAutmExtTime" type="numeric"><description>The time period (before the end of the thruedate) after which the automatic extension of the subscription will be executed.</description></field>
+      <field name="canclAutmExtTimeUomId" type="id"><description>If this flag is set to 'Y' the subscription will be extended at the end of the subscription period with a new order.</description></field>
+      <prim-key field="subscriptionId"/>
         <relation type="one" fk-name="SUBSC_SRESRC" rel-entity-name="SubscriptionResource">
             <key-map field-name="subscriptionResourceId"/>
         </relation>
@@ -4078,10 +4087,13 @@
         <relation type="one" fk-name="SUBSC_PARTY" rel-entity-name="Party">
             <key-map field-name="partyId"/>
         </relation>
-        <relation type="one" fk-name="SUBSC_UTU" title="UseTime" rel-entity-name="Uom">
-            <key-map field-name="useTimeUomId" rel-field-name="uomId"/>
-        </relation>
-        <relation type="one" fk-name="SUBSC_ATU" title="AvailableTime" rel-entity-name="Uom">
+      <relation type="one" fk-name="SUBSC_UTU" title="UseTime" rel-entity-name="Uom">
+        <key-map field-name="useTimeUomId" rel-field-name="uomId"/>
+      </relation>
+      <relation type="one" fk-name="SUBSC_CTU" title="CancelTime" rel-entity-name="Uom">
+        <key-map field-name="canclAutmExtTimeUomId" rel-field-name="uomId"/>
+      </relation>
+      <relation type="one" fk-name="SUBSC_ATU" title="AvailableTime" rel-entity-name="Uom">
             <key-map field-name="availableTimeUomId" rel-field-name="uomId"/>
         </relation>
         <relation type="one" fk-name="SUBSC_MTU" title="MaxLifeTime" rel-entity-name="Uom">

Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/subscription/SubscriptionServices.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/subscription/SubscriptionServices.xml?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/script/org/ofbiz/product/subscription/SubscriptionServices.xml (original)
+++ ofbiz/trunk/applications/product/script/org/ofbiz/product/subscription/SubscriptionServices.xml Thu May 29 03:31:14 2008
@@ -56,22 +56,6 @@
         <check-permission permission="CATALOG" action="${securityAction}"><fail-property resource="ProductUiLabels" property="GeneralCatalogPermissionError"/></check-permission>
         <check-errors/>
         <entity-one entity-name="Subscription" value-name="lookedUpValue"/>
-
-        <!-- lookup the product subscription resource (if exists) -->
-        <if-not-empty field-name="lookedUpValue.subscriptionResourceId">
-            <if-not-empty field-name="lookedUpValue.productId">
-                <entity-and entity-name="ProductSubscriptionResource" list-name="resourceList" filter-by-date="true">
-                    <field-map field-name="subscriptionResourceId" env-name="lookedUpValue.subscriptionResourceId"/>
-                    <field-map field-name="productId" env-name="lookedUpValue.productId"/>
-                    <order-by field-name="-fromDate"/>
-                </entity-and>
-                <first-from-list entry-name="resource" list-name="resourceList"/>
-                <if-not-empty field-name="resource">
-                    <set-nonpk-fields value-name="newEntity" map-name="resource"/>
-                </if-not-empty>
-            </if-not-empty>
-        </if-not-empty>
-        
         <set-nonpk-fields map-name="parameters" value-name="lookedUpValue"/>
         <store-value value-name="lookedUpValue"/>
     </simple-method>

Modified: ofbiz/trunk/applications/product/servicedef/services_subscription.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_subscription.xml?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/servicedef/services_subscription.xml (original)
+++ ofbiz/trunk/applications/product/servicedef/services_subscription.xml Thu May 29 03:31:14 2008
@@ -97,6 +97,9 @@
         <attribute name="useRoleTypeId" type="String" mode="IN" optional="true"/>
         <attribute name="useTimeUomId" type="String" mode="IN" optional="false"/>
         <attribute name="useTime" type="Integer" mode="IN" optional="false"/>
+        <attribute name="automaticExtend" type="String" mode="IN" optional="true"/>
+        <attribute name="canclAutmExtTime" type="Integer" mode="IN" optional="true"/>
+        <attribute name="canclAutmExtTimeUomId" type="String" mode="IN" optional="true"/>
         <attribute name="alwaysCreateNewRecord" type="String" mode="IN" optional="true"><!-- This defaults to Y (true) which means new Subscription records will be created instead of updating old ones with new thruDates. This keeps a more complete history of subscription activity. --></attribute>
         <attribute name="subscriptionId" type="String" mode="OUT" optional="false"/>
     </service>

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/product/subscription/SubscriptionServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/product/subscription/SubscriptionServices.java?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/product/subscription/SubscriptionServices.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/product/subscription/SubscriptionServices.java Thu May 29 03:31:14 2008
@@ -86,6 +86,9 @@
             newSubscription.set("productId", context.get("productId"));
             newSubscription.set("orderId", context.get("orderId"));
             newSubscription.set("orderItemSeqId", context.get("orderItemSeqId"));
+            newSubscription.set("automaticExtend", context.get("automaticExtend"));
+            newSubscription.set("canclAutmExtTimeUomId", context.get("canclAutmExtTimeUomId"));
+            newSubscription.set("canclAutmExtTime", context.get("canclAutmExtTime"));
         } else {
             newSubscription = lastSubscription;
         }
@@ -197,6 +200,9 @@
                 context.put("useTimeUomId", productSubscriptionResource.get("useTimeUomId"));
                 context.put("useRoleTypeId", productSubscriptionResource.get("useRoleTypeId"));
                 context.put("subscriptionResourceId", productSubscriptionResource.get("subscriptionResourceId"));
+                context.put("automaticExtend", productSubscriptionResource.get("automaticExtend"));
+                context.put("canclAutmExtTime", productSubscriptionResource.get("canclAutmExtTime"));
+                context.put("canclAutmExtTimeUomId", productSubscriptionResource.get("canclAutmExtTimeUomId"));
                 
                 Map ctx = dctx.getModelService("processExtendSubscription").makeValid(context, ModelService.IN_PARAM);
                 Map processExtendSubscriptionResult = dispatcher.runSync("processExtendSubscription", ctx);

Modified: ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml Thu May 29 03:31:14 2008
@@ -1351,6 +1351,14 @@
                 </entity-options>
             </drop-down>
         </field>
+        <field name="canclAutmExtTimeUomId">
+            <drop-down allow-empty="false">
+                <entity-options entity-name="Uom" description="${description} (${abbreviation})" key-field-name="uomId">
+                    <entity-constraint name="uomTypeId" value="TIME_FREQ_MEASURE"/>
+                    <entity-order-by field-name="description"/>
+                </entity-options>
+            </drop-down>
+        </field>
         
         <field name="submitButton" title="${uiLabelMap.CommonUpdate}" widget-style="smallSubmit"><submit button-type="button"/></field>
         <field name="deleteLink" widget-style="buttontext">
@@ -1386,6 +1394,14 @@
                 </entity-options>
             </drop-down>
         </field>
+        <field name="canclAutmExtTimeUomId">
+            <drop-down allow-empty="false">
+                <entity-options entity-name="Uom" description="${description} (${abbreviation})" key-field-name="uomId">
+                    <entity-constraint name="uomTypeId" value="TIME_FREQ_MEASURE"/>
+                    <entity-order-by field-name="description"/>
+                </entity-options>
+            </drop-down>
+        </field>
         
         <field name="submitButton" title="${uiLabelMap.CommonAdd}" widget-style="smallSubmit"><submit button-type="button"/></field>
     </form>

Modified: ofbiz/trunk/applications/product/widget/catalog/SubscriptionForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/SubscriptionForms.xml?rev=661283&r1=661282&r2=661283&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/widget/catalog/SubscriptionForms.xml (original)
+++ ofbiz/trunk/applications/product/widget/catalog/SubscriptionForms.xml Thu May 29 03:31:14 2008
@@ -63,9 +63,27 @@
         <field name="productId"><lookup target-form-name="LookupProduct"/></field>
         <field name="productCategoryId"><lookup target-form-name="LookupProductCategory"/></field>
         
+        <field name="roleTypeId"><ignored/></field>
+        <field name="canclAutmExtTimeUomId"><ignored/></field>
+        <field name="canclAutmExtTime"><ignored/></field>
+        <field name="originatedFromPartyId"><ignored/></field>
+        <field name="originatedFromRoleTypeId"><ignored/></field>
+        <field name="contactMechId"><ignored/></field>
+        <field name="communicationEventId"><ignored/></field>
+        <field name="productCategoryId"><ignored/></field>
+        <field name="inventoryItemId"><ignored/></field>
+        <field name="availableTime"><ignored/></field>
+        <field name="availableTimeUomId"><ignored/></field>
         <field name="partyNeedId"><ignored/></field>
         <field name="needTypeId"><ignored/></field>
-        
+        <field name="useCountLimit"><ignored/></field>
+        <field name="maxLifeTime"><ignored/></field>
+        <field name="maxLifeTimeUomId"><ignored/></field>
+        <field name="maxUseTimeUomId"><ignored/></field>
+        <field name="useTime"><ignored/></field>
+        <field name="useTimeUomId"><ignored/></field>
+        <field name="purchaseFromDate"><ignored/></field>        
+        <field name="purchaseThruDate"><ignored/></field>        
         <field name="noConditionFind"><hidden value="Y"/><!-- if this isn't there then with all fields empty no query will be done --></field>
         <field name="submitButton" title="${uiLabelMap.CommonFind}" widget-style="smallSubmit"><submit button-type="button"/></field>
     </form>
@@ -117,8 +135,27 @@
             </display-entity>
         </field>
         
+        <field name="roleTypeId"><ignored/></field>
+        <field name="canclAutmExtTimeUomId"><ignored/></field>
+        <field name="canclAutmExtTime"><ignored/></field>
+        <field name="originatedFromPartyId"><ignored/></field>
+        <field name="originatedFromRoleTypeId"><ignored/></field>
+        <field name="contactMechId"><ignored/></field>
+        <field name="communicationEventId"><ignored/></field>
+        <field name="productCategoryId"><ignored/></field>
+        <field name="inventoryItemId"><ignored/></field>
+        <field name="availableTime"><ignored/></field>
+        <field name="availableTimeUomId"><ignored/></field>
         <field name="partyNeedId"><ignored/></field>
         <field name="needTypeId"><ignored/></field>
+        <field name="useCountLimit"><ignored/></field>
+        <field name="maxLifeTime"><ignored/></field>
+        <field name="maxLifeTimeUomId"><ignored/></field>
+        <field name="maxUseTimeUomId"><ignored/></field>
+        <field name="useTime"><ignored/></field>
+        <field name="useTimeUomId"><ignored/></field>
+        <field name="purchaseFromDate"><ignored/></field>        
+        <field name="purchaseThruDate"><ignored/></field>        
         
         <field name="subscriptionId" widget-style="buttontext">
             <hyperlink description="${subscriptionId}" target="EditSubscription?subscriptionId=${subscriptionId}" also-hidden="false"/>
@@ -202,6 +239,23 @@
                 <sub-hyperlink target="/catalog/control/EditProductCategory?productCategoryId=${subscription.productCategoryId}" target-type="inter-app" description="${subscription.productCategoryId}" link-style="buttontext"/>
             </lookup>
         </field>
+        <field name="useTimeUomId" title="${uiLabelMap.ProductUseTimeUom}">
+            <drop-down allow-empty="true">
+                <entity-options entity-name="Uom" key-field-name="uomId" description="${description}">
+                    <entity-constraint name="uomTypeId" value="TIME_FREQ_MEASURE"/>
+                    <entity-order-by field-name="description"/>
+                </entity-options>
+            </drop-down>
+        </field>
+        <field name="canclAutmExtTimeUomId">
+            <drop-down allow-empty="true">
+                <entity-options entity-name="Uom" key-field-name="uomId" description="${description}">
+                    <entity-constraint name="uomTypeId" value="TIME_FREQ_MEASURE"/>
+                    <entity-order-by field-name="description"/>
+                </entity-options>
+            </drop-down>
+        </field>
+        
               
         <field name="submitButton" title="${uiLabelMap.CommonUpdate}" widget-style="smallSubmit"><submit button-type="button"/></field>
     </form>