@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.
- package/__TEST__/item.test.js +46 -48
- package/__TEST__/modifier/addItemModifier.test.js +181 -60
- package/__TEST__/modifier/overrideModifiers.test.js +196 -0
- package/__TEST__/order/conditionsNotMet.test.js +124 -0
- package/__TEST__/order/getParentTotals.test.js +79 -0
- package/__TEST__/order/order-payment-modifier.test.js +335 -28
- package/lib/item/calculate.js +76 -19
- package/lib/item/getItemPrice.js +1 -12
- package/lib/item/getPriceWithoutModifiers.js +7 -5
- package/lib/item/hasPaymentMethodType.js +7 -1
- package/lib/item/index.js +6 -0
- package/lib/item/isOverwrittenPrice.js +4 -0
- package/lib/item/isOverwrittenQuantity.js +4 -0
- package/lib/item/overrideNotes.js +24 -0
- package/lib/item/removeModifier.js +1 -22
- package/lib/item/removeModifiers.js +1 -2
- package/lib/modifier/areConditionsMet.js +4 -1
- package/lib/modifier/calculate.js +20 -2
- package/lib/modifier/calculatePaymentModifier.js +2 -0
- package/lib/modifier/createDescription.js +1 -1
- package/lib/modifier/duplicate.js +3 -0
- package/lib/modifier/getOverrideAmount.js +7 -0
- package/lib/modifier/getOverrideNote.js +5 -0
- package/lib/modifier/getServiceOverride.js +5 -0
- package/lib/modifier/hasPaymentMethodType.js +21 -6
- package/lib/modifier/index.js +20 -12
- package/lib/modifier/{isManual.js → isManualOverride.js} +1 -1
- package/lib/modifier/{isMultiplier.js → isMultiplierOverride.js} +1 -1
- package/lib/modifier/isNotesOverride.js +7 -0
- package/lib/modifier/isOverrideSubtotal.js +9 -0
- package/lib/modifier/isPaymentModifier.js +2 -1
- package/lib/modifier/isPercentage.js +1 -1
- package/lib/modifier/isPrepayModifier.js +11 -0
- package/lib/modifier/{isService.js → isServiceOverride.js} +1 -1
- package/lib/modifier/isTotalOverride.js +7 -0
- package/lib/modifier/sort.js +16 -27
- package/lib/order/addItem.js +10 -12
- package/lib/order/addItemModifier.js +15 -62
- package/lib/order/getTotals.js +21 -22
- package/lib/order/removeItemModifier.js +2 -27
- package/lib/order/splitItems.js +2 -1
- package/package.json +5 -2
- package/lib/modifier/createAmountOverrideModifier.js +0 -18
- package/lib/modifier/getService.js +0 -5
- package/lib/modifier/mutateModifier.js +0 -23
package/lib/item/calculate.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
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
|
|
package/lib/item/getItemPrice.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
module.exports = ({ modifierActions
|
|
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
|
|
9
|
+
typeof basePrice !== 'number'
|
|
8
10
|
)
|
|
9
|
-
return
|
|
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
|
|
17
|
+
if (calculatedModifiers.length === 0) return basePrice;
|
|
16
18
|
|
|
17
19
|
const sortedModifiers = modifierActions.sort([...calculatedModifiers]);
|
|
18
|
-
let computedPrice =
|
|
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({
|
|
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,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,
|
|
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
|
-
|
|
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) &&
|
|
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 {
|
|
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.
|
|
13
|
+
const isMultiplier = actions.isMultiplierOverride(modifier);
|
|
14
14
|
|
|
15
15
|
description = `${name}${localAmount ? ` (${localAmount})` : ''}`;
|
|
16
16
|
|
|
@@ -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
|
+
};
|
|
@@ -3,12 +3,27 @@ module.exports = ({ actions }) =>
|
|
|
3
3
|
paymentModifier,
|
|
4
4
|
paymentMethod,
|
|
5
5
|
paymentType,
|
|
6
|
+
isPrepay,
|
|
6
7
|
}) {
|
|
7
|
-
return
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
};
|
package/lib/modifier/index.js
CHANGED
|
@@ -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
|
|
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
|
|
78
|
+
const isManualOverride = require('./isManualOverride');
|
|
80
79
|
const isPriceOverride = require('./isPriceOverride');
|
|
81
80
|
const isQuantityOverride = require('./isQuantityOverride');
|
|
82
|
-
const
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
252
|
-
|
|
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
|
-
|
|
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 => {
|