svn commit: r551599 - in /ofbiz/trunk/specialpurpose/oagis: servicedef/services.xml src/org/ofbiz/oagis/OagisInventoryServices.java webapp/oagis/WEB-INF/controller.xml webapp/oagis/message/oagisEmailNotification.ftl widget/EmailOagisMessageScreens.xml

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

svn commit: r551599 - in /ofbiz/trunk/specialpurpose/oagis: servicedef/services.xml src/org/ofbiz/oagis/OagisInventoryServices.java webapp/oagis/WEB-INF/controller.xml webapp/oagis/message/oagisEmailNotification.ftl widget/EmailOagisMessageScreens.xml

apatel-2
Author: apatel
Date: Thu Jun 28 08:42:04 2007
New Revision: 551599

URL: http://svn.apache.org/viewvc?view=rev&rev=551599
Log:
first cut of RMA services.

Added:
    ofbiz/trunk/specialpurpose/oagis/webapp/oagis/message/oagisEmailNotification.ftl
    ofbiz/trunk/specialpurpose/oagis/widget/EmailOagisMessageScreens.xml
Modified:
    ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml
    ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java
    ofbiz/trunk/specialpurpose/oagis/webapp/oagis/WEB-INF/controller.xml

Modified: ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml?view=diff&rev=551599&r1=551598&r2=551599
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml (original)
+++ ofbiz/trunk/specialpurpose/oagis/servicedef/services.xml Thu Jun 28 08:42:04 2007
@@ -104,5 +104,18 @@
         <description>Receive Delivery</description>
         <attribute name="returnId" mode="IN" type="String" optional="false"/>
     </service>
+    
+    <service name="receivePoAcknowledge" engine="java" transaction-timeout="300"
+            location="org.ofbiz.oagis.OagisInventoryServices" invoke="receivePoAcknowledgement" auth="false">
+        <description>Process PO Acknowledge message</description>
+        <implements service="serviceStreamInterface"/>
+    </service>
+
+    <service name="receiveRmaAcknowledge" engine="java" transaction-timeout="300"
+            location="org.ofbiz.oagis.OagisInventoryServices" invoke="receiveRmaAcknowledge" auth="false">
+        <description>Process RMA Acknowledge message</description>
+        <implements service="serviceStreamInterface"/>
+    </service>
+
 
 </services>

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=551599&r1=551598&r2=551599
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java (original)
+++ ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisInventoryServices.java Thu Jun 28 08:42:04 2007
@@ -18,16 +18,659 @@
 specific language governing permissions and limitations
 under the License.
 **/
+//import java.io.File;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.HashMap;
 import java.util.Map;
+import java.util.List;
+import java.util.Iterator;
+import java.util.Date;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.text.ParseException;
+
+import javolution.util.FastList;
+import javolution.util.FastMap;
+
+import java.sql.Timestamp;
 
+import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.util.EntityUtil;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilXml;
+import org.ofbiz.entity.GenericDelegator;
+import org.ofbiz.entity.GenericValue;
 import org.ofbiz.service.DispatchContext;
+import org.ofbiz.service.GenericServiceException;
+import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ServiceUtil;
 
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+
+
+
 public class OagisInventoryServices {
     
     public static final String module = OagisInventoryServices.class.getName();
     
     public static Map syncInventory(DispatchContext ctx, Map context) {
+        InputStream in = (InputStream) context.get("inputStream");
+        OutputStream out = (OutputStream) context.get("outputStream");
+        GenericDelegator delegator = ctx.getDelegator();
+        LocalDispatcher dispatcher = ctx.getDispatcher();
+        //create a List for Storing  error Information
+        List errorList = FastList.newInstance();
+        // create Map for service sendConfirmBod
+        Map sendConfirmBodCtx = FastMap.newInstance();
+
+        GenericValue contactMech = null;
+        GenericValue facilityContactMech=null;
+        GenericValue  userLogin = null ;
+
+        String contactMechId = null;
+        String emailString = null;
+        String contactMechTypeId = null;
+        String errMsg = null;
+
+        try {
+            userLogin = delegator.findByPrimaryKey("UserLogin",UtilMisc.toMap("userLoginId","admin"));
+            Document doc = UtilXml.readXmlDocument(in, true, "SyncInventory");
+            Element receiveInventoryElement = doc.getDocumentElement();
+            receiveInventoryElement.normalize();
+                        
+            Element docCtrlAreaElement = UtilXml.firstChildElement(receiveInventoryElement, "N1:CNTROLAREA");
+            Element docSenderElement = UtilXml.firstChildElement(docCtrlAreaElement, "N1:SENDER");
+            Element docBsrElement = UtilXml.firstChildElement(docCtrlAreaElement, "N1:BSR");
+            String bsrVerb = UtilXml.childElementValue(docBsrElement, "N2:VERB");
+            String bsrNoun = UtilXml.childElementValue(docBsrElement, "N2:NOUN");
+            String bsrRevision = UtilXml.childElementValue(docBsrElement, "N2:REVISION");
+            String logicalId = UtilXml.childElementValue(docSenderElement, "N2:LOGICALID");
+            
+            String component = UtilXml.childElementValue(docSenderElement, "N2:COMPONENT");
+            String task = UtilXml.childElementValue(docSenderElement, "N2:TASK");
+            String referenceId = UtilXml.childElementValue(docSenderElement, "N2:REFERENCEID");
+            String confirmation = UtilXml.childElementValue(docSenderElement, "N2:CONFIRMATION");
+            String language = UtilXml.childElementValue(docSenderElement, "N2:LANGUAGE");
+            String codePage = UtilXml.childElementValue(docSenderElement, "N2:CODEPAGE");
+            String authId = UtilXml.childElementValue(docSenderElement, "N2:AUTHID");
+            
+            Element dataAreaElement = UtilXml.firstChildElement(receiveInventoryElement, "n:DATAAREA");
+            Element dataAreaSyncInventoryElement = UtilXml.firstChildElement(dataAreaElement, "n:SYNC_INVENTORY");
+            Element dataAreaInventoryElement = UtilXml.firstChildElement(dataAreaSyncInventoryElement, "n:INVENTORY");
+            String receivedDate = UtilXml.childElementValue(dataAreaInventoryElement, "N1:DATETIMEANY");
+            Element dataAreaQuantityElement = UtilXml.firstChildElement(dataAreaInventoryElement, "N1:QUANTITY");
+            String value = UtilXml.childElementValue(dataAreaQuantityElement, "N2:VALUE");
+            String numOfDec = UtilXml.childElementValue(dataAreaQuantityElement, "N2:NUMOFDEC");
+            String sign = UtilXml.childElementValue(dataAreaQuantityElement, "N2:SIGN");
+            String uom = UtilXml.childElementValue(dataAreaQuantityElement, "N2:UOM");
+            String item = UtilXml.childElementValue(dataAreaQuantityElement, "N2:ITEM");
+            String itemStatus = UtilXml.childElementValue(dataAreaQuantityElement, "N2:ITEMSTATUS");
+            
+            double quantityAccepted ;
+            double quantityRejected ;
+            
+            if ( sign.equals("+")) {
+                quantityAccepted = Double.parseDouble(value);
+                quantityRejected =0.0 ;
+            } else {
+                quantityRejected = Double.parseDouble(value);
+                quantityAccepted = 0.0;
+            }
+            //create Map for service receiveInventoryProduct                        
+
+            Map receiveInventoryCtx = FastMap.newInstance();
+            receiveInventoryCtx.put("productId",item);
+            receiveInventoryCtx.put("inventoryItemTypeId","NON_SERIAL_INV_ITEM");
+            receiveInventoryCtx.put("facilityId","WebStoreWarehouse");
+            receiveInventoryCtx.put("quantityAccepted",new Double(quantityAccepted));
+            receiveInventoryCtx.put("quantityRejected",new Double(quantityRejected));
+            receiveInventoryCtx.put("userLogin",userLogin);
+            
+            //create Map for service getProductInventoryAvailable
+            Map gpiaCtx = FastMap.newInstance();
+            gpiaCtx.put("productId", item);
+            
+            Timestamp timestamp = null;
+            timestamp = UtilDateTime.nowTimestamp();
+            
+            //create Map for service createOagisMessageInfo
+            Date date = new Date();
+            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'Z");
+            
+            try{
+                date = dateFormat.parse(receivedDate);    
+            } catch (ParseException e) {
+                Debug.logError(e, "Error parsing Date", module);
+            }
+            timestamp = new Timestamp(date.getTime());
+            
+            Map oagisMessageInfoCtx= FastMap.newInstance();
+            oagisMessageInfoCtx.put("logicalId",logicalId);
+            oagisMessageInfoCtx.put("component",component);
+            oagisMessageInfoCtx.put("task",task);
+            oagisMessageInfoCtx.put("referenceId",referenceId);
+            oagisMessageInfoCtx.put("confirmation",confirmation);
+            oagisMessageInfoCtx.put("userLogin",userLogin);
+            oagisMessageInfoCtx.put("authId",authId);
+            oagisMessageInfoCtx.put("bsrVerb",bsrVerb);
+            oagisMessageInfoCtx.put("bsrNoun",bsrNoun);
+            oagisMessageInfoCtx.put("bsrRevision",bsrRevision);
+            oagisMessageInfoCtx.put("receivedDate",timestamp);
+            
+           //create Map for service sendConfirmBod
+            
+            sendConfirmBodCtx.put("logicalId",logicalId);
+            sendConfirmBodCtx.put("component",component);
+            sendConfirmBodCtx.put("task",task);
+            sendConfirmBodCtx.put("referenceId",referenceId);
+            sendConfirmBodCtx.put("userLogin",userLogin);
+            
+            //create a Map for getting result of service getProductInventoryAvailable
+            Map gpiaResult = FastMap.newInstance();
+            
+            gpiaResult = dispatcher.runSync("getProductInventoryAvailable",gpiaCtx );
+            Debug.logInfo("==============gpiaResult===== "+gpiaResult, module);
+            
+            String availableToPromiseTotal = gpiaResult.get("availableToPromiseTotal").toString();
+            
+            try {
+                if (value.equals(availableToPromiseTotal) ) {  
+                    Debug.logInfo("==========Both Values are same  =====",module);
+                } else {
+                    Map receiveInventoryProductResult = FastMap.newInstance();
+                    //sevice for receiveInventoryProduct in InventoryItem
+                    receiveInventoryProductResult = dispatcher.runSync("receiveInventoryProduct",receiveInventoryCtx );
+                    Debug.logInfo("==============receiveInventoryProductResult===== "+receiveInventoryProductResult, module);
+                    if(ServiceUtil.isError(receiveInventoryProductResult)){
+                        errorList.add("Error Running Service receiveInventoryProduct");
+                    }
+                }
+            } catch(GenericServiceException gse) {
+                String errMessageForcreateOagisMessageInfo = "Error Running Service receiveInventoryProduct";
+                Debug.logError(gse, errMessageForcreateOagisMessageInfo, module);
+            }
+            try {
+                Map oagisMessageInfoResult = FastMap.newInstance();
+                //service for creating OagisMessageInfo  
+                oagisMessageInfoResult = dispatcher.runSync("createOagisMessageInfo", oagisMessageInfoCtx);
+                Debug.logInfo("==============oagisMessageInfoResult===== "+oagisMessageInfoResult, module);
+                if(ServiceUtil.isError(oagisMessageInfoResult)){
+                    errorList.add("Error Running Service createOagisMessageInfo");
+                }
+            } catch(GenericServiceException gse) {
+                String errMessageForcreateOagisMessageInfo = "Error Running Service createOagisMessageInfo";
+                Debug.logError(gse, errMessageForcreateOagisMessageInfo, module);
+            }
+            //create List for Getting FacilityContactMech
+            List facilityContactMechs = FastList.newInstance();
+            
+            facilityContactMechs = delegator.findByAnd("FacilityContactMech", UtilMisc.toMap("facilityId", "WebStoreWarehouse"));
+            Iterator fcmIter  = facilityContactMechs.iterator();
+            while(fcmIter.hasNext()) {
+                facilityContactMech = (GenericValue) fcmIter.next();
+                contactMechId = facilityContactMech.getString("contactMechId");
+                contactMech = delegator.findByPrimaryKey("ContactMech", UtilMisc.toMap("contactMechId", contactMechId));
+                contactMechTypeId = contactMech.getString("contactMechTypeId");
+                if (contactMechTypeId.equals("EMAIL_ADDRESS")) {
+                    emailString = contactMech.getString("infoString");
+                }
+            }
+            //create Map for availableToPromiseTotal
+            Map atptMap = FastMap.newInstance();
+            atptMap.put("qoh", availableToPromiseTotal);
+            //create Map for getting value of ProductStoreEmailSetting
+            GenericValue psesMap = null;
+            psesMap  =   delegator.findByPrimaryKey("ProductStoreEmailSetting", UtilMisc.toMap("productStoreId", "9001", "emailType", "PRDS_OAGIS_CONFIRM"));
+            
+            if(psesMap.get("bodyScreenLocation") != null) {
+                //create a Map for services sendMailFromScreen
+                Map notifyCtx = FastMap.newInstance();
+                String fromAddress = psesMap.getString("fromAddress");
+                notifyCtx.put("sendFrom", fromAddress);
+                String ccAddress = psesMap.getString("ccAddress");
+                notifyCtx.put("sendCc", ccAddress);
+                String bccAddress = psesMap.getString("bccAddress");
+                notifyCtx.put("sendBcc", bccAddress);
+                String contentType = psesMap.getString("contentType");
+                notifyCtx.put("contentType", contentType);
+                String subject = psesMap.getString("subject");
+                notifyCtx.put("subject", subject);
+                String bodyScreenUri = psesMap.getString("bodyScreenLocation");
+                notifyCtx.put("bodyScreenUri", bodyScreenUri);
+                Map bodyParameters = FastMap.newInstance();
+                bodyParameters.put("atptMap", atptMap);
+                notifyCtx.put("bodyParameters", bodyParameters);
+                notifyCtx.put("sendTo", emailString);
+                //service for sending emailNotification
+                dispatcher.runSync("sendMailFromScreen", notifyCtx);
+            }
+        } catch (Exception e) {
+            String errMessageReceiveInventoryProduct = "Error During Entity Interaction   ";
+            Debug.logError(e, errMessageReceiveInventoryProduct, module);
+            errorList.add("Error During Entity Interaction");
+        }
+        StringBuffer successString = new StringBuffer();
+        if (errorList.size() > 0) {
+            Iterator errorListIter = errorList.iterator();
+            while (errorListIter.hasNext()) {
+                String errorMsg = (String) errorListIter.next();
+                successString.append(errorMsg);
+                if (errorListIter.hasNext()) {
+                    successString.append(", ");
+                }
+            }
+            try {
+                 if(successString.length() > 0){
+                    //send confirm bod
+                    Map scbCtx = FastMap.newInstance();
+                    scbCtx = dispatcher.runSync("sendConfirmBod",sendConfirmBodCtx );
+                    Debug.logInfo("==========scbCtx======"+ scbCtx,module);
+                 }
+            } catch(GenericServiceException gse) {    
+                String errMessageForsendConfirmBod = gse.getMessage();
+                Debug.logError(gse, errMessageForsendConfirmBod, module);
+            }    
+        }
+        return ServiceUtil.returnError("Service not Implemented");
+    }
+    public static Map receivePoAcknowledgement(DispatchContext ctx, Map context) {
+        InputStream in = (InputStream) context.get("inputStream");
+        OutputStream out = (OutputStream) context.get("outputStream");
+        LocalDispatcher dispatcher = ctx.getDispatcher();
+        GenericDelegator delegator = ctx.getDelegator();
+       // GenericValue userLogin = (GenericValue) context.get("userLogin");
+        List errorList = FastList.newInstance();
+        
+        Map sendConfirmBodCtx = FastMap.newInstance();
+        
+        try {
+            GenericValue userLogin = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", "admin"));
+
+            // parse the message
+            Document doc = UtilXml.readXmlDocument(in, true, "ReceivePoAcknowledge");
+            Element receivePoElement = doc.getDocumentElement();
+            receivePoElement.normalize();
+                                    
+            Element docCtrlAreaElement = UtilXml.firstChildElement(receivePoElement, "N1:CNTROLAREA");
+            Element docSenderElement = UtilXml.firstChildElement(docCtrlAreaElement, "N1:SENDER");
+            Element docBsrElement = UtilXml.firstChildElement(docCtrlAreaElement, "N1:BSR");
+
+            String bsrVerb = UtilXml.childElementValue(docBsrElement, "N2:VERB");
+            String bsrNoun = UtilXml.childElementValue(docBsrElement, "N2:NOUN");
+            String bsrRevision = UtilXml.childElementValue(docBsrElement, "N2:REVISION");
+            String logicalId = UtilXml.childElementValue(docSenderElement, "N2:LOGICALID");
+            String component = UtilXml.childElementValue(docSenderElement, "N2:COMPONENT");
+            String task = UtilXml.childElementValue(docSenderElement, "N2:TASK");
+            String referenceId = UtilXml.childElementValue(docSenderElement, "N2:REFERENCEID");
+            String confirmation = UtilXml.childElementValue(docSenderElement, "N2:CONFIRMATION");
+            String language = UtilXml.childElementValue(docSenderElement, "N2:LANGUAGE");
+            String codePage = UtilXml.childElementValue(docSenderElement, "N2:CODEPAGE");
+            String authId = UtilXml.childElementValue(docSenderElement, "N2:AUTHID");
+            
+            Element dataAreaElement = UtilXml.firstChildElement(receivePoElement, "n:DATAAREA");
+            Element acknowledgeDeliveryElement = UtilXml.firstChildElement(dataAreaElement, "n:ACKNOWLEDGE_DELIVERY");
+            Element receiptHdrElement = UtilXml.firstChildElement(acknowledgeDeliveryElement, "n:RECEIPTHDR");
+            Element qtyElement = UtilXml.firstChildElement(receiptHdrElement, "N1:QUANTITY");
+            
+            String itemQty = UtilXml.childElementValue(qtyElement, "N2:VALUE");
+            String sign = UtilXml.childElementValue(qtyElement, "N2:SIGN");
+            String productId = UtilXml.childElementValue(receiptHdrElement, "N2:ITEM");
+            String receivedDate = UtilXml.childElementValue(receiptHdrElement, "N1:DATETIME");
+            
+            Element invDetailElement = UtilXml.firstChildElement(receiptHdrElement, "n:INVDETAIL");
+            
+            String serialNumber = UtilXml.childElementValue(invDetailElement, "N2:SERIALNUM");
+            
+            Element documentRefElement = UtilXml.firstChildElement(receiptHdrElement, "N1:DOCUMNTREF");
+            String orderTypeId = UtilXml.childElementValue(documentRefElement, "N2:DOCTYPE");
+            String orderId = UtilXml.childElementValue(documentRefElement, "N2:DOCUMENTID");
+            String lineNum = UtilXml.childElementValue(documentRefElement, "N2:LINENUM");
+            
+            // prepare map to create inventory against PO
+            Map cipCtx = new HashMap();
+            String inventoryItemTypeId = null;
+            if (serialNumber.length() == 0) {
+                inventoryItemTypeId = "NON_SERIAL_INV_ITEM";
+            }
+            else {
+                inventoryItemTypeId = "SERIALIZED_INV_ITEM";
+                cipCtx.put("serialNumber", serialNumber);
+            }
+            // sign handling for items
+            double quantityAccepted = 0.0;
+            double quantityRejected = 0.0;
+            if (sign.equals("+")) {
+                quantityAccepted = Double.parseDouble(itemQty);
+                quantityRejected= 0.0;
+            } else {
+                  quantityRejected = Double.parseDouble(itemQty);
+                  quantityAccepted = 0.0;
+            }
+            //prepare Map for receiveInventoryProduct
+            cipCtx.put("facilityId", "WebStoreWarehouse");
+            cipCtx.put("productId", productId);
+            cipCtx.put("inventoryItemTypeId", inventoryItemTypeId);
+            cipCtx.put("quantityAccepted", new Double(quantityAccepted));
+            cipCtx.put("quantityRejected", new Double(quantityRejected));
+            cipCtx.put("userLogin", userLogin);
+            cipCtx.put("orderId", orderId);
+            Map riResult = null;
+            Map comiResult = null;
+            
+            try {
+                Debug.logInfo("==========riResult======" ,module);
+                riResult = dispatcher.runSync("receiveInventoryProduct", cipCtx);
+                Debug.logInfo("==========riResult======"+ riResult ,module);
+            } catch (GenericServiceException gse) {
+                if(ServiceUtil.isError(riResult)){
+                    errorList.add("Error running method receiveInventoryProduct");
+                }
+                String errMessageForreceiveInventoryProduct = gse.getMessage();
+                Debug.logError(gse, errMessageForreceiveInventoryProduct, module);
+            }
+            //prepare Map for ConfirmBod Service
+            sendConfirmBodCtx.put("logicalId",logicalId);
+            sendConfirmBodCtx.put("component",component);
+            sendConfirmBodCtx.put("task",task);
+            sendConfirmBodCtx.put("referenceId",referenceId);
+            sendConfirmBodCtx.put("userLogin",userLogin);
+            sendConfirmBodCtx.put("confirmation", confirmation);
+            
+            // prepare map to store BOD information
+            Map comiCtx = new HashMap();
+            
+            Date date = new Date();
+            Timestamp timestamp;
+            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'Z");
+            
+            try{
+                date = dateFormat.parse(receivedDate);    
+            } catch (ParseException e) {
+                Debug.logError(e, "Error parsing Date", module);
+            }
+            timestamp = new Timestamp(date.getTime());
+
+            comiCtx.put("logicalId", logicalId);
+            comiCtx.put("authId", authId);
+            comiCtx.put("referenceId", referenceId);
+            comiCtx.put("receivedDate", timestamp);
+            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("orderId", orderId);
+            comiCtx.put("userLogin", userLogin);
+            try {
+                comiResult = dispatcher.runSync("createOagisMessageInfo", comiCtx);
+                Debug.logInfo("==========comiResult======"+ comiResult ,module);
+            } catch (GenericServiceException gse) {
+                
+                if(ServiceUtil.isError(riResult)){
+                    errorList.add("Error running method createOagisMessageInfo");
+                }
+                String errMessageForcreateOagisMessageInfo = gse.getMessage();
+                Debug.logError(gse, errMessageForcreateOagisMessageInfo, module);
+            }
+        } catch (Exception e) {
+            String errMessageReceiveInventoryProduct = e.getMessage();
+            Debug.logError(e, errMessageReceiveInventoryProduct, module);
+            errorList.add("Error During Entity Interaction");
+        }
+        StringBuffer successString = new StringBuffer();
+        if (errorList.size() > 0) {
+            Iterator errorListIter = errorList.iterator();
+            while (errorListIter.hasNext()) {
+                String errorMsg = (String) errorListIter.next();
+                successString.append(errorMsg);
+                if (errorListIter.hasNext()) {
+                    successString.append(", ");
+                }
+            }
+            try {
+                 if(successString.length() > 0){
+                    //send confirm bod
+                    Map scbCtx = FastMap.newInstance();
+                    scbCtx = dispatcher.runSync("sendConfirmBod",sendConfirmBodCtx );
+                    Debug.logInfo("==========scbCtx======"+ scbCtx,module);
+                 }
+            } catch(GenericServiceException gse) {    
+                String errMessageForsendConfirmBod = gse.getMessage();
+                Debug.logError(gse, errMessageForsendConfirmBod, module);
+            }    
+        }
+        return ServiceUtil.returnError("Error in Processing");
+    }
+    
+    public static Map receiveRmaAcknowledge(DispatchContext ctx, Map context) {
+        InputStream in = (InputStream) context.get("inputStream");
+        OutputStream out = (OutputStream) context.get("outputStream");
+        LocalDispatcher dispatcher = ctx.getDispatcher();
+        GenericDelegator delegator = ctx.getDelegator();
+       // GenericValue userLogin = (GenericValue) context.get("userLogin");
+        List errorList = FastList.newInstance();
+        //Map for confirmBod service
+        Map sendConfirmBodCtx = FastMap.newInstance();
+        
+        try {
+            GenericValue userLogin = delegator.findByPrimaryKey("UserLogin", UtilMisc.toMap("userLoginId", "admin"));
+
+            // parse the message
+            Document doc = UtilXml.readXmlDocument(in, true, "receiveRmaAcknowledge");
+            Element receivePoElement = doc.getDocumentElement();
+            receivePoElement.normalize();
+            Element docCtrlAreaElement = UtilXml.firstChildElement(receivePoElement, "N1:CNTROLAREA");
+            Element docSenderElement = UtilXml.firstChildElement(docCtrlAreaElement, "N1:SENDER");
+            Element docBsrElement = UtilXml.firstChildElement(docCtrlAreaElement, "N1:BSR");
+            
+            String bsrVerb = UtilXml.childElementValue(docBsrElement, "N2:VERB");
+            String bsrNoun = UtilXml.childElementValue(docBsrElement, "N2:NOUN");
+            String bsrRevision = UtilXml.childElementValue(docBsrElement, "N2:REVISION");
+            
+            String logicalId = UtilXml.childElementValue(docSenderElement, "N2:LOGICALID");
+            String component = UtilXml.childElementValue(docSenderElement, "N2:COMPONENT");
+            String task = UtilXml.childElementValue(docSenderElement, "N2:TASK");
+            String referenceId = UtilXml.childElementValue(docSenderElement, "N2:REFERENCEID");
+            String confirmation = UtilXml.childElementValue(docSenderElement, "N2:CONFIRMATION");
+            String language = UtilXml.childElementValue(docSenderElement, "N2:LANGUAGE");
+            String codePage = UtilXml.childElementValue(docSenderElement, "N2:CODEPAGE");
+            String authId = UtilXml.childElementValue(docSenderElement, "N2:AUTHID");
+            
+            Element dataAreaElement = UtilXml.firstChildElement(receivePoElement, "n:DATAAREA");
+            Element acknowledgeDeliveryElement = UtilXml.firstChildElement(dataAreaElement, "n:ACKNOWLEDGE_DELIVERY");
+            Element receiptHdrElement = UtilXml.firstChildElement(acknowledgeDeliveryElement, "n:RECEIPTHDR");
+            Element qtyElement = UtilXml.firstChildElement(receiptHdrElement, "N1:QUANTITY");
+            
+            String itemQty = UtilXml.childElementValue(qtyElement, "N2:VALUE");
+            String sign = UtilXml.childElementValue(qtyElement, "N2:SIGN");
+            String sku = UtilXml.childElementValue(receiptHdrElement, "N2:ITEM");
+            String receivedDate = UtilXml.childElementValue(receiptHdrElement, "N1:DATETIME");
+            
+            Element invDetailElement = UtilXml.firstChildElement(receiptHdrElement, "n:INVDETAIL");
+            
+            String serialNumber = UtilXml.childElementValue(invDetailElement, "N2:SERIALNUM");
+            String invItemStatus = UtilXml.childElementValue(receiptHdrElement, "N2:DISPOSITN");
+            
+            Element documentRefElement = UtilXml.firstChildElement(receiptHdrElement, "N1:DOCUMNTREF");
+            
+            String orderTypeId = UtilXml.childElementValue(documentRefElement, "N2:DOCTYPE");
+            String returnId = UtilXml.childElementValue(documentRefElement, "N2:DOCUMENTID");
+            String lineNum = UtilXml.childElementValue(documentRefElement, "N2:LINENUM");
+            
+            GenericValue returnHeader = null;
+            
+            //Map Declaration
+            Map urhCtx = new HashMap();
+            Map comiCtx = new HashMap();
+            Map cipCtx = new HashMap();
+            Map urhResult = null;
+            
+            String orderId = null;
+            
+            if (returnId != null) {
+                returnHeader = delegator.findByPrimaryKey("ReturnHeader", UtilMisc.toMap("returnId", returnId));
+                if (returnHeader.getString("statusId").equals("RETURN_ACCEPTED")) {
+                    urhCtx.put("returnId", returnId);
+                    urhCtx.put("statusId", "RETURN_COMPLETED");
+                    urhCtx.put("userLogin", userLogin);
+                    try {
+                      urhResult = dispatcher.runSync("updateReturnHeader", urhCtx);
+                      Debug.logInfo("==============urhResult===== " + urhResult, module);
+                    
+                    } catch (GenericServiceException gse) {
+                        if(ServiceUtil.isError(urhResult)) {
+                            errorList.add("Error running method receiveInventoryProduct");
+                            Debug.logInfo("==========urhResult======"+ urhResult, module);
+                        }
+                        String errMessageForcreateOagisMessageInfo = "Error Running Service sendConfirmBod";
+                        Debug.logError(gse, errMessageForcreateOagisMessageInfo, module);  
+                    }
+                    GenericValue returnItem = EntityUtil.getFirst(delegator.findByAnd("ReturnItem", UtilMisc.toMap("returnId", returnId)));
+                    orderId = returnItem.getString("orderId");
+                }
+            }
+            String inventoryItemTypeId = null;
+            if (serialNumber.length() == 0) {
+                inventoryItemTypeId = "NON_SERIAL_INV_ITEM";
+            }
+            else {
+                
+                inventoryItemTypeId = "SERIALIZED_INV_ITEM";
+                cipCtx.put("serialNumber", serialNumber);
+            }
+            // sign handling for items
+            double quantityAccepted = 0.0;
+            double quantityRejected = 0.0;
+            if (sign.equals("+")) {
+                quantityAccepted = Double.parseDouble(itemQty);
+                quantityRejected= 0.0;
+            } else {
+                  quantityRejected = Double.parseDouble(itemQty);
+                  quantityAccepted = 0.0;
+            }
+            GenericValue inventoryItem = null;
+            inventoryItem = EntityUtil.getFirst(delegator.findByAnd("InventoryItem", UtilMisc.toMap("serialNumber", serialNumber)));
+            Debug.logInfo("==============inventoryItem===== " + inventoryItem , module);
+            String productId = inventoryItem.getString("productId");
+            if (productId.compareTo(sku) != 0) {
+                productId = sku;
+            }
+            if ( invItemStatus.equals("ReceivedTOAvailable") || invItemStatus.equals("NotAvailableTOAvailable")) {
+                cipCtx.put("statusId", "INV_AVAILABLE");    
+            } else if ( invItemStatus.equals("ReceivedTONotAvailable") || invItemStatus.equals("AvailableTONotAvailable") ) {
+                cipCtx.put("statusId", "INV_ON_HOLD");
+            }
+            
+           // prepare Map for ConfirmBod Service
+            sendConfirmBodCtx.put("logicalId",logicalId);
+            sendConfirmBodCtx.put("component",component);
+            sendConfirmBodCtx.put("task",task);
+            sendConfirmBodCtx.put("referenceId",referenceId);
+            sendConfirmBodCtx.put("userLogin",userLogin);
+            
+            //prepare MAp for receiveInventoryProduct service
+            String facilityId = "WebStoreWarehouse";
+            String locationSeqId = "FAC_AVNET_AZ";
+            cipCtx.put("facilityId", facilityId);
+            cipCtx.put("locationSeqId", locationSeqId);
+            cipCtx.put("productId", productId);
+            cipCtx.put("inventoryItemTypeId", inventoryItemTypeId);
+            cipCtx.put("quantityAccepted", new Double(quantityAccepted));
+            cipCtx.put("quantityRejected", new Double(quantityRejected));
+            cipCtx.put("userLogin", userLogin);
+            cipCtx.put("ownerPartyId", "DemoCustomer");
+            Map riResult = null;
+            Map comiResult = null;
+            
+            try {
+                riResult = dispatcher.runSync("receiveInventoryProduct", cipCtx);
+                Debug.logInfo("==========riResult======"+ riResult, module);
+            } catch (GenericServiceException gse) {
+                
+                if(ServiceUtil.isError(riResult)){
+                    errorList.add("Error running method receiveInventoryProduct");
+                }
+                String errMessageForreceiveInventoryProduct = gse.getMessage();
+                Debug.logError(gse, errMessageForreceiveInventoryProduct, module);
+            }
+
+            // prepare map to store BOD informatio  
+            Date date = new Date();
+            Timestamp timestamp=null;
+            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSS'Z'Z");
+            
+            try{
+                date = dateFormat.parse(receivedDate);    
+            } catch (ParseException e) {
+                Debug.logError(e, "Error parsing Date", module);
+            }
+            
+            timestamp = new Timestamp(date.getTime());
+            
+            comiCtx.put("logicalId", logicalId);
+            comiCtx.put("authId", authId);
+            comiCtx.put("referenceId", referenceId);
+            comiCtx.put("receivedDate", timestamp);
+            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", "RETURN_COMPLETED");        
+            comiCtx.put("returnId", returnId);
+            comiCtx.put("orderId", orderId);
+            comiCtx.put("userLogin", userLogin);
+            try {
+                comiResult = dispatcher.runSync("createOagisMessageInfo", comiCtx);
+                    Debug.logInfo("==========result======"+ comiResult, module);
+                    
+            } catch (GenericServiceException gse) {
+                if(ServiceUtil.isError(comiResult)){
+                    errorList.add("Error running method createOagisMessageInfo");
+                }
+                String errMessageForcreateOagisMessageInfo = gse.getMessage();
+                Debug.logError(gse, errMessageForcreateOagisMessageInfo, module);
+            }
+        } catch (Exception e) {
+            String errMessage = e.getMessage();
+            Debug.logError(e, errMessage, module);
+            errorList.add("Error During Entity Interaction");
+        }
+        
+        StringBuffer successString = new StringBuffer();
+        if (errorList.size() > 0) {
+            Iterator errorListIter = errorList.iterator();
+            while (errorListIter.hasNext()) {
+                String errorMsg = (String) errorListIter.next();
+                successString.append(errorMsg);
+                if (errorListIter.hasNext()) {
+                    successString.append(", ");
+                }
+            }
+            try {
+                 if(successString.length() > 0){
+                    //send confirm bod
+                    Map scbCtx = FastMap.newInstance();
+                    scbCtx = dispatcher.runSync("sendConfirmBod",sendConfirmBodCtx );
+                    Debug.logInfo("==========scbCtx======"+ scbCtx,module);
+                 }
+            } catch(GenericServiceException gse) {    
+                String errMessageForsendConfirmBod = gse.getMessage();
+                Debug.logError(gse, errMessageForsendConfirmBod, module);
+            }    
+        }
         return ServiceUtil.returnError("Service not Implemented");
     }
-}
\ No newline at end of file
+}

Modified: ofbiz/trunk/specialpurpose/oagis/webapp/oagis/WEB-INF/controller.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/webapp/oagis/WEB-INF/controller.xml?view=diff&rev=551599&r1=551598&r2=551599
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/webapp/oagis/WEB-INF/controller.xml (original)
+++ ofbiz/trunk/specialpurpose/oagis/webapp/oagis/WEB-INF/controller.xml Thu Jun 28 08:42:04 2007
@@ -198,6 +198,19 @@
         <event type="stream" invoke="syncInventory"/>
         <response name="success" type="none"/>
     </request-map>
+    
+    <request-map uri="receivePoAcknowledge">
+        <security https="true" auth="false"/>
+        <event type="stream" invoke="receivePoAcknowledge"/>
+        <response name="success" type="none"/>
+    </request-map>
+
+    <request-map uri="receiveRmaAcknowledge">
+        <security https="true" auth="false"/>
+        <event type="stream" invoke="receiveRmaAcknowledge"/>
+        <response name="success" type="none"/>
+    </request-map>
+
 
 
     <!-- end of request mappings -->

Added: ofbiz/trunk/specialpurpose/oagis/webapp/oagis/message/oagisEmailNotification.ftl
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/webapp/oagis/message/oagisEmailNotification.ftl?view=auto&rev=551599
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/webapp/oagis/message/oagisEmailNotification.ftl (added)
+++ ofbiz/trunk/specialpurpose/oagis/webapp/oagis/message/oagisEmailNotification.ftl Thu Jun 28 08:42:04 2007
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+    <head>
+        <title>Oagis Recieve Inventory Email Notification</title>
+        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
+
+    </head>
+    <body>
+        <div class="email_wrapper">
+            <p>
+                <a href="#">Available Quantity On Hand </a>
+            </p>
+            <div style="clear:both">${atptMap?if_exists}</div>
+            <div style="height:600px"></div>
+        </div>
+    </body>
+</html>

Added: ofbiz/trunk/specialpurpose/oagis/widget/EmailOagisMessageScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/widget/EmailOagisMessageScreens.xml?view=auto&rev=551599
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/widget/EmailOagisMessageScreens.xml (added)
+++ ofbiz/trunk/specialpurpose/oagis/widget/EmailOagisMessageScreens.xml Thu Jun 28 08:42:04 2007
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+    
+    http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">
+    <screen name="EmailOagisMessageNotification">
+        <section>
+            <widgets>
+                <platform-specific>
+                    <html>
+                        <html-template location="component://oagis/webapp/oagis//message/oagisEmailNotification.ftl"/>
+                    </html>
+                </platform-specific>
+            </widgets>
+        </section>
+    </screen>
+    
+</screens>