Last active
August 29, 2015 14:22
-
-
Save htmelvis/0d5f26ac07699dc6c905 to your computer and use it in GitHub Desktop.
Shipping snippet for FoxyCart 2.0 International Shipping calculation. Currently not complete just has the conditional for GB and US. Twig templating language with JavaScript.
This file contains 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
{% if context == 'cart' or context == 'checkout' %} | |
<script type="text/javascript" charset="utf-8"> | |
(function (FC, $) { | |
FC.customFlatRates = {}; | |
FC.customFlatRates.shipping_results = []; | |
FC.customFlatRates.config = { | |
'autoSelect': false /* Set to true if you'd like the top shipping option to be automatically selected for the user */ | |
}; | |
FC.customFlatRates.logic = function(address) { | |
/* BEGIN CUSTOM SHIPPING LOGIC */ | |
var shippingCost; | |
var price = FC.json.total_item_price; | |
if (address.country == "US") { | |
//Code for shipping amounts based on the Two Letter Country Code | |
if (price < 24.99) { | |
shippingCost = 9.95; | |
} else if (price >= 25 && price <= 49.99) { | |
shippingCost = 11.95; | |
} else if (price >= 50.00 && price <= 74.99) { | |
shippingCost = 13.5; | |
} else if(price >= 75 && price <= 99.99){ | |
shippingCost = 15.95; | |
} else if(price >= 100 && price <= 199.99){ | |
shippingCost = 24.50; | |
} else if(price >= 200 && price <= 299.99){ | |
shippingCost = 32.95; | |
} else if(price >= 300 && price <= 399.99){ | |
shippingCost = 42.75; | |
} else if(price >= 400 && price <= 499.99){ | |
shippingCost = 52.50; | |
} else if(price >= 500 && price <= 599.99){ | |
shippingCost = 62.50; | |
} else if(price >= 600 && price <= 699.99){ | |
shippingCost = 74.75; | |
} else if(price >= 700 && price <= 799.99){ | |
shippingCost = 84.25; | |
} else if(price >= 800 && price <= 899.99){ | |
shippingCost = 92.45; | |
} else if(price >= 900 && price <= 999.99){ | |
shippingCost = 105.65; | |
} else if(price >= 1000 && price <= 1249.99){ | |
shippingCost = 119.5; | |
} else if(price >= 1250 && price <= 1499.99){ | |
shippingCost = 159.9; | |
} else if(price >= 1500 && price <= 1749.99){ | |
shippingCost = 172.75; | |
} else if(price >= 1750 && price <= 1999.99){ | |
shippingCost = 196.8; | |
} else if(price >= 2000 && price <= 2499.99){ | |
shippingCost = 225; | |
} else if(price >= 2500 && price <= 2999.99){ | |
shippingCost = 279; | |
} else if(price >= 3000 && price <= 4999.99){ | |
shippingCost = 440.5; | |
} else if(price >= 5000 && price <= 9999.99){ | |
shippingCost = 950; | |
} else { | |
shippingCost = 1075.60; | |
} | |
} else if(address.country == 'GB') { | |
//Any other country code | |
} else if(address.country === 'CN') | |
/* END CUSTOM SHIPPING LOGIC */ | |
}; | |
FC.customFlatRates.add(1, shippingCost, '', 'Standard Shipping'); | |
//Hide other shipping options | |
FC.client.on('render.done', function(params, next) { | |
jQuery(".fc-checkout__section--shipping-results").hide(); | |
}); | |
/* Flat Rate Shipping Modification Logic v2.0.6 */ | |
FC.customFlatRates.add=function(a,b,d,c){FC.customFlatRates.shipping_results.push({method:d,price:b,service_id:a,service_name:c})};FC.customFlatRates.hide=function(a){a=FC.customFlatRates.filterShippingOptions(a);for(var b=0;b<a.length;b++)FC.customFlatRates.shipping_results[a[b]].hide=!0};FC.customFlatRates.show=function(a){a=FC.customFlatRates.filterShippingOptions(a);for(var b=0;b<a.length;b++)FC.customFlatRates.shipping_results[a[b]].hide=!1}; | |
FC.customFlatRates.remove=function(a){a=FC.customFlatRates.filterShippingOptions(a);a=a.sort(function(a,b){return b-a});for(var b=a.length-1;0<=b;b--)FC.customFlatRates.shipping_results.splice(a[b],1)}; | |
FC.customFlatRates.update=function(a,b,d,c){a=FC.customFlatRates.filterShippingOptions(a);for(var e=0;e<a.length;e++){if("number"===typeof b||"string"===typeof b&&""!==b){var f=FC.customFlatRates.modifyPrice(FC.customFlatRates.shipping_results[a[e]].price,b);FC.customFlatRates.shipping_results[a[e]].price=f}"string"===typeof d&&(FC.customFlatRates.shipping_results[a[e]].method=d);"string"===typeof c&&(FC.customFlatRates.shipping_results[a[e]].service_name=c)}}; | |
FC.customFlatRates.reset=function(){FC.customFlatRates.shipping_results=[];FC.customFlatRates.error_message=!1};FC.customFlatRates.error=function(a){FC.customFlatRates.error_message=a}; | |
FC.api.getShippingOptions=function(a){var b={address_name:a.address_name,state:a.region,country:a.country,city:a.city,postal_code:a.postal_code};FC.customFlatRates.reset();FC.customFlatRates.logic(b);for(b=FC.customFlatRates.shipping_results.length-1;0<=b;b--)FC.customFlatRates.shipping_results[b].hide&&FC.customFlatRates.shipping_results.splice(b,1);if(FC.customFlatRates.config.autoSelect&&0==a.shipping_service_id||1==FC.customFlatRates.shipping_results.length){if(FC.json.has_multiship)for(b=0;b< | |
FC.json.multiship_data.length;b++)FC.json.multiship_data[b].address_name==a.address_name&&(FC.json.multiship_data[b].shipping_service_id=FC.customFlatRates.shipping_results[0].service_id,FC.json.multiship_data[b].shipping_service_description=FC.customFlatRates.shipping_results[0].method+" "+FC.customFlatRates.shipping_results[0].service_name);else FC.json.shipping_address.shipping_service_id=FC.customFlatRates.shipping_results[0].service_id,FC.json.shipping_address.shipping_service_description=FC.customFlatRates.shipping_results[0].method+ | |
" "+FC.customFlatRates.shipping_results[0].service_name;FC.json.show_shipping_tbd=!1}return $.Deferred(function(a){setTimeout(function(){FC.customFlatRates.error_message?a.reject(Error(FC.customFlatRates.error_message)):a.resolve({ok:!0,data:{shipping_results:FC.customFlatRates.shipping_results}})},10)})}; | |
FC.customFlatRates.filterShippingOptions=function(a){if("number"==typeof a)for(var b=0;b<FC.customFlatRates.shipping_results.length;b++){if(FC.customFlatRates.shipping_results[b].service_id==a)return[b]}else{if("string"==typeof a){for(var d=[],c={},b=0;b<FC.customFlatRates.shipping_results.length;b++){var e=FC.customFlatRates.shipping_results[b];c[b]=e.method+" "+e.service_name}if("all"!=a.toLowerCase()){a=/(fedex|usps|ups)?\s?([\w\s]+)?/i.exec(a);if(void 0==a||""==a)return;for(b in c)void 0!=a[1]&& | |
""!=a[1]&&-1==c[b].toLowerCase().indexOf(a[1].toLowerCase())?delete c[b]:void 0!=a[2]&&""!=a[2]&&-1==c[b].toLowerCase().indexOf(a[2].toLowerCase())&&delete c[b]}for(b in c)d.push(parseInt(b));return d}if("object"==typeof a){d=[];for(b=0;b<a.length;b++)for(c=0;c<FC.customFlatRates.shipping_results.length;c++)FC.customFlatRates.shipping_results[c].service_id==a[b]&&d.push(a[b]);return d}}}; | |
FC.customFlatRates.modifyPrice=function(a,b){b=b.toString();var d=/([\+\-\=\*\/])?(\d+(?:\.\d+)?)(\%)?/.exec(b);a=parseFloat(a);var c=parseFloat(d[2]);void 0!=d[3]&&""!=d[3]&&(c=c/100*a);switch(void 0==d[1]&&""!=d[1]?"=":d[1]){case "+":a+=c;break;case "-":a-=c;break;case "/":a/=c;break;case "*":a*=c;break;default:a=c}return 0>a?0:a}; | |
function requireShipping(){if(!FC.json.shipping_address.has_live_rate_shippable_products){if(FC.json.has_multiship)for(i=0;i<FC.json.multiship_data.length;i++)FC.json.multiship_data[i].has_live_rate_shippable_products=!0,0==FC.json.multiship_data[i].shipping_service_id&&(FC.json.show_address_entry=!0,"cart"==FC.json.context&&(FC.json.show_shipping_tbd=!0));FC.json.shipping_address.has_live_rate_shippable_products=!0;FC.json.has_current_live_rate_shipping=!0;FC.json.has_current_flat_rate_shipping= | |
!1;0==FC.json.shipping_address.shipping_service_id&&(FC.json.show_address_entry=!0,FC.json.show_shipping_tbd=!0);FC.Template(FC.json.context).clearOutput();FC[FC.json.context].render();$.each(FC.json.has_multiship?FC.json.multiship_data:[FC.json.shipping_address],function(a,b){FC.util.addressHasLocationInfo(b)&&0==b.shipping_results.length&&b.has_live_rate_shippable_products&&FC[FC.json.context].getShippingOptions({address:b})})}}FC.client.on("cart-item-quantity-update.done",requireShipping); | |
FC.client.on("cart-item-remove.done",requireShipping);FC.client.on("cart-coupon-add.done",requireShipping);FC.client.on("cart-coupon-remove.done",requireShipping);FC.client.on("customer-login.done",requireShipping);FC.client.on("checkout-submit",requireShipping); | |
{% if cart_is_fullpage or context == 'checkout' %}FC.client.on("ready.done",requireShipping);{% else %}requireShipping();{% endif %} | |
})(FC, jQuery); | |
</script> | |
{% endif %} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment