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> |
Free forum by Nabble | Edit this page |