svn commit: r551185 - /ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java

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

svn commit: r551185 - /ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java

apatel-2
Author: apatel
Date: Wed Jun 27 07:53:34 2007
New Revision: 551185

URL: http://svn.apache.org/viewvc?view=rev&rev=551185
Log:
Some cleanups in showShipment message.

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

Modified: ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java?view=diff&rev=551185&r1=551184&r2=551185
==============================================================================
--- ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java (original)
+++ ofbiz/trunk/specialpurpose/oagis/src/org/ofbiz/oagis/OagisShipmentServices.java Wed Jun 27 07:53:34 2007
@@ -31,6 +31,9 @@
 import java.util.Map;
 import java.sql.Timestamp;
 
+import javolution.util.FastMap;
+import javolution.util.FastList;
+
 import org.w3c.dom.Document;
 
 import org.ofbiz.service.DispatchContext;
@@ -43,10 +46,13 @@
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.util.EntityUtil;
 
+import org.w3c.dom.Element;
+
 import org.ofbiz.widget.fo.FoFormRenderer;
 import org.ofbiz.widget.screen.ScreenRenderer;
 import org.ofbiz.widget.html.HtmlScreenRenderer;
 
+
 public class OagisShipmentServices {
     
     public static final String module = OagisShipmentServices.class.getName();
@@ -57,8 +63,178 @@
     public static Map showShipment(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 = null;
         try{
             Document doc = UtilXml.readXmlDocument(in, true, "ShowShipment");
+            userLogin = delegator.findByPrimaryKey("UserLogin",UtilMisc.toMap("userLoginId","admin"));            
+            Element shipmentElement = doc.getDocumentElement();
+            shipmentElement.normalize();
+            Map BODMap = new FastMap();
+            
+            Element controllAreaElement = UtilXml.firstChildElement(shipmentElement, "N1:CNTROLAREA");            
+            Element BSRElement = UtilXml.firstChildElement(controllAreaElement, "N1:BSR");                      
+            String bsrVerb = UtilXml.childElementValue(BSRElement, "N2:VERB");
+            String bsrNoun = UtilXml.childElementValue(BSRElement, "N2:NOUN");
+            String bsrRevision = UtilXml.childElementValue(BSRElement, "/N2:REVISION");
+            
+            BODMap.put("bsrVerb",bsrVerb);
+            BODMap.put("bsrNoun",bsrNoun);
+            BODMap.put("bsrRevision",bsrRevision);
+            
+            Element senderElement = UtilXml.firstChildElement(controllAreaElement, "N1:SENDER");
+            String logicalId = UtilXml.childElementValue(senderElement, "N2:LOGICALID");
+            String component = UtilXml.childElementValue(senderElement, "N2:COMPONENT");
+            String task = UtilXml.childElementValue(senderElement, "N2:TASK");
+            String reference = UtilXml.childElementValue(senderElement, "N2:REFERENCEID");
+            String confirmation = UtilXml.childElementValue(senderElement, "N2:CONFIRMATION");
+            String language = UtilXml.childElementValue(senderElement, "N2:LANGUAGE");
+            String codePage = UtilXml.childElementValue(senderElement, "N2:CODEPAGE");
+            String authId = UtilXml.childElementValue(senderElement, "N2:AUTHID");
+            
+            BODMap.put("logicalId",logicalId);
+            BODMap.put("component",component);
+            BODMap.put("task",task);
+            BODMap.put("referenceId", reference);
+            BODMap.put("confirmation", confirmation);
+            BODMap.put("authId", authId);
+            
+            String controllAreaDateTime = UtilXml.childElementValue(controllAreaElement, "N1:DATETIMEANY");            
+            
+            Element dataAreaElement = UtilXml.firstChildElement(shipmentElement, "n:DATAAREA");
+            Element showShipmentElement = UtilXml.firstChildElement(dataAreaElement, "n:SHOW_SHIPMENT");
+            Element shipment_N_Element = UtilXml.firstChildElement(showShipmentElement, "n:SHIPMENT");
+            String dataAreaDateTime = UtilXml.childElementValue(shipment_N_Element, "N1:DATETIMEANY");
+            
+            Element operAMT = UtilXml.firstChildElement(shipment_N_Element, "N1:OPERAMT");
+            String operAMTValue = UtilXml.childElementValue(operAMT, "N2:VALUE");
+            String operAMTNum =UtilXml.childElementValue(operAMT,"N2:NUMOFDEC");
+            String operAMTSign =UtilXml.childElementValue(operAMT,"N2:SIGN");
+            String operAMTCurrency =UtilXml.childElementValue(operAMT,"N2:CURRENCY");
+                        
+            String documentId =UtilXml.childElementValue(shipment_N_Element,"N2:DOCUMENTID");
+            
+            String description =UtilXml.childElementValue(shipment_N_Element,"N2:DESCRIPTN");
+            
+            Element partner = UtilXml.firstChildElement(shipment_N_Element, "N1:PARTNER");
+            String partnerName =UtilXml.childElementValue(partner,"N2:NAME");
+            String partnerType =UtilXml.childElementValue(partner,"N2:PARTNRTYPE");
+            String partnerCurrency =UtilXml.childElementValue(partner,"N2:CURRENCY");
+            
+            Element partnerAddress = UtilXml.firstChildElement(partner, "N1:ADDRESS");
+            String partnerAddLine =UtilXml.childElementValue(partnerAddress,"N2:ADDRLINE");
+            String partnerCity =UtilXml.childElementValue(partnerAddress,"N2:CITY");
+            String partnerCountry =UtilXml.childElementValue(partnerAddress,"N2:COUNTRY");
+            String partnerFax =UtilXml.childElementValue(partnerAddress,"N2:FAX");
+            String partnerPostalCode =UtilXml.childElementValue(partnerAddress,"N2:POSTALCODE");
+            String partnerState =UtilXml.childElementValue(partnerAddress,"N2:STATEPROVN");
+            String partnerTelePhn =UtilXml.childElementValue(partnerAddress,"N2:TELEPHONE");
+            
+            Element partnerContact = UtilXml.firstChildElement(partner, "N1:CONTACT");
+            String partnerContactName =UtilXml.childElementValue(partnerContact,"N2:NAME");
+            String partnerContactEmail =UtilXml.childElementValue(partnerContact,"N2:FAX");
+            String partnerContactTelePhn =UtilXml.childElementValue(partnerContact,"N2:TELEPHONE");
+            
+            Element shipUnitElement = UtilXml.firstChildElement(showShipmentElement, "n:SHIPUNIT");
+            Element shipUnitQuantity = UtilXml.firstChildElement(shipUnitElement, "N1:QUANTITY");
+            String shipUnitQuantityValue =UtilXml.childElementValue(shipUnitQuantity,"N2:VALUE");
+            String shipUnitQuantityNum =UtilXml.childElementValue(shipUnitQuantity,"N2:NUMOFDEC");
+            String shipUnitQuantitySign =UtilXml.childElementValue(shipUnitQuantity,"N2:SIGN");
+            String shipUnitQuantityUOM =UtilXml.childElementValue(shipUnitQuantity,"N2:UOM");
+            
+            String shipUnitCarrier =UtilXml.childElementValue(shipUnitElement,"N2:CARRIER");
+            String shipUnitTrackingId =UtilXml.childElementValue(shipUnitElement,"N2:TRACKINGID");
+            String shipUnitSeqId =UtilXml.childElementValue(shipUnitElement,"N2:SHPUNITSEQ");
+            String shipUnitTOT =UtilXml.childElementValue(shipUnitElement,"N2:SHPUNITTOT");
+            
+            Element invItem = UtilXml.firstChildElement(shipUnitElement, "n:INVITEM");
+            Element invItemQuantity = UtilXml.firstChildElement(invItem, "N1:QUANTITY");
+            String invItemQuantityValue =UtilXml.childElementValue(invItemQuantity,"N2:VALUE");
+            String invItemQuantityNum =UtilXml.childElementValue(invItemQuantity,"N2:NUMOFDEC");
+            String invItemQuantitySign =UtilXml.childElementValue(invItemQuantity,"N2:SIGN");
+            String invItemQuantityUOM =UtilXml.childElementValue(invItemQuantity,"N2:UOM");
+            String invItemItem =UtilXml.childElementValue(invItem,"N2:ITEM");
+            
+            Element invDetail = UtilXml.firstChildElement(invItem, "n:INVDETAIL");
+            String invDetailSerialNum =UtilXml.childElementValue(invDetail,"N1:SERIALNUM");
+            
+            /*Code for Issuing the Items*/
+            List orderItemShipGrpInvReservations = FastList.newInstance();            
+            Map reserveOrderItemInventoryCtx = FastMap.newInstance();
+            Map result = null;
+            //GenericValue inventoryItem = null;
+            try {                
+                GenericValue shipment = delegator.findByPrimaryKey("Shipment", UtilMisc.toMap("shipmentId", documentId));                
+                String shipGroupSeqId = shipment.getString("primaryShipGroupSeqId");
+                
+                List shipmentItems = delegator.findByAnd("ShipmentItem", UtilMisc.toMap("shipmentId", documentId, "productId",invItemItem));
+                GenericValue shipmentItem =  EntityUtil.getFirst(shipmentItems);
+                String shipmentItemSeqId = shipmentItem.getString("shipmentItemSeqId");
+                //Now we have enough keys to lookup the right OrderShipment
+                List orderShipments = delegator.findByAnd("OrderShipment", UtilMisc.toMap("shipmentId", documentId, "shipmentItemSeqId",shipmentItemSeqId));
+                GenericValue orderShipment =   EntityUtil.getFirst(orderShipments);
+                String orderId = orderShipment.getString("orderId");
+                String orderItemSeqId = orderShipment.getString("orderItemSeqId");
+                
+                // Look for reservations in some status.
+                orderItemShipGrpInvReservations = delegator.findByAnd("OrderItemShipGrpInvRes", UtilMisc.toMap("orderId", orderId,"orderItemSeqId",orderItemSeqId,"shipGroupSeqId",shipGroupSeqId));                
+                GenericValue orderItemShipGrpInvReservation =   EntityUtil.getFirst(orderItemShipGrpInvReservations);
+                GenericValue inventoryItem = delegator.findByPrimaryKey("InventoryItem", UtilMisc.toMap("inventoryItemId",orderItemShipGrpInvReservation.get("inventoryItemId")));
+                
+                // Check if the inventory Item we reserved is same as Item shipped
+                // If not then reserve Inventory Item
+                String serialNumber = inventoryItem.getString("serialNumber");
+                if(invDetailSerialNum != null) {
+                    //The if codition is for chacking serialized Inventory.
+                    if(!serialNumber.equals(invDetailSerialNum)) {
+                        // Check if the Inventory we want is available
+                        inventoryItem = EntityUtil.getFirst(delegator.findByAnd("InventoryItem", UtilMisc.toMap("productId", invItemItem, "serialNumber", invDetailSerialNum)));
+                        Debug.logInfo("======== InventoryItem In Else ========="+inventoryItem, module);
+                        reserveOrderItemInventoryCtx.put("inventoryItemId", inventoryItem.getString("inventoryItemId"));
+                        result = dispatcher.runSync("reserveOrderItemInventory", reserveOrderItemInventoryCtx);
+                        
+                        Debug.logInfo("========reserveOrderItemInventory ========="+result, module);
+                    }                    
+                }
+                Map orderItemShipGrpInvResCtx = FastMap.newInstance(); // This Map is for the issueOrderItemShipGrpInvResToShipment service.
+                orderItemShipGrpInvResCtx.put("shipmentId", documentId);
+                orderItemShipGrpInvResCtx.putAll(reserveOrderItemInventoryCtx);                    
+                result = dispatcher.runSync("issueOrderItemShipGrpInvResToShipment", orderItemShipGrpInvResCtx);
+                Debug.logInfo("==============result for issueOrderItemShipGrpInvResToShipment=========="+result, module);
+                
+
+                /*
+                 Here we have to put the code for inserting the Tracking number in ShipmentPackageRouteSegment.
+                 The tracking number is coming from shipUnitTrackingId.
+                */
+                
+                /*
+                //find shipmentRouteSegmentId by the help of shipmentId                
+                GenericValue shipmentRouteSegment = EntityUtil.getFirst(delegator.findByAnd("ShipmentRouteSegment", UtilMisc.toMap("shipmentId",documentId)));              
+                String shipmentRouteSegmentId = (String) shipmentRouteSegment.get("shipmentRouteSegmentId");
+                Debug.logInfo("================shipmentRouteSegmentId============== "+shipmentRouteSegmentId, module);
+              
+                //find shipmentPackageSeqId by the help of shipmentId
+                GenericValue shipmentPackage = EntityUtil.getFirst(delegator.findByAnd("ShipmentPackage", UtilMisc.toMap("shipmentId",documentId)));                
+                String shipmentPackageSeqId = shipmentPackage.getString("shipmentPackageSeqId");
+                Debug.logInfo("==============shipmetPackageSeqId========= "+shipmentPackageSeqId, module);                                    
+                
+                //Code for saving the tracking code..
+                Map map = new FastMap();
+                map.put("shipmentId", documentId);
+                map.put("shipmentRouteSegmentId", shipmentRouteSegmentId);
+                map.put("shipmentPackageSeqId", shipmentPackageSeqId);
+                map.put("trackingCode", shipUnitTrackingId);
+                map.put("userLogin", userLogin);
+                Debug.logInfo("==============ShipmentPackageRouteSeg========= "+map, module);
+                result = dispatcher.runSync("createShipmentPackageRouteSeg", map);
+                Debug.logInfo("==============Here is result========= "+result, module);
+                */
+                
+            } catch (Exception e) {
+                return ServiceUtil.returnError("return error"+e);
+              }
         }catch (Exception e){
             Debug.logError(e, module);
         }