@darkpos/pricing 1.0.93 → 1.0.96
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 +47 -60
- package/__TEST__/manualTest.test.js +1 -3
- package/__TEST__/modifier/addItemModifier.test.js +181 -60
- package/__TEST__/modifier/getInvalidRequiredModifiers.test.js +0 -1
- package/__TEST__/modifier/overrideModifiers.test.js +196 -0
- package/__TEST__/modifier.test.js +1 -4
- package/__TEST__/order/order-payment-modifier.test.js +3 -11
- package/__TEST__/order/order.test.js +0 -15
- package/lib/item/calculate.js +66 -18
- package/lib/item/getBasePrice.js +1 -3
- package/lib/item/getItemPrice.js +1 -12
- package/lib/item/getPriceWithoutModifiers.js +7 -5
- 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 +1 -1
- package/lib/modifier/calculate.js +20 -2
- package/lib/modifier/createDescription.js +6 -3
- 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/index.js +18 -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/{isService.js → isServiceOverride.js} +1 -1
- package/lib/modifier/isTotalOverride.js +7 -0
- package/lib/order/addItem.js +10 -12
- package/lib/order/addItemModifier.js +9 -64
- package/lib/order/removeItemModifier.js +2 -33
- package/package.json +4 -2
- package/lib/modifier/createAmountOverrideModifier.js +0 -18
- package/lib/modifier/getService.js +0 -5
- package/lib/modifier/mutateModifier.js +0 -23
|
@@ -686,7 +686,7 @@ describe('Order actions', () => {
|
|
|
686
686
|
modifiers: [
|
|
687
687
|
{
|
|
688
688
|
_id: '671818d40e5dd150d9830904',
|
|
689
|
-
attributes: [
|
|
689
|
+
attributes: [],
|
|
690
690
|
modifierId: '62cdbfd01ee1b4001932818f',
|
|
691
691
|
_parentId: null,
|
|
692
692
|
locked: null,
|
|
@@ -705,15 +705,7 @@ describe('Order actions', () => {
|
|
|
705
705
|
recommended: false,
|
|
706
706
|
default: false,
|
|
707
707
|
code: '',
|
|
708
|
-
properties: {
|
|
709
|
-
override: {
|
|
710
|
-
field: 'price',
|
|
711
|
-
type: 'manual',
|
|
712
|
-
multiplier: true,
|
|
713
|
-
},
|
|
714
|
-
group: null,
|
|
715
|
-
sort: null,
|
|
716
|
-
},
|
|
708
|
+
properties: {},
|
|
717
709
|
_computed: {
|
|
718
710
|
amount: 0,
|
|
719
711
|
description: 'Alice Blue',
|
|
@@ -1093,7 +1085,7 @@ describe('Order actions', () => {
|
|
|
1093
1085
|
expect(resultedOrder.items[0].modifiers[0]._computed).toEqual(
|
|
1094
1086
|
expect.objectContaining({
|
|
1095
1087
|
amount: 0,
|
|
1096
|
-
description: 'Alice Blue
|
|
1088
|
+
description: 'Alice Blue',
|
|
1097
1089
|
})
|
|
1098
1090
|
);
|
|
1099
1091
|
|
|
@@ -3300,9 +3300,6 @@ describe('Order actions', () => {
|
|
|
3300
3300
|
totalPaid: 0,
|
|
3301
3301
|
notes: [],
|
|
3302
3302
|
subTotals: {},
|
|
3303
|
-
properties: {
|
|
3304
|
-
basePrice: 0,
|
|
3305
|
-
},
|
|
3306
3303
|
};
|
|
3307
3304
|
|
|
3308
3305
|
const item2 = {
|
|
@@ -3322,9 +3319,6 @@ describe('Order actions', () => {
|
|
|
3322
3319
|
total: 12,
|
|
3323
3320
|
totalPaid: 0,
|
|
3324
3321
|
subTotals: {},
|
|
3325
|
-
properties: {
|
|
3326
|
-
basePrice: 12,
|
|
3327
|
-
},
|
|
3328
3322
|
};
|
|
3329
3323
|
|
|
3330
3324
|
const order = {
|
|
@@ -3474,9 +3468,6 @@ describe('Order actions', () => {
|
|
|
3474
3468
|
totalPaid: 0,
|
|
3475
3469
|
notes: [],
|
|
3476
3470
|
subTotals: {},
|
|
3477
|
-
properties: {
|
|
3478
|
-
basePrice: 0,
|
|
3479
|
-
},
|
|
3480
3471
|
};
|
|
3481
3472
|
|
|
3482
3473
|
const item2 = {
|
|
@@ -3496,9 +3487,6 @@ describe('Order actions', () => {
|
|
|
3496
3487
|
total: 12,
|
|
3497
3488
|
totalPaid: 0,
|
|
3498
3489
|
subTotals: {},
|
|
3499
|
-
properties: {
|
|
3500
|
-
basePrice: 12,
|
|
3501
|
-
},
|
|
3502
3490
|
};
|
|
3503
3491
|
|
|
3504
3492
|
const order = {
|
|
@@ -3648,9 +3636,6 @@ describe('Order actions', () => {
|
|
|
3648
3636
|
totalPaid: 0,
|
|
3649
3637
|
notes: [],
|
|
3650
3638
|
subTotals: {},
|
|
3651
|
-
properties: {
|
|
3652
|
-
basePrice: 0,
|
|
3653
|
-
},
|
|
3654
3639
|
_id: 1,
|
|
3655
3640
|
};
|
|
3656
3641
|
|
package/lib/item/calculate.js
CHANGED
|
@@ -28,8 +28,18 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
|
|
|
28
28
|
_actual: 0,
|
|
29
29
|
};
|
|
30
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
|
+
|
|
31
41
|
const price = parseFloat(actions.getPriceWithoutModifiers({ item }));
|
|
32
|
-
|
|
42
|
+
let quantity = parseInt(item.quantity, 10);
|
|
33
43
|
subTotals._simple = math.mul(price, quantity);
|
|
34
44
|
|
|
35
45
|
const modifiers = [];
|
|
@@ -51,15 +61,11 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
|
|
|
51
61
|
})
|
|
52
62
|
);
|
|
53
63
|
|
|
54
|
-
const amountOverride = validatedModifiers.find(each =>
|
|
55
|
-
modifierActions.isAmountOverride(each)
|
|
56
|
-
);
|
|
57
|
-
|
|
58
64
|
const modifiersToCompute = validatedModifiers.filter(
|
|
59
65
|
each =>
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
((each.compute && each.compute.type) ||
|
|
67
|
+
(modifierActions.isOverride(each) &&
|
|
68
|
+
!modifierActions.isNotesOverride(each))) &&
|
|
63
69
|
modifierActions.isValid(each)
|
|
64
70
|
);
|
|
65
71
|
|
|
@@ -86,15 +92,14 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
|
|
|
86
92
|
);
|
|
87
93
|
});
|
|
88
94
|
|
|
89
|
-
if (amountOverride) modifiersToCompute.push(amountOverride);
|
|
90
|
-
|
|
91
95
|
const modifiersToNotCompute = validatedModifiers
|
|
92
96
|
.filter(
|
|
93
97
|
each =>
|
|
94
98
|
modifierActions.isPaymentModifier(each) ||
|
|
95
99
|
!modifiersToCompute.find(
|
|
96
100
|
ceach => ceach.modifierId === each.modifierId
|
|
97
|
-
)
|
|
101
|
+
) ||
|
|
102
|
+
modifierActions.isNotesOverride(each)
|
|
98
103
|
)
|
|
99
104
|
.map(each =>
|
|
100
105
|
modifierActions.calculate(each, {
|
|
@@ -108,6 +113,18 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
|
|
|
108
113
|
let computedPrice = price;
|
|
109
114
|
let total = math.mul(computedPrice, quantity);
|
|
110
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
|
+
|
|
111
128
|
if (modifiersToCompute.length || paymentModifiersToCompute.length) {
|
|
112
129
|
// sort modifiers based on sort
|
|
113
130
|
const sortedModifiers = modifierActions.sort([
|
|
@@ -151,6 +168,32 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
|
|
|
151
168
|
});
|
|
152
169
|
}
|
|
153
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
|
+
|
|
154
197
|
_modifier = modifierActions.calculate(
|
|
155
198
|
{ ..._modifier },
|
|
156
199
|
{
|
|
@@ -179,13 +222,18 @@ module.exports = ({ _, utils, actions, modifierActions }) => {
|
|
|
179
222
|
accumulatedAmount = math.add(accumulatedAmount, _computed.amount);
|
|
180
223
|
prvSort = sort;
|
|
181
224
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
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
|
+
}
|
|
189
237
|
}
|
|
190
238
|
}
|
|
191
239
|
|
package/lib/item/getBasePrice.js
CHANGED
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({
|
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
|
}),
|
|
@@ -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
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports = ({ actions, localization, _ }) =>
|
|
1
|
+
module.exports = ({ actions, localization, _, utils }) =>
|
|
2
2
|
function createDescription({ modifier, price }) {
|
|
3
3
|
const { _computed, compute, name } = modifier;
|
|
4
4
|
|
|
@@ -10,13 +10,16 @@ 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
|
|
|
17
17
|
if (actions.isPriceOverride(modifier)) {
|
|
18
|
+
const dividedPrice = localization.formatAmount(
|
|
19
|
+
price && compute.amount ? utils.math.div(price, compute.amount) : 0
|
|
20
|
+
);
|
|
18
21
|
description = isMultiplier
|
|
19
|
-
? `${name} (${compute.amount} Unit @ ${
|
|
22
|
+
? `${name} (${compute.amount} Unit @ ${dividedPrice}/Unit)`
|
|
20
23
|
: `${name} (${localization.formatAmount(compute.amount)}/Unit)`;
|
|
21
24
|
}
|
|
22
25
|
|
|
@@ -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
|
+
};
|
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');
|
|
@@ -164,6 +162,11 @@ const getMaxItemQuantity = require('./getMaxItemQuantity');
|
|
|
164
162
|
const createDescription = require('./createDescription');
|
|
165
163
|
const patchModifier = require('./patchModifier');
|
|
166
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');
|
|
167
170
|
|
|
168
171
|
const modifierActions = (deps = {}) => {
|
|
169
172
|
const actions = {};
|
|
@@ -178,7 +181,6 @@ const modifierActions = (deps = {}) => {
|
|
|
178
181
|
contains: contains(innerDeps),
|
|
179
182
|
convertMenuModifiers: convertMenuModifiers(innerDeps),
|
|
180
183
|
create: create(innerDeps),
|
|
181
|
-
createAmountOverrideModifier: createAmountOverrideModifier(innerDeps),
|
|
182
184
|
createCreditModifier: createCreditModifier(innerDeps),
|
|
183
185
|
createDiscountModifier: createDiscountModifier(innerDeps),
|
|
184
186
|
createFeeModifier: createFeeModifier(innerDeps),
|
|
@@ -224,7 +226,7 @@ const modifierActions = (deps = {}) => {
|
|
|
224
226
|
getRequiredModifiers: getRequiredModifiers(innerDeps),
|
|
225
227
|
getSubscriptionItem: getSubscriptionItem(innerDeps),
|
|
226
228
|
getSubscriptionModifiers: getSubscriptionModifiers(innerDeps),
|
|
227
|
-
|
|
229
|
+
getServiceOverride: getServiceOverride(innerDeps),
|
|
228
230
|
getSplittedModifiers: getSplittedModifiers(innerDeps),
|
|
229
231
|
getSuggestion: getSuggestion(innerDeps),
|
|
230
232
|
getUnhiddenModifiers: getUnhiddenModifiers(innerDeps),
|
|
@@ -249,8 +251,8 @@ const modifierActions = (deps = {}) => {
|
|
|
249
251
|
isRemoveModifier: isRemoveModifier(innerDeps),
|
|
250
252
|
isGroupOfModifiers: isGroupOfModifiers(innerDeps),
|
|
251
253
|
isRequiredAndOverride: isRequiredAndOverride(innerDeps),
|
|
252
|
-
|
|
253
|
-
|
|
254
|
+
isManualOverride: isManualOverride(innerDeps),
|
|
255
|
+
isServiceOverride: isServiceOverride(innerDeps),
|
|
254
256
|
isQuantityOverride: isQuantityOverride(innerDeps),
|
|
255
257
|
isPriceOverride: isPriceOverride(innerDeps),
|
|
256
258
|
isSingleValue: isSingleValue(innerDeps),
|
|
@@ -258,7 +260,7 @@ const modifierActions = (deps = {}) => {
|
|
|
258
260
|
isOverride: isOverride(innerDeps),
|
|
259
261
|
isDepartment: isDepartment(innerDeps),
|
|
260
262
|
isRequired: isRequired(innerDeps),
|
|
261
|
-
|
|
263
|
+
isMultiplierOverride: isMultiplierOverride(innerDeps),
|
|
262
264
|
isAvailablePromotion: isAvailablePromotion(innerDeps),
|
|
263
265
|
isAvailableSubscription: isAvailableSubscription(innerDeps),
|
|
264
266
|
isPromotion: isPromotion(innerDeps),
|
|
@@ -287,7 +289,6 @@ const modifierActions = (deps = {}) => {
|
|
|
287
289
|
isFixedAdd: isFixedAdd(innerDeps),
|
|
288
290
|
isFee: isFee(innerDeps),
|
|
289
291
|
isAdd: isAdd(innerDeps),
|
|
290
|
-
mutateModifier: mutateModifier(innerDeps),
|
|
291
292
|
removeGroupData: removeGroupData(innerDeps),
|
|
292
293
|
isRelatedModifierById: isRelatedModifierById(innerDeps),
|
|
293
294
|
getGroupedModifiers: getGroupedModifiers(innerDeps),
|
|
@@ -341,6 +342,11 @@ const modifierActions = (deps = {}) => {
|
|
|
341
342
|
createDescription: createDescription(innerDeps),
|
|
342
343
|
patchModifier: patchModifier(innerDeps),
|
|
343
344
|
isPrepayModifier: isPrepayModifier(innerDeps),
|
|
345
|
+
isTotalOverride: isTotalOverride(innerDeps),
|
|
346
|
+
getOverrideAmount: getOverrideAmount(innerDeps),
|
|
347
|
+
getOverrideNote: getOverrideNote(innerDeps),
|
|
348
|
+
isNotesOverride: isNotesOverride(innerDeps),
|
|
349
|
+
isOverrideSubtotal: isOverrideSubtotal(innerDeps),
|
|
344
350
|
});
|
|
345
351
|
|
|
346
352
|
Object.keys(freezedActions).forEach(actionName => {
|