From 2f4f692cf65e08091eca4c282163ff46772ffa60 Mon Sep 17 00:00:00 2001 From: Leonardo Matos Date: Mon, 1 Jul 2019 13:20:25 -0300 Subject: [PATCH] feat(method): new method --- src/methods/on-promotion.js | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/methods/on-promotion.js diff --git a/src/methods/on-promotion.js b/src/methods/on-promotion.js new file mode 100644 index 0000000..776d9ff --- /dev/null +++ b/src/methods/on-promotion.js @@ -0,0 +1,61 @@ +const onPromotion = body => { + let promoDates = body.price_effective_date + if (promoDates) { + let now = new Date() + if (promoDates.start) { + // start date and time in ISO 8601 + if (new Date(promoDates.start) > now) { + return false + } + } + if (promoDates.end) { + // promotion end date and time in ISO 8601 + if (new Date(promoDates.end) < now) { + return false + } + } + } + // default to no promotion + return !!(body.base_price > body.price) +} + +/** + * @method + * @memberof ecomUtils + * @name onPromotion + * @description Check if item has promotional price. + * @param {object} body - Object (product or variation) body + * @returns {boolean} + * + * @example + * // Simple test with no promotion date range + * // Full object ref.: https://developers.e-com.plus/docs/api/#/store/products/ + * ecomUtils.onPromotion({ sku: 'TEST', name: 'Test', price: 140.56 }) + * // => false + * ecomUtils.onPromotion({ price: 100, base_price: 110 }) + * // => true + * ecomUtils.onPromotion({ price: 190, base_price: 170 }) + * // => false + * + * @example + * // With date range + * const product = { sku: 'abc', price: 20.9, base_price: 30.9, price_effective_date: {} } + * product.price_effective_date.start = '2019-06-01T16:03:45.035Z' + * ecomUtils.onPromotion(product) + * // => true + * product.price_effective_date.end = '2019-06-10T16:03:45.035Z' + * ecomUtils.onPromotion(product) + * // => false + * product.price_effective_date.end = '2021-08-12T00:00:00.000Z' + * ecomUtils.onPromotion(product) + * // => true + * product.price_effective_date.start = '2021-01-01T00:00:00.000Z' + * ecomUtils.onPromotion(product) + * // => false + * + * @example + * // Importing this method standalone + * import onPromotion from '@ecomplus/utils/dist/methods/onPromotion' + */ + +export default onPromotion