@darkpos/pricing 1.0.119 → 1.0.121

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.
@@ -281,3 +281,41 @@ test('getInvalidRequiredModifiers having related items', () => {
281
281
  name: 'White',
282
282
  });
283
283
  });
284
+
285
+ test('getInvalidRequiredModifiers having override modifiers', () => {
286
+ const item = {
287
+ modifiers: [
288
+ {
289
+ _id: '675354ee39a47228afd1f1a4',
290
+ attributes: ['override'],
291
+ modifierId: '6751f7eeb60c71cefee138ee',
292
+ name: 'Override modamount fixed 10',
293
+ group: 'Upcharge',
294
+ type: 'fee',
295
+ tags: ['default', 'all'],
296
+ direct: true,
297
+ required: true,
298
+ properties: {
299
+ override: {
300
+ type: 'fixed',
301
+ field: 'amount',
302
+ fixedValue: undefined,
303
+ multiplier: false,
304
+ },
305
+ },
306
+ },
307
+ ],
308
+ _id: '67dc63610c106ab7d481d7dd',
309
+ itemId: '62cdbfd01ee1b4001932821a',
310
+ };
311
+
312
+ const response = pricingService.item.getInvalidRequiredModifiers({
313
+ item,
314
+ });
315
+
316
+ expect(response.length).toBe(1);
317
+ expect(response[0]).toMatchObject({
318
+ _id: '675354ee39a47228afd1f1a4',
319
+ name: 'Override modamount fixed 10',
320
+ });
321
+ });
@@ -6,8 +6,9 @@ module.exports = ({ modifierActions, actions }) =>
6
6
  item.modifiers.forEach(modifier => {
7
7
  if (
8
8
  modifierActions.isRequired(modifier) &&
9
- modifierActions.isGroup(modifier) &&
10
- !actions.hasModifier({ item, modifier, relatedItems })
9
+ ((modifierActions.isGroup(modifier) &&
10
+ !actions.hasModifier({ item, modifier, relatedItems })) ||
11
+ modifierActions.isEmptyOverride(modifier))
11
12
  ) {
12
13
  invalidModifiers.push(modifier);
13
14
  }
@@ -3,8 +3,10 @@ module.exports = ({ modifierActions }) =>
3
3
  if (!item || !Array.isArray(item.modifiers)) return [];
4
4
  return item.modifiers.filter(
5
5
  modifier =>
6
- modifierActions.isGroup(modifier) &&
7
- modifierActions.isRequired(modifier) &&
8
- modifierActions.enableAutoPopup(modifier)
6
+ (modifierActions.isRequired(modifier) ||
7
+ modifierActions.isDefault(modifier)) &&
8
+ ((modifierActions.isGroup(modifier) &&
9
+ modifierActions.enableAutoPopup(modifier)) ||
10
+ modifierActions.isOverride(modifier))
9
11
  );
10
12
  };
@@ -178,6 +178,7 @@ const isKeepRelatedItems = require('./isKeepRelatedItems');
178
178
  const isSplitDepartment = require('./isSplitDepartment');
179
179
  const isModifierValid = require('./isModifierValid');
180
180
  const markModifierAsNotValid = require('./markModifierAsNotValid');
181
+ const isEmptyOverride = require('./isEmptyOverride');
181
182
 
182
183
  const modifierActions = (deps = {}) => {
183
184
  const actions = {};
@@ -369,6 +370,7 @@ const modifierActions = (deps = {}) => {
369
370
  isSplitDepartment: isSplitDepartment(innerDeps),
370
371
  isModifierValid: isModifierValid(innerDeps),
371
372
  markModifierAsNotValid: markModifierAsNotValid(innerDeps),
373
+ isEmptyOverride: isEmptyOverride(innerDeps),
372
374
  });
373
375
 
374
376
  Object.keys(freezedActions).forEach(actionName => {
@@ -0,0 +1,14 @@
1
+ module.exports = ({ actions }) =>
2
+ function isEmptyOverride(modifier) {
3
+ if (!actions.isOverride(modifier) || actions.isNotesOverride(modifier))
4
+ return false;
5
+ const computeAmount = modifier.compute && modifier.compute.amount;
6
+ const { fixedValue } = modifier.properties.override;
7
+
8
+ console.log({ computeAmount, fixedValue });
9
+
10
+ const result =
11
+ typeof computeAmount !== 'number' && typeof fixedValue !== 'number';
12
+
13
+ return result;
14
+ };
@@ -218,10 +218,6 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
218
218
  let [nextOrder, nextItemIndex] = params;
219
219
  const [, , nextItem] = params;
220
220
 
221
- const overrideModifiers = modifiersToAdd.filter(modToAdd =>
222
- modifierActions.isOverride(modToAdd)
223
- );
224
-
225
221
  if (modifiersToAdd.length) {
226
222
  nextOrder = modifiersToAdd.reduce(
227
223
  (acc, modifier) =>
@@ -287,7 +283,6 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
287
283
  updatedOrder: nextOrder,
288
284
  itemIndex: nextItemIndex,
289
285
  item: nextItem,
290
- overrideModifiers,
291
286
  };
292
287
  };
293
288
  };
@@ -67,7 +67,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
67
67
  }
68
68
 
69
69
  const customer = actions.getCustomer(order);
70
- const contains =
70
+ let contains =
71
71
  !_.isEmpty(item.modifiers) &&
72
72
  modifierActions.contains(
73
73
  item.modifiers.filter(mod => !modifierActions.isGroupOfModifiers(mod)),
@@ -99,13 +99,21 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
99
99
  return order;
100
100
  }
101
101
 
102
+ const isOverride = modifierActions.isOverride(modifier);
103
+
102
104
  order = actions.removeItemModifier({
103
105
  order,
104
106
  modifier,
105
107
  itemIndex,
106
108
  originalItem,
109
+ forceRemove: isOverride,
107
110
  });
108
- return order;
111
+
112
+ if (!isOverride) {
113
+ return order;
114
+ }
115
+ contains = false;
116
+ item = actions.getSelectedItem({ order, itemIndex });
109
117
  }
110
118
 
111
119
  const modifiersToRemove = itemActions.getModifiersBySingleValueId({
@@ -17,14 +17,16 @@ module.exports = ({ actions, modifierActions, itemActions, _ }) => {
17
17
  modifier,
18
18
  itemIndex,
19
19
  originalItem,
20
+ forceRemove,
20
21
  }) {
21
22
  const order = _.cloneDeep(orderProp);
22
23
 
23
24
  if (
24
- !order ||
25
- itemIndex < 0 ||
26
- !modifier ||
27
- modifierActions.isRequired(modifier)
25
+ !forceRemove &&
26
+ (!order ||
27
+ itemIndex < 0 ||
28
+ !modifier ||
29
+ modifierActions.isRequired(modifier))
28
30
  )
29
31
  return order;
30
32
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkpos/pricing",
3
- "version": "1.0.119",
3
+ "version": "1.0.121",
4
4
  "description": "Pricing calculator",
5
5
  "author": "Dark POS",
6
6
  "license": "ISC",
@@ -55,5 +55,5 @@
55
55
  "supertest": "^6.2.3",
56
56
  "supervisor": "^0.12.0"
57
57
  },
58
- "gitHead": "0d7daa7d6a45a479f443acde46d0244040a96b66"
58
+ "gitHead": "01eaaf2b2c151777c248a5368665265c52f31e8b"
59
59
  }