Repository URL to install this package:
|
Version:
1.3.1 ▾
|
/**
* @deprecated - use Money
*/
import { isObj, EMPTY_OBJ } from 'exotic'
interface Price {
type?: 'Sale' | 'Reg'
value?: any
minReg?: string
maxReg?: string
reg?: string
sale?: string
ismin?: boolean | 'true' | 'false'
minSale?: boolean | 'true' | 'false'
maxSale?: boolean | 'true' | 'false'
}
interface Pricing {
currencyCode?: string
prices?: Price[]
}
/**
* @version -1 named "initprice"
*/
function transformPrice(pricing: Pricing) {
if (!isObj(pricing)) {
pricing = EMPTY_OBJ
}
let salePrices = {}
let regPrices = {}
const currencyCode = pricing.currencyCode || '$'
if (pricing.prices) {
for (let job = 0; job < pricing.prices.length; job++) {
const priceData = pricing.prices[job]
if (priceData.type === 'Sale') {
salePrices = Object.assign(salePrices, salePrice(priceData))
} else if (priceData.type === 'Reg') {
regPrices = Object.assign(regPrices, regPrice(priceData))
}
}
}
return setPriceData(salePrices, regPrices, currencyCode)
}
// @TODO use indexBy('label', 'value') to access in this remap
// @see catalog/product/index get regPrice()
function regPrice(priceData: Price) {
if (!priceData) {
return '@todo'
}
const price = {}
priceData.value = parseFloat(priceData.value)
priceData.value = priceData.value.toFixed(2)
if (priceData.ismin === 'true') {
price.minReg = priceData.value
} else if (priceData.ismax === 'true') {
price.maxReg = priceData.value
}
price.reg = priceData.value
return price
}
// @see catalog/product/index get salePrice()
function salePrice(priceData: Price) {
if (!priceData) {
return '@todo'
}
const price = {}
priceData.value = parseFloat(priceData.value)
priceData.value = priceData.value.toFixed(2)
if (priceData.ismin === 'true') {
price.minSale = priceData.value
} else if (priceData.ismax === 'true') {
price.maxSale = priceData.value
}
price.sale = priceData.value
return price
}
function setPriceData(
salePrices: Price,
regPrices: Price,
currencyCode: string
) {
const price = {}
if (salePrices) {
if (salePrices.minSale && salePrices.maxSale) {
price.sale =
currencyCode +
salePrices.maxSale +
' - ' +
currencyCode +
salePrices.minSale
} else if (salePrices.sale) {
price.sale = currencyCode + salePrices.sale
}
}
if (regPrices) {
if (regPrices.minReg && regPrices.maxReg) {
price.reg =
currencyCode +
regPrices.maxReg +
' - ' +
currencyCode +
regPrices.minReg
} else if (regPrices.reg) {
price.reg = currencyCode + regPrices.reg
}
}
price.reg = price.sale === price.reg ? null : price.reg
price.sale = price.sale ? price.sale : price.reg
price.reg = price.sale ? price.reg : null
return price
}
export { transformPrice, regPrice, salePrice, setPriceData }
export default transformPrice