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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

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

apatel-2
Author: apatel
Date: Tue Aug  7 13:26:13 2007
New Revision: 563644

URL: http://svn.apache.org/viewvc?view=rev&rev=563644
Log:
clean ups based on code recent code pattern changes in other related services.

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=563644&r1=563643&r2=563644
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java (original)
+++ ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java Tue Aug  7 13:26:13 2007
@@ -46,6 +46,7 @@
 import org.ofbiz.entity.condition.EntityConditionList;
 import org.ofbiz.entity.condition.EntityExpr;
 import org.ofbiz.entity.condition.EntityOperator;
+import org.ofbiz.entity.util.EntityUtil;
 import org.ofbiz.service.DispatchContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
@@ -546,8 +547,7 @@
                 Debug.logError(e, errMsg, module);
             }
         }
-
-        // parse the message
+        // parse the message
         Element receiveRmaElement = doc.getDocumentElement();
         receiveRmaElement.normalize();
         Element docCtrlAreaElement = UtilXml.firstChildElement(receiveRmaElement, "os:CNTROLAREA");
@@ -568,198 +568,236 @@
         String sentDate = UtilXml.childElementValue(docCtrlAreaElement, "os:DATETIMEISO");
         Timestamp sentTimestamp = OagisServices.parseIsoDateString(sentDate, errorMapList);
 
-        Element dataAreaElement = UtilXml.firstChildElement(receiveRmaElement, "n:DATAAREA");
-        Element acknowledgeDeliveryElement = UtilXml.firstChildElement(dataAreaElement, "n:ACKNOWLEDGE_DELIVERY");
+        Element dataAreaElement = UtilXml.firstChildElement(receiveRmaElement, "ns:DATAAREA");
+        Element acknowledgeDeliveryElement = UtilXml.firstChildElement(dataAreaElement, "ns:ACKNOWLEDGE_DELIVERY");
         
         String inventoryItemTypeId = null;
         String returnId = null;
         String facilityId = UtilProperties.getPropertyValue("oagis.properties", "Oagis.Warehouse.PoReceiptFacilityId");
         String locationSeqId = UtilProperties.getPropertyValue("oagis.properties", "Oagis.Warehouse.ReturnReceiptLocationSeqId");
         
+        Timestamp timestamp = UtilDateTime.nowTimestamp();
+        Map comiCtx = FastMap.newInstance();
+        comiCtx.put("logicalId", logicalId);
+        comiCtx.put("authId", authId);
+        comiCtx.put("referenceId", referenceId);
+        comiCtx.put("receivedDate", timestamp);
+        comiCtx.put("sentDate", sentTimestamp);
+        comiCtx.put("component", component);
+        comiCtx.put("task", task);  
+        comiCtx.put("outgoingMessage", "N");
+        comiCtx.put("confirmation", confirmation);
+        comiCtx.put("bsrVerb", bsrVerb);
+        comiCtx.put("bsrNoun", bsrNoun);
+        comiCtx.put("bsrRevision", bsrRevision);
+        comiCtx.put("processingStatusId", "OAGMP_RECEIVED");
+        comiCtx.put("userLogin", userLogin);
+//        if (OagisServices.debugSaveXmlIn) {
+//            try {
+//                comiCtx.put("fullMessageXml", UtilXml.writeXmlDocument(doc));
+//            } catch (IOException e) {
+//                // this is just for debug info, so just log and otherwise ignore error
+//                String errMsg = "Warning: error creating text from XML Document for saving to database: " + e.toString();
+//                Debug.logWarning(errMsg, module);
+//            }
+//        }
+//        try {
+//            dispatcher.runSync("createOagisMessageInfo", comiCtx, 60, true);
+//            /* running async for better error handling
+//            if (ServiceUtil.isError(comiResult)) {
+//                String errMsg = ServiceUtil.getErrorMessage(comiResult);
+//                errorMapList.add(UtilMisc.toMap("reasonCode", "CreateOagisMessageServiceError", "description", errMsg));
+//            }
+//            */
+//        } catch (GenericServiceException e) {
+//            String errMsg = "Error creating OagisMessageInfo for the Incoming Message: " + e.toString();
+//            Debug.logError(e, errMsg, module);
+//        }
+        
+        String statusId = null;
         // get RECEIPTLN elements from message
-        List acknowledgeElementList = UtilXml.childElementList(acknowledgeDeliveryElement, "n:RECEIPTLN");
+        List acknowledgeElementList = UtilXml.childElementList(acknowledgeDeliveryElement, "ns:RECEIPTLN");
         if (UtilValidate.isNotEmpty(acknowledgeElementList)) {
             Iterator acknowledgeElementIter = acknowledgeElementList.iterator();
             while (acknowledgeElementIter.hasNext()) {
                 Map ripCtx = FastMap.newInstance();
                 Element receiptLnElement = (Element) acknowledgeElementIter.next();
                 Element qtyElement = UtilXml.firstChildElement(receiptLnElement, "os:QUANTITY");
-                
+
                 String itemQtyStr = UtilXml.childElementValue(qtyElement, "of:VALUE");
                 double itemQty = Double.parseDouble(itemQtyStr);
                 String sign = UtilXml.childElementValue(qtyElement, "of:SIGN");
-                
+
                 String productId = UtilXml.childElementValue(receiptLnElement, "of:ITEM");
-                
+                if ( productId == null ) {
+                    String errMsg = "productId not available in Message" ;
+                    errorMapList.add(UtilMisc.toMap("reasonCode", "ParseException", "description", errMsg));
+                    Debug.logError(errMsg, module);
+                }
                 Element documentRefElement = UtilXml.firstChildElement(receiptLnElement, "os:DOCUMNTREF");
                 returnId = UtilXml.childElementValue(documentRefElement, "of:DOCUMENTID");
                 ripCtx.put("returnId", returnId);
-                
-                String returnItemSeqId = UtilXml.childElementValue(documentRefElement, "of:LINENUM");
-                ripCtx.put("returnItemSeqId", returnItemSeqId);
-                
-                // get inventory item status
-                String invItemStatus = UtilXml.childElementValue(receiptLnElement, "of:DISPOSITN");
-                if ( invItemStatus.equals("ReceivedTOAvailable") || invItemStatus.equals("NotAvailableTOAvailable")) {
-                    ripCtx.put("statusId", "INV_AVAILABLE");    
-                } else if ( invItemStatus.equals("ReceivedTONotAvailable") || invItemStatus.equals("AvailableTONotAvailable") ) {
-                    ripCtx.put("statusId", "INV_ON_HOLD");
-                }
-                // get the serial number(s)
-                List serialNumsList = FastList.newInstance();
-                List invDetailList = UtilXml.childElementList(receiptLnElement, "n:INVDETAIL");
-                if (UtilValidate.isNotEmpty(invDetailList)) {
-                    inventoryItemTypeId = "SERIALIZED_INV_ITEM";
-                    ripCtx.put("inventoryItemTypeId", inventoryItemTypeId);
-                    for (Iterator j = invDetailList.iterator(); j.hasNext();) {
-                        Element invDetailElement = (Element) j.next();
-                        String serialNumber = UtilXml.childElementValue(invDetailElement, "of:SERIALNUM");
-                        if (UtilValidate.isNotEmpty(serialNumber)) {
-                            serialNumsList.add(serialNumber);
-                        }
-                    }
 
-                    /* DEJ20070711 Commenting this out because it shouldn't happen, ie more likely the ITEM element will be filled
-                     * than INVDETAIL->SERIALNUM, and this isn't a reliable way to look it up (may be more than 1 record for a given
-                     * serialNumber for different products
-                    // this is a Serialized Inventory Item. If the productId from the message is not valid then lets read it from InventoryItem in Ofbiz database.
-                    if (productId == null || "".equals(productId)) {
-                        try {
-                            GenericValue inventoryItem = EntityUtil.getFirst(delegator.findByAnd("InventoryItem", UtilMisc.toMap("serialNumber", serialNumber)));
-                            if (inventoryItem !=null) {
-                                productId = inventoryItem.getString("productId");
-                            }
-                        } catch (GenericEntityException e){
-                            String errMsg = "Error Getting Entity InventoryItem";
-                            Debug.logError(e, errMsg, module);
-                        }
-                    } */
-                } else {
-                    inventoryItemTypeId = "NON_SERIAL_INV_ITEM";
-                    ripCtx.put("inventoryItemTypeId", inventoryItemTypeId);
+                String returnHeaderTypeId = UtilXml.childElementValue(documentRefElement, "of:DOCTYPE");
+                if(returnHeaderTypeId.equals("RMA")) {
+                    returnHeaderTypeId = "CUSTOMER_RETURN";
                 }
-                inventoryItemTypeId = "NON_SERIAL_INV_ITEM";
-                ripCtx.put("inventoryItemTypeId", inventoryItemTypeId);
-                
-                ripCtx.put("productId", productId);
-                ripCtx.put("facilityId",facilityId);
-                ripCtx.put("locationSeqId", locationSeqId);
-                ripCtx.put("userLogin", userLogin);
+                String returnItemSeqId = UtilXml.childElementValue(documentRefElement, "of:LINENUM");
+                String datetimeReceived = UtilXml.childElementValue(receiptLnElement, "os:DATETIMEISO");
+                Timestamp timestampItemReceived = OagisServices.parseIsoDateString(datetimeReceived, errorMapList);
+                ripCtx.put("datetimeReceived", timestampItemReceived);
 
-                // sign handling for items
-                double quantityAccepted = 0.0;
-                double quantityRejected = 0.0;
-                if (sign.equals("+")) {
-                    quantityAccepted = itemQty;
-                    quantityRejected= 0.0;
-                } else {
-                    quantityRejected = itemQty;
-                    quantityAccepted = 0.0;
+                GenericValue returnHeader = null;
+                try {
+                    returnHeader = delegator.findByPrimaryKey("ReturnHeader", UtilMisc.toMap("returnId", returnId));
+                } catch  (GenericEntityException e) {
+                    String errMsg = "Error Getting ReturnHeader: " + e.toString();
+                    errorMapList.add(UtilMisc.toMap("reasonCode", "GenericEntityException", "description", errMsg));
+                    Debug.logError(e, errMsg, module);
                 }
-                if (quantityAccepted > 0) {
-                    if (serialNumsList.size() > 0) {
-                        if (serialNumsList.size() != quantityAccepted) {
-                            // this is an error, do something about it, like add to the list to send back a Confirm BOD with error messages
-                            String errMsg = "Error: the quantity [" + quantityAccepted + "] did not match the number of serial numbers passed [" + serialNumsList.size() + "].";
-                            errorMapList.add(UtilMisc.toMap("reasonCode", "QuantitySerialMismatch", "description", errMsg));
-                        }
 
-                        Iterator serialNumIter = serialNumsList.iterator();
-                        while (serialNumIter.hasNext()) {
-                            String serialNum = (String) serialNumIter.next();
-                            
-                            // clone the context as it may be changted in the call
-                            Map localRipCtx = FastMap.newInstance();
-                            localRipCtx.putAll(ripCtx);
+                if (UtilValidate.isNotEmpty(returnHeader)) {
+                    statusId = returnHeader.get("statusId").toString();
+                    if (statusId.equals("RETURN_ACCEPTED")) {
+                        // getting inventory item status
+                        String invItemStatus = UtilXml.childElementValue(receiptLnElement, "of:DISPOSITN");
+                        if ( invItemStatus.equals("ReceivedTOAvailable") || invItemStatus.equals("NotAvailableTOAvailable")) {
+                            ripCtx.put("statusId", "INV_AVAILABLE");
+                        } else if ( invItemStatus.equals("ReceivedTONotAvailable") || invItemStatus.equals("AvailableTONotAvailable") ) {
+                            ripCtx.put("statusId", "INV_ON_HOLD");
+                        }
+                        // geting the serial number(s)
+                        String serialNumber = null;
+                        List serialNumsList = FastList.newInstance();
+                        List invDetailList = UtilXml.childElementList(receiptLnElement, "ns:INVDETAIL");
+                        if (UtilValidate.isNotEmpty(invDetailList)) {
+                            inventoryItemTypeId = "SERIALIZED_INV_ITEM";
+                            ripCtx.put("inventoryItemTypeId", inventoryItemTypeId);
+                            for (Iterator j = invDetailList.iterator(); j.hasNext();) {
+                                Element invDetailElement = (Element) j.next();
+                                serialNumber = UtilXml.childElementValue(invDetailElement, "of:SERIALNUM");
+                                if (UtilValidate.isNotEmpty(serialNumber)) {
+                                    serialNumsList.add(serialNumber);
+                                }
+                            }
                             
-                            localRipCtx.put("quantityAccepted", new Double(1.0));
-                            // always set this to 0, if needed we'll handle the rejected quantity separately
-                            localRipCtx.put("quantityRejected", new Double(0.0));
+                            /* DEJ20070711 Commenting this out because it shouldn't happen, ie more likely the ITEM element will be filled
+                             * than INVDETAIL->SERIALNUM, and this isn't a reliable way to look it up (may be more than 1 record for a given
+                             * serialNumber for different products
+                             // this is a Serialized Inventory Item. If the productId from the message is not valid then lets read it from InventoryItem in Ofbiz database.
+                             if (productId == null || "".equals(productId)) {
+                             try {
+                                 GenericValue inventoryItem = EntityUtil.getFirst(delegator.findByAnd("InventoryItem", UtilMisc.toMap("serialNumber", serialNumber)));
+                                 if (inventoryItem !=null) {
+                                     productId = inventoryItem.getString("productId");
+                                 }
+                             } catch (GenericEntityException e){
+                                 String errMsg = "Error Getting Entity InventoryItem";
+                                 Debug.logError(e, errMsg, module);
+                            } */
+                        } else {
+                            inventoryItemTypeId = "NON_SERIAL_INV_ITEM";
+                            ripCtx.put("inventoryItemTypeId", inventoryItemTypeId);
+                        }
+                        ripCtx.put("facilityId",facilityId);
+                        ripCtx.put("locationSeqId", locationSeqId);
+                        ripCtx.put("userLogin", userLogin);
+
+                        // sign handling for items
+                        double quantityAccepted = 0.0;
+                        double quantityRejected = 0.0;
+                        if (sign.equals("+")) {
+                            quantityAccepted = itemQty;
+                            quantityRejected= 0.0;
+                        } else {
+                            quantityRejected = itemQty;
+                            quantityAccepted = 0.0;
+                        }
+                        if (quantityAccepted > 0) {
+                            if (serialNumsList.size() > 0) {
+                                if (serialNumsList.size() != quantityAccepted) {
+                                    String errMsg = "Error: the quantity [" + quantityAccepted + "] did not match the number of serial numbers passed [" + serialNumsList.size() + "].";
+                                    errorMapList.add(UtilMisc.toMap("reasonCode", "QuantitySerialMismatch", "description", errMsg));
+                                }
 
-                            localRipCtx.put("serialNumber", serialNum);
-                            
-                            try {
-                                Map ripResult = dispatcher.runSync("receiveInventoryProduct", localRipCtx);
-                                if (ServiceUtil.isError(ripResult)) {
-                                    String errMsg = ServiceUtil.getErrorMessage(ripResult);
-                                    errorMapList.add(UtilMisc.toMap("reasonCode", "ReceiveInventoryServiceError", "description", errMsg));
+                                Iterator serialNumIter = serialNumsList.iterator();
+                                while (serialNumIter.hasNext()) {
+                                    String serialNum = (String) serialNumIter.next();
+                                    try {
+                                        GenericValue inventoryItem = EntityUtil.getFirst(delegator.findByAnd("InventoryItem", UtilMisc.toMap("serialNumber", serialNum)));
+                                        if (inventoryItem != null) {
+                                            String inventoryItemProductId = inventoryItem.getString("productId");
+                                            if(inventoryItemProductId.equals(productId)) {
+                                                Map updateInvItmMap = FastMap.newInstance();
+                                                updateInvItmMap.put( "inventoryItemId" , inventoryItem.get("inventoryItemId").toString());
+                                                updateInvItmMap.put( "userLogin" , userLogin);
+                                                updateInvItmMap.put( "productId",productId);
+                                                updateInvItmMap.put( "statusId","INV_ON_HOLD");
+                                                try {
+                                                    Map test = dispatcher.runSync("updateInventoryItem", updateInvItmMap);
+                                                } catch (GenericServiceException e) {
+                                                    String errMsg = "Error running service updateInventoryItem: " + e.toString();
+                                                    errorMapList.add(UtilMisc.toMap("reasonCode", "GenericServiceException", "description", errMsg));
+                                                    Debug.logError(e, errMsg, module);
+                                                }
+                                            }
+                                        }
+                                    } catch (GenericEntityException e) {
+                                        String errMsg = "Error Getting Entity InventoryItem";
+                                        Debug.logError(e, errMsg, module);
+                                    }
+
+                                    // clone the context as it may be changed in the call
+                                    Map localRipCtx = FastMap.newInstance();
+                                    localRipCtx.putAll(ripCtx);
+                                    localRipCtx.put("quantityAccepted", new Double(1.0));
+                                    // always set this to 0, if needed we'll handle the rejected quantity separately
+                                    localRipCtx.put("quantityRejected", new Double(0.0));
+
+                                    localRipCtx.put("serialNumber", serialNum);
+                                    localRipCtx.put("productId", productId);
+                                    localRipCtx.put("returnItemSeqId", returnItemSeqId);
+                                    runReceiveInventoryProduct( localRipCtx , errorMapList , dispatcher);
                                 }
-                            } catch (GenericServiceException e) {
-                                String errMsg = "Error running service receiveInventoryProduct: " + e.toString();
-                                errorMapList.add(UtilMisc.toMap("reasonCode", "GenericServiceException", "description", errMsg));
-                                Debug.logError(e, errMsg, module);
-                            }    
-                        }
-                    } else {
-                        // no serial numbers, just receive the quantity
-                        
-                        // clone the context as it may be changted in the call
-                        Map localRipCtx = FastMap.newInstance();
-                        localRipCtx.putAll(ripCtx);
-                        
-                        localRipCtx.put("quantityAccepted", new Double(quantityAccepted));
-                        // always set this to 0, if needed we'll handle the rejected quantity separately
-                        localRipCtx.put("quantityRejected", new Double(0.0));
-                        
-                        try {
-                            Map ripResult = dispatcher.runSync("receiveInventoryProduct", localRipCtx);
-                            if (ServiceUtil.isError(ripResult)) {
-                                String errMsg = ServiceUtil.getErrorMessage(ripResult);
-                                errorMapList.add(UtilMisc.toMap("reasonCode", "ReceiveInventoryServiceError", "description", errMsg));
+                            } else {
+                                // no serial numbers, just receive the quantity
+                                // clone the context as it may be changted in the call
+                                Map localRipCtx = FastMap.newInstance();
+                                localRipCtx.putAll(ripCtx);
+                                localRipCtx.put("quantityAccepted", new Double(quantityAccepted));
+                                // always set this to 0, if needed we'll handle the rejected quantity separately
+                                localRipCtx.put("quantityRejected", new Double(0.0));
+                                localRipCtx.put("productId", productId);
+                                localRipCtx.put("returnItemSeqId", returnItemSeqId);
+                                runReceiveInventoryProduct( localRipCtx , errorMapList , dispatcher);
                             }
-                        } catch (GenericServiceException e) {
-                            String errMsg = "Error running service receiveInventoryProduct: " + e.toString();
-                            errorMapList.add(UtilMisc.toMap("reasonCode", "GenericServiceException", "description", errMsg));
-                            Debug.logError(e, errMsg, module);
-                        }    
+                        } else {
+                            // TODOLATER: need to run service receiveInventoryProduct and updateInventoryItem when quantityRejected > 0
+                            // NOTE DEJ20070711 this shouldn't happen for current needs, so save for later
+                        }
+                    } else {
+                        String errMsg = "Return status is not RETURN_ACCEPTED";
+                        Debug.logError(errMsg, module);
+                        errorMapList.add(UtilMisc.toMap("reasonCode", "GenericEntityException", "description", errMsg));
                     }
                 } else {
-                    // TODOLATER: need to run service receiveInventoryProduct and updateInventoryItem when quantityRejected > 0
-                    // NOTE DEJ20070711 this shouldn't happen for current needs, so save for later
+                    String errMsg = "ReturnId Not Valid: Id not present in Database";
+                    Debug.logError(errMsg, module);
+                    errorMapList.add(UtilMisc.toMap("reasonCode", "GenericEntityException", "description", errMsg));
                 }
             }
-        }        
-        //prepare result Map for createOagisMessageinfo
-            
-        Timestamp timestamp = null;
-        timestamp = UtilDateTime.nowTimestamp();
-        Map comiCtx = new HashMap();
-        comiCtx.put("logicalId", logicalId);
-        comiCtx.put("authId", authId);
-        comiCtx.put("referenceId", referenceId);
-        comiCtx.put("receivedDate", timestamp);
-        comiCtx.put("sentDate", sentTimestamp);
-        comiCtx.put("component", component);
-        comiCtx.put("task", task);  
-        comiCtx.put("outgoingMessage", "N");
-        comiCtx.put("confirmation", confirmation);
-        comiCtx.put("bsrVerb", bsrVerb);
-        comiCtx.put("bsrNoun", bsrNoun);
-        comiCtx.put("bsrRevision", bsrRevision);
-        comiCtx.put("userLogin", userLogin);
-        if (OagisServices.debugSaveXmlIn) {
+            statusId = "RETURN_COMPLETED";
             try {
-                comiCtx.put("fullMessageXml", UtilXml.writeXmlDocument(doc));
-            } catch (IOException e) {
-                // this is just for debug info, so just log and otherwise ignore error
-                String errMsg = "Warning: error creating text from XML Document for saving to database: " + e.toString();
-                Debug.logWarning(errMsg, module);
-            }
-        }
-        try {
-            dispatcher.runSync("createOagisMessageInfo", comiCtx, 60, true);
-            /* running async for better error handling
-            if (ServiceUtil.isError(comiResult)) {
-                String errMsg = ServiceUtil.getErrorMessage(comiResult);
-                errorMapList.add(UtilMisc.toMap("reasonCode", "CreateOagisMessageServiceError", "description", errMsg));
+                dispatcher.runSync("updateReturnHeader", UtilMisc.toMap("statusId", statusId, "returnId", returnId, "userLogin", userLogin));
+            } catch (GenericServiceException e) {
+                String errMsg = "Error Storing the value: " + e.toString();
+                errorMapList.add(UtilMisc.toMap("reasonCode", "GenericEntityException", "description", errMsg));
+                Debug.logError(e, errMsg, module);
             }
-            */
-        } catch (GenericServiceException e) {
-            String errMsg = "Error creating OagisMessageInfo for the Incoming Message: " + e.toString();
-            // reconsider sending this error back to other server, not much they can do about it, and it may not be a critical error causing the message to be rejected...
-            //errorMapList.add(UtilMisc.toMap("reasonCode", "CreateOagisMessageInfoError", "description", errMsg));
-            Debug.logError(e, errMsg, module);
         }
+
+        // prepare result Map for createOagisMessageinfo
+        
         
         Map result = FastMap.newInstance();
         result.put("logicalId", logicalId);
@@ -767,14 +805,40 @@
         result.put("task", task);
         result.put("referenceId", referenceId);
         result.put("userLogin", userLogin);
-        
         if (errorMapList.size() > 0) {
             result.put("errorMapList", errorMapList);
             String errMsg = "Error Processing Received Messages";
             result.putAll(ServiceUtil.returnError(errMsg));
             return result;
         }
+        
+        comiCtx.put("returnId", returnId);
+        comiCtx.put("processingStatusId", "OAGMP_PROC_SUCCESS");
+        try {
+            dispatcher.runSync("updateOagisMessageInfo", comiCtx, 60, true);
+        } catch (GenericServiceException e){
+            String errMsg = "Error updating OagisMessageInfo for the Incoming Message: " + e.toString();
+            Debug.logError(e, errMsg, module);
+        }
+        
         result.putAll(ServiceUtil.returnSuccess("Action Performed Successfully"));
         return result;
     }
+
+    public static void runReceiveInventoryProduct(Map localRipCtx, List errorMapList, LocalDispatcher dispatcher) {
+        try {
+            Map ripResult = dispatcher.runSync("receiveInventoryProduct",
+                    localRipCtx);
+            if (ServiceUtil.isError(ripResult)) {
+                String errMsg = ServiceUtil.getErrorMessage(ripResult);
+                errorMapList.add(UtilMisc.toMap("reasonCode", "ReceiveInventoryServiceError", "description", errMsg));
+            }
+        } catch (GenericServiceException e) {
+            String errMsg = "Error running service receiveInventoryProduct: "
+                    + e.toString();
+            errorMapList.add(UtilMisc.toMap("reasonCode", "GenericServiceException", "description", errMsg));
+            Debug.logError(e, errMsg, module);
+        }
+    }
+    
 }