Skip to content

Instantly share code, notes, and snippets.

@WooForce
Created August 11, 2016 10:56
Show Gist options
  • Save WooForce/8f45ea32bc2b2324e603b397d0767ee6 to your computer and use it in GitHub Desktop.
Save WooForce/8f45ea32bc2b2324e603b397d0767ee6 to your computer and use it in GitHub Desktop.
UPS - Alter UPS account based on order address
// Altering rate request
add_filter('wf_ups_rate_request_data', 'wf_ups_modify_settings_fields',10, 3);
function wf_ups_modify_settings_fields($rate_req_data, $package){
$destination_country = $package['destination']['country'];
$destination_state = $package['destination']['state'];
$alternate_accounts = array();
// Add alternative accounts
$alternate_accounts[] = array(
'shipper_number' => 'XXXXXXXXXX', // UPS account number
'user_id' => 'XXXXXXXXXX', // UPS user ID
'password' => 'XXXXXXXXXX', // UPS password
'access_key' => 'XXXXXXXXXX', // UPS access key
'origin_addressline'=> '420 9th Ave', // Origin address
'origin_postcode' => '10001', // Origin postcode
'origin_city' => 'New York', // Origin City
'origin_state' => 'NY', // Origin State
'origin_country' => 'US', // Origin Country
'area' => array( // Define functional area for this account
'US' => array(
'AL' => 'Alabama',
'AZ' => 'Arizona',
'AR' => 'Arkansas',
'CA' => 'California',
'CO' => 'Colorado',
'GA' => 'Georgia',
'ID' => 'Idaho',
'KS' => 'Kansas',
'KY' => 'Kentucky',
'LA' => 'Louisiana',
'MS' => 'Mississippi',
'MO' => 'Missouri',
'NV' => 'Nevada',
'NM' => 'New Mexico',
'NC' => 'North Carolina',
'OK' => 'Oklahoma',
'OR' => 'Oregon',
'TN' => 'Tennessee',
'TX' => 'Texas',
'UT' => 'Utah',
'VA' => 'Virginia',
'WA' => 'Washington',
)
)
);
foreach($alternate_accounts as $account){
if(!is_array($account) || !isset($account['area']) || !is_array($account['area']))
continue;
if(!array_key_exists($destination_country, $account['area'])){
continue;
}
if(is_array($account['area'][$destination_country]) && array_key_exists($destination_state, $account['area'][$destination_country])){
// Functional area matched
$rate_req_data['shipper_number'] = $account['shipper_number'];
$rate_req_data['user_id'] = $account['user_id'];
$rate_req_data['password'] = $account['password'];
$rate_req_data['access_key'] = $account['access_key'];
$rate_req_data['origin_addressline']= $account['origin_addressline'];
$rate_req_data['origin_postcode'] = $account['origin_postcode'];
$rate_req_data['origin_city'] = $account['origin_city'];
$rate_req_data['origin_state'] = $account['origin_state'];
$rate_req_data['origin_country'] = $account['origin_country'];
break;
}
}
return $rate_req_data;
}
// Altering create shipment request
add_filter('wf_ups_confirm_shipment_settings', 'wf_ups_modify_settings_data', 10, 3);
function wf_ups_modify_settings_data($settings, $order){
$destination_country = $order->shipping_country;
$destination_state = $order->shipping_state;
$alternate_accounts = array();
// Add alternative accounts
$alternate_accounts[] = array(
'shipper_number' => 'XXXXXXXXXX', // UPS account number
'user_id' => 'XXXXXXXXXX', // UPS user ID
'password' => 'XXXXXXXXXX', // UPS password
'access_key' => 'XXXXXXXXXX', // UPS access key
'origin_addressline'=> '420 9th Ave', // Origin address
'origin_postcode' => '10001', // Origin postcode
'origin_city' => 'New York', // Origin City
'origin_state' => 'NY', // Origin State
'origin_country' => 'US', // Origin Country
'area' => array( // Define functional area for this account
'US' => array(
'AL' => 'Alabama',
'AZ' => 'Arizona',
'AR' => 'Arkansas',
'CA' => 'California',
'CO' => 'Colorado',
'GA' => 'Georgia',
'ID' => 'Idaho',
'KS' => 'Kansas',
'KY' => 'Kentucky',
'LA' => 'Louisiana',
'MS' => 'Mississippi',
'MO' => 'Missouri',
'NV' => 'Nevada',
'NM' => 'New Mexico',
'NC' => 'North Carolina',
'OK' => 'Oklahoma',
'OR' => 'Oregon',
'TN' => 'Tennessee',
'TX' => 'Texas',
'UT' => 'Utah',
'VA' => 'Virginia',
'WA' => 'Washington',
)
)
);
foreach($alternate_accounts as $account){
if(!is_array($account) || !isset($account['area']) || !is_array($account['area']))
continue;
if(!array_key_exists($destination_country, $account['area'])){
continue;
}
if(is_array($account['area'][$destination_country]) && array_key_exists($destination_state, $account['area'][$destination_country])){
// Functional area matched
$settings['shipper_number'] = $account['shipper_number'];
$settings['user_id'] = $account['user_id'];
$settings['password'] = $account['password'];
$settings['access_key'] = $account['access_key'];
$settings['origin_addressline'] = $account['origin_addressline'];
$settings['origin_postcode'] = $account['origin_postcode'];
$settings['origin_city'] = $account['origin_city'];
$settings['origin_state'] = $account['origin_state'];
$settings['origin_country'] = $account['origin_country'];
break;
}
}
return $settings;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment