Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save adrianmi8/fd37955f23cd882f2d28148216187450 to your computer and use it in GitHub Desktop.
Save adrianmi8/fd37955f23cd882f2d28148216187450 to your computer and use it in GitHub Desktop.
Multi Carrier - APEX - Get Rates - DHL Express
Id prefId = 'a025800000Zr2jJ'; // your DHL preference
Id contactId = '00358000006wy1I'; // you contact record
zkmulti__MCShipmate_Preference__c shipmatePref = [
SELECT Id, Name, zkmulti__AccountNumber__c,
zkmulti__Carrier__c, zkmulti__Label_Image_Type_Default__c,
zkmulti__Billing_City__c, zkmulti__Billing_Country__c, zkmulti__Billing_State__c,
zkmulti__Billing_Street__c, zkmulti__Billing_Zip_Postal_Code__c, zkmulti__Company_Name__c, zkmulti__Sender_Email_Default__c, zkmulti__Sender_Name_Default__c,
zkmulti__Sender_Phone_Default__c, zkmulti__Shipping_City__c, zkmulti__Shipping_Country__c, zkmulti__Shipping_Is_Residential__c,
zkmulti__Shipping_State__c, zkmulti__Shipping_Street__c, zkmulti__Shipping_Zip_Postal_Code__c, zkmulti__Currency_Default__c
FROM zkmulti__MCShipmate_Preference__c
WHERE Id = :prefId];
// get contact information (for recipient information)
Contact con = [
SELECT MailingCity, Account.Name, MailingCountry,
Email, FirstName, LastName,
Phone, MailingState, MailingStreet,
MailingPostalCode
FROM Contact
WHERE Id = :contactId];
// 1. Shipment and Shipment Info (required object)
zkmulti__MCShipment__c ship = new zkmulti__MCShipment__c(
zkmulti__Carrier__c = shipmatePref.zkmulti__Carrier__c,
zkmulti__Label_Image_Type__c = shipmatePref.zkmulti__Label_Image_Type_Default__c,
// sender info
zkmulti__Sender_Name__c = shipmatePref.zkmulti__Sender_Name_Default__c,
zkmulti__Sender_City__c = shipmatePref.zkmulti__Shipping_City__c,
zkmulti__Sender_Company__c = shipmatePref.zkmulti__Company_Name__c,
zkmulti__Sender_Country__c = shipmatePref.zkmulti__Shipping_Country__c,
zkmulti__Sender_Email__c = shipmatePref.zkmulti__Sender_Email_Default__c,
zkmulti__Sender_Phone__c = shipmatePref.zkmulti__Sender_Phone_Default__c,
zkmulti__Sender_State_Province__c = shipmatePref.zkmulti__Shipping_State__c,
zkmulti__Sender_Street__c = shipmatePref.zkmulti__Shipping_Street__c,
zkmulti__Sender_Zip_Postal_Code__c = shipmatePref.zkmulti__Shipping_Zip_Postal_Code__c,
zkmulti__Sender_Address_is_Residential__c = false,
// recipient info
zkmulti__Recipient_City__c = con.MailingCity,
zkmulti__Recipient_Company__c = con.Account.Name,
zkmulti__Recipient_Country__c = con.MailingCountry,
zkmulti__Recipient_Email__c = con.Email,
zkmulti__Recipient_Name__c = con.FirstName + ' ' + con.LastName,
zkmulti__Recipient_Phone__c = con.Phone,
zkmulti__Recipient_State_Province__c = con.MailingState,
zkmulti__Recipient_Street__c = con.MailingStreet,
zkmulti__Recipient_Zip_Postal_Code__c = con.MailingPostalCode,
zkmulti__Ship_Date__c = Date.today(),
zkmulti__Currency__c = 'USD',
zkmulti__Dimension_Units__c = 'IN',
zkmulti__Weight_Units__c = 'LB',
//zkmulti__Service_Type__c = 'Express1030NonDoc', // this line is commented to get all services available
zkmulti__Package_Type__c = 'your_packaging',
zkmulti__Return_Shipment__c = true,
zkmulti__Payment_Type__c = 'Sender'
);
// 2. Packages
List<zkmulti__MCPackage__c> packages = new List<zkmulti__MCPackage__c>();
zkmulti__MCPackage__c pkg = new zkmulti__MCPackage__c (
zkmulti__Weight__c = 1,
zkmulti__Length__c = 3,
zkmulti__Width__c = 2,
zkmulti__Height__c = 1,
zkmulti__DeclaredValue__c = 0
);
packages.add(pkg);
// for international shipments don't forget to add customs items
List<zkmulti__MCCustoms_Item__c> customsItems = new List<zkmulti__MCCustoms_Item__c>();
zkmulti__MCCustoms_Item__c customItem = new zkmulti__MCCustoms_Item__c(
zkmulti__Carrier__c = shipmatePref.zkmulti__Carrier__c,
zkmulti__Country_of_Manufacture__c = 'US',
zkmulti__Description__c = 'test description',
zkmulti__Quantity__c = 1,
zkmulti__QuantityUnits__c = 'F',
zkmulti__UnitPrice__c = 10,
zkmulti__Weight__c = 1
);
customsItems.add(customItem);
List<zkmulti.ShipmentRate> rates = zkmulti.BulkShipmentInterface.calculateRates(shipmatePref.Id, ship, packages, null, customsItems, null);
System.debug('RATES: ' + rates);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment