Hi Ashish,
What will happen if I want to override the ProductStore setting using the Product setting? If the ProductStore is set to PRODRQM_AUTO and the product is set to something else then both requirements methods will be in effect. It would be better to check something like this (pseudo-code): if (product.method != auto OR (product.method == null && productStore.method != auto)) continue; Regards Scott HotWax Media http://www.hotwaxmedia.com On 24/03/2010, at 11:47 PM, [hidden email] wrote: > Author: ashish > Date: Thu Mar 25 05:47:33 2010 > New Revision: 927276 > > URL: http://svn.apache.org/viewvc?rev=927276&view=rev > Log: > The code was not working if you set flag on ProductStore for Requirement enum id. > I have put conditional check so that it will first check in product store and then in product for the existence of requirementEnumId if found then it will run the code in if block. Conditional if existed in past is transferred into else block. > > Modified: > ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java > > Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java > URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java?rev=927276&r1=927275&r2=927276&view=diff > ============================================================================== > --- ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java (original) > +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java Thu Mar 25 05:47:33 2010 > @@ -215,21 +215,23 @@ public class RequirementServices { > GenericValue item = (GenericValue) iter.next(); > GenericValue product = item.getRelatedOne("Product"); > if (product == null) continue; > - if (! "PRODRQM_AUTO".equals(product.get("requirementMethodEnumId"))) continue; > - > - BigDecimal quantity = item.getBigDecimal("quantity"); > - BigDecimal cancelQuantity = item.getBigDecimal("cancelQuantity"); > - BigDecimal required = quantity.subtract(cancelQuantity == null ? BigDecimal.ZERO : cancelQuantity); > - if (required.compareTo(BigDecimal.ZERO) <= 0) continue; > - > - Map input = UtilMisc.toMap("userLogin", userLogin, "facilityId", facilityId, "productId", product.get("productId"), "quantity", required, "requirementTypeId", "PRODUCT_REQUIREMENT"); > - Map results = dispatcher.runSync("createRequirement", input); > - if (ServiceUtil.isError(results)) return results; > - String requirementId = (String) results.get("requirementId"); > - > - input = UtilMisc.toMap("userLogin", userLogin, "orderId", order.get("orderId"), "orderItemSeqId", item.get("orderItemSeqId"), "requirementId", requirementId, "quantity", required); > - results = dispatcher.runSync("createOrderRequirementCommitment", input); > - if (ServiceUtil.isError(results)) return results; > + if ("PRODRQM_AUTO".equals(productStore.get("requirementMethodEnumId")) || "PRODRQM_AUTO".equals(product.get("requirementMethodEnumId"))) { > + BigDecimal quantity = item.getBigDecimal("quantity"); > + BigDecimal cancelQuantity = item.getBigDecimal("cancelQuantity"); > + BigDecimal required = quantity.subtract(cancelQuantity == null ? BigDecimal.ZERO : cancelQuantity); > + if (required.compareTo(BigDecimal.ZERO) <= 0) continue; > + > + Map input = UtilMisc.toMap("userLogin", userLogin, "facilityId", facilityId, "productId", product.get("productId"), "quantity", required, "requirementTypeId", "PRODUCT_REQUIREMENT"); > + Map results = dispatcher.runSync("createRequirement", input); > + if (ServiceUtil.isError(results)) return results; > + String requirementId = (String) results.get("requirementId"); > + > + input = UtilMisc.toMap("userLogin", userLogin, "orderId", order.get("orderId"), "orderItemSeqId", item.get("orderItemSeqId"), "requirementId", requirementId, "quantity", required); > + results = dispatcher.runSync("createOrderRequirementCommitment", input); > + if (ServiceUtil.isError(results)) return results; > + } else if (! "PRODRQM_AUTO".equals(product.get("requirementMethodEnumId"))) { > + continue; > + } > } > } catch (GenericEntityException e) { > Debug.logError(e, module); > > smime.p7s (3K) Download Attachment |
Yes, you are correct. Will take care of it shortly.
Thanks for your comment on this Scott! -- Ashish On Thu, Mar 25, 2010 at 11:35 AM, Scott Gray <[hidden email]> wrote: > Hi Ashish, > > What will happen if I want to override the ProductStore setting using the Product setting? > If the ProductStore is set to PRODRQM_AUTO and the product is set to something else then both requirements methods will be in effect. > > It would be better to check something like this (pseudo-code): > if (product.method != auto OR (product.method == null && productStore.method != auto)) continue; > > Regards > Scott > > HotWax Media > http://www.hotwaxmedia.com > > On 24/03/2010, at 11:47 PM, [hidden email] wrote: > >> Author: ashish >> Date: Thu Mar 25 05:47:33 2010 >> New Revision: 927276 >> >> URL: http://svn.apache.org/viewvc?rev=927276&view=rev >> Log: >> The code was not working if you set flag on ProductStore for Requirement enum id. >> I have put conditional check so that it will first check in product store and then in product for the existence of requirementEnumId if found then it will run the code in if block. Conditional if existed in past is transferred into else block. >> >> Modified: >> ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java >> >> Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java >> URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java?rev=927276&r1=927275&r2=927276&view=diff >> ============================================================================== >> --- ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java (original) >> +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java Thu Mar 25 05:47:33 2010 >> @@ -215,21 +215,23 @@ public class RequirementServices { >> GenericValue item = (GenericValue) iter.next(); >> GenericValue product = item.getRelatedOne("Product"); >> if (product == null) continue; >> - if (! "PRODRQM_AUTO".equals(product.get("requirementMethodEnumId"))) continue; >> - >> - BigDecimal quantity = item.getBigDecimal("quantity"); >> - BigDecimal cancelQuantity = item.getBigDecimal("cancelQuantity"); >> - BigDecimal required = quantity.subtract(cancelQuantity == null ? BigDecimal.ZERO : cancelQuantity); >> - if (required.compareTo(BigDecimal.ZERO) <= 0) continue; >> - >> - Map input = UtilMisc.toMap("userLogin", userLogin, "facilityId", facilityId, "productId", product.get("productId"), "quantity", required, "requirementTypeId", "PRODUCT_REQUIREMENT"); >> - Map results = dispatcher.runSync("createRequirement", input); >> - if (ServiceUtil.isError(results)) return results; >> - String requirementId = (String) results.get("requirementId"); >> - >> - input = UtilMisc.toMap("userLogin", userLogin, "orderId", order.get("orderId"), "orderItemSeqId", item.get("orderItemSeqId"), "requirementId", requirementId, "quantity", required); >> - results = dispatcher.runSync("createOrderRequirementCommitment", input); >> - if (ServiceUtil.isError(results)) return results; >> + if ("PRODRQM_AUTO".equals(productStore.get("requirementMethodEnumId")) || "PRODRQM_AUTO".equals(product.get("requirementMethodEnumId"))) { >> + BigDecimal quantity = item.getBigDecimal("quantity"); >> + BigDecimal cancelQuantity = item.getBigDecimal("cancelQuantity"); >> + BigDecimal required = quantity.subtract(cancelQuantity == null ? BigDecimal.ZERO : cancelQuantity); >> + if (required.compareTo(BigDecimal.ZERO) <= 0) continue; >> + >> + Map input = UtilMisc.toMap("userLogin", userLogin, "facilityId", facilityId, "productId", product.get("productId"), "quantity", required, "requirementTypeId", "PRODUCT_REQUIREMENT"); >> + Map results = dispatcher.runSync("createRequirement", input); >> + if (ServiceUtil.isError(results)) return results; >> + String requirementId = (String) results.get("requirementId"); >> + >> + input = UtilMisc.toMap("userLogin", userLogin, "orderId", order.get("orderId"), "orderItemSeqId", item.get("orderItemSeqId"), "requirementId", requirementId, "quantity", required); >> + results = dispatcher.runSync("createOrderRequirementCommitment", input); >> + if (ServiceUtil.isError(results)) return results; >> + } else if (! "PRODRQM_AUTO".equals(product.get("requirementMethodEnumId"))) { >> + continue; >> + } >> } >> } catch (GenericEntityException e) { >> Debug.logError(e, module); >> >> > > |
Free forum by Nabble | Edit this page |