@darkpos/pricing 1.0.92 → 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 (45) 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/conditionsNotMet.test.js +124 -0
  5. package/__TEST__/order/getParentTotals.test.js +79 -0
  6. package/__TEST__/order/order-payment-modifier.test.js +335 -28
  7. package/lib/item/calculate.js +76 -19
  8. package/lib/item/getItemPrice.js +1 -12
  9. package/lib/item/getPriceWithoutModifiers.js +7 -5
  10. package/lib/item/hasPaymentMethodType.js +7 -1
  11. package/lib/item/index.js +6 -0
  12. package/lib/item/isOverwrittenPrice.js +4 -0
  13. package/lib/item/isOverwrittenQuantity.js +4 -0
  14. package/lib/item/overrideNotes.js +24 -0
  15. package/lib/item/removeModifier.js +1 -22
  16. package/lib/item/removeModifiers.js +1 -2
  17. package/lib/modifier/areConditionsMet.js +4 -1
  18. package/lib/modifier/calculate.js +20 -2
  19. package/lib/modifier/calculatePaymentModifier.js +2 -0
  20. package/lib/modifier/createDescription.js +1 -1
  21. package/lib/modifier/duplicate.js +3 -0
  22. package/lib/modifier/getOverrideAmount.js +7 -0
  23. package/lib/modifier/getOverrideNote.js +5 -0
  24. package/lib/modifier/getServiceOverride.js +5 -0
  25. package/lib/modifier/hasPaymentMethodType.js +21 -6
  26. package/lib/modifier/index.js +20 -12
  27. package/lib/modifier/{isManual.js → isManualOverride.js} +1 -1
  28. package/lib/modifier/{isMultiplier.js → isMultiplierOverride.js} +1 -1
  29. package/lib/modifier/isNotesOverride.js +7 -0
  30. package/lib/modifier/isOverrideSubtotal.js +9 -0
  31. package/lib/modifier/isPaymentModifier.js +2 -1
  32. package/lib/modifier/isPercentage.js +1 -1
  33. package/lib/modifier/isPrepayModifier.js +11 -0
  34. package/lib/modifier/{isService.js → isServiceOverride.js} +1 -1
  35. package/lib/modifier/isTotalOverride.js +7 -0
  36. package/lib/modifier/sort.js +16 -27
  37. package/lib/order/addItem.js +10 -12
  38. package/lib/order/addItemModifier.js +15 -62
  39. package/lib/order/getTotals.js +21 -22
  40. package/lib/order/removeItemModifier.js +2 -27
  41. package/lib/order/splitItems.js +2 -1
  42. package/package.json +5 -2
  43. package/lib/modifier/createAmountOverrideModifier.js +0 -18
  44. package/lib/modifier/getService.js +0 -5
  45. package/lib/modifier/mutateModifier.js +0 -23
@@ -9,6 +9,7 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
9
9
  typeof opts.amountToPay === 'number' ? opts.amountToPay : 0;
10
10
  const paymentMethod = opts.paymentMethod || null;
11
11
  const paymentType = opts.paymentType || null;
12
+ const isPrepay = opts.isPrepay || false;
12
13
  const startRequestDate = opts.startRequestDate || null;
13
14
  const endRequestDate = opts.endRequestDate || null;
14
15
  const lockPaymentModifiers = !!opts.lockPaymentModifiers;
@@ -27,8 +28,18 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
27
28
  _actual: 0,
28
29
  };
29
30
 
31
+ if (actions.isOverwrittenPrice(item)) {
32
+ item.price = item.properties.overwrittenPrice;
33
+ item.properties.overwrittenPrice = undefined;
34
+ }
35
+
36
+ if (actions.isOverwrittenQuantity(item)) {
37
+ item.quantity = item.properties.overwrittenQuantity;
38
+ item.properties.overwrittenQuantity = undefined;
39
+ }
40
+
30
41
  const price = parseFloat(actions.getPriceWithoutModifiers({ item }));
31
- const quantity = parseInt(item.quantity, 10);
42
+ let quantity = parseInt(item.quantity, 10);
32
43
  subTotals._simple = math.mul(price, quantity);
33
44
 
34
45
  const modifiers = [];
@@ -50,15 +61,11 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
50
61
  })
51
62
  );
52
63
 
53
- const amountOverride = validatedModifiers.find(each =>
54
- modifierActions.isAmountOverride(each)
55
- );
56
-
57
64
  const modifiersToCompute = validatedModifiers.filter(
58
65
  each =>
59
- !modifierActions.isOverride(each) &&
60
- each.compute &&
61
- each.compute.type &&
66
+ ((each.compute && each.compute.type) ||
67
+ (modifierActions.isOverride(each) &&
68
+ !modifierActions.isNotesOverride(each))) &&
62
69
  modifierActions.isValid(each)
63
70
  );
64
71
 
@@ -70,6 +77,7 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
70
77
  paymentModifier: modifier,
71
78
  paymentMethod,
72
79
  paymentType,
80
+ isPrepay,
73
81
  })
74
82
  )
75
83
  .filter(paymentModifier => {
@@ -84,15 +92,14 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
84
92
  );
85
93
  });
86
94
 
87
- if (amountOverride) modifiersToCompute.push(amountOverride);
88
-
89
95
  const modifiersToNotCompute = validatedModifiers
90
96
  .filter(
91
97
  each =>
92
98
  modifierActions.isPaymentModifier(each) ||
93
99
  !modifiersToCompute.find(
94
100
  ceach => ceach.modifierId === each.modifierId
95
- )
101
+ ) ||
102
+ modifierActions.isNotesOverride(each)
96
103
  )
97
104
  .map(each =>
98
105
  modifierActions.calculate(each, {
@@ -106,6 +113,18 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
106
113
  let computedPrice = price;
107
114
  let total = math.mul(computedPrice, quantity);
108
115
 
116
+ validatedModifiers.forEach(mod => {
117
+ if (
118
+ modifierActions.isNotesOverride(mod) &&
119
+ modifierActions.isValid(mod)
120
+ ) {
121
+ item.notes = actions.overrideNotes({
122
+ item,
123
+ message: modifierActions.getOverrideNote(mod),
124
+ }).notes;
125
+ }
126
+ });
127
+
109
128
  if (modifiersToCompute.length || paymentModifiersToCompute.length) {
110
129
  // sort modifiers based on sort
111
130
  const sortedModifiers = modifierActions.sort([
@@ -116,6 +135,8 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
116
135
  let prvPrice = 0;
117
136
  let prvSort;
118
137
 
138
+ let accumulatedAmount = 0;
139
+
119
140
  for (const modifier of sortedModifiers) {
120
141
  const included = modifierActions.isIncluded(modifier);
121
142
  const direct = modifierActions.isDirect(modifier);
@@ -132,7 +153,10 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
132
153
  if (modifierActions.isPaymentModifier(modifier)) {
133
154
  _modifier = modifierActions.calculatePaymentModifier({
134
155
  paymentModifier: modifier,
135
- amountToPay,
156
+ amountToPay:
157
+ accumulatedAmount < 0 && amountToPay > 0
158
+ ? math.add(amountToPay, math.abs(accumulatedAmount))
159
+ : amountToPay,
136
160
  itemBalance:
137
161
  typeof item.totalPaid === 'number' && item.totalPaid > 0
138
162
  ? actions.getItemsBalance({ items: [item] })
@@ -140,9 +164,36 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
140
164
  paymentMethod,
141
165
  paymentType,
142
166
  paymentId,
167
+ isPrepay,
143
168
  });
144
169
  }
145
170
 
171
+ if (modifierActions.isPriceOverride(modifier)) {
172
+ let priceOverride = modifierActions.getOverrideAmount(modifier);
173
+
174
+ if (modifierActions.isMultiplierOverride(modifier)) {
175
+ priceOverride = math.mul(priceOverride, price);
176
+ }
177
+
178
+ subTotals._simple = math.mul(priceOverride, quantity);
179
+ item.properties = {
180
+ ...(item.properties ? item.properties : {}),
181
+ overwrittenPrice: item.price,
182
+ };
183
+ item.price = priceOverride;
184
+ }
185
+
186
+ if (modifierActions.isQuantityOverride(modifier)) {
187
+ const newQuantity = modifierActions.getOverrideAmount(modifier);
188
+ item.properties = {
189
+ ...(item.properties ? item.properties : {}),
190
+ overwrittenQuantity: item.quantity,
191
+ };
192
+ subTotals._simple = math.mul(price, newQuantity);
193
+ item.quantity = parseInt(newQuantity, 10);
194
+ quantity = parseInt(newQuantity, 10);
195
+ }
196
+
146
197
  _modifier = modifierActions.calculate(
147
198
  { ..._modifier },
148
199
  {
@@ -168,15 +219,21 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
168
219
  computedAmount = _computed.amount;
169
220
 
170
221
  prvPrice = math.add(prvPrice, math.div(_computed.amount, quantity));
222
+ accumulatedAmount = math.add(accumulatedAmount, _computed.amount);
171
223
  prvSort = sort;
172
224
 
173
- ({ subTotals, total } = actions.getTotals({
174
- subTotals,
175
- amountToAdd: computedAmount,
176
- included,
177
- type,
178
- direct,
179
- }));
225
+ if (
226
+ !modifierActions.isOverride(modifier) ||
227
+ modifierActions.isOverrideSubtotal(modifier)
228
+ ) {
229
+ ({ subTotals, total } = actions.getTotals({
230
+ subTotals,
231
+ amountToAdd: computedAmount,
232
+ included,
233
+ type,
234
+ direct,
235
+ }));
236
+ }
180
237
  }
181
238
  }
182
239
 
@@ -1,6 +1,4 @@
1
- module.exports = ({ modifierActions, utils }) => {
2
- const { math } = utils;
3
-
1
+ module.exports = ({ modifierActions }) => {
4
2
  const getCustomerTags = (customer = {}) =>
5
3
  ((customer && customer.tags) || []).filter(Boolean);
6
4
 
@@ -38,15 +36,6 @@ module.exports = ({ modifierActions, utils }) => {
38
36
 
39
37
  const { value } = maxPriceLevel;
40
38
 
41
- const overridPriceModifier = modifiers.find(each =>
42
- modifierActions.isPriceOverride(each)
43
- );
44
- if (overridPriceModifier && overridPriceModifier.compute) {
45
- if (modifierActions.isMultiplier(overridPriceModifier))
46
- return math.mul(value, overridPriceModifier.compute.amount);
47
- return overridPriceModifier.compute.amount;
48
- }
49
-
50
39
  return value;
51
40
  };
52
41
  };
@@ -1,21 +1,23 @@
1
- module.exports = ({ modifierActions }) =>
1
+ module.exports = ({ actions, modifierActions }) =>
2
2
  /* eslint-disable no-restricted-syntax */
3
3
  function getPriceWithoutModifiers({ item }) {
4
+ const basePrice = actions.getBasePrice(item);
5
+
4
6
  if (
5
7
  !item ||
6
8
  !Array.isArray(item.modifiers) ||
7
- typeof item.price !== 'number'
9
+ typeof basePrice !== 'number'
8
10
  )
9
- return item.price;
11
+ return basePrice;
10
12
 
11
13
  const calculatedModifiers = item.modifiers.filter(modifier =>
12
14
  modifierActions.isExtractCalculatedValue({ modifier })
13
15
  );
14
16
 
15
- if (calculatedModifiers.length === 0) return item.price;
17
+ if (calculatedModifiers.length === 0) return basePrice;
16
18
 
17
19
  const sortedModifiers = modifierActions.sort([...calculatedModifiers]);
18
- let computedPrice = item.price;
20
+ let computedPrice = basePrice;
19
21
 
20
22
  for (const modifier of sortedModifiers) {
21
23
  computedPrice = modifierActions.getPriceWithoutModifier({
@@ -1,5 +1,10 @@
1
1
  module.exports = ({ modifierActions }) =>
2
- function hasPaymentMethodType({ item, paymentMethod, paymentType }) {
2
+ function hasPaymentMethodType({
3
+ item,
4
+ paymentMethod,
5
+ paymentType,
6
+ isPrepay,
7
+ }) {
3
8
  if (
4
9
  !item ||
5
10
  !Array.isArray(item.modifiers) ||
@@ -12,6 +17,7 @@ module.exports = ({ modifierActions }) =>
12
17
  paymentModifier: modifier,
13
18
  paymentMethod,
14
19
  paymentType,
20
+ isPrepay,
15
21
  })
16
22
  );
17
23
  };
package/lib/item/index.js CHANGED
@@ -63,6 +63,9 @@ const isSomeTagsMatch = require('./isSomeTagsMatch');
63
63
  const getTotals = require('./getTotals');
64
64
  const patchItem = require('./patchItem');
65
65
  const getUpdatedStatus = require('./getUpdatedStatus');
66
+ const isOverwrittenPrice = require('./isOverwrittenPrice');
67
+ const isOverwrittenQuantity = require('./isOverwrittenQuantity');
68
+ const overrideNotes = require('./overrideNotes');
66
69
 
67
70
  const itemActions = (deps = {}) => {
68
71
  const actions = {};
@@ -139,6 +142,9 @@ const itemActions = (deps = {}) => {
139
142
  getTotals: getTotals(innerDeps),
140
143
  patchItem: patchItem(innerDeps),
141
144
  getUpdatedStatus: getUpdatedStatus(innerDeps),
145
+ isOverwrittenPrice: isOverwrittenPrice(innerDeps),
146
+ isOverwrittenQuantity: isOverwrittenQuantity(innerDeps),
147
+ overrideNotes: overrideNotes(innerDeps),
142
148
  });
143
149
 
144
150
  Object.keys(freezedActions).forEach(actionName => {
@@ -0,0 +1,4 @@
1
+ module.exports = () =>
2
+ function isOverwrittenPrice(item) {
3
+ return item && item.properties && item.properties.overwrittenPrice;
4
+ };
@@ -0,0 +1,4 @@
1
+ module.exports = () =>
2
+ function isOverwrittenQuantity(item) {
3
+ return item && item.properties && item.properties.overwrittenQuantity;
4
+ };
@@ -0,0 +1,24 @@
1
+ module.exports = ({ settings, _, moment, utils }) => {
2
+ const timezone = _.get(settings, 'localization.timezone', 'America/New_York');
3
+ const { helpers } = utils;
4
+
5
+ return function overrideNotes({ item, message }) {
6
+ if (!item) return undefined;
7
+
8
+ return {
9
+ ...item,
10
+ notes: [
11
+ {
12
+ _id: helpers.getObjectID(),
13
+ attributes: [],
14
+ date: moment().tz(timezone),
15
+ user: null,
16
+ message,
17
+ type: '',
18
+ name: 'override',
19
+ url: '',
20
+ },
21
+ ],
22
+ };
23
+ };
24
+ };
@@ -3,13 +3,7 @@ module.exports = ({ modifierActions, _, actions }) => {
3
3
  !!modifierActions.findById(itemModifiers, modifier._id) &&
4
4
  (!modifier.required || !modifier._parentId);
5
5
 
6
- return function removeModifier({
7
- item,
8
- modifier,
9
- customer,
10
- originalItem,
11
- order,
12
- }) {
6
+ return function removeModifier({ item, modifier, order }) {
13
7
  const nextItem = _.cloneDeep(item);
14
8
  const itemModifiers = item.modifiers || [];
15
9
 
@@ -52,21 +46,6 @@ module.exports = ({ modifierActions, _, actions }) => {
52
46
  )
53
47
  );
54
48
 
55
- const hasOverride = nextModifiers.find(each =>
56
- modifierActions.isOverride(each)
57
- );
58
-
59
- if (hasOverride) {
60
- if (modifierActions.isQuantityOverride(modifier)) nextItem.quantity = 1;
61
-
62
- if (modifierActions.isPriceOverride(modifier))
63
- nextItem.price = actions.getItemPrice({
64
- item: originalItem,
65
- itemPriceLevels: originalItem ? originalItem.priceLevels : undefined,
66
- customer,
67
- });
68
- }
69
-
70
49
  return {
71
50
  ...nextItem,
72
51
  modifiers: nextModifiers,
@@ -1,11 +1,10 @@
1
1
  module.exports = ({ actions }) =>
2
- function removeModifiers({ item, modifiers, originalItem, customer, order }) {
2
+ function removeModifiers({ item, modifiers, customer, order }) {
3
3
  const newItem = modifiers.reduce(
4
4
  (nextItem, modifier) =>
5
5
  actions.removeModifier({
6
6
  item: nextItem,
7
7
  modifier,
8
- originalItem,
9
8
  customer,
10
9
  order,
11
10
  }),
@@ -58,7 +58,7 @@ module.exports = ({ actions, utils }) => {
58
58
  }
59
59
  }
60
60
  return actions.validateItemNumber(
61
- itemSetIndex,
61
+ totalItemsLength,
62
62
  conditionValue,
63
63
  condition.operand
64
64
  );
@@ -92,6 +92,9 @@ module.exports = ({ actions, utils }) => {
92
92
  return false;
93
93
  case 'paymentTypes':
94
94
  return false;
95
+ case 'payment': {
96
+ return false;
97
+ }
95
98
  default:
96
99
  return false;
97
100
  }
@@ -13,6 +13,15 @@ module.exports = ({ _, constants, utils, actions }) => {
13
13
  ) {
14
14
  const modifier = _modifier;
15
15
  const compute = getComputeModField(modifier);
16
+
17
+ if (actions.isOverride(_modifier)) {
18
+ if (actions.isAmountOverride(_modifier)) {
19
+ compute.type = 'fixed';
20
+ compute.action = 'add';
21
+ }
22
+ compute.amount = actions.getOverrideAmount(_modifier);
23
+ }
24
+
16
25
  const { type, amount: computeAmount = 0 } = compute;
17
26
  const _computed = {
18
27
  amount: 0,
@@ -55,7 +64,8 @@ module.exports = ({ _, constants, utils, actions }) => {
55
64
  if (
56
65
  (!actions.isOverride(_modifier) &&
57
66
  actions.isQuantityMultiplier(_modifier)) ||
58
- (actions.isAmountOverride(_modifier) && actions.isMultiplier(_modifier))
67
+ (actions.isAmountOverride(_modifier) &&
68
+ actions.isMultiplierOverride(_modifier))
59
69
  ) {
60
70
  _computed.amount = math.mul(_computed.amount, options.quantity);
61
71
  }
@@ -68,6 +78,10 @@ module.exports = ({ _, constants, utils, actions }) => {
68
78
  ) {
69
79
  _computed.amount = math.mul(options.maxDiscountAmount, -1);
70
80
  }
81
+
82
+ if (actions.isTotalOverride(_modifier)) {
83
+ _computed.amount = math.sub(compute.amount, options.maxDiscountAmount);
84
+ }
71
85
  }
72
86
 
73
87
  _computed.description = actions.createDescription({
@@ -79,6 +93,10 @@ module.exports = ({ _, constants, utils, actions }) => {
79
93
  price: options.basePrice || options.price,
80
94
  });
81
95
 
82
- return { ..._.cloneDeep(modifier), _computed };
96
+ return {
97
+ ..._.cloneDeep(modifier),
98
+ compute: compute.amount ? compute : null,
99
+ _computed,
100
+ };
83
101
  };
84
102
  };
@@ -8,12 +8,14 @@ module.exports = ({ actions, utils }) => {
8
8
  paymentMethod,
9
9
  paymentType,
10
10
  paymentId,
11
+ isPrepay,
11
12
  }) {
12
13
  if (
13
14
  !actions.hasPaymentMethodType({
14
15
  paymentModifier: paymentModifierParam,
15
16
  paymentMethod,
16
17
  paymentType,
18
+ isPrepay,
17
19
  })
18
20
  )
19
21
  return undefined;
@@ -10,7 +10,7 @@ module.exports = ({ actions, localization, _ }) =>
10
10
 
11
11
  const localBasePrice = localization.formatAmount(price || 0);
12
12
 
13
- const isMultiplier = actions.isMultiplier(modifier);
13
+ const isMultiplier = actions.isMultiplierOverride(modifier);
14
14
 
15
15
  description = `${name}${localAmount ? ` (${localAmount})` : ''}`;
16
16
 
@@ -7,6 +7,9 @@ module.exports = ({ utils }) => {
7
7
  ...modifier,
8
8
  modifierId: modifier.modifierId || modifier._id,
9
9
  _id: helpers.getObjectID(),
10
+ compute: {
11
+ ...(modifier.compute || {}),
12
+ },
10
13
  };
11
14
  };
12
15
  };
@@ -0,0 +1,7 @@
1
+ module.exports = ({ actions }) =>
2
+ function getOverrideAmount(modifier) {
3
+ if (!actions.isOverride(modifier)) return 0;
4
+ const computeAmount = modifier.compute && modifier.compute.amount;
5
+ const { fixedValue } = modifier.properties.override;
6
+ return computeAmount || (typeof fixedValue === 'number' && fixedValue) || 0;
7
+ };
@@ -0,0 +1,5 @@
1
+ module.exports = ({ actions }) =>
2
+ function getOverrideNote(modifier) {
3
+ if (!actions.isOverride(modifier)) return '';
4
+ return modifier.properties.override.fixedValue;
5
+ };
@@ -0,0 +1,5 @@
1
+ module.exports = ({ actions }) =>
2
+ function getServiceOverride(modifier) {
3
+ if (!actions.isServiceOverride(modifier)) return null;
4
+ return modifier.properties.override.service;
5
+ };
@@ -3,12 +3,27 @@ module.exports = ({ actions }) =>
3
3
  paymentModifier,
4
4
  paymentMethod,
5
5
  paymentType,
6
+ isPrepay,
6
7
  }) {
7
- return (
8
- actions.isPaymentModifier(paymentModifier) &&
9
- paymentModifier.conditions.rules.some(
10
- rule =>
11
- rule.value.includes(paymentMethod) || rule.value.includes(paymentType)
8
+ if (!actions.isPaymentModifier(paymentModifier)) return false;
9
+
10
+ if (actions.isPrepayModifier(paymentModifier) && !isPrepay) return false;
11
+
12
+ if (
13
+ actions.isPaymentTypeModifier(paymentModifier) &&
14
+ !paymentModifier.conditions.rules.some(rule =>
15
+ rule.value.includes(paymentType)
12
16
  )
13
- );
17
+ )
18
+ return false;
19
+
20
+ if (
21
+ actions.isPaymentMethodModifier(paymentModifier) &&
22
+ !paymentModifier.conditions.rules.some(rule =>
23
+ rule.value.includes(paymentMethod)
24
+ )
25
+ )
26
+ return false;
27
+
28
+ return true;
14
29
  };
@@ -3,7 +3,6 @@ const calculate = require('./calculate');
3
3
  const contains = require('./contains');
4
4
  const convertMenuModifiers = require('./convertMenuModifiers');
5
5
  const create = require('./create');
6
- const createAmountOverrideModifier = require('./createAmountOverrideModifier');
7
6
  const createCreditModifier = require('./createCreditModifier');
8
7
  const createDiscountModifier = require('./createDiscountModifier');
9
8
  const createFeeModifier = require('./createFeeModifier');
@@ -48,7 +47,7 @@ const getRecommendedModifiers = require('./getRecommendedModifiers');
48
47
  const getRequiredModifiers = require('./getRequiredModifiers');
49
48
  const getSubscriptionItem = require('./getSubscriptionItem');
50
49
  const getSubscriptionModifiers = require('./getSubscriptionModifiers');
51
- const getService = require('./getService');
50
+ const getServiceOverride = require('./getServiceOverride');
52
51
  const getSplittedModifiers = require('./getSplittedModifiers');
53
52
  const getSuggestion = require('./getSuggestion');
54
53
  const getUnhiddenModifiers = require('./getUnhiddenModifiers');
@@ -76,16 +75,16 @@ const isRemoveModifier = require('./isRemoveModifier');
76
75
  const isGroupOfModifiers = require('./isGroupOfModifiers');
77
76
  const areConditionsMet = require('./areConditionsMet');
78
77
  const isRequiredAndOverride = require('./isRequiredAndOverride');
79
- const isManual = require('./isManual');
78
+ const isManualOverride = require('./isManualOverride');
80
79
  const isPriceOverride = require('./isPriceOverride');
81
80
  const isQuantityOverride = require('./isQuantityOverride');
82
- const isService = require('./isService');
81
+ const isServiceOverride = require('./isServiceOverride');
83
82
  const isSingleValue = require('./isSingleValue');
84
83
  const isGroupOfItems = require('./isGroupOfItems');
85
84
  const isOverride = require('./isOverride');
86
85
  const isDepartment = require('./isDepartment');
87
86
  const isRequired = require('./isRequired');
88
- const isMultiplier = require('./isMultiplier');
87
+ const isMultiplierOverride = require('./isMultiplierOverride');
89
88
  const isAvailablePromotion = require('./isAvailablePromotion');
90
89
  const isAvailableSubscription = require('./isAvailableSubscription');
91
90
  const isPromotion = require('./isPromotion');
@@ -111,7 +110,6 @@ const isFixed = require('./isFixed');
111
110
  const isFixedAdd = require('./isFixedAdd');
112
111
  const isFee = require('./isFee');
113
112
  const isAdd = require('./isAdd');
114
- const mutateModifier = require('./mutateModifier');
115
113
  const isFixedDiscount = require('./isFixedDiscount');
116
114
  const removeLocked = require('./removeLocked');
117
115
  const hasItems = require('./hasItems');
@@ -163,6 +161,12 @@ const isOrderUseValid = require('./isOrderUseValid');
163
161
  const getMaxItemQuantity = require('./getMaxItemQuantity');
164
162
  const createDescription = require('./createDescription');
165
163
  const patchModifier = require('./patchModifier');
164
+ const isPrepayModifier = require('./isPrepayModifier');
165
+ const isTotalOverride = require('./isTotalOverride');
166
+ const getOverrideAmount = require('./getOverrideAmount');
167
+ const getOverrideNote = require('./getOverrideNote');
168
+ const isNotesOverride = require('./isNotesOverride');
169
+ const isOverrideSubtotal = require('./isOverrideSubtotal');
166
170
 
167
171
  const modifierActions = (deps = {}) => {
168
172
  const actions = {};
@@ -177,7 +181,6 @@ const modifierActions = (deps = {}) => {
177
181
  contains: contains(innerDeps),
178
182
  convertMenuModifiers: convertMenuModifiers(innerDeps),
179
183
  create: create(innerDeps),
180
- createAmountOverrideModifier: createAmountOverrideModifier(innerDeps),
181
184
  createCreditModifier: createCreditModifier(innerDeps),
182
185
  createDiscountModifier: createDiscountModifier(innerDeps),
183
186
  createFeeModifier: createFeeModifier(innerDeps),
@@ -223,7 +226,7 @@ const modifierActions = (deps = {}) => {
223
226
  getRequiredModifiers: getRequiredModifiers(innerDeps),
224
227
  getSubscriptionItem: getSubscriptionItem(innerDeps),
225
228
  getSubscriptionModifiers: getSubscriptionModifiers(innerDeps),
226
- getService: getService(innerDeps),
229
+ getServiceOverride: getServiceOverride(innerDeps),
227
230
  getSplittedModifiers: getSplittedModifiers(innerDeps),
228
231
  getSuggestion: getSuggestion(innerDeps),
229
232
  getUnhiddenModifiers: getUnhiddenModifiers(innerDeps),
@@ -248,8 +251,8 @@ const modifierActions = (deps = {}) => {
248
251
  isRemoveModifier: isRemoveModifier(innerDeps),
249
252
  isGroupOfModifiers: isGroupOfModifiers(innerDeps),
250
253
  isRequiredAndOverride: isRequiredAndOverride(innerDeps),
251
- isManual: isManual(innerDeps),
252
- isService: isService(innerDeps),
254
+ isManualOverride: isManualOverride(innerDeps),
255
+ isServiceOverride: isServiceOverride(innerDeps),
253
256
  isQuantityOverride: isQuantityOverride(innerDeps),
254
257
  isPriceOverride: isPriceOverride(innerDeps),
255
258
  isSingleValue: isSingleValue(innerDeps),
@@ -257,7 +260,7 @@ const modifierActions = (deps = {}) => {
257
260
  isOverride: isOverride(innerDeps),
258
261
  isDepartment: isDepartment(innerDeps),
259
262
  isRequired: isRequired(innerDeps),
260
- isMultiplier: isMultiplier(innerDeps),
263
+ isMultiplierOverride: isMultiplierOverride(innerDeps),
261
264
  isAvailablePromotion: isAvailablePromotion(innerDeps),
262
265
  isAvailableSubscription: isAvailableSubscription(innerDeps),
263
266
  isPromotion: isPromotion(innerDeps),
@@ -286,7 +289,6 @@ const modifierActions = (deps = {}) => {
286
289
  isFixedAdd: isFixedAdd(innerDeps),
287
290
  isFee: isFee(innerDeps),
288
291
  isAdd: isAdd(innerDeps),
289
- mutateModifier: mutateModifier(innerDeps),
290
292
  removeGroupData: removeGroupData(innerDeps),
291
293
  isRelatedModifierById: isRelatedModifierById(innerDeps),
292
294
  getGroupedModifiers: getGroupedModifiers(innerDeps),
@@ -339,6 +341,12 @@ const modifierActions = (deps = {}) => {
339
341
  getCreditModifiersTotalEntities: getCreditModifiersTotalEntities(innerDeps),
340
342
  createDescription: createDescription(innerDeps),
341
343
  patchModifier: patchModifier(innerDeps),
344
+ isPrepayModifier: isPrepayModifier(innerDeps),
345
+ isTotalOverride: isTotalOverride(innerDeps),
346
+ getOverrideAmount: getOverrideAmount(innerDeps),
347
+ getOverrideNote: getOverrideNote(innerDeps),
348
+ isNotesOverride: isNotesOverride(innerDeps),
349
+ isOverrideSubtotal: isOverrideSubtotal(innerDeps),
342
350
  });
343
351
 
344
352
  Object.keys(freezedActions).forEach(actionName => {
@@ -1,5 +1,5 @@
1
1
  module.exports = () =>
2
- function isManual(modifier) {
2
+ function isManualOverride(modifier) {
3
3
  return !!(
4
4
  modifier &&
5
5
  modifier.properties &&
@@ -1,5 +1,5 @@
1
1
  module.exports = () =>
2
- function isMultiplier(modifier) {
2
+ function isMultiplierOverride(modifier) {
3
3
  if (!modifier) return false;
4
4
  const _modifier = modifier.modifier || modifier;
5
5
  return !!(
@@ -0,0 +1,7 @@
1
+ module.exports = ({ actions }) =>
2
+ function isNotesOverride(modifier) {
3
+ return (
4
+ actions.isOverride(modifier) &&
5
+ modifier.properties.override.field === 'notes'
6
+ );
7
+ };
@@ -0,0 +1,9 @@
1
+ module.exports = ({ actions }) =>
2
+ function isOverrideSubtotal(modifier) {
3
+ return (
4
+ actions.isOverride(modifier) &&
5
+ (actions.isAmountOverride(modifier) ||
6
+ actions.isOptionsOverride(modifier) ||
7
+ actions.isTotalOverride(modifier))
8
+ );
9
+ };