This is still broken in 3.8. The UPS plugin still does not natively support negotiated rates or adding your UPS Account #. This should be a super easy fix for the developers... just a few extra lines of optional XML code. To make every single customer go in and manually edit the CS files for something so simple is just plain dumb. NOT impressed.
We've even implemented it. But we don't have an opportunity to test it as we don't have a valid UPS account now (with negotiated rates). It would be great if somebody can help us to test it. Please see this branch
The following grabs the correct NegotiatedRates/monetary value node but only from the LAST RatedShipment node. I need help in figuring out the correct breaks. I've commented out the "TotalCharges" portion as well.
EDIT. This worked. I forgot the RatedShipment node change...
According to the UPS API Rating Package XML & Web Service Developer Guides, it would seem that if you were to add the 00 code (Shipper negotiated rates) to here and the enum definition, it should return the correct rates for a given ups shipper number. You may also need to add the '<Shipment><RateInformation><NegotiatedRatesIndicator/></RateInformation>' into the XML (see final code addendum).
privatestring GetCustomerClassificationCode(UPSCustomerClassification customerClassification) { switch (customerClassification) { case UPSCustomerClassification.Shipper: return "00"; case UPSCustomerClassification.Wholesale: return "01"; case UPSCustomerClassification.Occasional: return "03"; case UPSCustomerClassification.Retail: return "04"; default: thrownew NopException("Unknown UPS customer classification code"); }
This is one of the most frustrating details on a NOP implementation. The changes to NOP addressed above DO work and that is a good thing. What UPS doesn't tell you on their website, API documentation or from most of their "tech support' is that even when the customer has negotiated rates AND has obtained an API key, returning the published rates must be approved by UPS admin. NOT their "Account Manager' who typically provides on prem support but has very little technical knowledge. Good luck getting this done. I have spent days with UPS for this very small thing.