@lyxa.ai/core 1.1.31-alpha.4 → 1.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/libraries/mongo/models/cart.model.d.ts +2 -0
- package/dist/libraries/mongo/models/cart.model.js +10 -0
- package/dist/libraries/mongo/models/cart.model.js.map +1 -1
- package/dist/libraries/mongo/models/embedded/currency.model.d.ts +1 -0
- package/dist/libraries/mongo/models/embedded/currency.model.js +5 -0
- package/dist/libraries/mongo/models/embedded/currency.model.js.map +1 -1
- package/dist/types/README.md +1 -1
- package/dist/types/package.json +1 -1
- package/dist/types/utilities/shared/currency.d.ts +1 -4
- package/dist/types/utilities/shared/currency.js +13 -17
- package/dist/types/utilities/shared/currency.js.map +1 -1
- package/dist/utilities/currency.d.ts +6 -2
- package/dist/utilities/currency.js +52 -14
- package/dist/utilities/currency.js.map +1 -1
- package/dist/utilities/pipelines/common-pipeline-functions.d.ts +2 -1
- package/dist/utilities/pipelines/common-pipeline-functions.js +10 -15
- package/dist/utilities/pipelines/common-pipeline-functions.js.map +1 -1
- package/dist/utilities/pipelines/product-pipeline-stages.d.ts +2 -2
- package/dist/utilities/pipelines/product-pipeline-stages.js +6 -2
- package/dist/utilities/pipelines/product-pipeline-stages.js.map +1 -1
- package/dist/utilities/shared/currency.d.ts +1 -4
- package/dist/utilities/shared/currency.js +13 -17
- package/dist/utilities/shared/currency.js.map +1 -1
- package/package.json +1 -1
|
@@ -68,6 +68,8 @@ let Cart = class Cart extends defaultClasses_1.TimeStamps {
|
|
|
68
68
|
cartId;
|
|
69
69
|
title;
|
|
70
70
|
exchangeRate;
|
|
71
|
+
roundTo;
|
|
72
|
+
secondaryRoundTo;
|
|
71
73
|
user;
|
|
72
74
|
parent;
|
|
73
75
|
shop;
|
|
@@ -93,6 +95,14 @@ __decorate([
|
|
|
93
95
|
(0, typegoose_1.prop)({ type: Number, default: 0 }),
|
|
94
96
|
__metadata("design:type", Number)
|
|
95
97
|
], Cart.prototype, "exchangeRate", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, typegoose_1.prop)({ type: Number, default: 0.01 }),
|
|
100
|
+
__metadata("design:type", Number)
|
|
101
|
+
], Cart.prototype, "roundTo", void 0);
|
|
102
|
+
__decorate([
|
|
103
|
+
(0, typegoose_1.prop)({ type: Number, default: 1000 }),
|
|
104
|
+
__metadata("design:type", Number)
|
|
105
|
+
], Cart.prototype, "secondaryRoundTo", void 0);
|
|
96
106
|
__decorate([
|
|
97
107
|
(0, typegoose_1.prop)({ required: true, ref: () => user_model_1.User }),
|
|
98
108
|
__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart.model.js","sourceRoot":"/","sources":["libraries/mongo/models/cart.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAAqF;AACrF,6CAAoC;AACpC,iDAAwC;AACxC,4EAAqE;AACrE,kDAA8F;AAC9F,0DAAsE;AAEtE,6CAAoC;AACpC,uDAA6C;AAC7C,kEAAwE;AACxE,wBAA8B;AAC9B,0DAAiD;AAEjD,MAAa,QAAQ;IAEb,IAAI,CAAU;IAGd,UAAU,CAAc;IAGxB,MAAM,CAAU;IAGhB,QAAQ,CAAY;IAGpB,OAAO,CAAW;IAGlB,IAAI,CAAU;IAGd,cAAc,CAAW;IAGzB,sBAAsB,CAAU;CACvC;AAxBD,4BAwBC;AAtBO;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sCAClB;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAU,EAAE,OAAO,EAAE,iBAAU,CAAC,MAAM,EAAE,CAAC;;4CACtD;AAGxB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAM,EAAE,CAAC;8BACvB,qBAAM;wCAAC;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAQ,EAAE,CAAC;;0CAC5B;AAGpB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,uBAAO,EAAE,CAAC;8BACvB,uBAAO;yCAAC;AAGlB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sCACF;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;gDACR;AAGzB;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;wDACG;AAgCjC,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,2BAAU;IAE5B,MAAM,CAAS;IAGf,KAAK,CAAU;IAGf,YAAY,CAAU;IAGtB,IAAI,CAAa;IAGjB,MAAM,CAAc;IAGpB,IAAI,CAAa;IAGjB,QAAQ,CAAY;IAGpB,YAAY,CAAW;IAGvB,iBAAiB,CAAqB;IAGtC,qBAAqB,CAAU;IAG/B,8BAA8B,CAAU;IAQxC,MAAM,CAAc;IAGpB,UAAU,CAAU;IAOpB,SAAS,CAAkB;CAClC,CAAA;
|
|
1
|
+
{"version":3,"file":"cart.model.js","sourceRoot":"/","sources":["libraries/mongo/models/cart.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { prop, Ref, index, modelOptions, Severity, pre } from '@typegoose/typegoose';\nimport { Shop } from './shop.model';\nimport { Parent } from './parent.model';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { CartStatus, ChargeType, ItemType, PaymentPreference } from '../../../utilities/enum';\nimport { Address, RegularOrderAddress } from './shared/address.model';\nimport { Coupon } from './coupon.model';\nimport { User } from './user.model';\nimport { LineItem } from './line-item.model';\nimport { handlePreSaveForUniqueId } from '../utilities/unique-id.hooks';\nimport { CartModel } from '.';\nimport { Charge } from './embedded/charge.model';\n\nexport class ShopSnap {\n\t@prop({ required: true, type: String })\n\tpublic name!: string;\n\n\t@prop({ required: true, type: String, enum: ChargeType, default: ChargeType.CUSTOM })\n\tpublic chargeType!: ChargeType;\n\n\t@prop({ required: true, type: Charge })\n\tpublic charge!: Charge;\n\n\t@prop({ required: true, type: String, enum: ItemType })\n\tpublic itemType!: ItemType;\n\n\t@prop({ required: true, type: Address })\n\tpublic address!: Address;\n\n\t@prop({ type: String })\n\tpublic logo?: string;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isShopDelivery?: boolean;\n\n\t@prop({ type: Number, default: 10 })\n\tpublic defaultPreparationTime?: number;\n}\n\n@modelOptions({\n\tschemaOptions: {\n\t\tcollection: 'carts',\n\t\ttoJSON: { virtuals: true },\n\t\ttoObject: { virtuals: true },\n\t},\n\toptions: {\n\t\tallowMixed: Severity.ALLOW,\n\t},\n})\n@index({ user: 1 })\n@index({ shop: 1 })\n@index({ status: 1 })\n@index(\n\t{ user: 1, shop: 1 },\n\t{\n\t\tunique: true,\n\t\tpartialFilterExpression: {\n\t\t\tstatus: { $in: [CartStatus.ACTIVE, CartStatus.LOCKED] },\n\t\t\tdeletedAt: null,\n\t\t},\n\t}\n)\n@pre<Cart>('save', async function (next) {\n\t// Generate unique id if not exists\n\tawait handlePreSaveForUniqueId.call(this, CartModel, 'cartId');\n\n\tnext();\n})\nexport class Cart extends TimeStamps {\n\t@prop({ type: String, unique: true, index: true })\n\tpublic cartId: string;\n\n\t@prop({ trim: true, maxlength: 100 })\n\tpublic title?: string;\n\n\t@prop({ type: Number, default: 0 })\n\tpublic exchangeRate?: number;\n\n\t@prop({ type: Number, default: 0.01 })\n\tpublic roundTo?: number;\n\n\t@prop({ type: Number, default: 1000 })\n\tpublic secondaryRoundTo?: number;\n\n\t@prop({ required: true, ref: () => User })\n\tpublic user!: Ref<User>;\n\n\t@prop({ required: true, ref: () => Parent })\n\tpublic parent: Ref<Parent>;\n\n\t@prop({ required: true, ref: () => Shop })\n\tpublic shop!: Ref<Shop>;\n\n\t@prop({ type: ShopSnap })\n\tpublic shopSnap?: ShopSnap;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isGroupOrder?: boolean;\n\n\t@prop({ type: String, enum: PaymentPreference })\n\tpublic paymentPreference?: PaymentPreference;\n\n\t@prop({ type: Number, default: Infinity })\n\tpublic spendingLimitForGuest?: number;\n\n\t@prop({ type: Number, default: Infinity })\n\tpublic secondarySpendingLimitForGuest?: number;\n\n\t@prop({\n\t\tenum: CartStatus,\n\t\ttype: String,\n\t\tdefault: CartStatus.ACTIVE,\n\t\trequired: true,\n\t})\n\tpublic status!: CartStatus;\n\n\t@prop({ type: String, trim: true })\n\tpublic couponCode?: string;\n\n\t@prop({\n\t\tref: () => LineItem,\n\t\tforeignField: 'cart',\n\t\tlocalField: '_id',\n\t})\n\tpublic lineItems: Ref<LineItem>[];\n}\n"]}
|
|
@@ -15,6 +15,7 @@ class Currency {
|
|
|
15
15
|
symbol;
|
|
16
16
|
name;
|
|
17
17
|
code;
|
|
18
|
+
roundTo;
|
|
18
19
|
}
|
|
19
20
|
exports.Currency = Currency;
|
|
20
21
|
__decorate([
|
|
@@ -29,4 +30,8 @@ __decorate([
|
|
|
29
30
|
(0, typegoose_1.prop)({ type: String }),
|
|
30
31
|
__metadata("design:type", String)
|
|
31
32
|
], Currency.prototype, "code", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, typegoose_1.prop)({ type: Number, default: 0.01 }),
|
|
35
|
+
__metadata("design:type", Number)
|
|
36
|
+
], Currency.prototype, "roundTo", void 0);
|
|
32
37
|
//# sourceMappingURL=currency.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/currency.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAE5C,MAAa,QAAQ;IAEb,MAAM,CAAU;IAGhB,IAAI,CAAU;IAGd,IAAI,CAAU;
|
|
1
|
+
{"version":3,"file":"currency.model.js","sourceRoot":"/","sources":["libraries/mongo/models/embedded/currency.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA4C;AAE5C,MAAa,QAAQ;IAEb,MAAM,CAAU;IAGhB,IAAI,CAAU;IAGd,IAAI,CAAU;IAGd,OAAO,CAAU;CACxB;AAZD,4BAYC;AAVO;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;wCACA;AAGhB;IADN,IAAA,gBAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sCAClB;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;sCACF;AAGd;IADN,IAAA,gBAAI,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;yCACd","sourcesContent":["import { prop } from '@typegoose/typegoose';\n\nexport class Currency {\n\t@prop({ type: String })\n\tpublic symbol?: string;\n\n\t@prop({ required: true, type: String })\n\tpublic name!: string;\n\n\t@prop({ type: String })\n\tpublic code?: string;\n\n\t@prop({ type: Number, default: 0.01 })\n\tpublic roundTo?: number;\n}\n"]}
|
package/dist/types/README.md
CHANGED
package/dist/types/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lyxa.ai/types",
|
|
3
|
-
"version": "1.1.31
|
|
3
|
+
"version": "1.1.31",
|
|
4
4
|
"description": "Lyxa type definitions and validation schemas for both frontend and backend",
|
|
5
5
|
"author": "elie <42282499+Internalizable@users.noreply.github.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export declare const BaseCurrencyRoundTo = 0.01;
|
|
2
|
-
export declare const SecondaryCurrencyRoundTo = 1000;
|
|
3
1
|
export declare const roundCurrencySync: (amount: number, roundingFactor: number) => number;
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const roundSecondaryCurrency: (amount: number) => number;
|
|
2
|
+
export declare const convertToSecondarySync: (price: number, exchangeRate: number, roundTo: number) => number | null;
|
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.BaseCurrencyRoundTo = 0.01;
|
|
5
|
-
exports.SecondaryCurrencyRoundTo = 1000;
|
|
3
|
+
exports.convertToSecondarySync = exports.roundCurrencySync = void 0;
|
|
6
4
|
const roundCurrencySync = (amount, roundingFactor) => {
|
|
7
|
-
if (
|
|
8
|
-
isNaN(amount) ||
|
|
9
|
-
typeof roundingFactor !== 'number' ||
|
|
10
|
-
roundingFactor <= 0 ||
|
|
11
|
-
amount === 0) {
|
|
5
|
+
if (amount == 0)
|
|
12
6
|
return 0;
|
|
13
|
-
|
|
7
|
+
const rounded = Math.ceil(amount / roundingFactor) * roundingFactor;
|
|
14
8
|
const decimals = (roundingFactor.toString().split('.')[1] || '').length;
|
|
15
|
-
const rounded = Math.round(amount / roundingFactor) * roundingFactor;
|
|
16
9
|
return Number(rounded.toFixed(decimals));
|
|
17
10
|
};
|
|
18
11
|
exports.roundCurrencySync = roundCurrencySync;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
const convertToSecondarySync = (price, exchangeRate, roundTo) => {
|
|
13
|
+
if (price == 0)
|
|
14
|
+
return 0;
|
|
15
|
+
if (price == null)
|
|
16
|
+
return null;
|
|
17
|
+
const amount = price * exchangeRate;
|
|
18
|
+
if (!roundTo)
|
|
19
|
+
return amount;
|
|
20
|
+
return (0, exports.roundCurrencySync)(amount, roundTo);
|
|
25
21
|
};
|
|
26
|
-
exports.
|
|
22
|
+
exports.convertToSecondarySync = convertToSecondarySync;
|
|
27
23
|
//# sourceMappingURL=currency.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"/","sources":["utilities/shared/currency.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"/","sources":["utilities/shared/currency.ts"],"names":[],"mappings":";;;AAAO,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,cAAsB,EAAU,EAAE;IACnF,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC;IACpE,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B;AAEK,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,YAAoB,EAAE,OAAe,EAAE,EAAE;IAC9F,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAC5B,OAAO,IAAA,yBAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AANW,QAAA,sBAAsB,0BAMjC","sourcesContent":["export const roundCurrencySync = (amount: number, roundingFactor: number): number => {\n\tif (amount == 0) return 0;\n\tconst rounded = Math.ceil(amount / roundingFactor) * roundingFactor;\n\tconst decimals = (roundingFactor.toString().split('.')[1] || '').length;\n\treturn Number(rounded.toFixed(decimals));\n};\n\nexport const convertToSecondarySync = (price: number, exchangeRate: number, roundTo: number) => {\n\tif (price == 0) return 0;\n\tif (price == null) return null;\n\tconst amount = price * exchangeRate;\n\tif (!roundTo) return amount;\n\treturn roundCurrencySync(amount, roundTo);\n};"]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { PaidCurrency } from './enum';
|
|
2
|
+
export declare const getRoundingFactor: (currency: PaidCurrency) => Promise<number>;
|
|
1
3
|
export declare const getExchangeRate: () => Promise<number>;
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
+
export declare const roundCurrency: (amount: number, currency: PaidCurrency, roundingFactor?: number) => Promise<number>;
|
|
5
|
+
export declare const roundCurrencySync: (amount: number, roundingFactor: number) => number;
|
|
6
|
+
export declare const convertToSecondary: (amount: number, exchangeRate?: number, roundTo?: number) => Promise<number>;
|
|
7
|
+
export declare const convertToSecondarySync: (price: number, exchangeRate: number, roundTo: number) => number | undefined;
|
|
@@ -1,29 +1,67 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertToSecondary = exports.
|
|
3
|
+
exports.convertToSecondarySync = exports.convertToSecondary = exports.roundCurrencySync = exports.roundCurrency = exports.getExchangeRate = exports.getRoundingFactor = void 0;
|
|
4
4
|
const __1 = require("..");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const enum_1 = require("./enum");
|
|
6
|
+
const DEFAULT_ROUNDING_FACTOR = 0.1;
|
|
7
|
+
const DEFAULT_EXCHANGE_RATE = 1;
|
|
8
|
+
const getRoundingFactor = async (currency) => {
|
|
9
|
+
const setting = (await (0, __1.getLibraries)().getCachedSettingsService().getSettings());
|
|
10
|
+
const currencySetting = setting.currencySetting;
|
|
11
|
+
let roundingFactor;
|
|
12
|
+
if (currencySetting) {
|
|
13
|
+
switch (currency) {
|
|
14
|
+
case enum_1.PaidCurrency.BASE:
|
|
15
|
+
roundingFactor = currencySetting.baseCurrency?.roundTo;
|
|
16
|
+
break;
|
|
17
|
+
case enum_1.PaidCurrency.SECONDARY:
|
|
18
|
+
roundingFactor = currencySetting.secondaryCurrency?.roundTo;
|
|
19
|
+
break;
|
|
20
|
+
default:
|
|
21
|
+
roundingFactor = DEFAULT_ROUNDING_FACTOR;
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return roundingFactor || DEFAULT_ROUNDING_FACTOR;
|
|
26
|
+
};
|
|
27
|
+
exports.getRoundingFactor = getRoundingFactor;
|
|
7
28
|
const getExchangeRate = async () => {
|
|
8
29
|
const settings = (await (0, __1.getLibraries)().getCachedSettingsService().getSettings());
|
|
9
30
|
const currencySetting = settings.currencySetting;
|
|
10
31
|
return currencySetting?.exchangeRate || DEFAULT_EXCHANGE_RATE;
|
|
11
32
|
};
|
|
12
33
|
exports.getExchangeRate = getExchangeRate;
|
|
13
|
-
const
|
|
14
|
-
if (
|
|
34
|
+
const roundCurrency = async (amount, currency, roundingFactor) => {
|
|
35
|
+
if (amount == 0)
|
|
15
36
|
return 0;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return (0, shared_1.roundBaseCurrency)(amount / exchangeRate);
|
|
37
|
+
roundingFactor = roundingFactor ?? (await (0, exports.getRoundingFactor)(currency));
|
|
38
|
+
return (0, exports.roundCurrencySync)(amount, roundingFactor);
|
|
19
39
|
};
|
|
20
|
-
exports.
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
40
|
+
exports.roundCurrency = roundCurrency;
|
|
41
|
+
const roundCurrencySync = (amount, roundingFactor) => {
|
|
42
|
+
if (amount == 0)
|
|
23
43
|
return 0;
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
return (
|
|
44
|
+
const rounded = Math.ceil(amount / roundingFactor) * roundingFactor;
|
|
45
|
+
const decimals = (roundingFactor.toString().split('.')[1] || '').length;
|
|
46
|
+
return Number(rounded.toFixed(decimals));
|
|
47
|
+
};
|
|
48
|
+
exports.roundCurrencySync = roundCurrencySync;
|
|
49
|
+
const convertToSecondary = async (amount, exchangeRate, roundTo) => {
|
|
50
|
+
if (amount == 0)
|
|
51
|
+
return 0;
|
|
52
|
+
exchangeRate = exchangeRate ?? (await (0, exports.getExchangeRate)());
|
|
53
|
+
return (0, exports.roundCurrency)(amount * exchangeRate, enum_1.PaidCurrency.SECONDARY, roundTo);
|
|
27
54
|
};
|
|
28
55
|
exports.convertToSecondary = convertToSecondary;
|
|
56
|
+
const convertToSecondarySync = (price, exchangeRate, roundTo) => {
|
|
57
|
+
if (price == 0)
|
|
58
|
+
return 0;
|
|
59
|
+
if (price == null)
|
|
60
|
+
return undefined;
|
|
61
|
+
const amount = price * exchangeRate;
|
|
62
|
+
if (!roundTo)
|
|
63
|
+
return amount;
|
|
64
|
+
return (0, exports.roundCurrencySync)(amount, roundTo);
|
|
65
|
+
};
|
|
66
|
+
exports.convertToSecondarySync = convertToSecondarySync;
|
|
29
67
|
//# sourceMappingURL=currency.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"/","sources":["utilities/currency.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"/","sources":["utilities/currency.ts"],"names":[],"mappings":";;;AAEA,0BAAkC;AAGlC,iCAAsC;AAEtC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAEzB,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAAsB,EAAmB,EAAE;IAClF,MAAM,OAAO,GAAG,CAAC,MAAM,IAAA,gBAAY,GAAE,CAAC,wBAAwB,EAAE,CAAC,WAAW,EAAE,CAAY,CAAC;IAC3F,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAChD,IAAI,cAAkC,CAAC;IACvC,IAAI,eAAe,EAAE,CAAC;QACrB,QAAQ,QAAQ,EAAE,CAAC;YAClB,KAAK,mBAAY,CAAC,IAAI;gBACrB,cAAc,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC;gBACvD,MAAM;YACP,KAAK,mBAAY,CAAC,SAAS;gBAC1B,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAC5D,MAAM;YACP;gBACC,cAAc,GAAG,uBAAuB,CAAC;gBACzC,MAAM;QACR,CAAC;IACF,CAAC;IACD,OAAO,cAAc,IAAI,uBAAuB,CAAC;AAClD,CAAC,CAAC;AAlBW,QAAA,iBAAiB,qBAkB5B;AAEK,MAAM,eAAe,GAAG,KAAK,IAAqB,EAAE;IAC1D,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,gBAAY,GAAE,CAAC,wBAAwB,EAAE,CAAC,WAAW,EAAE,CAAY,CAAC;IAC5F,MAAM,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;IACjD,OAAO,eAAe,EAAE,YAAY,IAAI,qBAAqB,CAAC;AAC/D,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B;AAEK,MAAM,aAAa,GAAG,KAAK,EACjC,MAAc,EACd,QAAsB,EACtB,cAAuB,EACL,EAAE;IACpB,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,cAAc,GAAG,cAAc,IAAI,CAAC,MAAM,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;IACvE,OAAO,IAAA,yBAAiB,EAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC,CAAC;AARW,QAAA,aAAa,iBAQxB;AAEK,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,cAAsB,EAAU,EAAE;IACnF,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC;IACpE,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B;AAEK,MAAM,kBAAkB,GAAG,KAAK,EACtC,MAAc,EACd,YAAqB,EACrB,OAAgB,EACE,EAAE;IACpB,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,YAAY,GAAG,YAAY,IAAI,CAAC,MAAM,IAAA,uBAAe,GAAE,CAAC,CAAC;IACzD,OAAO,IAAA,qBAAa,EAAC,MAAM,GAAG,YAAY,EAAE,mBAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC,CAAC;AARW,QAAA,kBAAkB,sBAQ7B;AAEK,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,YAAoB,EAAE,OAAe,EAAE,EAAE;IAC9F,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,SAAS,CAAA;IACnC,MAAM,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAC5B,OAAO,IAAA,yBAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AANW,QAAA,sBAAsB,0BAMjC","sourcesContent":["// In the future, we need to move this in the currency folder and there we need to make a seperation between sync and async functions\n\nimport { getLibraries } from '..';\n\nimport { Setting } from '../libraries/mongo/models';\nimport { PaidCurrency } from './enum';\n\nconst DEFAULT_ROUNDING_FACTOR = 0.1;\nconst DEFAULT_EXCHANGE_RATE = 1;\n\nexport const getRoundingFactor = async (currency: PaidCurrency): Promise<number> => {\n\tconst setting = (await getLibraries().getCachedSettingsService().getSettings()) as Setting;\n\tconst currencySetting = setting.currencySetting;\n\tlet roundingFactor: number | undefined;\n\tif (currencySetting) {\n\t\tswitch (currency) {\n\t\t\tcase PaidCurrency.BASE:\n\t\t\t\troundingFactor = currencySetting.baseCurrency?.roundTo;\n\t\t\t\tbreak;\n\t\t\tcase PaidCurrency.SECONDARY:\n\t\t\t\troundingFactor = currencySetting.secondaryCurrency?.roundTo;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\troundingFactor = DEFAULT_ROUNDING_FACTOR;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn roundingFactor || DEFAULT_ROUNDING_FACTOR;\n};\n\nexport const getExchangeRate = async (): Promise<number> => {\n\tconst settings = (await getLibraries().getCachedSettingsService().getSettings()) as Setting;\n\tconst currencySetting = settings.currencySetting;\n\treturn currencySetting?.exchangeRate || DEFAULT_EXCHANGE_RATE;\n};\n\nexport const roundCurrency = async (\n\tamount: number,\n\tcurrency: PaidCurrency,\n\troundingFactor?: number\n): Promise<number> => {\n\tif (amount == 0) return 0;\n\troundingFactor = roundingFactor ?? (await getRoundingFactor(currency));\n\treturn roundCurrencySync(amount, roundingFactor);\n};\n\nexport const roundCurrencySync = (amount: number, roundingFactor: number): number => {\n\tif (amount == 0) return 0;\n\tconst rounded = Math.ceil(amount / roundingFactor) * roundingFactor;\n\tconst decimals = (roundingFactor.toString().split('.')[1] || '').length;\n\treturn Number(rounded.toFixed(decimals));\n};\n\nexport const convertToSecondary = async (\n\tamount: number,\n\texchangeRate?: number,\n\troundTo?: number\n): Promise<number> => {\n\tif (amount == 0) return 0;\n\texchangeRate = exchangeRate ?? (await getExchangeRate());\n\treturn roundCurrency(amount * exchangeRate, PaidCurrency.SECONDARY, roundTo);\n};\n\nexport const convertToSecondarySync = (price: number, exchangeRate: number, roundTo: number) => {\n\tif (price == 0) return 0;\n\tif (price == null) return undefined\n\tconst amount = price * exchangeRate;\n\tif (!roundTo) return amount;\n\treturn roundCurrencySync(amount, roundTo);\n};\n"]}
|
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getSecondaryCurrencyStage = void 0;
|
|
4
|
-
const
|
|
5
|
-
const getSecondaryCurrencyStage = ({ valuePath, exchangeRate, }) => {
|
|
4
|
+
const getSecondaryCurrencyStage = ({ valuePath, exchangeRate, roundTo, }) => {
|
|
6
5
|
return {
|
|
7
6
|
$cond: [
|
|
8
7
|
{ $ifNull: [valuePath, false] },
|
|
9
8
|
{
|
|
10
9
|
$function: {
|
|
11
|
-
body: function (
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return 0;
|
|
20
|
-
}
|
|
21
|
-
const decimals = (roundingFactor.toString().split('.')[1] || '').length;
|
|
22
|
-
const rounded = Math.round((amount * exchangeRate) / roundingFactor) * roundingFactor;
|
|
10
|
+
body: function (price, exchangeRate, roundTo) {
|
|
11
|
+
if (price == null)
|
|
12
|
+
return null;
|
|
13
|
+
const amount = price * exchangeRate;
|
|
14
|
+
if (!roundTo)
|
|
15
|
+
return amount;
|
|
16
|
+
const rounded = Math.ceil(amount / roundTo) * roundTo;
|
|
17
|
+
const decimals = (roundTo.toString().split('.')[1] || '').length;
|
|
23
18
|
return Number(rounded.toFixed(decimals));
|
|
24
19
|
}.toString(),
|
|
25
|
-
args: [valuePath, exchangeRate,
|
|
20
|
+
args: [valuePath, exchangeRate, roundTo],
|
|
26
21
|
lang: 'js',
|
|
27
22
|
},
|
|
28
23
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common-pipeline-functions.js","sourceRoot":"/","sources":["utilities/pipelines/common-pipeline-functions.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"common-pipeline-functions.js","sourceRoot":"/","sources":["utilities/pipelines/common-pipeline-functions.ts"],"names":[],"mappings":";;;AAAO,MAAM,yBAAyB,GAAG,CAAC,EACzC,SAAS,EACT,YAAY,EACZ,OAAO,GAKP,EAAO,EAAE;IACT,OAAO;QACN,KAAK,EAAE;YACN,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;YAC/B;gBACC,SAAS,EAAE;oBACV,IAAI,EAAE,UAAU,KAAa,EAAE,YAAoB,EAAE,OAAe;wBACnE,IAAI,KAAK,IAAI,IAAI;4BAAE,OAAO,IAAI,CAAC;wBAC/B,MAAM,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;wBACpC,IAAI,CAAC,OAAO;4BAAE,OAAO,MAAM,CAAC;wBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC;wBACtD,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;wBACjE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC1C,CAAC,CAAC,QAAQ,EAAE;oBACZ,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC;oBACxC,IAAI,EAAE,IAAI;iBACV;aACD;YACD,IAAI;SACJ;KACD,CAAC;AACH,CAAC,CAAC;AA7BW,QAAA,yBAAyB,6BA6BpC","sourcesContent":["export const getSecondaryCurrencyStage = ({\n\tvaluePath,\n\texchangeRate,\n\troundTo,\n}: {\n\tvaluePath: string;\n\texchangeRate: number;\n\troundTo: number;\n}): any => {\n\treturn {\n\t\t$cond: [\n\t\t\t{ $ifNull: [valuePath, false] },\n\t\t\t{\n\t\t\t\t$function: {\n\t\t\t\t\tbody: function (price: number, exchangeRate: number, roundTo: number) {\n\t\t\t\t\t\tif (price == null) return null;\n\t\t\t\t\t\tconst amount = price * exchangeRate;\n\t\t\t\t\t\tif (!roundTo) return amount;\n\t\t\t\t\t\tconst rounded = Math.ceil(amount / roundTo) * roundTo;\n\t\t\t\t\t\tconst decimals = (roundTo.toString().split('.')[1] || '').length;\n\t\t\t\t\t\treturn Number(rounded.toFixed(decimals));\n\t\t\t\t\t}.toString(),\n\t\t\t\t\targs: [valuePath, exchangeRate, roundTo],\n\t\t\t\t\tlang: 'js',\n\t\t\t\t},\n\t\t\t},\n\t\t\tnull,\n\t\t],\n\t};\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { PipelineStage } from 'mongoose';
|
|
2
|
-
export declare function addProductMarketingInfo(exchangeRate: number, secondaryCurrencyName: string): PipelineStage[];
|
|
3
|
-
export declare function addSecondaryCurrencyToPriceBreakdowns(exchangeRate: number): PipelineStage;
|
|
2
|
+
export declare function addProductMarketingInfo(exchangeRate: number, secondaryCurrencyRoundTo: number, secondaryCurrencyName: string): PipelineStage[];
|
|
3
|
+
export declare function addSecondaryCurrencyToPriceBreakdowns(exchangeRate: number, secondaryCurrencyRoundTo: number): PipelineStage;
|
|
4
4
|
export declare function addDiscountAmountsToPriceBreakdowns(): PipelineStage;
|
|
@@ -5,7 +5,7 @@ exports.addSecondaryCurrencyToPriceBreakdowns = addSecondaryCurrencyToPriceBreak
|
|
|
5
5
|
exports.addDiscountAmountsToPriceBreakdowns = addDiscountAmountsToPriceBreakdowns;
|
|
6
6
|
const common_pipeline_functions_1 = require("./common-pipeline-functions");
|
|
7
7
|
const enum_1 = require("../enum");
|
|
8
|
-
function addProductMarketingInfo(exchangeRate, secondaryCurrencyName) {
|
|
8
|
+
function addProductMarketingInfo(exchangeRate, secondaryCurrencyRoundTo, secondaryCurrencyName) {
|
|
9
9
|
return [
|
|
10
10
|
{
|
|
11
11
|
$lookup: {
|
|
@@ -48,6 +48,7 @@ function addProductMarketingInfo(exchangeRate, secondaryCurrencyName) {
|
|
|
48
48
|
(0, common_pipeline_functions_1.getSecondaryCurrencyStage)({
|
|
49
49
|
valuePath: '$value',
|
|
50
50
|
exchangeRate,
|
|
51
|
+
roundTo: secondaryCurrencyRoundTo,
|
|
51
52
|
}),
|
|
52
53
|
'$$REMOVE',
|
|
53
54
|
],
|
|
@@ -118,7 +119,7 @@ function addProductMarketingInfo(exchangeRate, secondaryCurrencyName) {
|
|
|
118
119
|
},
|
|
119
120
|
];
|
|
120
121
|
}
|
|
121
|
-
function addSecondaryCurrencyToPriceBreakdowns(exchangeRate) {
|
|
122
|
+
function addSecondaryCurrencyToPriceBreakdowns(exchangeRate, secondaryCurrencyRoundTo) {
|
|
122
123
|
return {
|
|
123
124
|
$addFields: {
|
|
124
125
|
priceBreakdowns: {
|
|
@@ -132,6 +133,7 @@ function addSecondaryCurrencyToPriceBreakdowns(exchangeRate) {
|
|
|
132
133
|
secondaryPrice: (0, common_pipeline_functions_1.getSecondaryCurrencyStage)({
|
|
133
134
|
valuePath: '$$breakdown.price',
|
|
134
135
|
exchangeRate,
|
|
136
|
+
roundTo: secondaryCurrencyRoundTo,
|
|
135
137
|
}),
|
|
136
138
|
secondaryDiscountAmount: {
|
|
137
139
|
$cond: [
|
|
@@ -139,6 +141,7 @@ function addSecondaryCurrencyToPriceBreakdowns(exchangeRate) {
|
|
|
139
141
|
(0, common_pipeline_functions_1.getSecondaryCurrencyStage)({
|
|
140
142
|
valuePath: '$$breakdown.discountAmount',
|
|
141
143
|
exchangeRate,
|
|
144
|
+
roundTo: secondaryCurrencyRoundTo,
|
|
142
145
|
}),
|
|
143
146
|
'$$REMOVE',
|
|
144
147
|
],
|
|
@@ -149,6 +152,7 @@ function addSecondaryCurrencyToPriceBreakdowns(exchangeRate) {
|
|
|
149
152
|
(0, common_pipeline_functions_1.getSecondaryCurrencyStage)({
|
|
150
153
|
valuePath: '$$breakdown.discountedPrice',
|
|
151
154
|
exchangeRate,
|
|
155
|
+
roundTo: secondaryCurrencyRoundTo,
|
|
152
156
|
}),
|
|
153
157
|
'$$REMOVE',
|
|
154
158
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-pipeline-stages.js","sourceRoot":"/","sources":["utilities/pipelines/product-pipeline-stages.ts"],"names":[],"mappings":"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","sourcesContent":["import { PipelineStage } from 'mongoose';\nimport { getSecondaryCurrencyStage } from './common-pipeline-functions';\nimport { MarketingType, ValueType } from '../enum';\n\nexport function addProductMarketingInfo(\n\texchangeRate: number,\n\tsecondaryCurrencyName: string\n): PipelineStage[] {\n\treturn [\n\t\t{\n\t\t\t$lookup: {\n\t\t\t\tfrom: 'productMarketings',\n\t\t\t\tlet: { productId: '$_id', now: new Date() },\n\t\t\t\tpipeline: [\n\t\t\t\t\t{\n\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t$expr: { $eq: ['$product', '$$productId'] },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\tfrom: 'marketings',\n\t\t\t\t\t\t\tlocalField: 'marketing',\n\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\tas: 'marketing',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$unwind: '$marketing',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t$expr: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$marketing.status', 'active'] },\n\t\t\t\t\t\t\t\t\t{ $eq: ['$marketing.pausedAt', null] },\n\t\t\t\t\t\t\t\t\t{ $lte: ['$marketing.duration.start', '$$now'] },\n\t\t\t\t\t\t\t\t\t{ $gte: ['$marketing.duration.end', '$$now'] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t// Compute and add secondary currency values to coupon documents\n\t\t\t\t\t{\n\t\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t\tsecondaryCurrencyValue: {\n\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$valueType', 'fixed'] },\n\t\t\t\t\t\t\t\t\tgetSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\tvaluePath: '$value',\n\t\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t'$$REMOVE', // Removes field if condition not met\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$marketing.marketingType', MarketingType.BUY1GET1] },\n\t\t\t\t\t\t\t\t\t\t\tthen: 'Buy 1 Get 1',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$marketing.marketingType', MarketingType.PUNCH_MARKETING] },\n\t\t\t\t\t\t\t\t\t\t\tthen: 'Punch',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$marketing.marketingType', MarketingType.DISCOUNT] },\n\t\t\t\t\t\t\t\t\t\t\tthen: {\n\t\t\t\t\t\t\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$valueType', ValueType.FIXED] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthen: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$concat: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsecondaryCurrencyName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t' ',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $toString: '$secondaryCurrencyValue' },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$valueType', ValueType.PERCENTAGE] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthen: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$concat: [{ $toString: '$value' }, '%'],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: 'Discount',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tdefault: '$marketing.marketingType',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\tmarketing: '$marketing._id',\n\t\t\t\t\t\t\tisBuy1Get1: '$isBuy1Get1',\n\t\t\t\t\t\t\tvalueType: '$valueType',\n\t\t\t\t\t\t\tvalue: '$value',\n\t\t\t\t\t\t\tsecondaryCurrencyValue: '$secondaryCurrencyValue',\n\t\t\t\t\t\t\tlabel: '$label',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tas: 'productMarketing',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t$unwind: { path: '$productMarketing', preserveNullAndEmptyArrays: true },\n\t\t},\n\t];\n}\n\nexport function addSecondaryCurrencyToPriceBreakdowns(exchangeRate: number): PipelineStage {\n\treturn {\n\t\t$addFields: {\n\t\t\tpriceBreakdowns: {\n\t\t\t\t$map: {\n\t\t\t\t\tinput: '$priceBreakdowns',\n\t\t\t\t\tas: 'breakdown',\n\t\t\t\t\tin: {\n\t\t\t\t\t\t$mergeObjects: [\n\t\t\t\t\t\t\t'$$breakdown',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsecondaryPrice: getSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\tvaluePath: '$$breakdown.price',\n\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsecondaryDiscountAmount: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] },\n\t\t\t\t\t\t\t\t\t\tgetSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\t\tvaluePath: '$$breakdown.discountAmount',\n\t\t\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // Removes field if condition not met\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsecondaryDiscountedPrice: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] },\n\t\t\t\t\t\t\t\t\t\tgetSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\t\tvaluePath: '$$breakdown.discountedPrice',\n\t\t\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // Removes field if condition not met\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport function addDiscountAmountsToPriceBreakdowns(): PipelineStage {\n\treturn {\n\t\t$addFields: {\n\t\t\tpriceBreakdowns: {\n\t\t\t\t$map: {\n\t\t\t\t\tinput: '$priceBreakdowns',\n\t\t\t\t\tas: 'breakdown',\n\t\t\t\t\tin: {\n\t\t\t\t\t\t$mergeObjects: [\n\t\t\t\t\t\t\t'$$breakdown',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdiscountAmount: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] }, // checks existence\n\t\t\t\t\t\t\t\t\t\t// if valueType is fixed, use value directly\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: ['$productMarketing.valueType', ValueType.FIXED] },\n\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t// if valueType is percentage, calculate percentage of price\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$multiply: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$divide: ['$$breakdown.price', 100],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // omit field if productMarketing is missing\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// Add discounted price\n\t\t\t\t\t\t\t\tdiscountedPrice: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] }, // checks existence\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t$subtract: [\n\t\t\t\t\t\t\t\t\t\t\t\t'$$breakdown.price',\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: ['$productMarketing.valueType', ValueType.FIXED] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$multiply: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$divide: ['$$breakdown.price', 100],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // omit field if productMarketing is missing\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"product-pipeline-stages.js","sourceRoot":"/","sources":["utilities/pipelines/product-pipeline-stages.ts"],"names":[],"mappings":"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","sourcesContent":["import { PipelineStage } from 'mongoose';\nimport { getSecondaryCurrencyStage } from './common-pipeline-functions';\nimport { MarketingType, ValueType } from '../enum';\n\nexport function addProductMarketingInfo(\n\texchangeRate: number,\n\tsecondaryCurrencyRoundTo: number,\n\tsecondaryCurrencyName: string\n): PipelineStage[] {\n\treturn [\n\t\t{\n\t\t\t$lookup: {\n\t\t\t\tfrom: 'productMarketings',\n\t\t\t\tlet: { productId: '$_id', now: new Date() },\n\t\t\t\tpipeline: [\n\t\t\t\t\t{\n\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t$expr: { $eq: ['$product', '$$productId'] },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$lookup: {\n\t\t\t\t\t\t\tfrom: 'marketings',\n\t\t\t\t\t\t\tlocalField: 'marketing',\n\t\t\t\t\t\t\tforeignField: '_id',\n\t\t\t\t\t\t\tas: 'marketing',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$unwind: '$marketing',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$match: {\n\t\t\t\t\t\t\t$expr: {\n\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$marketing.status', 'active'] },\n\t\t\t\t\t\t\t\t\t{ $eq: ['$marketing.pausedAt', null] },\n\t\t\t\t\t\t\t\t\t{ $lte: ['$marketing.duration.start', '$$now'] },\n\t\t\t\t\t\t\t\t\t{ $gte: ['$marketing.duration.end', '$$now'] },\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t// Compute and add secondary currency values to coupon documents\n\t\t\t\t\t{\n\t\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t\tsecondaryCurrencyValue: {\n\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t{ $eq: ['$valueType', 'fixed'] },\n\t\t\t\t\t\t\t\t\tgetSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\tvaluePath: '$value',\n\t\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t\t\troundTo: secondaryCurrencyRoundTo,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t'$$REMOVE', // Removes field if condition not met\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$addFields: {\n\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$marketing.marketingType', MarketingType.BUY1GET1] },\n\t\t\t\t\t\t\t\t\t\t\tthen: 'Buy 1 Get 1',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$marketing.marketingType', MarketingType.PUNCH_MARKETING] },\n\t\t\t\t\t\t\t\t\t\t\tthen: 'Punch',\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$marketing.marketingType', MarketingType.DISCOUNT] },\n\t\t\t\t\t\t\t\t\t\t\tthen: {\n\t\t\t\t\t\t\t\t\t\t\t\t$switch: {\n\t\t\t\t\t\t\t\t\t\t\t\t\tbranches: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$valueType', ValueType.FIXED] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthen: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$concat: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsecondaryCurrencyName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t' ',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $toString: '$secondaryCurrencyValue' },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase: { $eq: ['$valueType', ValueType.PERCENTAGE] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthen: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$concat: [{ $toString: '$value' }, '%'],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\tdefault: 'Discount',\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\tdefault: '$marketing.marketingType',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t$project: {\n\t\t\t\t\t\t\tmarketing: '$marketing._id',\n\t\t\t\t\t\t\tisBuy1Get1: '$isBuy1Get1',\n\t\t\t\t\t\t\tvalueType: '$valueType',\n\t\t\t\t\t\t\tvalue: '$value',\n\t\t\t\t\t\t\tsecondaryCurrencyValue: '$secondaryCurrencyValue',\n\t\t\t\t\t\t\tlabel: '$label',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tas: 'productMarketing',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\t$unwind: { path: '$productMarketing', preserveNullAndEmptyArrays: true },\n\t\t},\n\t];\n}\n\nexport function addSecondaryCurrencyToPriceBreakdowns(\n\texchangeRate: number,\n\tsecondaryCurrencyRoundTo: number\n): PipelineStage {\n\treturn {\n\t\t$addFields: {\n\t\t\tpriceBreakdowns: {\n\t\t\t\t$map: {\n\t\t\t\t\tinput: '$priceBreakdowns',\n\t\t\t\t\tas: 'breakdown',\n\t\t\t\t\tin: {\n\t\t\t\t\t\t$mergeObjects: [\n\t\t\t\t\t\t\t'$$breakdown',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsecondaryPrice: getSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\tvaluePath: '$$breakdown.price',\n\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t\troundTo: secondaryCurrencyRoundTo,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tsecondaryDiscountAmount: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] },\n\t\t\t\t\t\t\t\t\t\tgetSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\t\tvaluePath: '$$breakdown.discountAmount',\n\t\t\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t\t\t\troundTo: secondaryCurrencyRoundTo,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // Removes field if condition not met\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tsecondaryDiscountedPrice: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] },\n\t\t\t\t\t\t\t\t\t\tgetSecondaryCurrencyStage({\n\t\t\t\t\t\t\t\t\t\t\tvaluePath: '$$breakdown.discountedPrice',\n\t\t\t\t\t\t\t\t\t\t\texchangeRate,\n\t\t\t\t\t\t\t\t\t\t\troundTo: secondaryCurrencyRoundTo,\n\t\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // Removes field if condition not met\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport function addDiscountAmountsToPriceBreakdowns(): PipelineStage {\n\treturn {\n\t\t$addFields: {\n\t\t\tpriceBreakdowns: {\n\t\t\t\t$map: {\n\t\t\t\t\tinput: '$priceBreakdowns',\n\t\t\t\t\tas: 'breakdown',\n\t\t\t\t\tin: {\n\t\t\t\t\t\t$mergeObjects: [\n\t\t\t\t\t\t\t'$$breakdown',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdiscountAmount: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] }, // checks existence\n\t\t\t\t\t\t\t\t\t\t// if valueType is fixed, use value directly\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: ['$productMarketing.valueType', ValueType.FIXED] },\n\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t// if valueType is percentage, calculate percentage of price\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$multiply: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$divide: ['$$breakdown.price', 100],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // omit field if productMarketing is missing\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t// Add discounted price\n\t\t\t\t\t\t\t\tdiscountedPrice: {\n\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t{ $gt: ['$productMarketing', null] }, // checks existence\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t$subtract: [\n\t\t\t\t\t\t\t\t\t\t\t\t'$$breakdown.price',\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t$cond: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ $eq: ['$productMarketing.valueType', ValueType.FIXED] },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$multiply: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'$productMarketing.value',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$divide: ['$$breakdown.price', 100],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t'$$REMOVE', // omit field if productMarketing is missing\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export declare const BaseCurrencyRoundTo = 0.01;
|
|
2
|
-
export declare const SecondaryCurrencyRoundTo = 1000;
|
|
3
1
|
export declare const roundCurrencySync: (amount: number, roundingFactor: number) => number;
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const roundSecondaryCurrency: (amount: number) => number;
|
|
2
|
+
export declare const convertToSecondarySync: (price: number, exchangeRate: number, roundTo: number) => number | null;
|
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.BaseCurrencyRoundTo = 0.01;
|
|
5
|
-
exports.SecondaryCurrencyRoundTo = 1000;
|
|
3
|
+
exports.convertToSecondarySync = exports.roundCurrencySync = void 0;
|
|
6
4
|
const roundCurrencySync = (amount, roundingFactor) => {
|
|
7
|
-
if (
|
|
8
|
-
isNaN(amount) ||
|
|
9
|
-
typeof roundingFactor !== 'number' ||
|
|
10
|
-
roundingFactor <= 0 ||
|
|
11
|
-
amount === 0) {
|
|
5
|
+
if (amount == 0)
|
|
12
6
|
return 0;
|
|
13
|
-
|
|
7
|
+
const rounded = Math.ceil(amount / roundingFactor) * roundingFactor;
|
|
14
8
|
const decimals = (roundingFactor.toString().split('.')[1] || '').length;
|
|
15
|
-
const rounded = Math.round(amount / roundingFactor) * roundingFactor;
|
|
16
9
|
return Number(rounded.toFixed(decimals));
|
|
17
10
|
};
|
|
18
11
|
exports.roundCurrencySync = roundCurrencySync;
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
const convertToSecondarySync = (price, exchangeRate, roundTo) => {
|
|
13
|
+
if (price == 0)
|
|
14
|
+
return 0;
|
|
15
|
+
if (price == null)
|
|
16
|
+
return null;
|
|
17
|
+
const amount = price * exchangeRate;
|
|
18
|
+
if (!roundTo)
|
|
19
|
+
return amount;
|
|
20
|
+
return (0, exports.roundCurrencySync)(amount, roundTo);
|
|
25
21
|
};
|
|
26
|
-
exports.
|
|
22
|
+
exports.convertToSecondarySync = convertToSecondarySync;
|
|
27
23
|
//# sourceMappingURL=currency.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"/","sources":["utilities/shared/currency.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"/","sources":["utilities/shared/currency.ts"],"names":[],"mappings":";;;AAAO,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,cAAsB,EAAU,EAAE;IACnF,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC;IACpE,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxE,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B;AAEK,MAAM,sBAAsB,GAAG,CAAC,KAAa,EAAE,YAAoB,EAAE,OAAe,EAAE,EAAE;IAC9F,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACzB,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAG,KAAK,GAAG,YAAY,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,MAAM,CAAC;IAC5B,OAAO,IAAA,yBAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC,CAAC;AANW,QAAA,sBAAsB,0BAMjC","sourcesContent":["export const roundCurrencySync = (amount: number, roundingFactor: number): number => {\n\tif (amount == 0) return 0;\n\tconst rounded = Math.ceil(amount / roundingFactor) * roundingFactor;\n\tconst decimals = (roundingFactor.toString().split('.')[1] || '').length;\n\treturn Number(rounded.toFixed(decimals));\n};\n\nexport const convertToSecondarySync = (price: number, exchangeRate: number, roundTo: number) => {\n\tif (price == 0) return 0;\n\tif (price == null) return null;\n\tconst amount = price * exchangeRate;\n\tif (!roundTo) return amount;\n\treturn roundCurrencySync(amount, roundTo);\n};"]}
|