@uppfirst/geo-shipping-prices
v2.2.4
Published
Geo shipping prices
Downloads
2,706
Readme
Geo Shipping Prices
This package is meant to be used along with database shipping data signature to provide easy shipping price management worldwide
Simply grab database signature in form of
[[PriceData, {
"ContinentCode": [PriceData, {
"CountryCode": [PriceData, {
"StateCode": [PriceData]
}]
}]
}]]
where PriceData is simple array of four numbers each representing cost of tax, insurance, other, price in respective order:
[Tax, Insurance, Other, Price]
for e.g.
[[5, 5, 5, 5], {
"NA": [[0, 0, 0, 0], {
"US": [[0, 0, 0, 0], {
"AL": [[]]
}]
}]
}]
PriceData has three main outcomes:
[0, 0, 0, 0] -> free shipping
[5, 5, 5, 5] -> price defined shipping
[] -> shipping not available
undefined -> shipping not defined (probably parent defined shipping)
in previous example this would mean shipping worldwide globally has defined prices for tax, insurance, other and price while shipping for North America is free of charge and Alabama state is not available for shipping
To use this package one would need to provide initial shipping data from database when initializing package like
const shipping = new Shipping([[0, 0, 0, 0], {}])
or
const shipping = new Shipping(() => [[0, 0, 0, 0], {}])
or
const shiping = new Shipping(async () => await db.getShippingData())
It is possible to update general shipping price data or specific continent, country or state shipping price data by using following methods
shipping.setWorldPrice({ tax: 0, insurance: 0, other: 0, price: 0 })
shipping.setContinentPrice("NA", { tax: 0, insurance: 0, other: 0, price: 0 })
shipping.setCountryPrice("US", { tax: 0, insurance: 0, other: 0, price: 0 })
shipping.setStatePrice("AL", { tax: 0, insurance: 0, other: 0, price: 0 })
In the similar fashion it is possible to retrieve region specific prices by using following methods
shipping.world() -> returns world wide defined prices
shipping.continent("NA") -> returns "NA" continent defined data and prices
shipping.continents(["NA", "EU"]) -> returns multiple continents defined data and prices
shipping.country("US") -> returns "US" country defined data and prices
shipping.countries("NA") -> returns countries defined data and prices which belongs to "NA"
shipping.state("AL") -> returns "AL" state defined data and prices
shipping.states("US") -> returns state defined data and prices which belongs to "US"
all these methods returns data related to region like name, code, currency, ... and prices property which are defined as { tax, insurance, other, price }
to use this package in form of getter/setter like within react app
one would need to initialize and use shipping.data
and shipping.setData
in appropriate hooks or methods
as this package is not directly using any database queries or backend specific code but relies on provided data it is to be used in the same fashion both wise on UI or on API level