Author: diveshdutta
Date: Sat Aug 27 08:54:53 2016 New Revision: 1757975 URL: http://svn.apache.org/viewvc?rev=1757975&view=rev Log: [OFBIZ-7478] Mark the requirements Ordered only when PO is approved. Earlier requirements were marked Ordered when PO is created. Applied slightly modifiend patch by Rahul Bhooteshwar. In this work new service:updateRequirementsToOrdered is introduced which will be triggered when PO is approved. Thanks Rahul Bhooteshwar for you patch and Swapnil Shah for reporting the ticket Modified: ofbiz/branches/release14.12/applications/order/servicedef/secas.xml ofbiz/branches/release14.12/applications/order/servicedef/services_requirement.xml ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java Modified: ofbiz/branches/release14.12/applications/order/servicedef/secas.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/order/servicedef/secas.xml?rev=1757975&r1=1757974&r2=1757975&view=diff ============================================================================== --- ofbiz/branches/release14.12/applications/order/servicedef/secas.xml (original) +++ ofbiz/branches/release14.12/applications/order/servicedef/secas.xml Sat Aug 27 08:54:53 2016 @@ -378,6 +378,13 @@ under the License. <action service="createATPRequirementsForOrder" mode="sync"/> </eca> + <eca service="changeOrderStatus" event="commit" run-on-error="false"> + <condition field-name="oldStatusId" operator="equals" value="ORDER_CREATED"/> + <condition field-name="statusId" operator="equals" value="ORDER_APPROVED"/> + <condition field-name="orderTypeId" operator="equals" value="PURCHASE_ORDER"/> + <action service="updateRequirementsToOrdered" mode="sync"/> + </eca> + <!-- WorkEffort --> <eca service="createQuoteWorkEffort" event="in-validate"> <condition field-name="workEffortId" operator="is-empty"/> Modified: ofbiz/branches/release14.12/applications/order/servicedef/services_requirement.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/order/servicedef/services_requirement.xml?rev=1757975&r1=1757974&r2=1757975&view=diff ============================================================================== --- ofbiz/branches/release14.12/applications/order/servicedef/services_requirement.xml (original) +++ ofbiz/branches/release14.12/applications/order/servicedef/services_requirement.xml Sat Aug 27 08:54:53 2016 @@ -195,5 +195,12 @@ under the License. </description> <attribute name="orderId" type="String" mode="IN" optional="false"/> </service> + <service name="updateRequirementsToOrdered" engine="java" + location="org.ofbiz.order.requirement.RequirementServices" invoke="updateRequirementsToOrdered" auth="true"> + <description> + Update requirement's status to Ordered after PO is approved. + </description> + <attribute name="orderId" type="String" mode="IN" optional="false"/> + </service> </services> Modified: ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java?rev=1757975&r1=1757974&r2=1757975&view=diff ============================================================================== --- ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java (original) +++ ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java Sat Aug 27 08:54:53 2016 @@ -33,6 +33,7 @@ import org.ofbiz.entity.GenericEntityExc import org.ofbiz.entity.GenericValue; import org.ofbiz.entity.util.EntityQuery; import org.ofbiz.entity.util.EntityUtil; +import org.ofbiz.order.order.OrderReadHelper; import org.ofbiz.service.DispatchContext; import org.ofbiz.service.GenericServiceException; import org.ofbiz.service.LocalDispatcher; @@ -331,6 +332,32 @@ public class RequirementServices { Debug.logError(e, module); } return ServiceUtil.returnSuccess(); + } + public static Map<String, Object> updateRequirementsToOrdered (DispatchContext ctx, Map<String, ? extends Object> context) { + Delegator delegator = ctx.getDelegator(); + LocalDispatcher dispatcher = ctx.getDispatcher(); + GenericValue userLogin = (GenericValue) context.get("userLogin"); + String orderId = (String) context.get("orderId"); + OrderReadHelper orh = new OrderReadHelper(delegator, orderId); + try { + for(GenericValue orderItem: orh.getOrderItems()){ + GenericValue orderRequirementCommitment = EntityQuery.use(delegator).from("OrderRequirementCommitment") + .where(UtilMisc.toMap("orderId", orderId, "orderItemSeqId", orderItem.getString("orderItemSeqId"))) + .queryFirst(); + if (UtilValidate.isNotEmpty(orderRequirementCommitment)) { + String requirementId = orderRequirementCommitment.getString("requirementId"); + /* Change requirement's status to ordered */ + Map<String, Object> inputMap = UtilMisc.<String, Object>toMap("userLogin", userLogin, "requirementId", requirementId, "statusId", "REQ_ORDERED", "quantity", orderItem.getBigDecimal("quantity")); + // TODO: check service result for an error return + dispatcher.runSync("updateRequirement", inputMap); + } + } + } catch(GenericEntityException e){ + Debug.logError(e, module); + } catch(GenericServiceException e){ + Debug.logError(e, module); + } + return ServiceUtil.returnSuccess(); } } Modified: ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java URL: http://svn.apache.org/viewvc/ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java?rev=1757975&r1=1757974&r2=1757975&view=diff ============================================================================== --- ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java (original) +++ ofbiz/branches/release14.12/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java Sat Aug 27 08:54:53 2016 @@ -672,11 +672,8 @@ public class CheckOutHelper { String requirementId = shoppingCartItem.getRequirementId(); if (requirementId != null) { try { - Map<String, Object> inputMap = UtilMisc.<String, Object>toMap("requirementId", requirementId, "statusId", "REQ_ORDERED"); - inputMap.put("userLogin", userLogin); - // TODO: check service result for an error return - dispatcher.runSync("updateRequirement", inputMap); - inputMap = UtilMisc.toMap("userLogin", userLogin, "orderId", orderId, "orderItemSeqId", shoppingCartItem.getOrderItemSeqId(), "requirementId", requirementId, "quantity", shoppingCartItem.getQuantity()); + /*Creating OrderRequirementCommitment which will be used to update requirement at the time of approval of PO. OrderRequirementCommitment will also be updated if ordered & required quantity differs*/ + Map<String, Object> inputMap = UtilMisc.toMap("userLogin", userLogin, "orderId", orderId, "orderItemSeqId", shoppingCartItem.getOrderItemSeqId(), "requirementId", requirementId, "quantity", shoppingCartItem.getQuantity()); dispatcher.runSync("createOrderRequirementCommitment", inputMap); } catch (Exception e) { String service = e.getMessage(); |
Free forum by Nabble | Edit this page |