cart-utils
Version:
Shopping cart utilities for cart total, subtotal, and shipping cost
40 lines (32 loc) • 924 B
JavaScript
const TAX_RATE = process.env.TAX_RATE || 0.06625
const SHIPPING_RATE = process.env.SHIPPING_RATE || 500
const FREE_SHIPPING_THRESHOLD = process.env.FREE_SHIPPING_THRESHOLD || 10000
const cartSubtotal = (cart) => {
const subTotal = cart.reduce((counter, product) => {
return counter + product.price_in_cent * product.qty
}, 0)
return subTotal
}
const cartTaxes = (cart) => {
const subTotal = cartSubtotal(cart)
return subTotal * TAX_RATE
}
const cartTotal = (cart) => {
if (cart.length === 0) {
return 0
}
const subTotal = cartSubtotal(cart)
const shipping = shouldPayShipping(cart) ? SHIPPING_RATE : 0
const total = subTotal + cartTaxes(cart) + shipping
return Math.round(total)
}
const shouldPayShipping = (cart) => {
const subTotal = cartSubtotal(cart)
return subTotal < FREE_SHIPPING_THRESHOLD
}
module.exports = {
cartSubtotal,
cartTaxes,
cartTotal,
shouldPayShipping,
}