@parv0888/scheme-engine 0.1.0 → 0.1.2

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.
@@ -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,CAkJvB;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,CAmDd"}
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, tempBaseValue);
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 = quantity + freeQty;
71
+ const totalQty = effectiveQty + freeQty;
60
72
  if (totalQty > 0) {
61
- currentValue = (scheme.freeQty * tempBaseValue) / totalQty;
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)(tempBaseValue, currentPercent);
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)(tempBaseValue, currentPercent);
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
- // Approximate net prices proportional to tempBaseValue
147
- // The caller should provide more precise values via the recalculateSchemeData
148
- // For now, derive from the available data
149
- const quantity = scheme.productId ? 1 : 1; // quantity is per-item
150
- const netPrice = tempBaseValue ? tempBaseValue / (quantity || 1) : 0;
151
- // These are rough approximations — the real recalculation happens
152
- // when the caller sets up properly via RecalculateSchemeData
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":"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"}
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, tempBaseValue);
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 = quantity + freeQty;
67
+ const totalQty = effectiveQty + freeQty;
56
68
  if (totalQty > 0) {
57
- currentValue = (scheme.freeQty * tempBaseValue) / totalQty;
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(tempBaseValue, currentPercent);
107
+ currentValue = calculateMarkupDiscount(computeBase, currentPercent);
96
108
  }
97
109
  // Default: percentage-based discount
98
110
  else {
99
- currentValue = calculateDiscount(tempBaseValue, currentPercent);
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
- // Approximate net prices proportional to tempBaseValue
143
- // The caller should provide more precise values via the recalculateSchemeData
144
- // For now, derive from the available data
145
- const quantity = scheme.productId ? 1 : 1; // quantity is per-item
146
- const netPrice = tempBaseValue ? tempBaseValue / (quantity || 1) : 0;
147
- // These are rough approximations — the real recalculation happens
148
- // when the caller sets up properly via RecalculateSchemeData
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":"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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@parv0888/scheme-engine",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Pure-function scheme calculation engine for FieldAssist DMS",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -9,7 +9,8 @@
9
9
  "dist"
10
10
  ],
11
11
  "scripts": {
12
- "build": "tsc && tsc -p tsconfig.esm.json",
12
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
13
+ "build": "npm run clean && tsc && tsc -p tsconfig.esm.json",
13
14
  "test": "jest",
14
15
  "prepublishOnly": "npm run build && npm test",
15
16
  "db:download:secondary-discount-diffs": "node scripts/download_secondary_discount_diffs.js",