You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by as...@apache.org on 2009/10/05 08:42:35 UTC

svn commit: r821697 - /ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java

Author: ashish
Date: Mon Oct  5 06:42:34 2009
New Revision: 821697

URL: http://svn.apache.org/viewvc?rev=821697&view=rev
Log:
Recent changes done by Adrian for GenericDelegator -> Delegator.
The build was failing due to changes missed from UpsServices.java file.

Modified:
    ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java?rev=821697&r1=821696&r2=821697&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java Mon Oct  5 06:42:34 2009
@@ -43,6 +43,7 @@
 import org.ofbiz.base.util.HttpClient;
 import org.ofbiz.base.util.HttpClientException;
 import org.ofbiz.base.util.StringUtil;
+import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilNumber;
@@ -97,6 +98,7 @@
         Locale locale = (Locale) context.get("locale");
         String shipmentId = (String) context.get("shipmentId");
         String shipmentRouteSegmentId = (String) context.get("shipmentRouteSegmentId");
+        String isSaturdayDelivery = (String) context.get("isSaturdayDelivery");
 
         boolean shipmentUpsSaveCertificationInfo = "true".equals(UtilProperties.getPropertyValue("shipment", "shipment.ups.save.certification.info"));
         String shipmentUpsSaveCertificationPath = UtilProperties.getPropertyValue("shipment", "shipment.ups.save.certification.path");
@@ -128,7 +130,6 @@
             if (UtilValidate.isNotEmpty(shipmentRouteSegment.getString("carrierServiceStatusId")) && !"SHRSCS_NOT_STARTED".equals(shipmentRouteSegment.getString("carrierServiceStatusId"))) {
                 return ServiceUtil.returnError("ERROR: The Carrier Service Status for ShipmentRouteSegment " + shipmentRouteSegmentId + " of Shipment " + shipmentId + ", is [" + shipmentRouteSegment.getString("carrierServiceStatusId") + "], but must be not-set or [SHRSCS_NOT_STARTED] to perform the UPS Shipment Confirm operation.");
             }
-
             // Get Origin Info
             GenericValue originPostalAddress = shipmentRouteSegment.getRelatedOne("OriginPostalAddress");
             if (originPostalAddress == null) {
@@ -428,11 +429,16 @@
             Element serviceElement = UtilXml.addChildElement(shipmentElement, "Service", shipmentConfirmRequestDoc);
             String carrierServiceCode = carrierShipmentMethod.getString("carrierServiceCode");
             UtilXml.addChildElementValue(serviceElement, "Code", carrierServiceCode, shipmentConfirmRequestDoc);
+            
+            Element shipmentServiceOptionsElement = UtilXml.addChildElement(shipmentElement, "ShipmentServiceOptions", shipmentConfirmRequestDoc);
+
+            if (UtilValidate.isNotEmpty(isSaturdayDelivery) && isSaturdayDelivery.equalsIgnoreCase("Y") && carrierServiceCode.equalsIgnoreCase("01")) {
+            Element saturdayDeliveryElement = UtilXml.addChildElement(shipmentServiceOptionsElement, "SaturdayDelivery", shipmentConfirmRequestDoc);
+            }
 
             // Child of Shipment: ShipmentServiceOptions
             List internationalServiceCodes = UtilMisc.toList("07", "08", "54", "65");
             if (internationalServiceCodes.contains(carrierServiceCode)) {
-                Element shipmentServiceOptionsElement = UtilXml.addChildElement(shipmentElement, "ShipmentServiceOptions", shipmentConfirmRequestDoc);
                 Element internationalFormsElement = UtilXml.addChildElement(shipmentServiceOptionsElement, "InternationalForms", shipmentConfirmRequestDoc);
                 UtilXml.addChildElementValue(internationalFormsElement, "FormType", "01", shipmentConfirmRequestDoc);
                 List<GenericValue> shipmentItems = shipment.getRelated("ShipmentItem");
@@ -2193,8 +2199,8 @@
         }
         return handleUpsRateInquireResponse(rateResponseDocument);
 
-
     }
+    
 
     public static Map<String, Object> upsAddressValidation(DispatchContext dctx, Map<String, ? extends Object> context) {
 
@@ -2692,6 +2698,207 @@
         return ServiceUtil.returnSuccess(UtilProperties.getMessage("OrderUiLabels", "OrderReturnLabelEmailSuccessful", locale));
     }
     
+    public static Map<String, Object> upsTimeInTransit(DispatchContext dctx, Map<String, ? extends Object> context) {
+        Delegator delegator = dctx.getDelegator();
+        
+        // prepare the data
+        String productStoreId = (String) context.get("productStoreId");
+        String destinationPostalCode = (String) context.get("destinationPostalCode");
+        String destinationCountryCode = (String) context.get("destinationCountryCode");
+        List<Map<String, Object>> shippingDates = FastList.newInstance();
+        
+     // locate the ship-from address based on the product store's default facility
+        GenericValue shipFromAddress = null;
+        GenericValue originCountryGeo = null;
+        GenericValue productStore = ProductStoreWorker.getProductStore(productStoreId, delegator);
+        if (productStore != null && productStore.get("inventoryFacilityId") != null) {
+            GenericValue facilityContactMech = ContactMechWorker.getFacilityContactMechByPurpose(delegator, productStore.getString("inventoryFacilityId"), UtilMisc.toList("SHIP_ORIG_LOCATION", "PRIMARY_LOCATION"));
+            if (facilityContactMech != null) {
+                try {
+                    shipFromAddress = delegator.findByPrimaryKey("PostalAddress", UtilMisc.toMap("contactMechId", facilityContactMech.getString("contactMechId")));
+                    originCountryGeo = shipFromAddress.getRelatedOne("CountryGeo");
+                } catch (GenericEntityException e) {
+                    Debug.logError(e, module);
+                }
+            }
+        }
+        
+     // prepare the XML Document
+        Document timeInTransitRequestDoc = UtilXml.makeEmptyXmlDocument("TimeInTransitRequest");
+        Element timeInTransitRequestElement = timeInTransitRequestDoc.getDocumentElement();
+        timeInTransitRequestElement.setAttribute("xml:lang", "en-US");
+
+        // XML request header
+        Element requestElement = UtilXml.addChildElement(timeInTransitRequestElement, "Request", timeInTransitRequestDoc);
+        Element transactionReferenceElement = UtilXml.addChildElement(requestElement, "TransactionReference", timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(transactionReferenceElement, "CustomerContext", "TNT_D Origin Country Code", timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(transactionReferenceElement, "XpciVersion", "1.0001", timeInTransitRequestDoc);
+
+        // RequestAction is always TimeInTransit
+        UtilXml.addChildElementValue(requestElement, "RequestAction", "TimeInTransit", timeInTransitRequestDoc);
+        
+        
+        Element transitFromElement = UtilXml.addChildElement(timeInTransitRequestElement, "TransitFrom", timeInTransitRequestDoc);
+        Element fromAddressArtifactFormatElement = UtilXml.addChildElement(transitFromElement, "AddressArtifactFormat", timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(fromAddressArtifactFormatElement, "CountryCode", originCountryGeo.getString("geoCode"), timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(fromAddressArtifactFormatElement, "PostcodePrimaryLow", shipFromAddress.getString("postalCode"), timeInTransitRequestDoc);
+        
+        Element transitToElement = UtilXml.addChildElement(timeInTransitRequestElement, "TransitTo", timeInTransitRequestDoc);
+        Element toAddressArtifactFormatElement = UtilXml.addChildElement(transitToElement, "AddressArtifactFormat", timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(toAddressArtifactFormatElement, "CountryCode", destinationCountryCode, timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(toAddressArtifactFormatElement, "PostcodePrimaryLow", destinationPostalCode, timeInTransitRequestDoc);
+        
+        
+        Element shipmentWeightElement = UtilXml.addChildElement(timeInTransitRequestElement, "ShipmentWeight", timeInTransitRequestDoc);
+        Element unitOfMeasurementElement = UtilXml.addChildElement(shipmentWeightElement, "UnitOfMeasurement", timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(unitOfMeasurementElement, "Code", "LBS", timeInTransitRequestDoc);
+        UtilXml.addChildElementValue(shipmentWeightElement, "Weight", UtilProperties.getPropertyValue("shipment", "shipment.default.weight.value"), timeInTransitRequestDoc);
+        
+        
+        SimpleDateFormat formatter = new SimpleDateFormat(dateFormatString);
+        String pickUpDate = formatter.format(UtilDateTime.nowTimestamp());
+        UtilXml.addChildElementValue(timeInTransitRequestElement, "PickupDate", pickUpDate, timeInTransitRequestDoc);
+        
+        String timeInTransitRequestString = null;
+        try {
+        	timeInTransitRequestString = UtilXml.writeXmlDocument(timeInTransitRequestDoc);
+        } catch (IOException e) {
+            String ioeErrMsg = "Error writing the TimeInTransitRequest XML Document to a String: " + e.toString();
+            Debug.logError(e, ioeErrMsg, module);
+            return ServiceUtil.returnFailure(ioeErrMsg);
+        }
+
+        // create AccessRequest XML doc
+        Document accessRequestDocument = createAccessRequestDocument("shipment.properties");
+        String accessRequestString = null;
+        try {
+            accessRequestString = UtilXml.writeXmlDocument(accessRequestDocument);
+        } catch (IOException e) {
+            String ioeErrMsg = "Error writing the AccessRequest XML Document to a String: " + e.toString();
+            Debug.logError(e, ioeErrMsg, module);
+            return ServiceUtil.returnFailure(ioeErrMsg);
+        }
+
+        // prepare the access/inquire request string
+        StringBuilder xmlString = new StringBuilder();
+        xmlString.append(accessRequestString);
+        xmlString.append(timeInTransitRequestString);
+        if (Debug.verboseOn()) Debug.logVerbose(xmlString.toString(), module);
+        // send the request
+        String timeInTransitResponseString = null;
+        try {
+        	Debug.log("======request========"+xmlString.toString());
+        	timeInTransitResponseString = sendUpsRequest("TimeInTransit", xmlString.toString());
+        	
+        	Debug.log("======response==1======"+timeInTransitResponseString);
+        } catch (UpsConnectException e) {
+            String uceErrMsg = "Error sending UPS request for UPS Time In Transit: " + e.toString();
+            Debug.logError(e, uceErrMsg, module);
+            return ServiceUtil.returnFailure(uceErrMsg);
+        }
+        Debug.logVerbose(timeInTransitResponseString, module);
+        Document timeInTransitResponseDocument = null;
+        try {
+        	
+        	 timeInTransitResponseDocument = UtilXml.readXmlDocument(timeInTransitResponseString, false);
+        	 Debug.logInfo("The generated string is ======= " + UtilXml.writeXmlDocument(timeInTransitResponseDocument), module);
+            //Debug.log("======timeInTransitResponseDocument======"+timeInTransitResponseDocument);
+        } catch (SAXException e2) {
+            String excErrMsg = "Error parsing the TimeInTransitResponse: " + e2.toString();
+            Debug.logError(e2, excErrMsg, module);
+            return ServiceUtil.returnFailure(excErrMsg);
+        } catch (ParserConfigurationException e2) {
+             String excErrMsg = "Error parsing the TimeInTransitResponse: " + e2.toString();
+             Debug.logError(e2, excErrMsg, module);
+             return ServiceUtil.returnFailure(excErrMsg);
+        } catch (IOException e2) {
+            String excErrMsg = "Error parsing the TimeInTransitResponse: " + e2.toString();
+            Debug.logError(e2, excErrMsg, module);
+            return ServiceUtil.returnFailure(excErrMsg);
+        }
+        
+        Map<String,Object> upsTimeInTransitResponse = handleUpsTimeInTransitResponse(timeInTransitResponseDocument);
+        Debug.log("======upsTimeInTransitResponse======"+upsTimeInTransitResponse);
+        Map<String,String> upsDateCodeMap = (Map) upsTimeInTransitResponse.get("upsDateCodeMap");
+        Debug.log("======upsDateCodeMap======"+upsDateCodeMap);
+        GenericValue carrierShipmentMethod = null;
+        // Filtering out dates of shipping methods which are not configured in ProductStoreShipmentMeth entity.
+        try {
+            List <GenericValue> productStoreShipmentMethods = delegator.findByAnd("ProductStoreShipmentMethView", UtilMisc.toMap("productStoreId", productStoreId));
+            for (GenericValue productStoreShipmentMethod :productStoreShipmentMethods) {
+                if ("UPS".equals(productStoreShipmentMethod.get("partyId"))) {
+                    Map<String,Object> thisUpsDateCodeMap = FastMap.newInstance();
+                    carrierShipmentMethod = delegator.findOne("CarrierShipmentMethod", false, UtilMisc.toMap("shipmentMethodTypeId",
+                            productStoreShipmentMethod.getString("shipmentMethodTypeId"), "partyId", productStoreShipmentMethod.getString("partyId"), "roleTypeId", productStoreShipmentMethod.getString("roleTypeId")));
+                    String serviceCode = carrierShipmentMethod.getString("carrierServiceCode");
+                    for (String thisServiceCode : upsDateCodeMap.keySet()) {
+                        if (serviceCode.equals(thisServiceCode)) {
+                            String Date = upsDateCodeMap.get(serviceCode);
+                            thisUpsDateCodeMap.put(serviceCode,Date);
+                            shippingDates.add(thisUpsDateCodeMap);
+                        }
+                    }
+                }
+            }
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+        }
+        Debug.log("=======result=============="+shippingDates);
+        return UtilMisc.toMap(
+                "shippingDates", shippingDates,
+                ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS);
+
+    }
+    
+    public static Map<String, Object> handleUpsTimeInTransitResponse(Document timeInTransitResponseDocument) {
+        // process TrackResponse, update data as needed
+        Element timeInTransitResponseElement = timeInTransitResponseDocument.getDocumentElement();
+        
+        Debug.log("======timeInTransitResponseElement=========="+timeInTransitResponseElement);
+
+        // handle Response element info
+        Element responseElement = UtilXml.firstChildElement(timeInTransitResponseElement, "Response");
+        //Element responseTransactionReferenceElement = UtilXml.firstChildElement(responseElement, "TransactionReference");
+        //String responseTransactionReferenceCustomerContext = UtilXml.childElementValue(responseTransactionReferenceElement, "CustomerContext");
+        //String responseTransactionReferenceXpciVersion = UtilXml.childElementValue(responseTransactionReferenceElement, "XpciVersion");
+
+        String responseStatusCode = UtilXml.childElementValue(responseElement, "ResponseStatusCode");
+        //String responseStatusDescription = UtilXml.childElementValue(responseElement, "ResponseStatusDescription");
+        List<Object> errorList = FastList.newInstance();
+        UpsServices.handleErrors(responseElement, errorList);
+
+        if ("1".equals(responseStatusCode)) {
+            List<? extends Element> serviceSummaries = UtilXml.childElementList(timeInTransitResponseElement, "ServiceSummary");
+            Map<String, String> dateMap = FastMap.newInstance();
+            if (serviceSummaries == null || serviceSummaries.size() == 0) {
+                return ServiceUtil.returnError("No Dates available at this time");
+            } else {
+                for (Element element: serviceSummaries) {
+                    // get service
+                    Element service = UtilXml.firstChildElement(element, "Service");
+                    String serviceCode = UtilXml.childElementValue(service, "Code");
+
+                    // get Date
+                    Element EstimatedArrival = UtilXml.firstChildElement(element, "EstimatedArrival");
+                    String Date = UtilXml.childElementValue(EstimatedArrival, "Date");
+
+                    dateMap.put(serviceCode, Date);
+                }
+            }
+
+            Debug.log("UPS Rate Map : " + dateMap, module);
+
+            Map<String, Object> resp = ServiceUtil.returnSuccess();
+            resp.put("upsDateCodeMap", dateMap);
+            Debug.log("========resp=====2891====="+resp);
+            return resp;
+        } else {
+            errorList.add("Error status code : " + responseStatusCode);
+            return ServiceUtil.returnFailure(errorList);
+        }
+    }
+
+    
     public static Map<String, Object> upsShipmentAlternateRatesInquiry(DispatchContext dctx, Map<String, ? extends Object> context) {
         Delegator delegator = dctx.getDelegator();
          



Re: svn commit: r821697 - /ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java

Posted by Ashish Vijaywargiya <vi...@gmail.com>.
Sorry Guys - Changes reverted in trunk r821699.
The commit done by Adrian was correct and there were no problem in
UpsServices.java code.

--
Ashish

On Mon, Oct 5, 2009 at 12:12 PM, <as...@apache.org> wrote:

> Author: ashish
> Date: Mon Oct  5 06:42:34 2009
> New Revision: 821697
>
> URL: http://svn.apache.org/viewvc?rev=821697&view=rev
> Log:
> Recent changes done by Adrian for GenericDelegator -> Delegator.
> The build was failing due to changes missed from UpsServices.java file.
>
> Modified:
>
>  ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java
>
> Modified:
> ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java
> URL:
> http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java?rev=821697&r1=821696&r2=821697&view=diff
>
> ==============================================================================
> ---
> ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java
> (original)
> +++
> ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java
> Mon Oct  5 06:42:34 2009
> @@ -43,6 +43,7 @@
>  import org.ofbiz.base.util.HttpClient;
>  import org.ofbiz.base.util.HttpClientException;
>  import org.ofbiz.base.util.StringUtil;
> +import org.ofbiz.base.util.UtilDateTime;
>  import org.ofbiz.base.util.UtilGenerics;
>  import org.ofbiz.base.util.UtilMisc;
>  import org.ofbiz.base.util.UtilNumber;
> @@ -97,6 +98,7 @@
>         Locale locale = (Locale) context.get("locale");
>         String shipmentId = (String) context.get("shipmentId");
>         String shipmentRouteSegmentId = (String)
> context.get("shipmentRouteSegmentId");
> +        String isSaturdayDelivery = (String)
> context.get("isSaturdayDelivery");
>
>         boolean shipmentUpsSaveCertificationInfo =
> "true".equals(UtilProperties.getPropertyValue("shipment", "
> shipment.ups.save.certification.info"));
>         String shipmentUpsSaveCertificationPath =
> UtilProperties.getPropertyValue("shipment",
> "shipment.ups.save.certification.path");
> @@ -128,7 +130,6 @@
>             if
> (UtilValidate.isNotEmpty(shipmentRouteSegment.getString("carrierServiceStatusId"))
> &&
> !"SHRSCS_NOT_STARTED".equals(shipmentRouteSegment.getString("carrierServiceStatusId")))
> {
>                 return ServiceUtil.returnError("ERROR: The Carrier Service
> Status for ShipmentRouteSegment " + shipmentRouteSegmentId + " of Shipment "
> + shipmentId + ", is [" +
> shipmentRouteSegment.getString("carrierServiceStatusId") + "], but must be
> not-set or [SHRSCS_NOT_STARTED] to perform the UPS Shipment Confirm
> operation.");
>             }
> -
>             // Get Origin Info
>             GenericValue originPostalAddress =
> shipmentRouteSegment.getRelatedOne("OriginPostalAddress");
>             if (originPostalAddress == null) {
> @@ -428,11 +429,16 @@
>             Element serviceElement =
> UtilXml.addChildElement(shipmentElement, "Service",
> shipmentConfirmRequestDoc);
>             String carrierServiceCode =
> carrierShipmentMethod.getString("carrierServiceCode");
>             UtilXml.addChildElementValue(serviceElement, "Code",
> carrierServiceCode, shipmentConfirmRequestDoc);
> +
> +            Element shipmentServiceOptionsElement =
> UtilXml.addChildElement(shipmentElement, "ShipmentServiceOptions",
> shipmentConfirmRequestDoc);
> +
> +            if (UtilValidate.isNotEmpty(isSaturdayDelivery) &&
> isSaturdayDelivery.equalsIgnoreCase("Y") &&
> carrierServiceCode.equalsIgnoreCase("01")) {
> +            Element saturdayDeliveryElement =
> UtilXml.addChildElement(shipmentServiceOptionsElement, "SaturdayDelivery",
> shipmentConfirmRequestDoc);
> +            }
>
>             // Child of Shipment: ShipmentServiceOptions
>             List internationalServiceCodes = UtilMisc.toList("07", "08",
> "54", "65");
>             if (internationalServiceCodes.contains(carrierServiceCode)) {
> -                Element shipmentServiceOptionsElement =
> UtilXml.addChildElement(shipmentElement, "ShipmentServiceOptions",
> shipmentConfirmRequestDoc);
>                 Element internationalFormsElement =
> UtilXml.addChildElement(shipmentServiceOptionsElement, "InternationalForms",
> shipmentConfirmRequestDoc);
>                 UtilXml.addChildElementValue(internationalFormsElement,
> "FormType", "01", shipmentConfirmRequestDoc);
>                 List<GenericValue> shipmentItems =
> shipment.getRelated("ShipmentItem");
> @@ -2193,8 +2199,8 @@
>         }
>         return handleUpsRateInquireResponse(rateResponseDocument);
>
> -
>     }
> +
>
>     public static Map<String, Object> upsAddressValidation(DispatchContext
> dctx, Map<String, ? extends Object> context) {
>
> @@ -2692,6 +2698,207 @@
>         return
> ServiceUtil.returnSuccess(UtilProperties.getMessage("OrderUiLabels",
> "OrderReturnLabelEmailSuccessful", locale));
>     }
>
> +    public static Map<String, Object> upsTimeInTransit(DispatchContext
> dctx, Map<String, ? extends Object> context) {
> +        Delegator delegator = dctx.getDelegator();
> +
> +        // prepare the data
> +        String productStoreId = (String) context.get("productStoreId");
> +        String destinationPostalCode = (String)
> context.get("destinationPostalCode");
> +        String destinationCountryCode = (String)
> context.get("destinationCountryCode");
> +        List<Map<String, Object>> shippingDates = FastList.newInstance();
> +
> +     // locate the ship-from address based on the product store's default
> facility
> +        GenericValue shipFromAddress = null;
> +        GenericValue originCountryGeo = null;
> +        GenericValue productStore =
> ProductStoreWorker.getProductStore(productStoreId, delegator);
> +        if (productStore != null &&
> productStore.get("inventoryFacilityId") != null) {
> +            GenericValue facilityContactMech =
> ContactMechWorker.getFacilityContactMechByPurpose(delegator,
> productStore.getString("inventoryFacilityId"),
> UtilMisc.toList("SHIP_ORIG_LOCATION", "PRIMARY_LOCATION"));
> +            if (facilityContactMech != null) {
> +                try {
> +                    shipFromAddress =
> delegator.findByPrimaryKey("PostalAddress", UtilMisc.toMap("contactMechId",
> facilityContactMech.getString("contactMechId")));
> +                    originCountryGeo =
> shipFromAddress.getRelatedOne("CountryGeo");
> +                } catch (GenericEntityException e) {
> +                    Debug.logError(e, module);
> +                }
> +            }
> +        }
> +
> +     // prepare the XML Document
> +        Document timeInTransitRequestDoc =
> UtilXml.makeEmptyXmlDocument("TimeInTransitRequest");
> +        Element timeInTransitRequestElement =
> timeInTransitRequestDoc.getDocumentElement();
> +        timeInTransitRequestElement.setAttribute("xml:lang", "en-US");
> +
> +        // XML request header
> +        Element requestElement =
> UtilXml.addChildElement(timeInTransitRequestElement, "Request",
> timeInTransitRequestDoc);
> +        Element transactionReferenceElement =
> UtilXml.addChildElement(requestElement, "TransactionReference",
> timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(transactionReferenceElement,
> "CustomerContext", "TNT_D Origin Country Code", timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(transactionReferenceElement,
> "XpciVersion", "1.0001", timeInTransitRequestDoc);
> +
> +        // RequestAction is always TimeInTransit
> +        UtilXml.addChildElementValue(requestElement, "RequestAction",
> "TimeInTransit", timeInTransitRequestDoc);
> +
> +
> +        Element transitFromElement =
> UtilXml.addChildElement(timeInTransitRequestElement, "TransitFrom",
> timeInTransitRequestDoc);
> +        Element fromAddressArtifactFormatElement =
> UtilXml.addChildElement(transitFromElement, "AddressArtifactFormat",
> timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(fromAddressArtifactFormatElement,
> "CountryCode", originCountryGeo.getString("geoCode"),
> timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(fromAddressArtifactFormatElement,
> "PostcodePrimaryLow", shipFromAddress.getString("postalCode"),
> timeInTransitRequestDoc);
> +
> +        Element transitToElement =
> UtilXml.addChildElement(timeInTransitRequestElement, "TransitTo",
> timeInTransitRequestDoc);
> +        Element toAddressArtifactFormatElement =
> UtilXml.addChildElement(transitToElement, "AddressArtifactFormat",
> timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(toAddressArtifactFormatElement,
> "CountryCode", destinationCountryCode, timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(toAddressArtifactFormatElement,
> "PostcodePrimaryLow", destinationPostalCode, timeInTransitRequestDoc);
> +
> +
> +        Element shipmentWeightElement =
> UtilXml.addChildElement(timeInTransitRequestElement, "ShipmentWeight",
> timeInTransitRequestDoc);
> +        Element unitOfMeasurementElement =
> UtilXml.addChildElement(shipmentWeightElement, "UnitOfMeasurement",
> timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(unitOfMeasurementElement, "Code",
> "LBS", timeInTransitRequestDoc);
> +        UtilXml.addChildElementValue(shipmentWeightElement, "Weight",
> UtilProperties.getPropertyValue("shipment",
> "shipment.default.weight.value"), timeInTransitRequestDoc);
> +
> +
> +        SimpleDateFormat formatter = new
> SimpleDateFormat(dateFormatString);
> +        String pickUpDate = formatter.format(UtilDateTime.nowTimestamp());
> +        UtilXml.addChildElementValue(timeInTransitRequestElement,
> "PickupDate", pickUpDate, timeInTransitRequestDoc);
> +
> +        String timeInTransitRequestString = null;
> +        try {
> +               timeInTransitRequestString =
> UtilXml.writeXmlDocument(timeInTransitRequestDoc);
> +        } catch (IOException e) {
> +            String ioeErrMsg = "Error writing the TimeInTransitRequest XML
> Document to a String: " + e.toString();
> +            Debug.logError(e, ioeErrMsg, module);
> +            return ServiceUtil.returnFailure(ioeErrMsg);
> +        }
> +
> +        // create AccessRequest XML doc
> +        Document accessRequestDocument =
> createAccessRequestDocument("shipment.properties");
> +        String accessRequestString = null;
> +        try {
> +            accessRequestString =
> UtilXml.writeXmlDocument(accessRequestDocument);
> +        } catch (IOException e) {
> +            String ioeErrMsg = "Error writing the AccessRequest XML
> Document to a String: " + e.toString();
> +            Debug.logError(e, ioeErrMsg, module);
> +            return ServiceUtil.returnFailure(ioeErrMsg);
> +        }
> +
> +        // prepare the access/inquire request string
> +        StringBuilder xmlString = new StringBuilder();
> +        xmlString.append(accessRequestString);
> +        xmlString.append(timeInTransitRequestString);
> +        if (Debug.verboseOn()) Debug.logVerbose(xmlString.toString(),
> module);
> +        // send the request
> +        String timeInTransitResponseString = null;
> +        try {
> +               Debug.log("======request========"+xmlString.toString());
> +               timeInTransitResponseString =
> sendUpsRequest("TimeInTransit", xmlString.toString());
> +
> +
> Debug.log("======response==1======"+timeInTransitResponseString);
> +        } catch (UpsConnectException e) {
> +            String uceErrMsg = "Error sending UPS request for UPS Time In
> Transit: " + e.toString();
> +            Debug.logError(e, uceErrMsg, module);
> +            return ServiceUtil.returnFailure(uceErrMsg);
> +        }
> +        Debug.logVerbose(timeInTransitResponseString, module);
> +        Document timeInTransitResponseDocument = null;
> +        try {
> +
> +                timeInTransitResponseDocument =
> UtilXml.readXmlDocument(timeInTransitResponseString, false);
> +                Debug.logInfo("The generated string is ======= " +
> UtilXml.writeXmlDocument(timeInTransitResponseDocument), module);
> +
>  //Debug.log("======timeInTransitResponseDocument======"+timeInTransitResponseDocument);
> +        } catch (SAXException e2) {
> +            String excErrMsg = "Error parsing the TimeInTransitResponse: "
> + e2.toString();
> +            Debug.logError(e2, excErrMsg, module);
> +            return ServiceUtil.returnFailure(excErrMsg);
> +        } catch (ParserConfigurationException e2) {
> +             String excErrMsg = "Error parsing the TimeInTransitResponse:
> " + e2.toString();
> +             Debug.logError(e2, excErrMsg, module);
> +             return ServiceUtil.returnFailure(excErrMsg);
> +        } catch (IOException e2) {
> +            String excErrMsg = "Error parsing the TimeInTransitResponse: "
> + e2.toString();
> +            Debug.logError(e2, excErrMsg, module);
> +            return ServiceUtil.returnFailure(excErrMsg);
> +        }
> +
> +        Map<String,Object> upsTimeInTransitResponse =
> handleUpsTimeInTransitResponse(timeInTransitResponseDocument);
> +
>  Debug.log("======upsTimeInTransitResponse======"+upsTimeInTransitResponse);
> +        Map<String,String> upsDateCodeMap = (Map)
> upsTimeInTransitResponse.get("upsDateCodeMap");
> +        Debug.log("======upsDateCodeMap======"+upsDateCodeMap);
> +        GenericValue carrierShipmentMethod = null;
> +        // Filtering out dates of shipping methods which are not
> configured in ProductStoreShipmentMeth entity.
> +        try {
> +            List <GenericValue> productStoreShipmentMethods =
> delegator.findByAnd("ProductStoreShipmentMethView",
> UtilMisc.toMap("productStoreId", productStoreId));
> +            for (GenericValue productStoreShipmentMethod
> :productStoreShipmentMethods) {
> +                if
> ("UPS".equals(productStoreShipmentMethod.get("partyId"))) {
> +                    Map<String,Object> thisUpsDateCodeMap =
> FastMap.newInstance();
> +                    carrierShipmentMethod =
> delegator.findOne("CarrierShipmentMethod", false,
> UtilMisc.toMap("shipmentMethodTypeId",
> +
>  productStoreShipmentMethod.getString("shipmentMethodTypeId"), "partyId",
> productStoreShipmentMethod.getString("partyId"), "roleTypeId",
> productStoreShipmentMethod.getString("roleTypeId")));
> +                    String serviceCode =
> carrierShipmentMethod.getString("carrierServiceCode");
> +                    for (String thisServiceCode : upsDateCodeMap.keySet())
> {
> +                        if (serviceCode.equals(thisServiceCode)) {
> +                            String Date = upsDateCodeMap.get(serviceCode);
> +                            thisUpsDateCodeMap.put(serviceCode,Date);
> +                            shippingDates.add(thisUpsDateCodeMap);
> +                        }
> +                    }
> +                }
> +            }
> +        } catch (GenericEntityException e) {
> +            Debug.logError(e, module);
> +        }
> +        Debug.log("=======result=============="+shippingDates);
> +        return UtilMisc.toMap(
> +                "shippingDates", shippingDates,
> +                ModelService.RESPONSE_MESSAGE,
> ModelService.RESPOND_SUCCESS);
> +
> +    }
> +
> +    public static Map<String, Object>
> handleUpsTimeInTransitResponse(Document timeInTransitResponseDocument) {
> +        // process TrackResponse, update data as needed
> +        Element timeInTransitResponseElement =
> timeInTransitResponseDocument.getDocumentElement();
> +
> +
>  Debug.log("======timeInTransitResponseElement=========="+timeInTransitResponseElement);
> +
> +        // handle Response element info
> +        Element responseElement =
> UtilXml.firstChildElement(timeInTransitResponseElement, "Response");
> +        //Element responseTransactionReferenceElement =
> UtilXml.firstChildElement(responseElement, "TransactionReference");
> +        //String responseTransactionReferenceCustomerContext =
> UtilXml.childElementValue(responseTransactionReferenceElement,
> "CustomerContext");
> +        //String responseTransactionReferenceXpciVersion =
> UtilXml.childElementValue(responseTransactionReferenceElement,
> "XpciVersion");
> +
> +        String responseStatusCode =
> UtilXml.childElementValue(responseElement, "ResponseStatusCode");
> +        //String responseStatusDescription =
> UtilXml.childElementValue(responseElement, "ResponseStatusDescription");
> +        List<Object> errorList = FastList.newInstance();
> +        UpsServices.handleErrors(responseElement, errorList);
> +
> +        if ("1".equals(responseStatusCode)) {
> +            List<? extends Element> serviceSummaries =
> UtilXml.childElementList(timeInTransitResponseElement, "ServiceSummary");
> +            Map<String, String> dateMap = FastMap.newInstance();
> +            if (serviceSummaries == null || serviceSummaries.size() == 0)
> {
> +                return ServiceUtil.returnError("No Dates available at this
> time");
> +            } else {
> +                for (Element element: serviceSummaries) {
> +                    // get service
> +                    Element service = UtilXml.firstChildElement(element,
> "Service");
> +                    String serviceCode =
> UtilXml.childElementValue(service, "Code");
> +
> +                    // get Date
> +                    Element EstimatedArrival =
> UtilXml.firstChildElement(element, "EstimatedArrival");
> +                    String Date =
> UtilXml.childElementValue(EstimatedArrival, "Date");
> +
> +                    dateMap.put(serviceCode, Date);
> +                }
> +            }
> +
> +            Debug.log("UPS Rate Map : " + dateMap, module);
> +
> +            Map<String, Object> resp = ServiceUtil.returnSuccess();
> +            resp.put("upsDateCodeMap", dateMap);
> +            Debug.log("========resp=====2891====="+resp);
> +            return resp;
> +        } else {
> +            errorList.add("Error status code : " + responseStatusCode);
> +            return ServiceUtil.returnFailure(errorList);
> +        }
> +    }
> +
> +
>     public static Map<String, Object>
> upsShipmentAlternateRatesInquiry(DispatchContext dctx, Map<String, ? extends
> Object> context) {
>         Delegator delegator = dctx.getDelegator();
>
>
>
>