You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ap...@apache.org on 2007/07/26 23:23:25 UTC

svn commit: r559988 - /ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java

Author: apatel
Date: Thu Jul 26 14:23:24 2007
New Revision: 559988

URL: http://svn.apache.org/viewvc?view=rev&rev=559988
Log:
Now inventory levels work for both Serialized and Non Serialized inventory items.

Modified:
    ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java

Modified: ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java?view=diff&rev=559988&r1=559987&r2=559988
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java (original)
+++ ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java Thu Jul 26 14:23:24 2007
@@ -107,11 +107,11 @@
         String authId = UtilXml.childElementValue(docSenderElement, "of:AUTHID");
         
         // data area elements
-        Element dataAreaElement = UtilXml.firstChildElement(syncInventoryRootElement, "n:DATAAREA");
-        Element syncInventoryElement = UtilXml.firstChildElement(dataAreaElement, "n:SYNC_INVENTORY");
+        Element dataAreaElement = UtilXml.firstChildElement(syncInventoryRootElement, "ns:DATAAREA");
+        Element syncInventoryElement = UtilXml.firstChildElement(dataAreaElement, "ns:SYNC_INVENTORY");
         
         // get Inventory elements from message
-        List syncInventoryElementList = UtilXml.childElementList(syncInventoryElement, "n:INVENTORY");
+        List syncInventoryElementList = UtilXml.childElementList(syncInventoryElement, "ns:INVENTORY");
         if (UtilValidate.isNotEmpty(syncInventoryElementList)) {
             Iterator syncInventoryElementIter = syncInventoryElementList.iterator();
             while (syncInventoryElementIter.hasNext()) {
@@ -135,6 +135,14 @@
                 if (!isAvailable) {
                     statusId = "INV_ON_HOLD"; 
                 }
+                String invItemType = null;
+                try {
+                    GenericValue invItem = EntityUtil.getFirst(delegator.findByAnd("InventoryItem", UtilMisc.toMap("productId", productId)));
+                    invItemType = invItem.getString("inventoryItemTypeId");
+                } catch (GenericEntityException e) {
+                    Debug.logError(e, module);
+                }
+                
                 
                 String snapshotDateStr = UtilXml.childElementValue(inventoryElement, "os:DATETIMEISO");
 
@@ -154,7 +162,7 @@
                 double quantityOnHandTotal = 0.0;
                 
                 // only if looking for available inventory find the non-serialized QOH total
-                if (isAvailable) {
+                if (invItemType.equals("NON_SERIAL_INV_ITEM")) {
                     EntityCondition condition = new EntityConditionList(UtilMisc.toList(
                             new EntityExpr("effectiveDate", EntityOperator.LESS_THAN_EQUAL_TO, snapshotDate), 
                             new EntityExpr("productId", EntityOperator.EQUALS, productId),
@@ -171,22 +179,22 @@
                         errorMapList.add(UtilMisc.toMap("reasonCode", "GenericEntityException", "description", errMsg));
                         Debug.logError(e, errMsg, module);
                     }
-                }
-                
-                // now regardless of AVAILABLE or NOTAVAILABLE check serialized inventory, just use the corresponding statusId as set above
-                EntityCondition serInvCondition = new EntityConditionList(UtilMisc.toList(
-                        new EntityExpr("statusDatetime", EntityOperator.LESS_THAN_EQUAL_TO, snapshotDate),
-                        new EntityExpr(new EntityExpr("statusEndDatetime", EntityOperator.GREATER_THAN, snapshotDate), EntityOperator.OR, new EntityExpr("statusEndDatetime", EntityOperator.EQUALS, null)),
-                        new EntityExpr("productId", EntityOperator.EQUALS, productId),
-                        new EntityExpr("statusId", EntityOperator.EQUALS, statusId),
-                        new EntityExpr("facilityId", EntityOperator.EQUALS, facilityId)), EntityOperator.AND);
-                try {
-                    long invItemQuantCount = delegator.findCountByCondition("InventoryItemStatusForCount", serInvCondition, null);
-                    quantityOnHandTotal += invItemQuantCount;
-                } catch (GenericEntityException e) {
-                    String errMsg = "Error Getting Inventory Item by Status Count: " + e.toString();
-                    errorMapList.add(UtilMisc.toMap("reasonCode", "GenericEntityException", "description", errMsg));
-                    Debug.logError(e, errMsg, module);
+                } else {
+                    // now regardless of AVAILABLE or NOTAVAILABLE check serialized inventory, just use the corresponding statusId as set above
+                    EntityCondition serInvCondition = new EntityConditionList(UtilMisc.toList(
+                            new EntityExpr("statusDatetime", EntityOperator.LESS_THAN_EQUAL_TO, snapshotDate),
+                            new EntityExpr(new EntityExpr("statusEndDatetime", EntityOperator.GREATER_THAN, snapshotDate), EntityOperator.OR, new EntityExpr("statusEndDatetime", EntityOperator.EQUALS, null)),
+                            new EntityExpr("productId", EntityOperator.EQUALS, productId),
+                            new EntityExpr("statusId", EntityOperator.EQUALS, statusId),
+                            new EntityExpr("facilityId", EntityOperator.EQUALS, facilityId)), EntityOperator.AND);
+                    try {
+                        long invItemQuantCount = delegator.findCountByCondition("InventoryItemStatusForCount", serInvCondition, null);
+                        quantityOnHandTotal += invItemQuantCount;
+                    } catch (GenericEntityException e) {
+                        String errMsg = "Error Getting Inventory Item by Status Count: " + e.toString();
+                        errorMapList.add(UtilMisc.toMap("reasonCode", "GenericEntityException", "description", errMsg));
+                        Debug.logError(e, errMsg, module);
+                    }
                 }
                 
                 // check for mismatch in quantity
@@ -256,7 +264,6 @@
             Map bodyParameters = UtilMisc.toMap("inventoryMapList", inventoryMapList, "locale", locale);
             sendMap.put("bodyParameters", bodyParameters);
             sendMap.put("userLogin", userLogin);
-
             // send the notification
             Map sendResp = null;
             try {