@darkpos/pricing 1.0.99 → 1.0.100

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.
@@ -0,0 +1,71 @@
1
+ module.exports = ({ modifierActions }) =>
2
+ function validateModifiers({
3
+ item,
4
+ itemModifiers,
5
+ startRequestDate,
6
+ endRequestDate,
7
+ allItems,
8
+ paymentMethod,
9
+ paymentType,
10
+ isPrepay,
11
+ }) {
12
+ const validatedModifiers = [];
13
+ const firstValidatedModifiers = itemModifiers.map(each =>
14
+ modifierActions.validate(each, {
15
+ item,
16
+ startRequestDate,
17
+ endRequestDate,
18
+ allItems,
19
+ paymentMethod,
20
+ paymentType,
21
+ isPrepay,
22
+ })
23
+ );
24
+
25
+ firstValidatedModifiers.forEach(validModifier => {
26
+ const parentAddModifier = firstValidatedModifiers.find(
27
+ validMod =>
28
+ validMod.addModifiers &&
29
+ validMod.addModifiers.some(
30
+ addMod => addMod._id === validModifier.modifierId
31
+ )
32
+ );
33
+
34
+ const parentDelModifier = firstValidatedModifiers.find(
35
+ validMod =>
36
+ validMod.delModifiers &&
37
+ validMod.delModifiers.some(
38
+ delMod => delMod._id === validModifier.modifierId
39
+ )
40
+ );
41
+
42
+ let nextValidModifier = { ...validModifier };
43
+ const shouldInvalidateAddModifier =
44
+ parentAddModifier &&
45
+ !parentAddModifier.conditions.valid &&
46
+ nextValidModifier.conditions.valid;
47
+
48
+ const shouldInvalidateDelModifier =
49
+ parentDelModifier &&
50
+ parentDelModifier.conditions.valid &&
51
+ nextValidModifier.conditions.valid;
52
+
53
+ if (shouldInvalidateAddModifier || shouldInvalidateDelModifier) {
54
+ nextValidModifier = {
55
+ ...nextValidModifier,
56
+ conditions: {
57
+ ...validModifier.conditions,
58
+ valid: false,
59
+ },
60
+ };
61
+ }
62
+
63
+ if (
64
+ !validatedModifiers.some(validMod => validMod._id === validModifier._id)
65
+ ) {
66
+ validatedModifiers.push(nextValidModifier);
67
+ }
68
+ });
69
+
70
+ return validatedModifiers;
71
+ };
@@ -5,7 +5,7 @@ module.exports = ({ actions, utils }) => {
5
5
  return function getDepartmentModifiers(modifiers) {
6
6
  if (!modifiers || !Array.isArray(modifiers)) return [];
7
7
  return modifiers
8
- .filter(each => actions.isDepartment(each))
8
+ .filter(each => actions.isValid(each) && actions.isDepartment(each))
9
9
  .sort((mod1, mod2) => math.sub(getOrder(mod1), getOrder(mod2)));
10
10
  };
11
11
  };
@@ -25,6 +25,6 @@ module.exports = ({ actions }) => {
25
25
  if (inheritedModifiers.length) modifiers.push(...inheritedModifiers);
26
26
  }
27
27
 
28
- return actions.purifyModifiers(modifiers);
28
+ return modifiers;
29
29
  };
30
30
  };
@@ -102,7 +102,6 @@ const isPaymentTypeModifier = require('./isPaymentTypeModifier');
102
102
  const isPreferences = require('./isPreferences');
103
103
  const isCompact = require('./isCompact');
104
104
  const isCredit = require('./isCredit');
105
- const purifyModifiers = require('./purifyModifiers');
106
105
  const sort = require('./sort');
107
106
  const isPaymentModifier = require('./isPaymentModifier');
108
107
  const isSubtract = require('./isSubtract');
@@ -278,7 +277,6 @@ const modifierActions = (deps = {}) => {
278
277
  isCompact: isCompact(innerDeps),
279
278
  isCredit: isCredit(innerDeps),
280
279
  isIncluded: isIncluded(innerDeps),
281
- purifyModifiers: purifyModifiers(innerDeps),
282
280
  sort: sort(innerDeps),
283
281
  isPaymentModifier: isPaymentModifier(innerDeps),
284
282
  isSubtract: isSubtract(innerDeps),
@@ -1,88 +1,12 @@
1
1
  module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
2
2
  const { math } = utils;
3
3
 
4
- const filterByRemoveModifiers = (modifiers, modifier) => {
5
- const { delModifiers = [] } = modifier;
6
-
7
- return modifiers.filter(
8
- each => !modifierActions.findById(delModifiers, each.modifierId)
9
- );
10
- };
11
-
12
- const areConditionsMet = (item, conditions) => {
13
- const conditionsBag = [];
14
- if (!conditions || !conditions.rules) return conditionsBag;
15
- // Find conditions with itemPieces as key
16
- const itemPiecesConditions = conditions.rules.filter(
17
- each => each.key === 'itemPieces'
18
- );
19
- if (itemPiecesConditions.length > 0) {
20
- itemPiecesConditions.forEach(each => {
21
- if (
22
- !modifierActions.validateNumberCondition(
23
- item.pieces,
24
- each.value,
25
- each.operand
26
- )
27
- ) {
28
- conditionsBag.push({
29
- name: `${each.operand}.itemPieces`,
30
- value: each.value,
31
- current: item.pieces,
32
- });
33
- }
34
- });
35
- }
36
- const itemQtyConditions = conditions.rules.filter(
37
- each => each.key === 'itemQuantity'
38
- );
39
- if (itemQtyConditions.length > 0) {
40
- itemQtyConditions.forEach(each => {
41
- if (
42
- !modifierActions.validateNumberCondition(
43
- item.quantity,
44
- each.value,
45
- each.operand
46
- )
47
- ) {
48
- conditionsBag.push({
49
- name: `${each.operand}.itemQuantity`,
50
- value: each.value,
51
- current: item.quantity,
52
- });
53
- }
54
- });
55
- }
56
- const requiredModifiersConditions = conditions.rules.filter(
57
- each => each.key === 'modifiers'
58
- );
59
- if (requiredModifiersConditions.length > 0) {
60
- requiredModifiersConditions.forEach(each => {
61
- if (
62
- !modifierActions.validateRequiredModifiers(
63
- item.modifiers,
64
- each.value,
65
- each.operand
66
- )
67
- ) {
68
- conditionsBag.push({
69
- name: `${each.operand}.modifiers`,
70
- value: each.value,
71
- current: item.modifiers,
72
- });
73
- }
74
- });
75
- }
76
- return conditionsBag;
77
- };
78
-
79
4
  const addModifier = ({
80
5
  order,
81
6
  modifier: _modifier,
82
7
  item: itemProp,
83
8
  customer,
84
9
  originalItem,
85
- onConditionsNotMet,
86
10
  onError,
87
11
  }) => {
88
12
  if (
@@ -99,20 +23,11 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
99
23
 
100
24
  const modifier = modifierActions.removeGroupRelations(_modifier); // to avoid no param reassign lint rule
101
25
  const item = { ...itemProp };
102
- const conditionsBag = areConditionsMet(item, modifier.conditions);
103
26
 
104
- if (conditionsBag.length > 0 && !modifierActions.isRequired(modifier)) {
105
- if (onConditionsNotMet) onConditionsNotMet(conditionsBag);
106
- return item;
107
- }
108
27
  const modifierToAdd = modifierActions.duplicate(modifier);
109
28
 
110
29
  item.modifiers.push(modifierToAdd);
111
30
 
112
- if (modifierActions.isRemoveModifier(modifier)) {
113
- item.modifiers = filterByRemoveModifiers(item.modifiers, modifier);
114
- }
115
-
116
31
  item.properties = {
117
32
  ...(item.properties || {}),
118
33
  };
@@ -131,7 +46,6 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
131
46
  modifier,
132
47
  itemIndex,
133
48
  originalItem,
134
- onConditionsNotMet,
135
49
  onError,
136
50
  }) {
137
51
  let order = _.cloneDeep(orderProp);
@@ -225,7 +139,6 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
225
139
  modifier,
226
140
  originalItem,
227
141
  customer,
228
- onConditionsNotMet,
229
142
  onError,
230
143
  });
231
144
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkpos/pricing",
3
- "version": "1.0.99",
3
+ "version": "1.0.100",
4
4
  "description": "Pricing calculator",
5
5
  "author": "Dark POS",
6
6
  "license": "ISC",
@@ -54,5 +54,5 @@
54
54
  "supertest": "^6.2.3",
55
55
  "supervisor": "^0.12.0"
56
56
  },
57
- "gitHead": "4c83ad5f183f5b887c0ebd70e00e143282bf85a4"
57
+ "gitHead": "dbe4e7f639282d1eb04927708dac5195275fe5e4"
58
58
  }
@@ -1,15 +0,0 @@
1
- module.exports = ({ actions }) =>
2
- function purifyModifiers(modifiers) {
3
- if (!modifiers) return [];
4
- const removeIds = modifiers
5
- .filter(modifier => actions.isRemoveModifier(modifier))
6
- .reduce(
7
- (acc, modifier) => [
8
- ...acc,
9
- modifier.properties.delModifiers.map(each => each._id),
10
- ],
11
- []
12
- );
13
-
14
- return modifiers.filter(each => !removeIds.includes(each.modifierId));
15
- };