@parv0888/scheme-engine 0.1.0 → 0.1.1
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/calculators/discount-application.d.ts.map +1 -1
- package/dist/calculators/discount-application.js +34 -23
- package/dist/calculators/discount-application.js.map +1 -1
- package/dist/esm/calculators/discount-application.js +34 -23
- package/dist/esm/calculators/discount-application.js.map +1 -1
- package/package.json +1 -1
- package/dist/calculators/discount-application.d.ts +0 -44
- package/dist/calculators/index.d.ts +0 -65
- package/dist/calculators/index.d.ts.map +0 -1
- package/dist/calculators/index.js +0 -196
- package/dist/calculators/index.js.map +0 -1
- package/dist/calculators/payout-types/article.d.ts +0 -23
- package/dist/calculators/payout-types/article.d.ts.map +0 -1
- package/dist/calculators/payout-types/article.js +0 -73
- package/dist/calculators/payout-types/article.js.map +0 -1
- package/dist/calculators/payout-types/basket.d.ts +0 -49
- package/dist/calculators/payout-types/basket.d.ts.map +0 -1
- package/dist/calculators/payout-types/basket.js +0 -108
- package/dist/calculators/payout-types/basket.js.map +0 -1
- package/dist/calculators/payout-types/coupon.d.ts +0 -23
- package/dist/calculators/payout-types/coupon.d.ts.map +0 -1
- package/dist/calculators/payout-types/coupon.js +0 -74
- package/dist/calculators/payout-types/coupon.js.map +0 -1
- package/dist/calculators/payout-types/discount.d.ts +0 -21
- package/dist/calculators/payout-types/discount.d.ts.map +0 -1
- package/dist/calculators/payout-types/discount.js +0 -110
- package/dist/calculators/payout-types/discount.js.map +0 -1
- package/dist/calculators/payout-types/fixed-discount.d.ts +0 -31
- package/dist/calculators/payout-types/fixed-discount.d.ts.map +0 -1
- package/dist/calculators/payout-types/fixed-discount.js +0 -65
- package/dist/calculators/payout-types/fixed-discount.js.map +0 -1
- package/dist/calculators/payout-types/foc.d.ts +0 -30
- package/dist/calculators/payout-types/foc.d.ts.map +0 -1
- package/dist/calculators/payout-types/foc.js +0 -130
- package/dist/calculators/payout-types/foc.js.map +0 -1
- package/dist/calculators/payout-types/mrp-percentage.d.ts +0 -34
- package/dist/calculators/payout-types/mrp-percentage.d.ts.map +0 -1
- package/dist/calculators/payout-types/mrp-percentage.js +0 -77
- package/dist/calculators/payout-types/mrp-percentage.js.map +0 -1
- package/dist/calculators/payout-types/nlp.d.ts +0 -22
- package/dist/calculators/payout-types/nlp.d.ts.map +0 -1
- package/dist/calculators/payout-types/nlp.js +0 -59
- package/dist/calculators/payout-types/nlp.js.map +0 -1
- package/dist/calculators/payout-types/per-unit.d.ts +0 -32
- package/dist/calculators/payout-types/per-unit.d.ts.map +0 -1
- package/dist/calculators/payout-types/per-unit.js +0 -94
- package/dist/calculators/payout-types/per-unit.js.map +0 -1
- package/dist/calculators/payout-types/product-new.d.ts +0 -27
- package/dist/calculators/payout-types/product-new.d.ts.map +0 -1
- package/dist/calculators/payout-types/product-new.js +0 -85
- package/dist/calculators/payout-types/product-new.js.map +0 -1
- package/dist/calculators/payout-types/product.d.ts +0 -31
- package/dist/calculators/payout-types/product.d.ts.map +0 -1
- package/dist/calculators/payout-types/product.js +0 -73
- package/dist/calculators/payout-types/product.js.map +0 -1
- package/dist/calculators/payout-types/topup.d.ts +0 -19
- package/dist/calculators/payout-types/topup.d.ts.map +0 -1
- package/dist/calculators/payout-types/topup.js +0 -46
- package/dist/calculators/payout-types/topup.js.map +0 -1
- package/dist/calculators/slab-matcher.d.ts +0 -41
- package/dist/calculators/slab-matcher.d.ts.map +0 -1
- package/dist/calculators/slab-matcher.js +0 -68
- package/dist/calculators/slab-matcher.js.map +0 -1
- package/dist/helpers/calc-type-checks.d.ts +0 -21
- package/dist/helpers/calc-type-checks.d.ts.map +0 -1
- package/dist/helpers/calc-type-checks.js +0 -36
- package/dist/helpers/calc-type-checks.js.map +0 -1
- package/dist/helpers/compare-value.d.ts +0 -40
- package/dist/helpers/compare-value.d.ts.map +0 -1
- package/dist/helpers/compare-value.js +0 -120
- package/dist/helpers/compare-value.js.map +0 -1
- package/dist/helpers/constraint-checks.d.ts +0 -30
- package/dist/helpers/constraint-checks.d.ts.map +0 -1
- package/dist/helpers/constraint-checks.js +0 -73
- package/dist/helpers/constraint-checks.js.map +0 -1
- package/dist/helpers/index.d.ts +0 -8
- package/dist/helpers/index.d.ts.map +0 -1
- package/dist/helpers/index.js +0 -24
- package/dist/helpers/index.js.map +0 -1
- package/dist/helpers/math.d.ts +0 -50
- package/dist/helpers/math.d.ts.map +0 -1
- package/dist/helpers/math.js +0 -96
- package/dist/helpers/math.js.map +0 -1
- package/dist/helpers/payout-type-checks.d.ts +0 -17
- package/dist/helpers/payout-type-checks.d.ts.map +0 -1
- package/dist/helpers/payout-type-checks.js +0 -34
- package/dist/helpers/payout-type-checks.js.map +0 -1
- package/dist/helpers/qualifier-checks.d.ts +0 -62
- package/dist/helpers/qualifier-checks.d.ts.map +0 -1
- package/dist/helpers/qualifier-checks.js +0 -194
- package/dist/helpers/qualifier-checks.js.map +0 -1
- package/dist/helpers/scheme-applicability.d.ts +0 -40
- package/dist/helpers/scheme-applicability.d.ts.map +0 -1
- package/dist/helpers/scheme-applicability.js +0 -99
- package/dist/helpers/scheme-applicability.js.map +0 -1
- package/dist/index.d.ts +0 -4
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -26
- package/dist/index.js.map +0 -1
- package/dist/types/applied-scheme.d.ts +0 -157
- package/dist/types/applied-scheme.d.ts.map +0 -1
- package/dist/types/applied-scheme.js +0 -22
- package/dist/types/applied-scheme.js.map +0 -1
- package/dist/types/enums.d.ts +0 -91
- package/dist/types/enums.d.ts.map +0 -1
- package/dist/types/enums.js +0 -118
- package/dist/types/enums.js.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -21
- package/dist/types/index.js.map +0 -1
- package/dist/types/item-props.d.ts +0 -103
- package/dist/types/item-props.d.ts.map +0 -1
- package/dist/types/item-props.js +0 -3
- package/dist/types/item-props.js.map +0 -1
- package/dist/types/scheme.d.ts +0 -172
- package/dist/types/scheme.d.ts.map +0 -1
- package/dist/types/scheme.js +0 -3
- package/dist/types/scheme.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discount-application.d.ts","sourceRoot":"","sources":["../../src/calculators/discount-application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgD,MAAM,gBAAgB,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAyB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhH,MAAM,WAAW,wBAAwB;IACvC,oIAAoI;IACpI,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAErC,+IAA+I;IAC/I,SAAS,EAAE,MAAM,CAAC;IAElB,+GAA+G;IAC/G,QAAQ,EAAE,MAAM,CAAC;IAEjB,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IAEZ,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAC;IAEd,2EAA2E;IAC3E,cAAc,EAAE,cAAc,CAAC;IAE/B,4HAA4H;IAC5H,mCAAmC,EAAE,OAAO,CAAC;IAE7C,0IAA0I;IAC1I,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAE1C,iJAAiJ;IACjJ,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C,8FAA8F;IAC9F,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,wBAAwB,GAC9B,qBAAqB,
|
|
1
|
+
{"version":3,"file":"discount-application.d.ts","sourceRoot":"","sources":["../../src/calculators/discount-application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgD,MAAM,gBAAgB,CAAC;AAC9F,OAAO,KAAK,EAAE,kBAAkB,EAAyB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAKhH,MAAM,WAAW,wBAAwB;IACvC,oIAAoI;IACpI,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAErC,+IAA+I;IAC/I,SAAS,EAAE,MAAM,CAAC;IAElB,+GAA+G;IAC/G,QAAQ,EAAE,MAAM,CAAC;IAEjB,mGAAmG;IACnG,OAAO,EAAE,MAAM,CAAC;IAEhB,8EAA8E;IAC9E,GAAG,EAAE,MAAM,CAAC;IAEZ,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAC;IAEd,2EAA2E;IAC3E,cAAc,EAAE,cAAc,CAAC;IAE/B,4HAA4H;IAC5H,mCAAmC,EAAE,OAAO,CAAC;IAE7C,0IAA0I;IAC1I,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAE1C,iJAAiJ;IACjJ,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C,8FAA8F;IAC9F,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,wBAAwB,GAC9B,qBAAqB,CA4KvB;AAID,UAAU,YAAY;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,kBAAkB,EAC1B,aAAa,CAAC,EAAE,MAAM,GACrB,YAAY,CAyCd"}
|
|
@@ -33,9 +33,13 @@ function calculateAppliedDiscountValues(input) {
|
|
|
33
33
|
const effectiveQty = batchQty ?? quantity;
|
|
34
34
|
const effectivePrice = typeof scheme.price === "number" && scheme.price > 0 ? scheme.price : price;
|
|
35
35
|
const effectiveBaseValue = batchQty ? effectivePrice * effectiveQty : baseValue;
|
|
36
|
+
// When batch pricing is active, each scheme entry represents a distinct
|
|
37
|
+
// batch with its own price/qty — discount must be computed on that batch's
|
|
38
|
+
// base value, not the full item's tempBaseValue.
|
|
39
|
+
const computeBase = batchQty ? effectiveBaseValue : tempBaseValue;
|
|
36
40
|
// Recalculate PerUnit percentages if recalculation data present
|
|
37
41
|
if (scheme.recalculateSchemeData) {
|
|
38
|
-
const recalced = recalculateSchemePercentage(scheme,
|
|
42
|
+
const recalced = recalculateSchemePercentage(scheme, computeBase);
|
|
39
43
|
if (isPrimary) {
|
|
40
44
|
scheme.primaryDiscountPercent = recalced.discountPercent;
|
|
41
45
|
}
|
|
@@ -49,6 +53,14 @@ function calculateAppliedDiscountValues(input) {
|
|
|
49
53
|
if (scheme.schemePayoutType === enums_1.SchemePayoutType.FIXED_DISCOUNT) {
|
|
50
54
|
currentValue = scheme[discountKey] || 0;
|
|
51
55
|
}
|
|
56
|
+
// PerUnit without recalculation data: value was pre-computed during
|
|
57
|
+
// slab matching (calculatePerUnitPayout) and stored directly.
|
|
58
|
+
// When loaded from DB, percent is 0 and we use the stored value.
|
|
59
|
+
else if (scheme.schemePayoutType === enums_1.SchemePayoutType.PERUNIT &&
|
|
60
|
+
!scheme.recalculateSchemeData &&
|
|
61
|
+
currentPercent === 0) {
|
|
62
|
+
currentValue = scheme[discountKey] || 0;
|
|
63
|
+
}
|
|
52
64
|
// Skip: PRODUCT + unitary scheme
|
|
53
65
|
else if (scheme.schemePayoutType === enums_1.SchemePayoutType.PRODUCT &&
|
|
54
66
|
companyUsesUnitaryProductScheme) {
|
|
@@ -56,9 +68,9 @@ function calculateAppliedDiscountValues(input) {
|
|
|
56
68
|
}
|
|
57
69
|
// FOC-type schemes
|
|
58
70
|
else if ((0, payout_type_checks_1.isFocTypePayoutScheme)(scheme.schemePayoutType)) {
|
|
59
|
-
const totalQty =
|
|
71
|
+
const totalQty = effectiveQty + freeQty;
|
|
60
72
|
if (totalQty > 0) {
|
|
61
|
-
currentValue = (scheme.freeQty *
|
|
73
|
+
currentValue = (scheme.freeQty * computeBase) / totalQty;
|
|
62
74
|
}
|
|
63
75
|
// Zero out for pricing batch companies
|
|
64
76
|
if ((scheme.schemePayoutType === enums_1.SchemePayoutType.PRODUCT ||
|
|
@@ -96,11 +108,21 @@ function calculateAppliedDiscountValues(input) {
|
|
|
96
108
|
}
|
|
97
109
|
// Markup discount
|
|
98
110
|
else if (scheme.isMarkup) {
|
|
99
|
-
currentValue = (0, math_1.calculateMarkupDiscount)(
|
|
111
|
+
currentValue = (0, math_1.calculateMarkupDiscount)(computeBase, currentPercent);
|
|
100
112
|
}
|
|
101
113
|
// Default: percentage-based discount
|
|
102
114
|
else {
|
|
103
|
-
currentValue = (0, math_1.calculateDiscount)(
|
|
115
|
+
currentValue = (0, math_1.calculateDiscount)(computeBase, currentPercent);
|
|
116
|
+
}
|
|
117
|
+
// Fallback: when the computation produces 0 but the scheme already has
|
|
118
|
+
// a pre-computed non-zero value (common when loaded from DB where percent
|
|
119
|
+
// is 0 and the value was pre-computed during scheme application), preserve
|
|
120
|
+
// the stored value instead of zeroing it out.
|
|
121
|
+
if (currentValue === 0 && !scheme.recalculateSchemeData) {
|
|
122
|
+
const storedValue = scheme[discountKey] || 0;
|
|
123
|
+
if (storedValue > 0) {
|
|
124
|
+
currentValue = storedValue;
|
|
125
|
+
}
|
|
104
126
|
}
|
|
105
127
|
// Bug 7 fix: Clamp to non-negative
|
|
106
128
|
currentValue = (0, math_1.clampNonNegative)(currentValue);
|
|
@@ -143,24 +165,13 @@ function recalculateSchemePercentage(scheme, tempBaseValue) {
|
|
|
143
165
|
}
|
|
144
166
|
const data = scheme.recalculateSchemeData;
|
|
145
167
|
const { discountAmountOfPerUnit, totalTaxPercentage, usesStdUnit, usesSuperUnit, usesAdditionalUnit, compareValue, calculationOnCompleteNumber, additionalCalculationLogic, } = data;
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
//
|
|
152
|
-
|
|
153
|
-
let finalNetPrice = netPrice;
|
|
154
|
-
if (usesStdUnit) {
|
|
155
|
-
// The calling code should compute actual stdUnitNetPrice * factor
|
|
156
|
-
finalNetPrice = netPrice;
|
|
157
|
-
}
|
|
158
|
-
else if (usesSuperUnit) {
|
|
159
|
-
finalNetPrice = netPrice;
|
|
160
|
-
}
|
|
161
|
-
else if (usesAdditionalUnit) {
|
|
162
|
-
finalNetPrice = netPrice;
|
|
163
|
-
}
|
|
168
|
+
// Derive the per-unit net price from the total base value and the compare value
|
|
169
|
+
// (qty/units/amount) that was used during slab matching.
|
|
170
|
+
// tempBaseValue = qty * unitPrice, compareValue = qty (or units/amount for other
|
|
171
|
+
// constraint types), so tempBaseValue / compareValue gives back the correct
|
|
172
|
+
// per-unit (or per-std-unit / per-super-unit) finalNetPrice that the original
|
|
173
|
+
// calculatePerUnitPayout used.
|
|
174
|
+
const finalNetPrice = tempBaseValue && compareValue ? tempBaseValue / compareValue : 0;
|
|
164
175
|
const discountAmountPreTax = discountAmountOfPerUnit / (1 + totalTaxPercentage / 100);
|
|
165
176
|
let itemDiscountPercent;
|
|
166
177
|
if (additionalCalculationLogic === enums_1.AdditionalCalculationLogic.DISCOUNT_VALUE_SUBTRACTED_FROM_PRICE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discount-application.js","sourceRoot":"","sources":["../../src/calculators/discount-application.ts"],"names":[],"mappings":";;AAgDA,
|
|
1
|
+
{"version":3,"file":"discount-application.js","sourceRoot":"","sources":["../../src/calculators/discount-application.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,9 +29,13 @@ export function calculateAppliedDiscountValues(input) {
|
|
|
29
29
|
const effectiveQty = batchQty ?? quantity;
|
|
30
30
|
const effectivePrice = typeof scheme.price === "number" && scheme.price > 0 ? scheme.price : price;
|
|
31
31
|
const effectiveBaseValue = batchQty ? effectivePrice * effectiveQty : baseValue;
|
|
32
|
+
// When batch pricing is active, each scheme entry represents a distinct
|
|
33
|
+
// batch with its own price/qty — discount must be computed on that batch's
|
|
34
|
+
// base value, not the full item's tempBaseValue.
|
|
35
|
+
const computeBase = batchQty ? effectiveBaseValue : tempBaseValue;
|
|
32
36
|
// Recalculate PerUnit percentages if recalculation data present
|
|
33
37
|
if (scheme.recalculateSchemeData) {
|
|
34
|
-
const recalced = recalculateSchemePercentage(scheme,
|
|
38
|
+
const recalced = recalculateSchemePercentage(scheme, computeBase);
|
|
35
39
|
if (isPrimary) {
|
|
36
40
|
scheme.primaryDiscountPercent = recalced.discountPercent;
|
|
37
41
|
}
|
|
@@ -45,6 +49,14 @@ export function calculateAppliedDiscountValues(input) {
|
|
|
45
49
|
if (scheme.schemePayoutType === SchemePayoutType.FIXED_DISCOUNT) {
|
|
46
50
|
currentValue = scheme[discountKey] || 0;
|
|
47
51
|
}
|
|
52
|
+
// PerUnit without recalculation data: value was pre-computed during
|
|
53
|
+
// slab matching (calculatePerUnitPayout) and stored directly.
|
|
54
|
+
// When loaded from DB, percent is 0 and we use the stored value.
|
|
55
|
+
else if (scheme.schemePayoutType === SchemePayoutType.PERUNIT &&
|
|
56
|
+
!scheme.recalculateSchemeData &&
|
|
57
|
+
currentPercent === 0) {
|
|
58
|
+
currentValue = scheme[discountKey] || 0;
|
|
59
|
+
}
|
|
48
60
|
// Skip: PRODUCT + unitary scheme
|
|
49
61
|
else if (scheme.schemePayoutType === SchemePayoutType.PRODUCT &&
|
|
50
62
|
companyUsesUnitaryProductScheme) {
|
|
@@ -52,9 +64,9 @@ export function calculateAppliedDiscountValues(input) {
|
|
|
52
64
|
}
|
|
53
65
|
// FOC-type schemes
|
|
54
66
|
else if (isFocTypePayoutScheme(scheme.schemePayoutType)) {
|
|
55
|
-
const totalQty =
|
|
67
|
+
const totalQty = effectiveQty + freeQty;
|
|
56
68
|
if (totalQty > 0) {
|
|
57
|
-
currentValue = (scheme.freeQty *
|
|
69
|
+
currentValue = (scheme.freeQty * computeBase) / totalQty;
|
|
58
70
|
}
|
|
59
71
|
// Zero out for pricing batch companies
|
|
60
72
|
if ((scheme.schemePayoutType === SchemePayoutType.PRODUCT ||
|
|
@@ -92,11 +104,21 @@ export function calculateAppliedDiscountValues(input) {
|
|
|
92
104
|
}
|
|
93
105
|
// Markup discount
|
|
94
106
|
else if (scheme.isMarkup) {
|
|
95
|
-
currentValue = calculateMarkupDiscount(
|
|
107
|
+
currentValue = calculateMarkupDiscount(computeBase, currentPercent);
|
|
96
108
|
}
|
|
97
109
|
// Default: percentage-based discount
|
|
98
110
|
else {
|
|
99
|
-
currentValue = calculateDiscount(
|
|
111
|
+
currentValue = calculateDiscount(computeBase, currentPercent);
|
|
112
|
+
}
|
|
113
|
+
// Fallback: when the computation produces 0 but the scheme already has
|
|
114
|
+
// a pre-computed non-zero value (common when loaded from DB where percent
|
|
115
|
+
// is 0 and the value was pre-computed during scheme application), preserve
|
|
116
|
+
// the stored value instead of zeroing it out.
|
|
117
|
+
if (currentValue === 0 && !scheme.recalculateSchemeData) {
|
|
118
|
+
const storedValue = scheme[discountKey] || 0;
|
|
119
|
+
if (storedValue > 0) {
|
|
120
|
+
currentValue = storedValue;
|
|
121
|
+
}
|
|
100
122
|
}
|
|
101
123
|
// Bug 7 fix: Clamp to non-negative
|
|
102
124
|
currentValue = clampNonNegative(currentValue);
|
|
@@ -139,24 +161,13 @@ export function recalculateSchemePercentage(scheme, tempBaseValue) {
|
|
|
139
161
|
}
|
|
140
162
|
const data = scheme.recalculateSchemeData;
|
|
141
163
|
const { discountAmountOfPerUnit, totalTaxPercentage, usesStdUnit, usesSuperUnit, usesAdditionalUnit, compareValue, calculationOnCompleteNumber, additionalCalculationLogic, } = data;
|
|
142
|
-
//
|
|
143
|
-
//
|
|
144
|
-
//
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
//
|
|
148
|
-
|
|
149
|
-
let finalNetPrice = netPrice;
|
|
150
|
-
if (usesStdUnit) {
|
|
151
|
-
// The calling code should compute actual stdUnitNetPrice * factor
|
|
152
|
-
finalNetPrice = netPrice;
|
|
153
|
-
}
|
|
154
|
-
else if (usesSuperUnit) {
|
|
155
|
-
finalNetPrice = netPrice;
|
|
156
|
-
}
|
|
157
|
-
else if (usesAdditionalUnit) {
|
|
158
|
-
finalNetPrice = netPrice;
|
|
159
|
-
}
|
|
164
|
+
// Derive the per-unit net price from the total base value and the compare value
|
|
165
|
+
// (qty/units/amount) that was used during slab matching.
|
|
166
|
+
// tempBaseValue = qty * unitPrice, compareValue = qty (or units/amount for other
|
|
167
|
+
// constraint types), so tempBaseValue / compareValue gives back the correct
|
|
168
|
+
// per-unit (or per-std-unit / per-super-unit) finalNetPrice that the original
|
|
169
|
+
// calculatePerUnitPayout used.
|
|
170
|
+
const finalNetPrice = tempBaseValue && compareValue ? tempBaseValue / compareValue : 0;
|
|
160
171
|
const discountAmountPreTax = discountAmountOfPerUnit / (1 + totalTaxPercentage / 100);
|
|
161
172
|
let itemDiscountPercent;
|
|
162
173
|
if (additionalCalculationLogic === AdditionalCalculationLogic.DISCOUNT_VALUE_SUBTRACTED_FROM_PRICE) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discount-application.js","sourceRoot":"","sources":["../../../src/calculators/discount-application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,qBAAqB,EAAE,sCAAsC,EAAE,MAAM,+BAA+B,CAAC;AAsC9G;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAA+B;IAE/B,MAAM,EACJ,cAAc,EACd,SAAS,EACT,QAAQ,EACR,OAAO,EACP,GAAG,EACH,KAAK,EACL,cAAc,EACd,mCAAmC,EACnC,+BAA+B,GAAG,KAAK,EACvC,kCAAkC,GAAG,KAAK,EAC1C,yBAAyB,GAAG,KAAK,GAClC,GAAG,KAAK,CAAC;IAEV,MAAM,SAAS,GAAG,cAAc,KAAK,cAAc,CAAC,OAAO,CAAC;IAC5D,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,wBAAwB,CAAC;IAClF,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,0BAA0B,CAAC;IAErF,IAAI,aAAa,GAAG,SAAS,CAAC;IAC9B,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,cAAc,CAAC,CAAC;IAE/E,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,wEAAwE;QACxE,qEAAqE;QACrE,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,WAAW,GACf,kCAAkC;YAChC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC1F,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,QAAQ,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACzF,MAAM,YAAY,GAAG,QAAQ,IAAI,QAAQ,CAAC;QAC1C,MAAM,cAAc,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACnG,MAAM,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QAEhF,gEAAgE;QAChE,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"discount-application.js","sourceRoot":"","sources":["../../../src/calculators/discount-application.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { SchemeCategory } from "../types/enums";
|
|
2
|
-
import type { AppliedSchemeEntry, AppliedDiscountResult } from "../types/applied-scheme";
|
|
3
|
-
export interface DiscountApplicationInput {
|
|
4
|
-
/** Schemes already applied/matched for this line item (typically one entry per scheme, or per batch for batch-priced companies). */
|
|
5
|
-
appliedSchemes: AppliedSchemeEntry[];
|
|
6
|
-
/** Base monetary value used as the starting point for % discount calculations (usually `unit price × billed quantity`, excluding free qty). */
|
|
7
|
-
baseValue: number;
|
|
8
|
-
/** Billed quantity for the line (saleable quantity that contributes to value/discount), excluding free qty. */
|
|
9
|
-
quantity: number;
|
|
10
|
-
/** Free quantity given via FOC/product schemes (used for some effective discount computations). */
|
|
11
|
-
freeQty: number;
|
|
12
|
-
/** Product MRP (Maximum Retail Price) used for MRP-based discount schemes. */
|
|
13
|
-
mrp: number;
|
|
14
|
-
/** Selling price used for discount calculations (typically PTR/ex-tax unit price for this line). */
|
|
15
|
-
price: number;
|
|
16
|
-
/** Whether we’re computing primary or secondary scheme discount totals. */
|
|
17
|
-
schemeCategory: SchemeCategory;
|
|
18
|
-
/** If true, successive discounts are applied on the reduced base (gross-total chaining) rather than original base value. */
|
|
19
|
-
useGrossTotalForSuccessiveDiscounts: boolean;
|
|
20
|
-
/** Company-level behavior: Product payout schemes can be treated as unitary (discount distribution instead of adding free item value). */
|
|
21
|
-
companyUsesUnitaryProductScheme?: boolean;
|
|
22
|
-
/** Company-level behavior: same SKU can be split into multiple pricing batches; discount must be computed per-batch to avoid double counting. */
|
|
23
|
-
companyUsesPricingBatchNumberInDms?: boolean;
|
|
24
|
-
/** Company-level behavior: toggles alternate bottler flows where some payout rules differ. */
|
|
25
|
-
enableBottlerCompanyFlows?: boolean;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Calculate the total primary or secondary discount value from applied schemes.
|
|
29
|
-
* Pure function — returns results without mutating the input.
|
|
30
|
-
*
|
|
31
|
-
* Bug 7 fix: Clamps negative discount values to 0.
|
|
32
|
-
* Bug 5 fix: Returns warning when MRP < price causes zero-out.
|
|
33
|
-
*/
|
|
34
|
-
export declare function calculateAppliedDiscountValues(input: DiscountApplicationInput): AppliedDiscountResult;
|
|
35
|
-
interface RecalcResult {
|
|
36
|
-
discountPercent: number;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Recalculates perUnit discount percentage based on updated net prices.
|
|
40
|
-
* Pure function – returns new percent, caller decides where to assign.
|
|
41
|
-
*/
|
|
42
|
-
export declare function recalculateSchemePercentage(scheme: AppliedSchemeEntry, tempBaseValue?: number): RecalcResult;
|
|
43
|
-
export {};
|
|
44
|
-
//# sourceMappingURL=discount-application.d.ts.map
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import type { Scheme } from "../types/scheme";
|
|
2
|
-
import type { SchemeSlabResult } from "../types/applied-scheme";
|
|
3
|
-
import type { QualifierItem } from "../helpers/qualifier-checks";
|
|
4
|
-
import type { PerUnitPriceProps } from "../types/item-props";
|
|
5
|
-
import type { BasketItem } from "./payout-types/basket";
|
|
6
|
-
import type { Basket } from "../types/scheme";
|
|
7
|
-
export interface CalculateSchemeSlabInput {
|
|
8
|
-
/** Full scheme configuration as received from DB/API. */
|
|
9
|
-
scheme: Scheme;
|
|
10
|
-
/** Precomputed metric used to match slabs (qty/amount/units depending on scheme.constraintType). */
|
|
11
|
-
compareValue: number;
|
|
12
|
-
/** Precomputed total amount for the qualifying set (usually sum of price×qty). */
|
|
13
|
-
totalAmount: number;
|
|
14
|
-
/** Items that are considered applicable for this scheme (after applicability filtering). */
|
|
15
|
-
applicableProducts: QualifierItem[];
|
|
16
|
-
/** Whether calculation should use MRP billing payouts (use slab.mrpPayout instead of slab.payout). */
|
|
17
|
-
isMrpBilling: boolean;
|
|
18
|
-
/** Product MRP used by PercentageDiscountOnMRP schemes. */
|
|
19
|
-
productMrp: number;
|
|
20
|
-
/** Product PTR/ex-tax unit price used by PercentageDiscountOnMRP schemes. */
|
|
21
|
-
productPtr: number;
|
|
22
|
-
/** Total tax % used to convert MRP-inclusive prices to ex-tax values when needed. */
|
|
23
|
-
totalTaxPercentage: number;
|
|
24
|
-
/** Net price inputs used by PerUnitDiscount schemes (supports std/super/additional unit calculations). */
|
|
25
|
-
perUnitPrices: PerUnitPriceProps;
|
|
26
|
-
/** Price of the free/payout product when the company distributes unitary product scheme value as discount. */
|
|
27
|
-
focProductPrice?: number;
|
|
28
|
-
/** Basket definitions (groups of product IDs) referenced by basket slabs. */
|
|
29
|
-
baskets?: Basket[];
|
|
30
|
-
/** Actual basket-selected items for this order/cart (used to qualify and apply basket schemes). */
|
|
31
|
-
selectedItems?: BasketItem[];
|
|
32
|
-
/** Company rule: treat PRODUCT payout schemes as unitary discount distribution. */
|
|
33
|
-
companyUsesUnitaryProductScheme?: boolean;
|
|
34
|
-
/** Company rule: interpret step FOC logic in DMS-specific way. */
|
|
35
|
-
companyUsesStepfocSchemeInDms?: boolean;
|
|
36
|
-
/** Feature toggle: enable alternate continuous scheme logic for some FOC flows. */
|
|
37
|
-
applyContinuousSchemeLogic?: boolean;
|
|
38
|
-
/** Feature toggle: enable step-multiplier scheme logic for some FOC flows. */
|
|
39
|
-
applyStepMultiplierSchemeLogic?: boolean;
|
|
40
|
-
/** Buyer type flag used by some company flows (retailer vs other). */
|
|
41
|
-
isBuyerRetailer?: boolean;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Master dispatcher: routes to the correct payout-type calculator.
|
|
45
|
-
*
|
|
46
|
-
* This is the primary public API for scheme calculation. Given a scheme
|
|
47
|
-
* and pre-computed aggregates, it returns a pure SchemeSlabResult that
|
|
48
|
-
* the caller can use to update item state.
|
|
49
|
-
*/
|
|
50
|
-
export declare function calculateSchemeSlabResult(input: CalculateSchemeSlabInput): SchemeSlabResult;
|
|
51
|
-
export { calculateDiscountPayout } from "./payout-types/discount";
|
|
52
|
-
export { calculateMrpPercentageDiscountPayout } from "./payout-types/mrp-percentage";
|
|
53
|
-
export { calculatePerUnitPayout } from "./payout-types/per-unit";
|
|
54
|
-
export { calculateFixedDiscountPayout } from "./payout-types/fixed-discount";
|
|
55
|
-
export { calculateFocPayout } from "./payout-types/foc";
|
|
56
|
-
export { calculateProductPayout } from "./payout-types/product";
|
|
57
|
-
export { calculateProductSchemeNewPayout } from "./payout-types/product-new";
|
|
58
|
-
export { calculateBasketPayout } from "./payout-types/basket";
|
|
59
|
-
export { calculateCouponPayout } from "./payout-types/coupon";
|
|
60
|
-
export { calculateTopupPayout } from "./payout-types/topup";
|
|
61
|
-
export { calculateArticlePayout } from "./payout-types/article";
|
|
62
|
-
export { calculateNlpPayout } from "./payout-types/nlp";
|
|
63
|
-
export { findMatchingSlab, findInterpolationSlabs } from "./slab-matcher";
|
|
64
|
-
export { calculateAppliedDiscountValues, recalculateSchemePercentage } from "./discount-application";
|
|
65
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calculators/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAgB9C,MAAM,WAAW,wBAAwB;IACvC,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,oGAAoG;IACpG,YAAY,EAAE,MAAM,CAAC;IACrB,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACpC,sGAAsG;IACtG,YAAY,EAAE,OAAO,CAAC;IAGtB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,kBAAkB,EAAE,MAAM,CAAC;IAG3B,0GAA0G;IAC1G,aAAa,EAAE,iBAAiB,CAAC;IAGjC,8GAA8G;IAC9G,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,mGAAmG;IACnG,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;IAG7B,mFAAmF;IACnF,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,kEAAkE;IAClE,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,mFAAmF;IACnF,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,8EAA8E;IAC9E,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,sEAAsE;IACtE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA8BD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,wBAAwB,GAAG,gBAAgB,CAmI3F;AAGD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.recalculateSchemePercentage = exports.calculateAppliedDiscountValues = exports.findInterpolationSlabs = exports.findMatchingSlab = exports.calculateNlpPayout = exports.calculateArticlePayout = exports.calculateTopupPayout = exports.calculateCouponPayout = exports.calculateBasketPayout = exports.calculateProductSchemeNewPayout = exports.calculateProductPayout = exports.calculateFocPayout = exports.calculateFixedDiscountPayout = exports.calculatePerUnitPayout = exports.calculateMrpPercentageDiscountPayout = exports.calculateDiscountPayout = void 0;
|
|
4
|
-
exports.calculateSchemeSlabResult = calculateSchemeSlabResult;
|
|
5
|
-
const enums_1 = require("../types/enums");
|
|
6
|
-
const applied_scheme_1 = require("../types/applied-scheme");
|
|
7
|
-
const discount_1 = require("./payout-types/discount");
|
|
8
|
-
const mrp_percentage_1 = require("./payout-types/mrp-percentage");
|
|
9
|
-
const per_unit_1 = require("./payout-types/per-unit");
|
|
10
|
-
const fixed_discount_1 = require("./payout-types/fixed-discount");
|
|
11
|
-
const foc_1 = require("./payout-types/foc");
|
|
12
|
-
const product_1 = require("./payout-types/product");
|
|
13
|
-
const product_new_1 = require("./payout-types/product-new");
|
|
14
|
-
const basket_1 = require("./payout-types/basket");
|
|
15
|
-
const coupon_1 = require("./payout-types/coupon");
|
|
16
|
-
const topup_1 = require("./payout-types/topup");
|
|
17
|
-
const article_1 = require("./payout-types/article");
|
|
18
|
-
const nlp_1 = require("./payout-types/nlp");
|
|
19
|
-
/**
|
|
20
|
-
* Detects if a scheme is a GST Claim scheme based on naming conventions.
|
|
21
|
-
*/
|
|
22
|
-
function isGstClaimScheme(scheme) {
|
|
23
|
-
const GSTSchemeName = "GST Claim";
|
|
24
|
-
const hasGstBase = scheme.name.toLowerCase().trim() === GSTSchemeName.toLowerCase().trim() &&
|
|
25
|
-
(scheme.schemeSubType2 || "").toLowerCase().trim() ===
|
|
26
|
-
enums_1.SchemeSubType2.NON_CLAIMABLE.toLowerCase().trim() &&
|
|
27
|
-
scheme.payoutCalculationType.toLowerCase().trim() ===
|
|
28
|
-
enums_1.SchemePayoutCalculationType.CONTINUOUS &&
|
|
29
|
-
scheme.payoutType.toLowerCase().trim() ===
|
|
30
|
-
enums_1.SchemePayoutType.DISCOUNT.toLowerCase().trim();
|
|
31
|
-
const isPrimaryGstScheme = scheme.category === "Primary" &&
|
|
32
|
-
scheme.schemeSubType.toLowerCase().trim() ===
|
|
33
|
-
enums_1.SchemeSubType.NON_EXTENDABLE.toLowerCase().trim();
|
|
34
|
-
const isSecondaryGstScheme = scheme.category === "Secondary" &&
|
|
35
|
-
scheme.schemeSubType.toLowerCase().trim() ===
|
|
36
|
-
enums_1.SchemeSubType.EXTENDABLE.toLowerCase().trim();
|
|
37
|
-
return hasGstBase && (isPrimaryGstScheme || isSecondaryGstScheme);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Master dispatcher: routes to the correct payout-type calculator.
|
|
41
|
-
*
|
|
42
|
-
* This is the primary public API for scheme calculation. Given a scheme
|
|
43
|
-
* and pre-computed aggregates, it returns a pure SchemeSlabResult that
|
|
44
|
-
* the caller can use to update item state.
|
|
45
|
-
*/
|
|
46
|
-
function calculateSchemeSlabResult(input) {
|
|
47
|
-
const { scheme } = input;
|
|
48
|
-
const payoutType = scheme.payoutType;
|
|
49
|
-
switch (payoutType) {
|
|
50
|
-
case enums_1.SchemePayoutType.DISCOUNT:
|
|
51
|
-
return (0, discount_1.calculateDiscountPayout)({
|
|
52
|
-
scheme,
|
|
53
|
-
compareValue: input.compareValue,
|
|
54
|
-
applicableProducts: input.applicableProducts,
|
|
55
|
-
isMrpBilling: input.isMrpBilling,
|
|
56
|
-
isGstClaimScheme: isGstClaimScheme(scheme),
|
|
57
|
-
});
|
|
58
|
-
case enums_1.SchemePayoutType.PERCENTAGE_DISCOUNT_ON_MRP:
|
|
59
|
-
return (0, mrp_percentage_1.calculateMrpPercentageDiscountPayout)({
|
|
60
|
-
scheme,
|
|
61
|
-
compareValue: input.compareValue,
|
|
62
|
-
applicableProducts: input.applicableProducts,
|
|
63
|
-
isMrpBilling: input.isMrpBilling,
|
|
64
|
-
productMrp: input.productMrp,
|
|
65
|
-
productPtr: input.productPtr,
|
|
66
|
-
totalTaxPercentage: input.totalTaxPercentage,
|
|
67
|
-
});
|
|
68
|
-
case enums_1.SchemePayoutType.PERUNIT:
|
|
69
|
-
return (0, per_unit_1.calculatePerUnitPayout)({
|
|
70
|
-
scheme,
|
|
71
|
-
compareValue: input.compareValue,
|
|
72
|
-
applicableProducts: input.applicableProducts,
|
|
73
|
-
isMrpBilling: input.isMrpBilling,
|
|
74
|
-
totalTaxPercentage: input.totalTaxPercentage,
|
|
75
|
-
perUnitPrices: input.perUnitPrices,
|
|
76
|
-
});
|
|
77
|
-
case enums_1.SchemePayoutType.FIXED_DISCOUNT:
|
|
78
|
-
return (0, fixed_discount_1.calculateFixedDiscountPayout)({
|
|
79
|
-
scheme,
|
|
80
|
-
compareValue: input.compareValue,
|
|
81
|
-
totalAmount: input.totalAmount,
|
|
82
|
-
applicableProducts: input.applicableProducts,
|
|
83
|
-
isMrpBilling: input.isMrpBilling,
|
|
84
|
-
itemBaseValues: [],
|
|
85
|
-
});
|
|
86
|
-
case enums_1.SchemePayoutType.FOC:
|
|
87
|
-
case enums_1.SchemePayoutType.FOC_SLAB:
|
|
88
|
-
return (0, foc_1.calculateFocPayout)({
|
|
89
|
-
scheme,
|
|
90
|
-
compareValue: input.compareValue,
|
|
91
|
-
applicableProducts: input.applicableProducts,
|
|
92
|
-
isMrpBilling: input.isMrpBilling,
|
|
93
|
-
companyUsesStepfocSchemeInDms: input.companyUsesStepfocSchemeInDms,
|
|
94
|
-
applyContinuousSchemeLogic: input.applyContinuousSchemeLogic,
|
|
95
|
-
applyStepMultiplierSchemeLogic: input.applyStepMultiplierSchemeLogic,
|
|
96
|
-
});
|
|
97
|
-
case enums_1.SchemePayoutType.PRODUCT:
|
|
98
|
-
return (0, product_1.calculateProductPayout)({
|
|
99
|
-
scheme,
|
|
100
|
-
compareValue: input.compareValue,
|
|
101
|
-
totalAmount: input.totalAmount,
|
|
102
|
-
applicableProducts: input.applicableProducts,
|
|
103
|
-
isMrpBilling: input.isMrpBilling,
|
|
104
|
-
focProductPrice: input.focProductPrice,
|
|
105
|
-
companyUsesUnitaryProductScheme: input.companyUsesUnitaryProductScheme,
|
|
106
|
-
});
|
|
107
|
-
case enums_1.SchemePayoutType.PRODUCT_SCHEME_NEW:
|
|
108
|
-
return (0, product_new_1.calculateProductSchemeNewPayout)({
|
|
109
|
-
scheme,
|
|
110
|
-
compareValue: input.compareValue,
|
|
111
|
-
totalAmount: input.totalAmount,
|
|
112
|
-
applicableProducts: input.applicableProducts,
|
|
113
|
-
isMrpBilling: input.isMrpBilling,
|
|
114
|
-
focProductPrice: input.focProductPrice,
|
|
115
|
-
companyUsesUnitaryProductScheme: input.companyUsesUnitaryProductScheme,
|
|
116
|
-
});
|
|
117
|
-
case enums_1.SchemePayoutType.BASKET:
|
|
118
|
-
return (0, basket_1.calculateBasketPayout)({
|
|
119
|
-
scheme,
|
|
120
|
-
compareValue: input.compareValue,
|
|
121
|
-
applicableProducts: input.applicableProducts,
|
|
122
|
-
baskets: input.baskets || [],
|
|
123
|
-
selectedItems: input.selectedItems || [],
|
|
124
|
-
isMrpBilling: input.isMrpBilling,
|
|
125
|
-
});
|
|
126
|
-
case enums_1.SchemePayoutType.COUPON:
|
|
127
|
-
return (0, coupon_1.calculateCouponPayout)({
|
|
128
|
-
scheme,
|
|
129
|
-
compareValue: input.compareValue,
|
|
130
|
-
totalAmount: input.totalAmount,
|
|
131
|
-
applicableProducts: input.applicableProducts,
|
|
132
|
-
isMrpBilling: input.isMrpBilling,
|
|
133
|
-
});
|
|
134
|
-
case enums_1.SchemePayoutType.TOPUP:
|
|
135
|
-
return (0, topup_1.calculateTopupPayout)({
|
|
136
|
-
scheme,
|
|
137
|
-
compareValue: input.compareValue,
|
|
138
|
-
applicableProducts: input.applicableProducts,
|
|
139
|
-
isMrpBilling: input.isMrpBilling,
|
|
140
|
-
});
|
|
141
|
-
case enums_1.SchemePayoutType.ARTICLE:
|
|
142
|
-
return (0, article_1.calculateArticlePayout)({
|
|
143
|
-
scheme,
|
|
144
|
-
compareValue: input.compareValue,
|
|
145
|
-
totalAmount: input.totalAmount,
|
|
146
|
-
applicableProducts: input.applicableProducts,
|
|
147
|
-
isMrpBilling: input.isMrpBilling,
|
|
148
|
-
});
|
|
149
|
-
case enums_1.SchemePayoutType.NLP:
|
|
150
|
-
return (0, nlp_1.calculateNlpPayout)({
|
|
151
|
-
scheme,
|
|
152
|
-
compareValue: input.compareValue,
|
|
153
|
-
totalAmount: input.totalAmount,
|
|
154
|
-
applicableProducts: input.applicableProducts,
|
|
155
|
-
isMrpBilling: input.isMrpBilling,
|
|
156
|
-
productPtr: input.productPtr,
|
|
157
|
-
});
|
|
158
|
-
default: {
|
|
159
|
-
const result = (0, applied_scheme_1.createEmptySlabResult)(payoutType);
|
|
160
|
-
result.warnings.push(`Payout type not matching: ${payoutType}`);
|
|
161
|
-
return result;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
// ─── Re-exports ─────────────────────────────────────────────────
|
|
166
|
-
var discount_2 = require("./payout-types/discount");
|
|
167
|
-
Object.defineProperty(exports, "calculateDiscountPayout", { enumerable: true, get: function () { return discount_2.calculateDiscountPayout; } });
|
|
168
|
-
var mrp_percentage_2 = require("./payout-types/mrp-percentage");
|
|
169
|
-
Object.defineProperty(exports, "calculateMrpPercentageDiscountPayout", { enumerable: true, get: function () { return mrp_percentage_2.calculateMrpPercentageDiscountPayout; } });
|
|
170
|
-
var per_unit_2 = require("./payout-types/per-unit");
|
|
171
|
-
Object.defineProperty(exports, "calculatePerUnitPayout", { enumerable: true, get: function () { return per_unit_2.calculatePerUnitPayout; } });
|
|
172
|
-
var fixed_discount_2 = require("./payout-types/fixed-discount");
|
|
173
|
-
Object.defineProperty(exports, "calculateFixedDiscountPayout", { enumerable: true, get: function () { return fixed_discount_2.calculateFixedDiscountPayout; } });
|
|
174
|
-
var foc_2 = require("./payout-types/foc");
|
|
175
|
-
Object.defineProperty(exports, "calculateFocPayout", { enumerable: true, get: function () { return foc_2.calculateFocPayout; } });
|
|
176
|
-
var product_2 = require("./payout-types/product");
|
|
177
|
-
Object.defineProperty(exports, "calculateProductPayout", { enumerable: true, get: function () { return product_2.calculateProductPayout; } });
|
|
178
|
-
var product_new_2 = require("./payout-types/product-new");
|
|
179
|
-
Object.defineProperty(exports, "calculateProductSchemeNewPayout", { enumerable: true, get: function () { return product_new_2.calculateProductSchemeNewPayout; } });
|
|
180
|
-
var basket_2 = require("./payout-types/basket");
|
|
181
|
-
Object.defineProperty(exports, "calculateBasketPayout", { enumerable: true, get: function () { return basket_2.calculateBasketPayout; } });
|
|
182
|
-
var coupon_2 = require("./payout-types/coupon");
|
|
183
|
-
Object.defineProperty(exports, "calculateCouponPayout", { enumerable: true, get: function () { return coupon_2.calculateCouponPayout; } });
|
|
184
|
-
var topup_2 = require("./payout-types/topup");
|
|
185
|
-
Object.defineProperty(exports, "calculateTopupPayout", { enumerable: true, get: function () { return topup_2.calculateTopupPayout; } });
|
|
186
|
-
var article_2 = require("./payout-types/article");
|
|
187
|
-
Object.defineProperty(exports, "calculateArticlePayout", { enumerable: true, get: function () { return article_2.calculateArticlePayout; } });
|
|
188
|
-
var nlp_2 = require("./payout-types/nlp");
|
|
189
|
-
Object.defineProperty(exports, "calculateNlpPayout", { enumerable: true, get: function () { return nlp_2.calculateNlpPayout; } });
|
|
190
|
-
var slab_matcher_1 = require("./slab-matcher");
|
|
191
|
-
Object.defineProperty(exports, "findMatchingSlab", { enumerable: true, get: function () { return slab_matcher_1.findMatchingSlab; } });
|
|
192
|
-
Object.defineProperty(exports, "findInterpolationSlabs", { enumerable: true, get: function () { return slab_matcher_1.findInterpolationSlabs; } });
|
|
193
|
-
var discount_application_1 = require("./discount-application");
|
|
194
|
-
Object.defineProperty(exports, "calculateAppliedDiscountValues", { enumerable: true, get: function () { return discount_application_1.calculateAppliedDiscountValues; } });
|
|
195
|
-
Object.defineProperty(exports, "recalculateSchemePercentage", { enumerable: true, get: function () { return discount_application_1.recalculateSchemePercentage; } });
|
|
196
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/calculators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { Scheme } from "../../types/scheme";
|
|
2
|
-
import type { SchemeSlabResult } from "../../types/applied-scheme";
|
|
3
|
-
import type { QualifierItem } from "../../helpers/qualifier-checks";
|
|
4
|
-
export interface ArticleCalculatorInput {
|
|
5
|
-
scheme: Scheme;
|
|
6
|
-
compareValue: number;
|
|
7
|
-
totalAmount: number;
|
|
8
|
-
applicableProducts: QualifierItem[];
|
|
9
|
-
isMrpBilling: boolean;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Article payout type.
|
|
13
|
-
*
|
|
14
|
-
* Semantics (from golden fixtures): payout is a per-unit value.
|
|
15
|
-
* - STEP: discountValue = payout × slab.constraint × floor(compareValue / slab.constraint)
|
|
16
|
-
* - CONTINUOUS: discountValue = payout × compareValue
|
|
17
|
-
*
|
|
18
|
-
* Returns discountPercent as an effective % on totalAmount so downstream logic can
|
|
19
|
-
* derive an amount consistently.
|
|
20
|
-
*/
|
|
21
|
-
export declare function calculateArticlePayout(): SchemeSlabResult;
|
|
22
|
-
export declare function calculateArticlePayout(input: ArticleCalculatorInput): SchemeSlabResult;
|
|
23
|
-
//# sourceMappingURL=article.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"article.d.ts","sourceRoot":"","sources":["../../../src/calculators/payout-types/article.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,aAAa,EAAE,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,CAAC;AAC3D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,sBAAsB,GAAG,gBAAgB,CAAC"}
|