svn commit: r1053074 [1/3] - in /ofbiz/trunk/applications: order/src/org/ofbiz/order/shoppingcart/shipping/ product/config/ product/data/ product/entitydef/ product/servicedef/ product/src/org/ofbiz/shipment/shipment/ product/src/org/ofbiz/shipment/thi...

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

svn commit: r1053074 [1/3] - in /ofbiz/trunk/applications: order/src/org/ofbiz/order/shoppingcart/shipping/ product/config/ product/data/ product/entitydef/ product/servicedef/ product/src/org/ofbiz/shipment/shipment/ product/src/org/ofbiz/shipment/thi...

mrisaliti
Author: mrisaliti
Date: Mon Dec 27 14:19:29 2010
New Revision: 1053074

URL: http://svn.apache.org/viewvc?rev=1053074&view=rev
Log:
UPS use the new Shipment Gateway Config features (OFBIZ-4054)

Modified:
    ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/shipping/ShippingEvents.java
    ofbiz/trunk/applications/product/config/ProductUiLabels.xml
    ofbiz/trunk/applications/product/config/shipment.properties
    ofbiz/trunk/applications/product/data/ShipmentTypeData.xml
    ofbiz/trunk/applications/product/entitydef/entitymodel_shipment.xml
    ofbiz/trunk/applications/product/servicedef/services_shipment.xml
    ofbiz/trunk/applications/product/servicedef/services_shipment_ups.xml
    ofbiz/trunk/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java
    ofbiz/trunk/applications/product/src/org/ofbiz/shipment/thirdparty/ups/UpsServices.java
    ofbiz/trunk/applications/product/widget/facility/ShipmentGatewayConfigForms.xml

Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/shipping/ShippingEvents.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/shipping/ShippingEvents.java?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/shipping/ShippingEvents.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/shipping/ShippingEvents.java Mon Dec 27 14:19:29 2010
@@ -33,6 +33,7 @@ import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.entity.Delegator;
+import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.condition.EntityCondition;
 import org.ofbiz.entity.condition.EntityConditionList;
@@ -272,10 +273,31 @@ public class ShippingEvents {
         }
         return genericShipAmt;
     }
+    
+    public static String getShipmentCustomMethod(Delegator delegator, String shipmentCustomMethodId) {
+        String serviceName = null;
+        GenericValue customMethod = null;
+        try {
+            customMethod = delegator.findOne("CustomMethod", UtilMisc.toMap("customMethodId", shipmentCustomMethodId), false);
+            if (UtilValidate.isNotEmpty(customMethod)) {
+                serviceName = customMethod.getString("customMethodName");
+            }
+        } catch (GenericEntityException e) {
+            Debug.logError(e, module);
+        }
+        return serviceName;
+    }
 
-    public static BigDecimal getExternalShipEstimate(LocalDispatcher dispatcher, GenericValue storeShipMeth, Map context) throws GeneralException {
+    public static BigDecimal getExternalShipEstimate(LocalDispatcher dispatcher, GenericValue storeShipMeth, Map<String, Object> context) throws GeneralException {
+        String shipmentCustomMethodId = storeShipMeth.getString("shipmentCustomMethodId");
+        String serviceName = "";
+        if (UtilValidate.isNotEmpty(shipmentCustomMethodId)) {
+            serviceName = getShipmentCustomMethod(dispatcher.getDelegator(), shipmentCustomMethodId);
+        }
+        if (UtilValidate.isEmpty(serviceName)) {
+            serviceName = storeShipMeth.getString("serviceName");
+        }
         // invoke the external shipping estimate service
-        String serviceName = (String)storeShipMeth.get("serviceName");
         BigDecimal externalShipAmt = null;
         if (serviceName != null) {
             String doEstimates = UtilProperties.getPropertyValue("shipment.properties", "shipment.doratecheck", "true");
@@ -289,16 +311,19 @@ public class ShippingEvents {
                 serviceName = null;
             }
         }
-        if ((serviceName != null)) {
+        if (serviceName != null) {
+            String shipmentGatewayConfigId = storeShipMeth.getString("shipmentGatewayConfigId");
             String configProps = storeShipMeth.getString("configProps");
             if (UtilValidate.isNotEmpty(serviceName)) {
                 // prepare the external service context
                 context.put("serviceConfigProps", configProps);
-
+                context.put("shipmentCustomMethodId", shipmentCustomMethodId);
+                context.put("shipmentGatewayConfigId", shipmentGatewayConfigId);
+                
                 // invoke the service
-                Map serviceResp = null;
+                Map<String, Object> serviceResp = null;
                 try {
-                    Debug.log("Service : " + serviceName + " / " + configProps + " -- " + context, module);
+                    Debug.log("Service : " + serviceName + " / shipmentGatewayConfigId : " + shipmentGatewayConfigId + " / configProps : " + configProps + " -- " + context, module);
                     // because we don't want to blow up too big or rollback the transaction when this happens, always have it run in its own transaction...
                     serviceResp = dispatcher.runSync(serviceName, context, 0, true);
                 } catch (GenericServiceException e) {

Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.xml?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductUiLabels.xml (original)
+++ ofbiz/trunk/applications/product/config/ProductUiLabels.xml Mon Dec 27 14:19:29 2010
@@ -559,17 +559,45 @@
         <value xml:lang="en">Allow Cash On Delivery</value>
         <value xml:lang="it">Permetti pagamento in contanti alla consegna</value>
     </property>
+    <property key="FacilityShipmentUpsApplyToPackagesIsNotConfigured">
+        <value xml:lang="en">Apply to packages is not configured</value>
+        <value xml:lang="it">Applica ai pacchi non è configurato</value>
+    </property>
     <property key="FacilityShipmentUpsBillShipperAccountNumber">
         <value xml:lang="en">Bill Shipper Account Number</value>
         <value xml:lang="it">Numero conto fatturazione/spedizione</value>
     </property>
     <property key="FacilityShipmentUpsConnectTimeout">
-        <value xml:lang="en">Conntect Timeout</value>
+        <value xml:lang="en">Connect Timeout</value>
         <value xml:lang="it">Timeout connessione a UPS</value>
     </property>
     <property key="FacilityShipmentUpsConnectUrl">
         <value xml:lang="en">Conntect URL</value>
-        <value xml:lang="it">URL Connessione a UPS</value>
+        <value xml:lang="it">URL connessione a UPS</value>
+    </property>
+    <property key="FacilityShipmentUpsCodFundsCodeIsNotConfigured">
+        <value xml:lang="en">CodFundsCode is not configured</value>
+        <value xml:lang="it">CodFundsCode non è configurato</value>
+    </property>
+    <property key="FacilityShipmentUpsCurrencyDoesNotMatch">
+        <value xml:lang="en">The Currency Unit of Measure returned ${currency1} is not the same as the original ${currency2}, setting to the new one.</value>
+        <value xml:lang="it">La valuta restituita ${currency1} non è la stessa dell'originale ${currency2}, impostarne un'altra.</value>
+    </property>
+    <property key="FacilityShipmentUpsCustomerClassification">
+        <value xml:lang="en">Customer Classification</value>
+        <value xml:lang="it">Classificazione cliente</value>
+    </property>
+    <property key="FacilityShipmentUpsCustomerClassificationOccasional">
+        <value xml:lang="en">Occasional</value>
+        <value xml:lang="it">Occasionale</value>
+    </property>
+    <property key="FacilityShipmentUpsCustomerClassificationRetail">
+        <value xml:lang="en">Retail</value>
+        <value xml:lang="it">Dettaglio</value>
+    </property>
+    <property key="FacilityShipmentUpsCustomerClassificationWholesale">
+        <value xml:lang="en">Wholesale</value>
+        <value xml:lang="it">Ingrosso</value>
     </property>
     <property key="FacilityShipmentUpsDefaultReturnLabelMemo">
         <value xml:lang="en">Default Return Label Memo</value>
@@ -579,10 +607,194 @@
         <value xml:lang="en">Default Return Label Subject</value>
         <value xml:lang="it">Soggetto di default sull'etichetta del reso</value>
     </property>
+    <property key="FacilityShipmentUpsErrorStatusCode">
+        <value xml:lang="en">Error status code: ${responseStatusCode}</value>
+        <value xml:lang="it">Errore codice di stato: ${responseStatusCode}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorWasAtElement">
+        <value xml:lang="en">The error was at Element ${errorLocationElementName}</value>
+        <value xml:lang="it">L'errore era nell'elemento ${errorLocationElementName}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorWasAtElementAttribute">
+        <value xml:lang="en"> in the attribute ${errorLocationAttributeName}</value>
+        <value xml:lang="it"> nell'attributo ${errorLocationAttributeName}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorWasAtElementFullText">
+        <value xml:lang="en"> full text: ${fullText}</value>
+        <value xml:lang="it"> testo completo: ${fullText}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorMessage">
+        <value xml:lang="en">An error occurred [code:${errorCode}] with severity ${errorSeverity}: ${errorDescription}</value>
+        <value xml:lang="it">Un errore è successo [codice:${errorCode}] con severità ${errorSeverity}: ${errorDescription}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorMessageMinimumRetrySeconds">
+        <value xml:lang="en">; you should wait ${minimumRetrySeconds} seconds before retrying. </value>
+        <value xml:lang="it">; devi aspettare ${minimumRetrySeconds} secondi prima di riprovare. </value>
+    </property>
     <property key="FacilityShipmentUpsFundsCode">
         <value xml:lang="en">Funds for Cash on Delivery</value>
         <value xml:lang="it">Fondi per il pagamento in contanti alla consegna</value>
     </property>
+    <property key="FacilityShipmentUpsIncompleteConnectionURL">
+        <value xml:lang="en">Incomplete connection URL; check your UPS configuration</value>
+        <value xml:lang="it">URL connessione incompleto; verificare la tua configurazione UPS</value>
+    </property>
+    <property key="FacilityShipmentUpsServiceNameCannotBeNull">
+        <value xml:lang="en">UPS service name cannot be null</value>
+        <value xml:lang="it">Nome servizio UPS non può essere vuoto</value>
+    </property>
+    <property key="FacilityShipmentUpsXmlMessageCannotBeNull">
+        <value xml:lang="en">XML message cannot be null</value>
+        <value xml:lang="it">Messaggio XML non può essere vuoto</value>
+    </property>
+     <property key="FacilityShipmentUpsCannotRateEstimatePostalCodeMissing">
+        <value xml:lang="en">Cannot estimate UPS Rate because postal code is missing</value>
+        <value xml:lang="it">Non è possibile stimare la spedizione con UPS perchè il CAP è mancante</value>
+    </property>
+    <property key="FacilityShipmentUpsURLConnectionProblem">
+        <value xml:lang="en">URL Connection problem: ${exception}</value>
+        <value xml:lang="it">Problema connessione URL: ${exception}</value>
+    </property>
+    <property key="FacilityShipmentUpsReceivedNullResponse">
+        <value xml:lang="en">Received a null response</value>
+        <value xml:lang="it">Ricevuta una risposta nulla</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentConfirmResposeWasReceived">
+        <value xml:lang="en">A ShipmentConfirmRespose was received: ${shipmentConfirmResponseString}</value>
+        <value xml:lang="it">Una risposta ShipmentConfirmRespose è stata ricevuta: ${shipmentConfirmResponseString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorDataShipmentAlternateRate">
+        <value xml:lang="en">Error reading or writing Shipment data for UPS Shipment Alternate Rates Inquiry: ${errorString}</value>
+        <value xml:lang="it">Errore leggendo o scrivendo i dati della spedizione stima spedizione alternativa UPS: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorDataShipmentAccept">
+        <value xml:lang="en">Error reading or writing Shipment data for UPS Shipment Accept: ${errorString}</value>
+        <value xml:lang="it">Errore leggendo o scrivendo i dati della spedizione all'accettazione spedizione UPS: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorDataShipmentConfirm">
+        <value xml:lang="en">Error reading or writing Shipment data for UPS Shipment Confirm: ${errorString}</value>
+        <value xml:lang="it">Errore leggendo o scrivendo i dati della spedizione alla conferma spedizione UPS: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorDataShipmentTrack">
+        <value xml:lang="en">Error reading or writing Shipment data for UPS Track Shipment: ${errorString}</value>
+        <value xml:lang="it">Errore leggendo o scrivendo i dati della spedizione della Tracciatura Spedizione UPS: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorDataShipmentVoid">
+        <value xml:lang="en">Error reading or writing Shipment data for UPS Void Shipment: ${errorString}</value>
+        <value xml:lang="it">Errore leggendo o scrivendo i dati della spedizione alla Cancellazione Spedizione UPS: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorMorePackageOnThisShipment">
+        <value xml:lang="en">Error: There are more Packages on this Shipment than there were PackageResults returned from UPS</value>
+        <value xml:lang="it">Errore: Ci sono più pacchi in questa spedizione di quelli che ci sono come PackageResults restituiti da UPS</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorMorePackageResultsWereReturned">
+        <value xml:lang="en">Error: More PackageResults were returned than there are Packages on this Shipment; the TrackingNumber is ${trackingNumber}, the ServiceOptionsCharges were ${ServiceOptionsCharges}</value>
+        <value xml:lang="it">Errore: Molti PackageResults sono stati restituiti più di quelli che ci sono nel pacco della spedizione; il TrackingNumber è ${trackingNumber}, il ServiceOptionsCharges era ${ServiceOptionsCharges}</value>
+    </property>
+  <property key="FacilityShipmentUpsErrorNoPackageResultsWereReturned">
+        <value xml:lang="en">Error: No PackageResults were returned  for the Package ${shipmentPackageSeqId}</value>
+        <value xml:lang="it">Error: No PackageResults were returned  for the Package ${shipmentPackageSeqId}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingBillingWeight">
+        <value xml:lang="en">Error parsing the billingWeight ${billingWeight}:  ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di billingWeight ${billingWeight}: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingAddressVerificationResponse">
+        <value xml:lang="en">Error parsing the AddressVerificationResponse: ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di AddressVerificationResponse: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingRatingServiceSelectionResponse">
+        <value xml:lang="en">Error parsing the RatingServiceSelectionResponse: ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di RatingServiceSelectionResponse: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingServiceOptionsMonetaryValue">
+        <value xml:lang="en">Error parsing the serviceOptionsMonetaryValue ${serviceOptionsMonetaryValue}:  ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di serviceOptionsMonetaryValue ${serviceOptionsMonetaryValue}: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingShipmentAcceptResponse">
+        <value xml:lang="en">Error parsing the ShipmentAcceptResponse: ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di ShipmentAcceptResponse: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingShipmentConfirm">
+        <value xml:lang="en">Error parsing the ShipmentConfirmResponse: ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di ShipmentConfirmResponse: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingTrackResponse">
+        <value xml:lang="en">Error parsing the TrackResponse: ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di TrackResponse: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingTotalMonetaryValue">
+        <value xml:lang="en">Error parsing the totalMonetaryValue ${totalMonetaryValue}:  ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di totalMonetaryValue ${totalMonetaryValue}: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingTransportationMonetaryValue">
+        <value xml:lang="en">Error parsing the transportationMonetaryValue ${transportationMonetaryValue}:  ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di transportationMonetaryValue ${transportationMonetaryValue}: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorParsingVoidShipmentResponse">
+        <value xml:lang="en">Error parsing the VoidShipmentResponse: ${errorString}</value>
+        <value xml:lang="it">Errore di parsing di VoidShipmentResponse: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorSendingAddressVerification">
+        <value xml:lang="en">Error sending UPS request Address Verification: ${errorString}</value>
+        <value xml:lang="it">Errore durante l'invio a UPS di UPS Address Verification: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorSendingRate">
+        <value xml:lang="en">Error sending UPS request for UPS Service Rate: ${errorString}</value>
+        <value xml:lang="it">Errore durante l'invio a UPS di UPS Service Rate: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorSendingShipAccept">
+        <value xml:lang="en">Error sending UPS request for UPS Service ShipAccept: ${errorString}</value>
+        <value xml:lang="it">Errore durante l'invio a UPS di UPS Service ShipAccept: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorSendingShipConfirm">
+        <value xml:lang="en">Error sending UPS request for UPS Service ShipConfirm: ${errorString}</value>
+        <value xml:lang="it">Errore durante l'invio a UPS di UPS Service ShipConfirm: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorSendingTrack">
+        <value xml:lang="en">Error sending UPS request for UPS Service Track: ${errorString}</value>
+        <value xml:lang="it">Errore durante l'invio a UPS di UPS Service Track: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorSendingVoid">
+        <value xml:lang="en">Error sending UPS request for UPS Service Void: ${errorString}</value>
+        <value xml:lang="it">Errore durante l'invio a UPS di UPS Service Void: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorAddressValidationRequestXmlToString">
+        <value xml:lang="en">Error writing the AddressValidationRequest XML Document to a String: ${errorString}</value>
+        <value xml:lang="it">Errore scrivendo il documento XML AddressValidationRequest in stringa: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorRatingServiceSelectionRequestXmlToString">
+        <value xml:lang="en">Error writing the RatingServiceSelectionRequest XML Document to a String: ${errorString}</value>
+        <value xml:lang="it">Errore scrivendo il documento XML RatingServiceSelectionRequest in stringa: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorShipmentAcceptRequestXmlToString">
+        <value xml:lang="en">Error writing the ShipmentAcceptRequest XML Document to a String: ${errorString}</value>
+        <value xml:lang="it">Errore scrivendo il documento XML ShipmentAcceptRequest in stringa: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorShipmentConfirmRequestXmlToString">
+        <value xml:lang="en">Error writing the ShipmentConfirmRequest XML Document to a String: ${errorString}</value>
+        <value xml:lang="it">Errore scrivendo il documento XML ShipmentConfirmRequest in stringa: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorTrackRequestXmlToString">
+        <value xml:lang="en">Error writing the TrackRequest XML Document to a String: ${errorString}</value>
+        <value xml:lang="it">Errore scrivendo il documento XML TrackRequest in stringa: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorAccessRequestXmlToString">
+        <value xml:lang="en">Error writing the AccessRequest XML Document to a String: ${errorString}</value>
+        <value xml:lang="it">Errore scrivendo il documento XML AccessRequest in stringa: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsErrorVoidShipmentRequestXmlToString">
+        <value xml:lang="en">Error writing the VoidShipmentRequest XML Document to a String: ${errorString}</value>
+        <value xml:lang="it">Errore scrivendo il documento XML VoidShipmentRequest in stringa: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsAddressValidationRequireCityOrPostalCode">
+        <value xml:lang="en">Address Validation requires either a city or postalCode</value>
+        <value xml:lang="it">Validazione dell'indirizzo richiede entrambi città o CAP</value>
+    </property>
+    <property key="FacilityShipmentUpsGatewayNotAvailable">
+        <value xml:lang="en">UPS Shipment Gateway Configuration is not available</value>
+        <value xml:lang="it">Configurazione gateway spedizioni UPS non è disponibile</value>
+    </property>
     <property key="FacilityShipmentUpsMaxEstimateWeight">
         <value xml:lang="en">Max weight per package</value>
         <value xml:lang="it">Peso massimo per pacco</value>
@@ -591,6 +803,14 @@
         <value xml:lang="en">Minimum weight for a package</value>
         <value xml:lang="it">Peso minimo per un pacco</value>
     </property>
+    <property key="FacilityShipmentUpsNoRateAvailable">
+        <value xml:lang="en">No rates available at this time</value>
+        <value xml:lang="it">Nessuna stima spedizione disponibile in questo momento</value>
+    </property>
+    <property key="FacilityShipmentUpsNotRouteSegmentCarrier">
+        <value xml:lang="en">ERROR: The Carrier for ShipmentRouteSegment ${shipmentRouteSegmentId} of Shipment ${shipmentId}, is not UPS.</value>
+        <value xml:lang="it">ERRORE: il corriere sul percorso spedizione ${shipmentRouteSegmentId} della spedizione ${shipmentId}, non è UPS.</value>
+    </property>
     <property key="FacilityShipmentUpsPickupAirServiceCenter">
         <value xml:lang="en">Air Service Center</value>
         <value xml:lang="it">Prelievo per centro servizio aereo</value>
@@ -619,6 +839,66 @@
         <value xml:lang="en">Suggested Retail Rates</value>
         <value xml:lang="it">Costo suggerito al dettaglio</value>
     </property>
+    <property key="FacilityShipmentUpsShipmentAlternateRatesInquiryResponse">
+        <value xml:lang="en">A ShipmentAlternateRatesInquiryResponse was received: ${rateResponseString}</value>
+        <value xml:lang="it">Una ShipmentAlternateRatesInquiryResponse è stata ricevuta: ${rateResponseString}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentOriginPostalAddressNotFound">
+        <value xml:lang="en">OriginPostalAddress not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Indirizzo d'origine non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentStatusNotConfirmed">
+        <value xml:lang="en">ERROR: The Carrier Service Status for ShipmentRouteSegment ${shipmentRouteSegmentId} of Shipment ${shipmentId}, is ${shipmentRouteSegmentStatus}, but must be not-set or [SHRSCS_CONFIRMED] to perform the UPS Shipment Accept operation.</value>
+        <value xml:lang="it">ERRORE: lo stato corriere per percorso spedizione ${shipmentRouteSegmentId} della spedizione ${shipmentId}, è ${shipmentRouteSegmentStatus}, ma deve non essere impostato o [SHRSCS_CONFIRMED] per eseguire l'operazione di Accettazione Spedizione UPS.</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentStatusMustBeConfirmedOrAccepted">
+        <value xml:lang="en">ERROR: The Carrier Service Status for ShipmentRouteSegment ${shipmentRouteSegmentId} of Shipment ${shipmentId}, is ${shipmentRouteSegmentStatus}, but must be [SHRSCS_CONFIRMED] or [SHRSCS_ACCEPTED] to perform the UPS Void Shipment operation.</value>
+        <value xml:lang="it">ERRORE: lo stato corriere per percorso spedizione ${shipmentRouteSegmentId} della spedizione ${shipmentId}, è ${shipmentRouteSegmentStatus}, ma deve essere impostato [SHRSCS_CONFIRMED] or [SHRSCS_ACCEPTED] per eseguire l'operazione di Cancellazione Spedizione UPS.</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentStatusNotAccepted">
+        <value xml:lang="en">ERROR: The Carrier Service Status for ShipmentRouteSegment ${shipmentRouteSegmentId} of Shipment ${shipmentId}, is ${shipmentRouteSegmentStatus}, but must be not-set or [SHRSCS_ACCEPTED] to perform the UPS Shipment Confirm operation.</value>
+        <value xml:lang="it">ERRORE: lo stato corriere per percorso spedizione ${shipmentRouteSegmentId} della spedizione ${shipmentId}, è ${shipmentRouteSegmentStatus}, ma deve non essere impostato o [SHRSCS_ACCEPTED] per eseguire l'operazione di Conferma Spedizione UPS.</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentStatusNotStarted">
+        <value xml:lang="en">ERROR: The Carrier Service Status for ShipmentRouteSegment ${shipmentRouteSegmentId} of Shipment ${shipmentId}, is ${shipmentRouteSegmentStatus}, but must be not-set or [SHRSCS_NOT_STARTED] to perform the UPS Shipment Confirm operation.</value>
+        <value xml:lang="it">ERRORE: lo stato corriere per percorso spedizione ${shipmentRouteSegmentId} della spedizione ${shipmentId}, è ${shipmentRouteSegmentStatus}, ma deve non essere impostato o [SHRSCS_NOT_STARTED] per eseguire l'operazione di Conferma Spedizione UPS.</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentOriginTelecomNumberNotFound">
+        <value xml:lang="en">OriginTelecomNumber not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Numero telefono d'origine non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentOriginCountryGeoNotFound">
+        <value xml:lang="en">OriginCountryGeo not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Paese d'origine non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentDestPostalAddressNotFound">
+        <value xml:lang="en">DestPostalAddress not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Indirizzo di destinazione non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentDestTelecomNumberNotFound">
+        <value xml:lang="en">DestTelecomNumber not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Numero telefono di destinazione non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentDestCountryGeoNotFound">
+        <value xml:lang="en">DestCountryGeo not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Paese di destinazione non trovata per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentCarrierShipmentMethodNotFound">
+        <value xml:lang="en">CarrierShipmentMethod not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}; partyId is ${carrierPartyId} and shipmentMethodTypeId is ${shipmentMethodTypeId};</value>
+        <value xml:lang="it">Metodo di spedizione corriere non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}; il soggetto è ${carrierPartyId} e il metodo di spedizione è ${shipmentMethodTypeId};</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentThirdPartyCountryNotFound">
+        <value xml:lang="en">Third-party country not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Paese soggetto terzo non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsRouteSegmentThirdPartyPostalCodeNotFound">
+        <value xml:lang="en">Third-party postal code not found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">CAP soggetto terzo non trovato per la spedizione ${shipmentId} e percorso spedizione ${shipmentRouteSegmentId}</value>
+    </property>
+    <property key="FacilityShipmentUpsPackageRouteSegsNotFound">
+        <value xml:lang="en">No ShipmentPackageRouteSegs (ie No Packages) found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">No ShipmentPackageRouteSegs (ie No Packages) found for ShipmentRouteSegment with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+    </property>
     <property key="FacilityShipmentUpsSaveCertInfo">
         <value xml:lang="en">Save Cert Info</value>
         <value xml:lang="it">Salva informazioni certificato</value>
@@ -631,6 +911,58 @@
         <value xml:lang="en">Secured Funds Only</value>
         <value xml:lang="it">Solo fondi sicuri</value>
     </property>
+    <property key="FacilityShipmentUpsShipmentAcceptError">
+        <value xml:lang="en">, but the following occurred: </value>
+        <value xml:lang="it">, ma i seguenti errori sono accaduti: </value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentAcceptFailed">
+        <value xml:lang="en">The UPS ShipmentAccept failed</value>
+        <value xml:lang="it">La richiesta ad UPS ShipmentAccept è fallita</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentAcceptSucceeded">
+        <value xml:lang="en">The UPS ShipmentAccept succeeded</value>
+        <value xml:lang="it">La richiesta ad UPS ShipmentAccept ha avuto successo</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentConfirmError">
+        <value xml:lang="en">, but the following occurred: </value>
+        <value xml:lang="it">, ma i seguenti errori sono accaduti: </value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentConfirmFailedForReturnShippingLabel">
+        <value xml:lang="en">The UPS ShipmentConfirm failed so not sending email for return shipping label</value>
+        <value xml:lang="it">La richiesta ShipmentConfirm UPS è fallita così non inviare e-mail per l'etichetta reso spedizione</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentConfirmFailed">
+        <value xml:lang="en">The UPS ShipmentConfirm failed</value>
+        <value xml:lang="it">La richiesta ad UPS ShipmentConfirm è fallita</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentConfirmSucceeded">
+        <value xml:lang="en">The UPS ShipmentConfirm succeeded</value>
+        <value xml:lang="it">La richiesta ad UPS ShipmentConfirm ha avuto successo</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentTrackError">
+        <value xml:lang="en">, but the following occurred: </value>
+        <value xml:lang="it">, ma i seguenti errori sono accaduti: </value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentTrackFailed">
+        <value xml:lang="en">The UPS TrackShipment failed</value>
+        <value xml:lang="it">La tracciatura spedizione UPS è fallita</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentTrackSucceeded">
+        <value xml:lang="en">The UPS TrackShipment succeeded</value>
+        <value xml:lang="it">La tracciatura spedizione UPS ha avuto successo</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentVoidError">
+        <value xml:lang="en">, but the following occurred: </value>
+        <value xml:lang="it">, ma i seguenti errori sono accaduti: </value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentVoidFailed">
+        <value xml:lang="en">The UPS ShipmentConfirm failed; the StatusType is: ${statusTypeCode} : ${statusTypeDescription}, the StatusCode is: ${statusCodeCode} ${statusCodeDescription}</value>
+        <value xml:lang="it">La cancellazione spedizione UPS è fallita; lo stato è: ${statusTypeCode} : ${statusTypeDescription}, il codice stato è: ${statusCodeCode} ${statusCodeDescription}</value>
+    </property>
+    <property key="FacilityShipmentUpsShipmentVoidSucceeded">
+        <value xml:lang="en">The UPS VoidShipment succeeded; the StatusType is: ${statusTypeCode} : ${statusTypeDescription}, the StatusCode is: ${statusCodeCode} ${statusCodeDescription}</value>
+        <value xml:lang="it">La cancellazione spedizione UPS ha avuto successo; lo stato è: ${statusTypeCode} : ${statusTypeDescription}, il codice stato è: ${statusCodeCode} ${statusCodeDescription}</value>
+    </property>
     <property key="FacilityShipmentUpsShipperNumber">
         <value xml:lang="en">Shipper Number</value>
         <value xml:lang="it">Numero spedizioniere</value>
@@ -639,9 +971,25 @@
         <value xml:lang="en">Shipper Pickup Type</value>
         <value xml:lang="it">Tipo prelievo spedizioniere</value>
     </property>
+    <property key="FacilityShipmentUpsUnableToLocateShippingMethodRequested">
+        <value xml:lang="en">Unable to locate the shipping method requested</value>
+        <value xml:lang="it">Non è possibile localizzare il metodo di spedizione richiesto</value>
+    </property>
     <property key="FacilityShipmentUpsSurchargeAll">
         <value xml:lang="en">Surcharge amount will be applied to each shipment package</value>
-        <value xml:lang="it">Importo supplementare sarà applicato ad ogni pacco di spedizione</value>
+        <value xml:lang="it">Importo supplementare sarà applicato ad ogni pacco di spedizione</value>
+    </property>
+    <property key="FacilityShipmentUpsSurchargeAmountIsNotConfigurated">
+        <value xml:lang="en">Surcharge amount is not configured</value>
+        <value xml:lang="it">Importo supplementare non è configurato</value>
+    </property>
+    <property key="FacilityShipmentUpsSurchargeCurrencyIsNotConfigurated">
+        <value xml:lang="en">Surcharge currency is not configured</value>
+        <value xml:lang="it">Valuta importo supplementare non è configurato</value>
+    </property>
+    <property key="FacilityShipmentUpsSurchargeIsNotConfigurated">
+        <value xml:lang="en">Surcharge amount is not configured</value>
+        <value xml:lang="it">Importo supplementare non è configurato</value>
     </property>
     <property key="FacilityShipmentUpsSurchargeAmount">
         <value xml:lang="en">Surcharge Amount for Cash On Delivery</value>
@@ -657,20 +1005,48 @@
     </property>
     <property key="FacilityShipmentUpsSurchargeFirst">
         <value xml:lang="en">Surcharge amount will be applied to the first package in the shipment</value>
-        <value xml:lang="it">Importo supplementare sarà applicato al primo pacco di spedizione</value>
+        <value xml:lang="it">Importo supplementare sarà applicato al primo pacco di spedizione</value>
     </property>
     <property key="FacilityShipmentUpsSurchargeNone">
         <value xml:lang="en">Surcharge will not be applied to any packages </value>
-        <value xml:lang="it">Importo supplementare non sarà applicato a nessun pacco della spedizione</value>
+        <value xml:lang="it">Importo supplementare non sarà applicato a nessun pacco della spedizione</value>
     </property>
     <property key="FacilityShipmentUpsSurchargeSplit">
         <value xml:lang="en">Surcharge amount will be split between shipment packages</value>
-        <value xml:lang="it">Importo supplementare sarà suddiviso fra i pacchi della spedizione</value>
+        <value xml:lang="it">Importo supplementare sarà suddiviso fra i pacchi della spedizione</value>
+    </property>
+    <property key="FacilityShipmentUpsTrackingDigestWasNotSet">
+        <value xml:lang="en">ERROR: The trackingDigest was not set for this Route Segment, meaning that a UPS shipment confirm has not been done.</value>
+        <value xml:lang="it">ERRORE: L'elemento trackingDigest non è impostato per questo percorso di spedizione, significa che una conferma spedizione a UPS non è stata fatta.</value>
+    </property>
+    <property key="FacilityShipmentUpsTrackingIdNumberWasNotSet">
+        <value xml:lang="en">ERROR: The trackingIdNumber was not set for this Route Segment, meaning that a UPS shipment confirm has not been done.</value>
+        <value xml:lang="it">ERRORE: Il trackingIdNumber non è impostato in questo percorso spedizione, significa che una conferma spedizione UPS non è stata fatta.</value>
     </property>
     <property key="FacilityShipmentUpsUnsecuredFundsAllowed">
         <value xml:lang="en">Unsecured Funds Allowed</value>
         <value xml:lang="it">Consentiti fondi non sicuri</value>
     </property>
+    <property key="FacilityShipmentUpsRateEstimateError">
+        <value xml:lang="en">Error on UPS Rate Estimate: ${errorString}</value>
+        <value xml:lang="it">Errore su stima spedizione UPS: ${errorString}</value>
+    </property>
+    <property key="FacilityShipmentUpsShipToAddresssNoDestionationCountry">
+        <value xml:lang="en">Destination CountryGeo not found for ship-to address</value>
+        <value xml:lang="it">Paese di destinazione non trovato dall'indirizzo di spedizione</value>
+    </property>
+    <property key="FacilityShipmentUpsUnableFoundShipToAddresss">
+        <value xml:lang="en">Unable to determine ship-to address</value>
+        <value xml:lang="it">Non è possibile determinare l'indirizzo di spedizione</value>
+    </property>
+    <property key="FacilityShipmentUpsUnableFoundShipToAddresssForDropShipping">
+        <value xml:lang="en">Unable to determine ship-from address for drop shipping</value>
+        <value xml:lang="it">Non è possibile determinare l'indirizzo di spedizione per la spedizione conto terzi</value>
+    </property>
+    <property key="FacilityShipmentUpsWeightValueNotFound">
+        <value xml:lang="en">Weight value not found for ShipmentRouteSegment with shipmentId ${shipmentId}, shipmentRouteSegmentId ${shipmentRouteSegmentId}, and shipmentPackageSeqId ${shipmentPackageSeqId}</value>
+        <value xml:lang="it">Il peso non trovato per la spedizione ${shipmentId}, percorso spedizione ${shipmentRouteSegmentId}, e pacco ${shipmentPackageSeqId}</value>
+    </property>
     <property key="FacilityShipmentUspsAccessPassword">
         <value xml:lang="en">Access Password</value>
         <value xml:lang="it">Password d'accesso</value>
@@ -21167,6 +21543,10 @@
         <value xml:lang="zh">货运收据用于</value>
         <value xml:lang="zh_TW">貨運收據用于</value>
     </property>
+    <property key="ProductShipmentRouteSegmentNotFound">
+        <value xml:lang="en">ShipmentRouteSegment not found with shipmentId ${shipmentId} and shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+        <value xml:lang="it">Percorso spedizione non trovato con shipmentId ${shipmentId} e shipmentRouteSegmentId ${shipmentRouteSegmentId}</value>
+    </property>
     <property key="ProductShipmentThirdPartyAccountNumber">
         <value xml:lang="de">Kontonummer Dritter</value>
         <value xml:lang="en">Third Party Account Number</value>

Modified: ofbiz/trunk/applications/product/config/shipment.properties
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/shipment.properties?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/shipment.properties (original)
+++ ofbiz/trunk/applications/product/config/shipment.properties Mon Dec 27 14:19:29 2010
@@ -64,7 +64,7 @@ shipment.ups.access.password=REG111111
 
 # Setting to save files needed for UPS certification
 shipment.ups.save.certification.info=true
-shipment.ups.save.certification.path=/ofbiz/work/ofbiz/upscert
+shipment.ups.save.certification.path=${sys:getProperty('ofbiz.home')}/runtime/output/upscert
 
 # Shipper Default Pickup Type
 # 01 - Daily Pickup

Modified: ofbiz/trunk/applications/product/data/ShipmentTypeData.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/data/ShipmentTypeData.xml?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/data/ShipmentTypeData.xml (original)
+++ ofbiz/trunk/applications/product/data/ShipmentTypeData.xml Mon Dec 27 14:19:29 2010
@@ -124,7 +124,7 @@ under the License.
     
     <ShipmentGatewayConfigType shipmentGatewayConfTypeId="UPS" hasTable="N" description="UPS Shipment Gateway"/>
     <ShipmentGatewayConfig shipmentGatewayConfigId="UPS_CONFIG" shipmentGatewayConfTypeId="UPS" description="UPS Config"/>
-    <ShipmentGatewayUps shipmentGatewayConfigId="UPS_CONFIG" connectUrl="https://wwwcie.ups.com/ups.app/xml" connectTimeout="60" shipperNumber="12345E" billShipperAccountNumber="12345E" accessLicenseNumber="TEST262223144CAT" accessUserId="REG111111" accessPassword="REG111111" saveCertInfo="true" saveCertPath="${sys:getProperty('ofbiz.home')}/runtime/output/upscert" shipperPickupType="06" maxEstimateWeight="90" minEstimateWeight="0.1" codAllowCod="true" codSurchargeAmount="9" codSurchargeCurrencyUomId="USD" codSurchargeApplyToPackage="first" codFundsCode="0" defaultReturnLabelMemo="UPS Shipment Return Memo" defaultReturnLabelSubject="UPS Shipment Return Label"/>
+    <ShipmentGatewayUps shipmentGatewayConfigId="UPS_CONFIG" connectUrl="https://wwwcie.ups.com/ups.app/xml" connectTimeout="60" shipperNumber="12345E" billShipperAccountNumber="12345E" accessLicenseNumber="TEST262223144CAT" accessUserId="REG111111" accessPassword="REG111111" saveCertInfo="true" saveCertPath="${sys:getProperty('ofbiz.home')}/runtime/output/upscert" shipperPickupType="06" customerClassification="03" maxEstimateWeight="90" minEstimateWeight="0.1" codAllowCod="true" codSurchargeAmount="9" codSurchargeCurrencyUomId="USD" codSurchargeApplyToPackage="first" codFundsCode="0" defaultReturnLabelMemo="UPS Shipment Return Memo" defaultReturnLabelSubject="UPS Shipment Return Label"/>
     
     <ShipmentGatewayConfigType shipmentGatewayConfTypeId="USPS" hasTable="N" description="USPS Shipment Gateway"/>
     <ShipmentGatewayConfig shipmentGatewayConfigId="USPS_CONFIG" shipmentGatewayConfTypeId="USPS" description="USPS Config"/>

Modified: ofbiz/trunk/applications/product/entitydef/entitymodel_shipment.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/entitydef/entitymodel_shipment.xml?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/entitydef/entitymodel_shipment.xml (original)
+++ ofbiz/trunk/applications/product/entitydef/entitymodel_shipment.xml Mon Dec 27 14:19:29 2010
@@ -883,6 +883,7 @@ under the License.
       <field name="saveCertInfo" type="short-varchar"><description>Setting to save files needed for UPS certification (true|false)</description></field>
       <field name="saveCertPath" type="value"><description>UPS file certificate path</description></field>
       <field name="shipperPickupType" type="short-varchar"><description>Shipper Default Pickup Type</description></field>
+      <field name="customerClassification" type="short-varchar"><description>Customer Classification</description></field>
       <field name="maxEstimateWeight" type="fixed-point"><description>Estimate split into packages</description></field>
       <field name="minEstimateWeight" type="fixed-point"><description>Minimum weight for a package</description></field>
       <field name="codAllowCod" type="value"><description>All shipment package items are from orders which have been fully paid via EXT_COD</description></field>

Modified: ofbiz/trunk/applications/product/servicedef/services_shipment.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment.xml?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/servicedef/services_shipment.xml (original)
+++ ofbiz/trunk/applications/product/servicedef/services_shipment.xml Mon Dec 27 14:19:29 2010
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?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
@@ -865,6 +865,8 @@ under the License.
         <attribute name="shippableQuantity" type="BigDecimal" mode="IN" optional="false"/>
         <attribute name="shippableTotal" type="BigDecimal" mode="IN" optional="false"/>
         <attribute name="partyId" type="String" mode="IN" optional="true"/>
+        <attribute name="shipmentCustomMethodId" type="String" mode="IN" optional="true"/>
+        <attribute name="shipmentGatewayConfigId" type="String" mode="IN" optional="true"/>
         <attribute name="shippingEstimateAmount" type="BigDecimal" mode="OUT" optional="false"/>
     </service>
 

Modified: ofbiz/trunk/applications/product/servicedef/services_shipment_ups.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/servicedef/services_shipment_ups.xml?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/servicedef/services_shipment_ups.xml (original)
+++ ofbiz/trunk/applications/product/servicedef/services_shipment_ups.xml Mon Dec 27 14:19:29 2010
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" ?>
+<?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
@@ -90,6 +90,7 @@ under the License.
         <attribute name="shippingCountryCode" type="String" mode="IN" optional="true"/>
         <!-- Allow specifying a from address if different from product store's facility address. -->
         <attribute name="shipFromAddress" type="org.ofbiz.entity.GenericValue" mode="IN" optional="true"/>
+        <attribute name="shipmentGatewayConfigId" type="String" mode="IN" optional="true"/>
     </service>
 
     <!-- UPS Address Validation -->

Modified: ofbiz/trunk/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java?rev=1053074&r1=1053073&r2=1053074&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java (original)
+++ ofbiz/trunk/applications/product/src/org/ofbiz/shipment/shipment/ShipmentServices.java Mon Dec 27 14:19:29 2010
@@ -18,28 +18,39 @@
  *******************************************************************************/
 package org.ofbiz.shipment.shipment;
 
-import java.util.*;
 import java.math.BigDecimal;
+import java.util.Collection;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
 
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
-import org.ofbiz.base.util.*;
+import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.UtilGenerics;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilNumber;
+import org.ofbiz.base.util.UtilProperties;
+import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.collections.ResourceBundleMapWrapper;
 import org.ofbiz.common.geo.GeoWorker;
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.condition.EntityCondition;
+import org.ofbiz.entity.condition.EntityConditionList;
 import org.ofbiz.entity.condition.EntityOperator;
 import org.ofbiz.entity.util.EntityListIterator;
 import org.ofbiz.entity.util.EntityUtil;
+import org.ofbiz.party.party.PartyWorker;
 import org.ofbiz.service.DispatchContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ModelService;
 import org.ofbiz.service.ServiceUtil;
-import org.ofbiz.party.party.PartyWorker;
 
 /**
  * ShipmentServices
@@ -1187,4 +1198,46 @@ public class ShipmentServices {
         }
         return sendResp;
     }
+    
+    public static Map<String, Object> getShipmentGatewayConfigFromShipment(Delegator delegator, String shipmentId) {
+        Map<String, Object> shipmentGatewayConfig = ServiceUtil.returnSuccess();
+        try {
+            GenericValue shipment = delegator.findOne("Shipment", UtilMisc.toMap("shipmentId", shipmentId), false);
+            if (shipment == null) {
+                return ServiceUtil.returnError("Shipment not found with ID " + shipmentId);
+            }
+            GenericValue primaryOrderHeader = shipment.getRelatedOne("PrimaryOrderHeader");
+            if (primaryOrderHeader == null) {
+                return ServiceUtil.returnError("Cannot found primary order header for shipment with ID " + shipmentId);
+            }
+            String productStoreId = primaryOrderHeader.getString("productStoreId");
+            if (UtilValidate.isEmpty(productStoreId)) {
+                return ServiceUtil.returnError("Cannot found productStoreId for shipment with ID " + shipmentId);
+            }
+            GenericValue primaryOrderItemShipGroup = shipment.getRelatedOne("PrimaryOrderItemShipGroup");
+            if (primaryOrderItemShipGroup == null) {
+                return ServiceUtil.returnError("Cannot found primary order item ship group for shipment with ID " + shipmentId);
+            }
+            String shipmentMethodTypeId = primaryOrderItemShipGroup.getString("shipmentMethodTypeId");
+            String carrierPartyId = primaryOrderItemShipGroup.getString("carrierPartyId");
+            String carrierRoleTypeId = primaryOrderItemShipGroup.getString("carrierRoleTypeId");
+            List<EntityCondition> conditions = FastList.newInstance();
+            conditions.add(EntityCondition.makeCondition("productStoreId", EntityOperator.EQUALS, productStoreId));
+            conditions.add(EntityCondition.makeCondition("shipmentMethodTypeId", EntityOperator.EQUALS, shipmentMethodTypeId));
+            conditions.add(EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, carrierPartyId));
+            conditions.add(EntityCondition.makeCondition("roleTypeId", EntityOperator.EQUALS, carrierRoleTypeId));
+            EntityConditionList<EntityCondition> ecl = EntityCondition.makeCondition(conditions, EntityOperator.AND);
+            List<GenericValue> productStoreShipmentMeths = delegator.findList("ProductStoreShipmentMeth", ecl, null, null, null, false);
+            GenericValue productStoreShipmentMeth = EntityUtil.getFirst(productStoreShipmentMeths);
+            if (UtilValidate.isNotEmpty(productStoreShipmentMeth)) {
+                shipmentGatewayConfig.put("shipmentGatewayConfigId", productStoreShipmentMeth.getString("shipmentGatewayConfigId"));
+                shipmentGatewayConfig.put("configProps", productStoreShipmentMeth.getString("configProps"));
+            } else {
+                return ServiceUtil.returnError("Cannot found product store shipment meth for shipment with ID " + shipmentId);
+            }
+        } catch (Exception e) {
+            return ServiceUtil.returnError("Error in getShipmentGatewayConfigFromShipment : " + e.getMessage());
+        }
+        return shipmentGatewayConfig;
+    }
 }