Draft:Developer's FAQ
Is there an easy way to grab domestic shipping rates overriding the default destination address?
To achieve your objective, you will have to use the func_get_shipping_methods_list function. The function returns a PHP array.
In your case, the key setting is $config['General']['apply_default_country']. The 'Override destination address before shipping calculated' task is implemented here:
[~/www/xcart_4_4_x]$ grep -r --include='*.php' "apply_default_country.*Y" *|grep -v '=='|grep -v '!='
modules/Amazon_Checkout/func.php: $config['General']['apply_default_country'] = 'Y';
modules/Google_Checkout/gcheckout_callback.php: $config['General']['apply_default_country'] = 'Y';
Here is the code from modules/Amazon_Checkout/func.php
function func_amazon_get_shipping_methods12($cart)
{
...
// Option adjustment to avoid empty($userinfo) checking
// $userinfo will be provided by Amazon in callback
$config['Shipping']['enable_all_shippings'] = 'Y';
$userinfo = $cart['userinfo'];
$products = func_products_in_cart($cart, (!empty($user_account['membershipid']) ? $user_account['membershipid'] : ''));
$_need_shipping = func_cart_is_need_shipping($cart, $products, $userinfo, 'dont_check_free_ship_coupons');
if (empty($_need_shipping)) {
$result_cache[$md5_args] = false;
return false;
}
// Some options require adjustment
$config['Shipping']['enable_all_shippings'] = 'N';
// Emulate the 'apply_default_country' option enabled
$config['General']['apply_default_country'] = 'Y';
$config['General']['default_country'] = $userinfo['b_country'];
$config['General']['default_zipcode'] = $userinfo['b_zipcode'];
$config['General']['default_state'] = $userinfo['b_state'];
$config['General']['default_city'] = $userinfo['b_city'];
$intershipper_recalc = 'Y';
x_load('shipping');
// Get list of all shipping methods that are potentially available for customers
$shipping_methods = func_get_shipping_methods_list($cart, $products, $userinfo);
...
}
Adjust $userinfo['b_*'] according to your warehouse address
Or use the code from modules/Google_Checkout/gcheckout_callback.php
If I wanted to grab the coupon codes being used on a specific order, where should I be looking? Is this included in the $cart data?
This variable stores the coupon code applied to the cart after cart recalculation:
$cart['coupon']
The same field is available in the sql xcart_orders table.