News:

Support the VirtueMart project and become a member

Main Menu

Ground, next day, etc... all UPS rates are like 10x under the actual price

Started by madebychad, September 25, 2008, 00:46:49 AM

Previous topic - Next topic

madebychad

Hi all, I looked around and didn't see much in terms of this problem (although all of the other problems I did see were well addressed, and the 150lb warning I am using).

I have a client who I set this up for, and she has a 45 lb item, with dimensions all entered, and somehow the UPS module is bringing back $15.86 when it should be about $100. I looked at the XML that gets returned and sent, and the sent XML does have the weight and correctly sends LBS as the unit of measure for the 45 pounds package. However, just getting extremely low quotes back.

I went to the UPS website and did a quote with the same source/dest zip (from 92130 to 92110), and their site gave me this quote (note, they somehow calculated that they need to bill 156.0lbs on their site, although I entered 45lbs, and it notes that "Large package surcharge applies" and "dimensional weight" is used):

Service     
UPS Next Day Air Early A.M.
406.09 USD*
Billable Weight:
156.0 lbs.
   
UPS Next Day AirĀ®    
367.76 USD*
Billable Weight:
156.0 lbs.
   
UPS Next Day Air SaverĀ®    
325.79 USD*
Billable Weight:
156.0 lbs.    

UPS Ground
140.94 USD*

I will let you all know if I find anything, I do see that the UPS xml that gets sent does not have any width, height, or length of package... since there are multiple items that make up a package. This seems like a problem which oscommerce has solved with their smart packaging that calculates the correct number of packages it will need to send within the quote. Aye!

madebychad

Well, I went into the oscommerce (the other guys) UPS.php module, and read through it. It provides for package size configuration, max weight per box, etc. etc. etc, and then posts to the UPS CGI service using a URL encoded string rather than this XML method. Not sure if the XML method is more restricting, but I did find that there is a lot more available than what this UPS module is offering.

I am considering porting over the UPS module, in its entirety, including setup for breaking shipments into multiple boxes automatically to get an accurate quote, as well as using the length/width/height of the products in an order to determine the correct boxes to use (i.e. there could be 1 12" x 12" x 12" box for items 1 & 2 in the cart, while item 3 is larger and requires a larger box)... that way when you do get a quote, it is closer to what you are paying!

Well, my client wants this, but I think she would rather just live with it the way it is, and mess with the standard shipping setup to get a better estimate.

How many people would want this? If you wanted it, how long are you looking to wait if I were to make it? And of course, our of the goodness of my heart I would love to make it, but I am pressed for time so I would have to make this and then sell it until I covered my cost for the initial development, prior to releasing it as LGPL or some other similar open source license, so would you pay for it?

Just a whim, but if there are enough people who want this module to do MORE than it currently does, then post a reply. Right now, if you haven't already read through ups.php in the virtuemart shipping classes, you might not know it... but all it does CURRENTLY is send UPS the from zip, to zip, and weight, and that's all. Not a very accurate quote if you ask me... unless you're shipping widgets that only weight 1 or 2 lbs, then you don't really care that the quotes are off by a margin of like 1000%, but if you're gonna quote $15 where it should be $100, I would think this is worth it.

Did I mis-speak? Is this kind of a post prohibited? Forgive me if I am out-stepping my place, I do not mean to, I just see like 10 posts in the last week with people being confused... so rather than complain, I propose we make it better now. Anyone agree?

madebychad

One more thing, if this helps... you need to see that the XML service also allows for flags for large packages, length, width, height, and tons of other stuff that needs to be taken into account. See the XML XSD description below:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  elementFormDefault="qualified">

   <xsd:element name="RatingServiceSelectionRequest">

      <xsd:complexType>

         <xsd:sequence>

            <xsd:element name="Request" type="RequestType"/>

            <xsd:element name="PickupType" type="CodeType" minOccurs="0"/>

            <xsd:element name="CustomerClassification" type="CodeType" minOccurs="0"/>

            <xsd:element name="Shipment" type="ShipmentType"/>

         </xsd:sequence>

      </xsd:complexType>

   </xsd:element>

   <xsd:complexType name="RequestType">

      <xsd:sequence>

         <xsd:sequence>

            <xsd:element name="RequestAction" type="xsd:string"/>

            <xsd:element name="RequestOption" type="xsd:string" minOccurs="0"/>

            <xsd:element name="TransactionReference" type="TransactionReferenceType" minOccurs="0"/>

         </xsd:sequence>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="TransactionReferenceType">

      <xsd:sequence>

         <xsd:element name="CustomerContext" type="xsd:string" minOccurs="0"/>

         <xsd:element name="ToolVersion" type="xsd:string" minOccurs="0" />

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="CodeType">

      <xsd:sequence>

         <xsd:sequence>

            <xsd:element name="Code" type="xsd:string"/>

         </xsd:sequence>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="CodeDescriptionType">

      <xsd:sequence>

         <xsd:sequence>

            <xsd:element name="Code" type="xsd:string"/>

            <xsd:element name="Description" type="xsd:string" minOccurs="0"/>

         </xsd:sequence>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="ShipmentType">

      <xsd:sequence>

         <xsd:element name="Shipper" type="ShipperType"/>

         <xsd:element name="ShipTo" type="ShipToType"/>

         <xsd:element name="ShipFrom" type="ShipFromType" minOccurs="0"/>

         <xsd:element name="Service" type="CodeDescriptionType" minOccurs="0"/>

         <xsd:element name="DocumentsOnly" type="xsd:string" minOccurs="0"/>

         <xsd:element name="Package" type="PackageType" minOccurs="0" maxOccurs="unbounded"/>

         <xsd:element name="ShipmentServiceOptions" type="ShipmentServiceOptionsType" minOccurs="0"/>

         <xsd:element name="RateInformation" type="RateInformationType" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="ShipperType">

      <xsd:sequence>

         <xsd:element name="Name" type="xsd:string" minOccurs="0"/>

         <xsd:element name="ShipperNumber" type="xsd:string" minOccurs="0"/>

         <xsd:element name="Address" type="AddressType"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="PhoneNumberType">

      <xsd:sequence>

         <xsd:element name="StructuredPhoneNumber" type="StructuredPhoneNumberType" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="StructuredPhoneNumberType">

      <xsd:sequence>

         <xsd:element name="PhoneCountryCode" type="xsd:string" minOccurs="0"/>

         <xsd:element name="PhoneDialPlanNumber" type="xsd:string"/>

         <xsd:element name="PhoneLineNumber" type="xsd:string"/>

         <xsd:element name="PhoneExtension" type="xsd:string" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="AddressType">

      <xsd:sequence>

         <xsd:element name="AddressLine1" type="xsd:string" minOccurs="0"/>

         <xsd:element name="AddressLine2" type="xsd:string" minOccurs="0"/>

         <xsd:element name="AddressLine3" type="xsd:string" minOccurs="0"/>

         <xsd:element name="City" type="xsd:string" minOccurs="0"/>

         <xsd:element name="StateProvinceCode" type="xsd:string" minOccurs="0"/>

         <xsd:element name="PostalCode" type="xsd:string" minOccurs="0"/>

         <xsd:element name="CountryCode" type="xsd:string"/>

         <xsd:element name="ResidentialAddressIndicator" type="xsd:string" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="ShipToType">

      <xsd:sequence>

         <xsd:element name="CompanyName" type="xsd:string" minOccurs="0"/>

         <xsd:element name="Address" type="AddressType"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="ShipFromType">

      <xsd:sequence>

         <xsd:element name="CompanyName" type="xsd:string" minOccurs="0"/>

         <xsd:element name="Address" type="AddressType"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="WeightType">

      <xsd:sequence>

         <xsd:element name="UnitOfMeasurement" type="UnitOfMeasurementType"/>

         <xsd:element name="Weight" type="xsd:string"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="UnitOfMeasurementType">

      <xsd:sequence>

         <xsd:element name="Code" type="xsd:string"/>

         <xsd:element name="Description" type="xsd:string" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="PackageType">

      <xsd:sequence>

         <xsd:element name="PackagingType" type="CodeDescriptionType" minOccurs="0"/>

         <xsd:element name="Dimensions" type="DimensionsType" minOccurs="0"/>

         <xsd:element name="PackageWeight" type="WeightType" minOccurs="0"/>

         <xsd:element name="LargePackageIndicator" type="xsd:string" minOccurs="0"/>


         <xsd:element name="PackageServiceOptions" type="PackageServiceOptionsType" minOccurs="0"/>

         <xsd:element name="AdditionalHandling" type="xsd:string" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="PackagingTypeType">

      <xsd:sequence>

         <xsd:element name="Code" type="xsd:string"/>

         <xsd:element name="Description" type="xsd:string" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="DimensionsType">

      <xsd:sequence>

         <xsd:element name="UnitOfMeasurement" type="UnitOfMeasurementType" minOccurs="0"/>

         <xsd:element name="Length" type="xsd:string"/>

         <xsd:element name="Width" type="xsd:string"/>

         <xsd:element name="Height" type="xsd:string"/>


      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="PackageServiceOptionsType">

      <xsd:sequence>

         <xsd:element name="InsuredValue" type="InsuredValueType" minOccurs="0"/>

         <xsd:element name="COD" type="CODType" minOccurs="0"/>

         <xsd:element name="DeliveryConfirmation" type="DeliveryConfirmationType" minOccurs="0"/>

         <xsd:element name="VerbalConfirmation" type="VerbalConfirmationType" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="InsuredValueType">

      <xsd:sequence>

         <xsd:element name="CurrencyCode" type="xsd:string" minOccurs="0"/>

         <xsd:element name="MonetaryValue" type="xsd:string"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="CODType">

      <xsd:sequence>

         <xsd:element name="CODFundsCode" type="xsd:string" minOccurs="0"/>

         <xsd:element name="CODAmount" type="AmountType"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="AmountType">

      <xsd:sequence>

         <xsd:element name="CurrencyCode" type="xsd:string" minOccurs="0"/>

         <xsd:element name="MonetaryValue" type="xsd:string"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="DeliveryConfirmationType">

      <xsd:sequence>

         <xsd:element name="DCISType" type="xsd:string"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="VerbalConfirmationType">

      <xsd:sequence>

         <xsd:element name="Name" type="xsd:string" minOccurs="0"/>

         <xsd:element name="PhoneNumber" type="PhoneNumberType" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="ShipmentServiceOptionsType">

      <xsd:sequence>

         <xsd:element name="SaturdayPickup" type="xsd:string" minOccurs="0"/>

         <xsd:element name="SaturdayDelivery" type="xsd:string" minOccurs="0"/>

         <xsd:element name="OnCallAir" type="OnCallAirType" minOccurs="0"/>

         <xsd:element name="COD" type="CODType" minOccurs="0"/>

         <xsd:element name="ReturnOfDocumentIndicator" type="xsd:string" minOccurs="0"/>

         <xsd:element name="DeliveryConfirmation" type="DeliveryConfirmationType" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="OnCallAirType">

      <xsd:sequence>

         <xsd:element name="Schedule" type="ScheduleType" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="ScheduleType">

      <xsd:sequence>

         <xsd:element name="PickupDay" type="xsd:string" minOccurs="0"/>

         <xsd:element name="Method" type="xsd:string" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

   <xsd:complexType name="RateInformationType">

      <xsd:sequence>

         <xsd:element name="NegotiatedRatesIndicator" type="xsd:string" minOccurs="0"/>

      </xsd:sequence>

   </xsd:complexType>

</xsd:schema>

lowmips

Quote from: madebychad on September 25, 2008, 02:43:14 AM
I am considering porting over the UPS module, in its entirety, including setup for breaking shipments into multiple boxes automatically to get an accurate quote, as well as using the length/width/height of the products in an order to determine the correct boxes to use


YES PLEASE!
also make this work in the USPS module too  ;)
Visit my website at www.lowmips.com
View my newsletters Here (sign up for newsletters on the front page of my website)

Shoushan

YES YES YES!!!

I have similar issues. Not only the package size but also declared values not being calculated. I am in the process of looking for someone to help me include these in the XML. How long do you think it might take you to setup all of this. I have been all over this forum complaining about this and you are the first person that hasn't made me feel like a total crazy person. I had not a single reply to my posts regarding these issues. I even wrote to VM administrators and developers thinking they might point me the right direction and it didn't go anywhere. Is everyone else just using the module as is?? Or has no one else noticed? How can you sell products online and not implement correct shipping rates?

Declared Values add 60 cents to each $100
Certain package sizes over 60 inches on one side add like $6.00.

It took me days to figure out why my rates we sooooo off.

I would totally pay to get a UPS shipping module that worked!