You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by su...@apache.org on 2020/02/26 13:56:59 UTC

[ofbiz-framework] branch release17.12 updated: Fixed: Picklist is in Input status even after order is completed. (OFBIZ-10883)

This is an automated email from the ASF dual-hosted git repository.

surajk pushed a commit to branch release17.12
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release17.12 by this push:
     new 545be00  Fixed: Picklist is in Input status even after order is completed. (OFBIZ-10883)
545be00 is described below

commit 545be005768ba98606517b52329fd605606a7a3f
Author: Suraj Khurana <su...@apache.org>
AuthorDate: Wed Feb 26 19:26:43 2020 +0530

    Fixed: Picklist is in Input status even after order is completed.
    (OFBIZ-10883)
    
    Thanks Rashi Dhagat for reporting, Shikha Jaiswal for the patch and Pawan Verma for review.
---
 .../datamodel/entitydef/shipment-entitymodel.xml   | 11 ++++++++
 .../ofbiz/shipment/packing/PackingSession.java     | 29 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/applications/datamodel/entitydef/shipment-entitymodel.xml b/applications/datamodel/entitydef/shipment-entitymodel.xml
index 0e35bcd..9774688 100644
--- a/applications/datamodel/entitydef/shipment-entitymodel.xml
+++ b/applications/datamodel/entitydef/shipment-entitymodel.xml
@@ -191,6 +191,17 @@ under the License.
         <key-map field-name="picklistBinId"/>
       </view-link>
     </view-entity>
+    <view-entity entity-name="PicklistAndBin"
+                 package-name="org.apache.ofbiz.shipment.picklist"
+                 title="Picklist and PicklistBin View">
+      <member-entity entity-alias="PL" entity-name="Picklist"/>
+      <member-entity entity-alias="PLB" entity-name="PicklistBin"/>
+      <alias-all entity-alias="PL"/>
+      <alias-all entity-alias="PLB"/>
+      <view-link entity-alias="PL" rel-entity-alias="PLB">
+        <key-map field-name="picklistId"/>
+      </view-link>
+    </view-entity>
     <entity entity-name="PicklistBin"
             package-name="org.apache.ofbiz.shipment.picklist"
             title="Picklist Entity">
diff --git a/applications/product/src/main/java/org/apache/ofbiz/shipment/packing/PackingSession.java b/applications/product/src/main/java/org/apache/ofbiz/shipment/packing/PackingSession.java
index 7e30dfb..e7d48ee 100644
--- a/applications/product/src/main/java/org/apache/ofbiz/shipment/packing/PackingSession.java
+++ b/applications/product/src/main/java/org/apache/ofbiz/shipment/packing/PackingSession.java
@@ -674,6 +674,8 @@ public class PackingSession implements java.io.Serializable {
         this.setShipmentToPacked();
         // set role on picklist
         this.setPickerOnPicklist();
+        // set picklist to picked
+        this.setPicklistToPicked();
         // run the complete events
         this.runEvents(PackingEvent.EVENT_CODE_COMPLETE);
 
@@ -865,6 +867,33 @@ public class PackingSession implements java.io.Serializable {
         }
     }
 
+    protected void setPicklistToPicked() throws GeneralException {
+        Delegator delegator = this.getDelegator();
+        if (picklistBinId != null) {
+            GenericValue picklist = EntityQuery.use(delegator).from("PicklistAndBin").where("picklistBinId", picklistBinId).queryFirst();
+            if (picklist == null) {
+                if (!"PICKLIST_PICKED".equals(picklist.getString("statusId")) && !"PICKLIST_COMPLETED".equals(picklist.getString("statusId")) && !"PICKLIST_CANCELLED".equals(picklist.getString("statusId"))) {
+                    Map<String, Object> serviceResult = this.getDispatcher().runSync("updatePicklist", UtilMisc.toMap("picklistId", picklist.getString("picklistId"), "statusId", "PICKLIST_PICKED", "userLogin", userLogin));
+                    if (!ServiceUtil.isSuccess(serviceResult)) {
+                        throw new GeneralException(ServiceUtil.getErrorMessage(serviceResult));
+                    }
+                }
+            }
+        } else {
+            List<GenericValue> picklistBins = EntityQuery.use(delegator).from("PicklistAndBin").where("primaryOrderId", primaryOrderId).queryList();
+            if (UtilValidate.isNotEmpty(picklistBins)) {
+                for (GenericValue picklistBin : picklistBins) {
+                    if (!"PICKLIST_PICKED".equals(picklistBin.getString("statusId")) && !"PICKLIST_COMPLETED".equals(picklistBin.getString("statusId")) && !"PICKLIST_CANCELLED".equals(picklistBin.getString("statusId"))) {
+                        Map<String, Object> serviceResult = this.getDispatcher().runSync("updatePicklist", UtilMisc.toMap("picklistId", picklistBin.getString("picklistId"), "statusId", "PICKLIST_PICKED", "userLogin", userLogin));
+                        if (!ServiceUtil.isSuccess(serviceResult)) {
+                            throw new GeneralException(ServiceUtil.getErrorMessage(serviceResult));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     protected void setPickerOnPicklist() throws GeneralException {
         if (picklistBinId != null) {
             // first find the picklist id