Created
August 11, 2016 10:56
-
-
Save WooForce/8f45ea32bc2b2324e603b397d0767ee6 to your computer and use it in GitHub Desktop.
UPS - Alter UPS account based on order address
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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