@darkpos/pricing 1.0.93 → 1.0.95

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.
Files changed (34) hide show
  1. package/__TEST__/item.test.js +46 -48
  2. package/__TEST__/modifier/addItemModifier.test.js +181 -60
  3. package/__TEST__/modifier/overrideModifiers.test.js +196 -0
  4. package/__TEST__/order/order-payment-modifier.test.js +3 -11
  5. package/lib/item/calculate.js +66 -18
  6. package/lib/item/getItemPrice.js +1 -12
  7. package/lib/item/getPriceWithoutModifiers.js +7 -5
  8. package/lib/item/index.js +6 -0
  9. package/lib/item/isOverwrittenPrice.js +4 -0
  10. package/lib/item/isOverwrittenQuantity.js +4 -0
  11. package/lib/item/overrideNotes.js +24 -0
  12. package/lib/item/removeModifier.js +1 -22
  13. package/lib/item/removeModifiers.js +1 -2
  14. package/lib/modifier/areConditionsMet.js +1 -1
  15. package/lib/modifier/calculate.js +20 -2
  16. package/lib/modifier/createDescription.js +1 -1
  17. package/lib/modifier/duplicate.js +3 -0
  18. package/lib/modifier/getOverrideAmount.js +7 -0
  19. package/lib/modifier/getOverrideNote.js +5 -0
  20. package/lib/modifier/getServiceOverride.js +5 -0
  21. package/lib/modifier/index.js +18 -12
  22. package/lib/modifier/{isManual.js → isManualOverride.js} +1 -1
  23. package/lib/modifier/{isMultiplier.js → isMultiplierOverride.js} +1 -1
  24. package/lib/modifier/isNotesOverride.js +7 -0
  25. package/lib/modifier/isOverrideSubtotal.js +9 -0
  26. package/lib/modifier/{isService.js → isServiceOverride.js} +1 -1
  27. package/lib/modifier/isTotalOverride.js +7 -0
  28. package/lib/order/addItem.js +10 -12
  29. package/lib/order/addItemModifier.js +15 -62
  30. package/lib/order/removeItemModifier.js +2 -27
  31. package/package.json +4 -2
  32. package/lib/modifier/createAmountOverrideModifier.js +0 -18
  33. package/lib/modifier/getService.js +0 -5
  34. package/lib/modifier/mutateModifier.js +0 -23
@@ -1,14 +1,5 @@
1
1
  module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
2
2
  const { math } = utils;
3
- const { getComputeModField } = require('../modifier/utils');
4
-
5
- const getPrice = ({ item, modifier }) => {
6
- const compute = getComputeModField(modifier);
7
- const amount = (modifier && compute && compute.amount) || 0;
8
- const { price = 0 } = item;
9
- if (modifierActions.isMultiplier(modifier)) return math.mul(price, amount);
10
- return amount;
11
- };
12
3
 
13
4
  const filterByRemoveModifiers = (modifiers, modifier) => {
14
5
  const { delModifiers = [] } = modifier;
@@ -107,64 +98,31 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
107
98
  }
108
99
 
109
100
  const modifier = modifierActions.removeGroupRelations(_modifier); // to avoid no param reassign lint rule
110
- let item = { ...itemProp };
111
- const compute = getComputeModField(modifier);
101
+ const item = { ...itemProp };
112
102
  const conditionsBag = areConditionsMet(item, modifier.conditions);
113
- const isAmountOverride = modifierActions.isAmountOverride(modifier);
114
- const isPriceOverride = modifierActions.isPriceOverride(modifier);
115
- // is the modifier suggestion required
103
+
116
104
  if (conditionsBag.length > 0 && !modifierActions.isRequired(modifier)) {
117
105
  if (onConditionsNotMet) onConditionsNotMet(conditionsBag);
118
106
  return item;
119
107
  }
120
- const modifierToAdd = modifierActions.mutateModifier(modifier);
121
- const modifierIndex = item.modifiers.findIndex(
122
- ieach => ieach.modifierId === modifier._id
123
- );
108
+ const modifierToAdd = modifierActions.duplicate(modifier);
124
109
 
125
- if (modifierActions.isOverride(modifier) && !isAmountOverride) {
126
- if (modifierIndex > -1) item.modifiers[modifierIndex] = modifierToAdd;
127
- else item.modifiers.push(modifierToAdd);
128
- } else {
129
- item.modifiers.push(modifierToAdd);
130
- }
110
+ item.modifiers.push(modifierToAdd);
131
111
 
132
112
  if (modifierActions.isRemoveModifier(modifier)) {
133
113
  item.modifiers = filterByRemoveModifiers(item.modifiers, modifier);
134
114
  }
135
115
 
136
- if (modifierActions.isAmountOverride(modifier)) {
137
- item = {
138
- ...item,
139
- price: compute.amount,
140
- };
141
- }
142
-
143
- if (modifierActions.isQuantityOverride(modifier)) {
144
- if (modifier.compute && typeof modifier.compute.amount === 'number') {
145
- item.quantity = modifier.compute.amount || 1;
146
- } else if (typeof modifier.properties.override.fixedValue === 'number') {
147
- item.quantity = modifier.properties.override.fixedValue;
148
- }
149
- }
116
+ item.properties = {
117
+ ...(item.properties || {}),
118
+ basePrice: item.price,
119
+ };
120
+ item.price = itemActions.getItemPrice({
121
+ item,
122
+ itemPriceLevels: originalItem ? originalItem.priceLevels : undefined,
123
+ customer,
124
+ });
150
125
 
151
- if (isPriceOverride) {
152
- item.properties = {
153
- ...(item.properties || {}),
154
- basePrice: item.price,
155
- };
156
- item.price = getPrice({ modifier: modifierToAdd, item });
157
- } else {
158
- item.properties = {
159
- ...(item.properties || {}),
160
- basePrice: item.price,
161
- };
162
- item.price = itemActions.getItemPrice({
163
- item,
164
- itemPriceLevels: originalItem ? originalItem.priceLevels : undefined,
165
- customer,
166
- });
167
- }
168
126
  return item;
169
127
  };
170
128
 
@@ -204,7 +162,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
204
162
  ) {
205
163
  return order;
206
164
  }
207
- // Remove if it has it already only if it is not group of value or override modifier
165
+ // Remove if it has it already only if it is not group of value
208
166
 
209
167
  const maxApplies = modifierActions.getMaxItemUse(modifier) || 0;
210
168
  const isUnlimitedItemUse = modifierActions.isUnlimitedItemUse(modifier);
@@ -212,12 +170,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
212
170
  const maxQuantity =
213
171
  math.mul(item.quantity || 0, maxApplies) || item.quantity;
214
172
 
215
- if (
216
- !isUnlimitedItemUse &&
217
- contains &&
218
- usingCount >= maxQuantity &&
219
- !modifierActions.isOverride(modifier)
220
- ) {
173
+ if (!isUnlimitedItemUse && contains && usingCount >= maxQuantity) {
221
174
  if (maxApplies && onError) {
222
175
  onError('modifier.has.reached.the.maximum.amount.of.applies');
223
176
  return order;
@@ -1,15 +1,5 @@
1
- module.exports = ({ actions, modifierActions, itemActions, utils, _ }) => {
2
- const { math } = utils;
3
-
4
- const getPrice = ({ item, modifier }) => {
5
- const amount =
6
- (modifier && modifier.compute && modifier.compute.amount) || 0;
7
- const { price = 0 } = item;
8
- if (modifierActions.isMultiplier(modifier)) return math.mul(price, amount);
9
- return amount;
10
- };
11
-
12
- const removeModifier = ({ item, modifier, originalItem }) => {
1
+ module.exports = ({ actions, modifierActions, itemActions, _ }) => {
2
+ const removeModifier = ({ item, modifier }) => {
13
3
  const nextItem = { ...item, modifiers: [] };
14
4
 
15
5
  nextItem.modifiers = item.modifiers.filter(each => {
@@ -19,17 +9,6 @@ module.exports = ({ actions, modifierActions, itemActions, utils, _ }) => {
19
9
  return each._id !== modifier._id;
20
10
  });
21
11
 
22
- if (modifierActions.isAmountOverride(modifier))
23
- return {
24
- ...originalItem,
25
- ...nextItem,
26
- };
27
-
28
- if (modifierActions.isPriceOverride(modifier))
29
- nextItem.price = getPrice({ modifier, item: nextItem });
30
-
31
- if (modifierActions.isQuantityOverride(modifier)) nextItem.quantity = 1;
32
-
33
12
  return nextItem;
34
13
  };
35
14
 
@@ -56,10 +35,6 @@ module.exports = ({ actions, modifierActions, itemActions, utils, _ }) => {
56
35
 
57
36
  if (!contains) return order;
58
37
 
59
- if (modifierActions.isRequiredAndOverride(modifier)) {
60
- return order;
61
- }
62
-
63
38
  // Remove
64
39
  item = removeModifier({
65
40
  item,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkpos/pricing",
3
- "version": "1.0.93",
3
+ "version": "1.0.95",
4
4
  "description": "Pricing calculator",
5
5
  "author": "Dark POS",
6
6
  "license": "ISC",
@@ -28,6 +28,8 @@
28
28
  "test:paymentModifiers": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/order-payment-modifier.test.js",
29
29
  "test:addItem": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/addItem.test.js",
30
30
  "test:getParentTotals": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/getParentTotals.test.js",
31
+ "test:overrideModifiers": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/modifier/overrideModifiers.test.js",
32
+ "test:addItemModifier": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/modifier/addItemModifier.test.js",
31
33
  "lint": "eslint --quiet lib/"
32
34
  },
33
35
  "publishConfig": {
@@ -52,5 +54,5 @@
52
54
  "supertest": "^6.2.3",
53
55
  "supervisor": "^0.12.0"
54
56
  },
55
- "gitHead": "fb466ad4fdad14d593a1ee3dc2814f683b10ec24"
57
+ "gitHead": "edb497d37801c9749d2c3722a67657abe77c9ab6"
56
58
  }
@@ -1,18 +0,0 @@
1
- module.exports = ({ constants, actions }) => {
2
- const { Modifier } = constants;
3
-
4
- return function createAmountOverrideModifier(params) {
5
- return actions.create({
6
- compute: {
7
- amount: params.amount,
8
- action: Modifier.Compute.Actions.OVERRIDE,
9
- },
10
- properties: {
11
- override: { field: 'amount' },
12
- },
13
- attributes: [Modifier.Attributes.OVERRIDE],
14
- name: `Modifier Amount ${Modifier.Compute.Actions.OVERRIDE}`,
15
- included: true,
16
- });
17
- };
18
- };
@@ -1,5 +0,0 @@
1
- module.exports = ({ actions }) =>
2
- function getService(modifier) {
3
- if (!actions.isService(modifier)) return null;
4
- return modifier.properties.override.service;
5
- };
@@ -1,23 +0,0 @@
1
- module.exports = ({ _, actions }) =>
2
- function mutateModifier(mod) {
3
- const modifier = actions.duplicate(mod);
4
- const fixedValue = _.get(modifier, 'properties.override.fixedValue', '');
5
- const isAmountOverride = actions.isAmountOverride(mod);
6
- const isPriceOverride = actions.isPriceOverride(mod);
7
-
8
- if (isPriceOverride && fixedValue) {
9
- modifier.compute = {
10
- amount: fixedValue,
11
- };
12
- }
13
-
14
- if (isAmountOverride && fixedValue) {
15
- modifier.compute = {
16
- type: 'fixed',
17
- amount: fixedValue,
18
- action: 'add',
19
- };
20
- }
21
-
22
- return modifier;
23
- };