@darkpos/pricing 1.0.59 → 1.0.60

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.
@@ -187,7 +187,6 @@ describe('Modifier actions', () => {
187
187
  onError: errorMessage => {
188
188
  error = errorMessage;
189
189
  },
190
- cache: { items: [], modifiers: [] },
191
190
  });
192
191
 
193
192
  expect(conditionsBag).toEqual([]);
@@ -34,7 +34,6 @@ describe('addItem function', () => {
34
34
  order,
35
35
  item,
36
36
  itemIndex: -1, // No existing item in order
37
- cache: addItemObj.cache, // Assuming some cache object
38
37
  overridenQuantity: -1, // No overridden quantity
39
38
  });
40
39
 
@@ -79,7 +78,6 @@ describe('addItem function', () => {
79
78
  order,
80
79
  item,
81
80
  itemIndex: -1, // Assuming no explicit index
82
- cache: addItemObj.cache, // Assuming some cache object
83
81
  overridenQuantity: -1, // No overridden quantity
84
82
  });
85
83
 
@@ -111,7 +109,6 @@ describe('addItem function', () => {
111
109
  order,
112
110
  item,
113
111
  itemIndex: -1, // Assuming no explicit index
114
- cache: addItemObj.cache, // Assuming some cache object
115
112
  overridenQuantity: 5, // Override quantity to 5
116
113
  });
117
114
 
@@ -191,7 +188,6 @@ describe('addItem function', () => {
191
188
  order,
192
189
  item,
193
190
  itemIndex: -1, // Assuming no explicit index
194
- cache: addItemObj.cache, // Assuming some cache object
195
191
  overridenQuantity: -1, // No overridden quantity
196
192
  });
197
193
 
@@ -3127,7 +3127,6 @@ describe('Order actions', () => {
3127
3127
  const updatedOrder = pricingService.order.setCustomer({
3128
3128
  order,
3129
3129
  customer: {},
3130
- cache: {},
3131
3130
  });
3132
3131
 
3133
3132
  expect(updatedOrder).toStrictEqual({
@@ -3153,7 +3152,6 @@ describe('Order actions', () => {
3153
3152
  const updatedOrder2 = pricingService.order.setCustomer({
3154
3153
  order,
3155
3154
  customer: { _id: 'abd', tags: [] },
3156
- cache: {},
3157
3155
  });
3158
3156
 
3159
3157
  expect(updatedOrder2).toStrictEqual({
@@ -1,8 +1,8 @@
1
1
  module.exports = () =>
2
- function findOriginalItem({ item, cache = {} }) {
2
+ function findOriginalItem({ item, originalItems }) {
3
3
  const original =
4
- Array.isArray(cache.items) &&
5
- cache.items.find(each => each._id === item.itemId);
4
+ Array.isArray(originalItems) &&
5
+ originalItems.find(each => each._id === item.itemId);
6
6
 
7
7
  return original || item;
8
8
  };
@@ -1,20 +1,15 @@
1
- module.exports = ({ actions, modifierActions, utils }) => {
1
+ module.exports = ({ modifierActions, utils }) => {
2
2
  const { math } = utils;
3
3
 
4
4
  const getCustomerTags = (customer = {}) =>
5
5
  ((customer && customer.tags) || []).filter(Boolean);
6
6
 
7
- return function getItemPrice({ item, cache, customer }) {
7
+ return function getItemPrice({ item, customer, itemPriceLevels }) {
8
8
  const modifiers = item.modifiers || [];
9
9
  let { priceLevels } = item;
10
10
 
11
- // get cache Item
12
- if (cache && cache.items) {
13
- const orgItem = actions.findOriginalItem({
14
- item,
15
- cache,
16
- });
17
- ({ priceLevels } = orgItem);
11
+ if (Array.isArray(itemPriceLevels)) {
12
+ priceLevels = itemPriceLevels;
18
13
  }
19
14
 
20
15
  if (!priceLevels) return item.price || 0;
@@ -5,15 +5,6 @@ module.exports = ({ modifierActions, _, actions }) => {
5
5
  const isValid = (itemModifiers, modifier) => {
6
6
  if (!modifierActions.findById(itemModifiers, modifier._id)) return false;
7
7
 
8
- // 18-SEP-24 - Commenting out due to bug: https://app.clickup.com/t/86duna31h.
9
- // This logic was preventing required Order Discounts to be removed from the items.
10
- // if (
11
- // modifierActions.isRequired(modifier) &&
12
- // !modifierActions.isGroupOfValues(modifier) &&
13
- // !modifierActions.isRequiredAndOverride(modifier)
14
- // )
15
- // return false;
16
-
17
8
  if (
18
9
  !modifierActions.isGroupOfItems(modifier) &&
19
10
  hasRelatedItems(itemModifiers)
@@ -23,14 +14,7 @@ module.exports = ({ modifierActions, _, actions }) => {
23
14
  return true;
24
15
  };
25
16
 
26
- return function removeModifier({
27
- item,
28
- modifier,
29
- customer,
30
- cache = {
31
- items: [],
32
- },
33
- }) {
17
+ return function removeModifier({ item, modifier, customer, originalItem }) {
34
18
  const nextItem = _.cloneDeep(item);
35
19
  const itemModifiers = item.modifiers || [];
36
20
  let modifiersToApply = [];
@@ -39,7 +23,9 @@ module.exports = ({ modifierActions, _, actions }) => {
39
23
 
40
24
  // Check for multiple and add them to menuModifiers
41
25
  if (modifierActions.hasAddModifiers(modifier)) {
42
- const relatedModifiers = modifierActions.getRelatedModifiers(modifier);
26
+ const relatedModifiers = modifierActions.getRelatedModifiers({
27
+ modifier,
28
+ });
43
29
  // Removing only those children who are selected
44
30
  const currentModifiersIds = itemModifiers.map(each => each.modifierId);
45
31
  modifiersToApply = relatedModifiers.filter(each =>
@@ -61,15 +47,12 @@ module.exports = ({ modifierActions, _, actions }) => {
61
47
  );
62
48
 
63
49
  if (hasOverride) {
64
- const originalItem =
65
- cache.items.find(_item => _item._id === item.itemId) || item;
66
-
67
50
  if (modifierActions.isQuantityOverride(modifier)) nextItem.quantity = 1;
68
51
 
69
52
  if (modifierActions.isPriceOverride(modifier))
70
53
  nextItem.price = actions.getItemPrice({
71
54
  item: originalItem,
72
- cache,
55
+ itemPriceLevels: originalItem ? originalItem.priceLevels : undefined,
73
56
  customer,
74
57
  });
75
58
  }
@@ -1,11 +1,11 @@
1
1
  module.exports = ({ actions }) =>
2
- function removeModifiers({ item, modifiers, cache, customer }) {
2
+ function removeModifiers({ item, modifiers, originalItem, customer }) {
3
3
  const newItem = modifiers.reduce(
4
4
  (nextItem, modifier) =>
5
5
  actions.removeModifier({
6
6
  item: nextItem,
7
7
  modifier,
8
- cache,
8
+ originalItem,
9
9
  customer,
10
10
  }),
11
11
  item
@@ -12,6 +12,7 @@ module.exports = ({ modifierActions }) =>
12
12
  if (
13
13
  modifierActions.isPaymentModifier(modifier) ||
14
14
  modifierActions.isCalculatedPaymentModifier(modifier) ||
15
+ modifierActions.isGroupOfModifiers(modifier) ||
15
16
  !modifier.modifierId ||
16
17
  !modifierActions.isDirect(modifier)
17
18
  )
@@ -1,9 +1,12 @@
1
1
  module.exports = () =>
2
- function getGroupModifiers({ modifier, includeParent = true }) {
2
+ function getGroupModifiers({ modifier }) {
3
3
  const { properties } = modifier;
4
- if (!properties || !properties.group) return [];
5
- const { modifiers = [] } = properties.group;
6
- const groupModifiers = [...modifiers];
7
- if (includeParent) groupModifiers.push(modifier);
8
- return groupModifiers.filter(Boolean);
4
+ if (
5
+ !properties ||
6
+ !properties.group ||
7
+ !Array.isArray(properties.group.modifiers)
8
+ )
9
+ return [];
10
+
11
+ return properties.group.modifiers;
9
12
  };
@@ -1,25 +1,18 @@
1
- module.exports = ({ actions }) => {
2
- const find = (modifiers = [], modifierId = '') =>
3
- modifiers.find(each => each._id === modifierId);
4
- // This method returns all modifiers which are referenced by a modifier
5
- return function getGroupRelatedModifiers({ cache, modifier }) {
1
+ module.exports = ({ actions }) =>
2
+ // This method returns all modifiers which are in properties.group.modifiers
3
+ function getGroupRelatedModifiers({ modifier }) {
6
4
  if (!modifier) return [];
7
- const checkCache = Array.isArray(cache) && cache.length;
8
- const modifiers = actions.getGroupModifiers({
5
+ const groupModifiers = actions.getGroupModifiers({
9
6
  modifier,
10
- includeParent: false,
11
7
  });
12
8
 
13
- const groupModifiers = modifiers.reduce((arr, each) => {
14
- if (!each || !each._id) return arr;
15
- if (checkCache) {
16
- const org = find(cache, each.modifierId || each._id);
17
- if (org) arr.push(org);
18
- }
19
- return arr;
20
- }, []);
21
-
22
- if (actions.includesInGroup(modifier))
9
+ if (
10
+ actions.includesInGroup(modifier) &&
11
+ !groupModifiers.some(
12
+ groupMod =>
13
+ groupMod._id === modifier._id || groupMod.modifierId === modifier._id
14
+ )
15
+ )
23
16
  groupModifiers.unshift({
24
17
  ...actions.removeGroupData({ modifier }),
25
18
  required: false,
@@ -27,4 +20,3 @@ module.exports = ({ actions }) => {
27
20
 
28
21
  return groupModifiers;
29
22
  };
30
- };
@@ -1,5 +1,5 @@
1
1
  module.exports = ({ actions }) =>
2
- function getItemModifiers({ modifiers, customer, cache }) {
2
+ function getItemModifiers({ modifiers, customer }) {
3
3
  const matchedModifiers = actions.getMatchTagsModifiers({
4
4
  modifiers,
5
5
  entity: customer,
@@ -13,19 +13,11 @@ module.exports = ({ actions }) =>
13
13
  .map(each =>
14
14
  actions.getRelatedModifiers({
15
15
  modifier: each,
16
- modifiers,
17
16
  })
18
17
  )
19
18
  .reduce((acc, val) => acc.concat(val), []);
20
19
 
21
- const starchModifier = actions.getStarchModifier({
22
- cache,
23
- modifiers: enabledModifiers,
24
- starch: customer && customer.properties && customer.properties.starch,
25
- });
26
-
27
20
  const itemModifiers = [...enabledModifiers, ...relatedModifiers];
28
- if (starchModifier) itemModifiers.push(starchModifier);
29
21
 
30
22
  return itemModifiers.map(each => ({
31
23
  ...each,
@@ -1,10 +1,8 @@
1
- module.exports = ({ actions }) =>
2
- function getRelatedModifiers({ modifier, modifiers }) {
3
- if (!modifier || !modifier.addModifiers || !modifiers) return [];
4
- // get related modifiers
5
- const relatedModifiers = modifier.addModifiers
6
- .map(each => actions.findById(modifiers, each._id))
7
- .filter(Boolean);
1
+ module.exports = () =>
2
+ function getRelatedModifiers({ modifier }) {
3
+ if (!modifier || !modifier.addModifiers) return [];
4
+
5
+ const relatedModifiers = modifier.addModifiers;
8
6
 
9
7
  return relatedModifiers;
10
8
  };
@@ -41,7 +41,6 @@ const getGroupModifiers = require('./getGroupModifiers');
41
41
  const getImages = require('./getImages');
42
42
  const getItemModifiers = require('./getItemModifiers');
43
43
  const getInheritedModifiers = require('./getInheritedModifiers');
44
- const getLaundryModifiers = require('./getLaundryModifiers');
45
44
  const getMatchTagsModifiers = require('./getMatchTagsModifiers');
46
45
  const getModifierIndex = require('./getModifierIndex');
47
46
  const getModifiersByMaxSort = require('./getModifiersByMaxSort');
@@ -55,7 +54,6 @@ const getRequiredModifiers = require('./getRequiredModifiers');
55
54
  const getSelectedValues = require('./getSelectedValues');
56
55
  const getSubscriptionItem = require('./getSubscriptionItem');
57
56
  const getSubscriptionModifiers = require('./getSubscriptionModifiers');
58
- const getStarchModifier = require('./getStarchModifier');
59
57
  const getService = require('./getService');
60
58
  const getSplittedModifiers = require('./getSplittedModifiers');
61
59
  const getSuggestion = require('./getSuggestion');
@@ -204,7 +202,6 @@ const modifierActions = (deps = {}) => {
204
202
  getImages: getImages(innerDeps),
205
203
  getInheritedModifiers: getInheritedModifiers(innerDeps),
206
204
  getItemModifiers: getItemModifiers(innerDeps),
207
- getLaundryModifiers: getLaundryModifiers(innerDeps),
208
205
  getMatchTagsModifiers: getMatchTagsModifiers(innerDeps),
209
206
  getModifierIndex: getModifierIndex(innerDeps),
210
207
  getModifiersByMaxSort: getModifiersByMaxSort(innerDeps),
@@ -218,7 +215,6 @@ const modifierActions = (deps = {}) => {
218
215
  getSelectedValues: getSelectedValues(innerDeps),
219
216
  getSubscriptionItem: getSubscriptionItem(innerDeps),
220
217
  getSubscriptionModifiers: getSubscriptionModifiers(innerDeps),
221
- getStarchModifier: getStarchModifier(innerDeps),
222
218
  getService: getService(innerDeps),
223
219
  getSplittedModifiers: getSplittedModifiers(innerDeps),
224
220
  getSuggestion: getSuggestion(innerDeps),
@@ -3,6 +3,6 @@ module.exports = ({ settings, _ }) => {
3
3
 
4
4
  return function isPreferences(modifier) {
5
5
  const preferences = getPreferencesSettings();
6
- return modifier.group && preferences.includes(modifier.group.toLowerCase());
6
+ return modifier.group && preferences.includes(modifier.group);
7
7
  };
8
8
  };
@@ -106,7 +106,6 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
106
106
  order: orderProp,
107
107
  item,
108
108
  itemIndex,
109
- cache,
110
109
  overridenQuantity,
111
110
  }) {
112
111
  if (!orderProp || !item) return orderProp;
@@ -153,8 +152,9 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
153
152
 
154
153
  if (!combined) {
155
154
  // add price
155
+
156
156
  orderItem.price = itemActions.getItemPrice({
157
- cache,
157
+ itemPriceLevels: item.priceLevels,
158
158
  customer,
159
159
  item: orderItem,
160
160
  });
@@ -178,7 +178,6 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
178
178
  let requiredModifiers = modifierActions.getItemModifiers({
179
179
  modifiers: itemModifiers,
180
180
  customer,
181
- cache,
182
181
  });
183
182
  // Do not add again if they are already there
184
183
  if (
@@ -203,7 +202,7 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
203
202
  order,
204
203
  item: orderItem,
205
204
  combined,
206
- cache,
205
+ originalItem: item,
207
206
  });
208
207
 
209
208
  const params = addOrderItem({
@@ -227,7 +226,7 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
227
226
  itemIndex: nextItemIndex,
228
227
  order: acc,
229
228
  modifier,
230
- cache,
229
+ originalItem: item,
231
230
  }),
232
231
  nextOrder
233
232
  );
@@ -98,11 +98,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
98
98
  modifier: _modifier,
99
99
  item: itemProp,
100
100
  customer,
101
- cache = {
102
- modifiers: [],
103
- items: [],
104
- itemModifiers: [],
105
- },
101
+ originalItem,
106
102
  onConditionsNotMet,
107
103
  }) => {
108
104
  const modifier = _modifier; // to avoid no param reassign lint rule
@@ -164,7 +160,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
164
160
  };
165
161
  item.price = itemActions.getItemPrice({
166
162
  item,
167
- cache,
163
+ itemPriceLevels: originalItem ? originalItem.priceLevels : undefined,
168
164
  customer,
169
165
  });
170
166
  }
@@ -175,7 +171,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
175
171
  order: orderProp,
176
172
  modifier,
177
173
  itemIndex,
178
- cache,
174
+ originalItem,
179
175
  onConditionsNotMet,
180
176
  onError,
181
177
  }) {
@@ -219,7 +215,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
219
215
  order,
220
216
  modifier,
221
217
  itemIndex,
222
- cache,
218
+ originalItem,
223
219
  });
224
220
  return order;
225
221
  }
@@ -237,26 +233,23 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
237
233
  item = addModifier({
238
234
  item,
239
235
  modifier,
240
- cache,
236
+ originalItem,
241
237
  customer,
242
238
  onConditionsNotMet,
243
239
  });
244
240
 
245
241
  // Recursive Rules:
246
242
  if (modifierActions.hasAddModifiers(modifier)) {
247
- let relatedModifiers = modifierActions.getRelatedModifiers({
248
- modifier,
249
- modifiers: cache.modifiers,
250
- });
251
- relatedModifiers = relatedModifiers.filter(
252
- each => !modifierActions.contains(item.modifiers, each)
253
- );
243
+ const relatedModifiers = modifierActions
244
+ .getRelatedModifiers({ modifier })
245
+ .filter(each => !modifierActions.contains(item.modifiers, each));
246
+
254
247
  item = relatedModifiers.reduce(
255
248
  (acc, each) =>
256
249
  addModifier({
257
250
  item: acc,
258
251
  modifier: each,
259
- cache,
252
+ originalItem,
260
253
  customer,
261
254
  }),
262
255
  item
@@ -280,7 +273,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
280
273
  },
281
274
  },
282
275
  order: acc,
283
- cache,
276
+ originalItem,
284
277
  });
285
278
  return nextOrder;
286
279
  }, order);
@@ -1,5 +1,5 @@
1
1
  module.exports = ({ actions }) =>
2
- function addModifierToAllItems({ order, modifier, cache }) {
2
+ function addModifierToAllItems({ order, modifier, originalItems }) {
3
3
  if (!order || !Array.isArray(order.items) || !modifier) return order;
4
4
 
5
5
  const nextOrder = Object.entries(order.items).reduce(
@@ -8,7 +8,7 @@ module.exports = ({ actions }) =>
8
8
  itemIndex,
9
9
  modifier,
10
10
  order: acc,
11
- cache,
11
+ originalItems,
12
12
  }),
13
13
  order
14
14
  );
@@ -1,7 +1,7 @@
1
1
  module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
2
2
  const { math } = utils;
3
3
 
4
- return ({ order, item, combined, cache }) => {
4
+ return ({ order, item, combined, originalItem }) => {
5
5
  const [hasSubscription, remaining, used] = actions.hasRemainingSubscription(
6
6
  {
7
7
  order,
@@ -20,7 +20,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
20
20
  orderItem = itemActions.removeModifiers({
21
21
  item: orderItem,
22
22
  modifiers: subscriptionModifiers,
23
- cache,
23
+ originalItem,
24
24
  customer: order.customer,
25
25
  });
26
26
  }
@@ -34,14 +34,13 @@ module.exports = ({ actions, modifierActions, itemActions, utils, _ }) => {
34
34
  order: orderProp,
35
35
  modifier,
36
36
  itemIndex,
37
- cache,
37
+ originalItem,
38
38
  }) {
39
39
  const order = _.cloneDeep(orderProp);
40
40
  if (!order || itemIndex < 0 || !modifier) return order;
41
41
 
42
42
  let item = actions.getSelectedItem({ order, itemIndex });
43
43
  const customer = actions.getCustomer(order);
44
- const originalItem = cache.items.find(_item => _item._id === item.itemId);
45
44
  const contains = modifierActions.contains(item.modifiers, modifier);
46
45
 
47
46
  if (!contains) return order;
@@ -59,7 +58,7 @@ module.exports = ({ actions, modifierActions, itemActions, utils, _ }) => {
59
58
  });
60
59
  item.price = itemActions.getItemPrice({
61
60
  item,
62
- cache,
61
+ itemPriceLevels: originalItem ? originalItem.priceLevels : undefined,
63
62
  customer,
64
63
  });
65
64
  order.items[itemIndex] = item;
@@ -2,7 +2,7 @@ module.exports = ({ itemActions, modifierActions, _ }) => {
2
2
  const getTags = customer =>
3
3
  (customer.tags || []).map(tag => tag.toLowerCase());
4
4
 
5
- return function setCustomer({ order, customer, cache }) {
5
+ return function setCustomer({ order, customer, originalItems }) {
6
6
  if (!order) return null;
7
7
 
8
8
  const { items = [] } = order;
@@ -20,19 +20,22 @@ module.exports = ({ itemActions, modifierActions, _ }) => {
20
20
 
21
21
  nextOrder.items = items.map(nextItem => {
22
22
  const { itemModifiers, ...item } = nextItem;
23
- const originalItem = itemActions.findOriginalItem({ item, cache });
23
+ const originalItem = itemActions.findOriginalItem({
24
+ item,
25
+ originalItems,
26
+ });
27
+
24
28
  if (!originalItem) return item;
25
29
 
26
30
  const newModifiers = modifierActions.getItemModifiers({
27
31
  modifiers: itemModifiers,
28
32
  customer,
29
- cache,
30
33
  });
31
34
 
32
35
  const price = itemActions.getItemPrice({
33
36
  item,
34
37
  customer,
35
- cache,
38
+ itemPriceLevels: originalItem.priceLevels,
36
39
  });
37
40
 
38
41
  const filterExistingModifiers = () =>
@@ -5,7 +5,7 @@ module.exports = ({ actions, settings, _ }) => {
5
5
  quantity,
6
6
  itemIndex,
7
7
  reset,
8
- cache,
8
+ originalItem,
9
9
  }) {
10
10
  const item = actions.getSelectedItem({ order, itemIndex });
11
11
  const isBefore = orderSettings.useKeypadOnItemAdd === 'before';
@@ -27,7 +27,7 @@ module.exports = ({ actions, settings, _ }) => {
27
27
  const result = actions.addItem({
28
28
  order,
29
29
  item: { isPending: true },
30
- cache,
30
+ originalItem,
31
31
  overridenQuantity: quantity,
32
32
  });
33
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkpos/pricing",
3
- "version": "1.0.59",
3
+ "version": "1.0.60",
4
4
  "description": "Pricing calculator",
5
5
  "author": "Dark POS",
6
6
  "license": "ISC",
@@ -45,5 +45,5 @@
45
45
  "supertest": "^6.2.3",
46
46
  "supervisor": "^0.12.0"
47
47
  },
48
- "gitHead": "a18ca520a52fa2ab8acc3a61e70e559e8759accf"
48
+ "gitHead": "35464665224775509b837dfca3405adc2c7a881a"
49
49
  }
@@ -1,9 +0,0 @@
1
- module.exports = ({ actions }) =>
2
- function getLaundryModifiers(modifiers = []) {
3
- return modifiers.filter(
4
- each =>
5
- actions.isDepartment(each) &&
6
- each.properties.department.code &&
7
- each.properties.department.code.toLowerCase() === 'l'
8
- );
9
- };
@@ -1,9 +0,0 @@
1
- module.exports = ({ actions }) =>
2
- function getStarchModifier({ modifiers, starch, cache = {} }) {
3
- const laundryModifiers = actions.getLaundryModifiers(modifiers);
4
-
5
- if (cache && cache.modifiers && laundryModifiers.length && starch)
6
- return actions.findById(cache.modifiers, starch);
7
-
8
- return null;
9
- };