@darkpos/pricing 1.0.79 → 1.0.81
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__/modifier.test.js +584 -15
- package/__TEST__/order/conditionsNotMet.test.js +204 -0
- package/__TEST__/order/order.test.js +61 -8
- package/lib/item/adjustCreditModifiersDifference.js +34 -0
- package/lib/item/adjustFixedModifiersDifference.js +37 -0
- package/lib/item/getItemsTotals.js +2 -2
- package/lib/item/getModifierTags.js +1 -1
- package/lib/item/getSubtotal.js +5 -0
- package/lib/item/index.js +14 -0
- package/lib/item/removeModifiersByQuantity.js +5 -4
- package/lib/item/splitAndCalculate.js +18 -0
- package/lib/item/spreadModifiers.js +21 -0
- package/lib/item/validateCreditModifiersTotal.js +23 -0
- package/lib/item/validateFixedModifiersTotal.js +23 -0
- package/lib/modifier/areConditionsMet.js +13 -10
- package/lib/modifier/getCreditModifiersTotalEntities.js +12 -0
- package/lib/modifier/getFixedModifiersTotalEntities.js +12 -0
- package/lib/modifier/getMaxItemQuantity.js +5 -0
- package/lib/modifier/getMaxItemUse.js +5 -0
- package/lib/modifier/getMaxOrderUse.js +5 -0
- package/lib/modifier/getSplittedModifiers.js +15 -30
- package/lib/modifier/index.js +16 -8
- package/lib/modifier/isOrderUseValid.js +25 -0
- package/lib/modifier/isUnlimitedItemUse.js +4 -0
- package/lib/modifier/isUnlimitedOrderUse.js +4 -0
- package/lib/order/addItemModifier.js +27 -4
- package/lib/order/addModifier.js +8 -18
- package/lib/order/index.js +2 -4
- package/lib/order/splitItems.js +50 -0
- package/lib/order/validateCreditModifiersTotal.js +1 -1
- package/lib/order/validateFixedModifiersTotal.js +1 -1
- package/package.json +2 -2
- package/lib/modifier/getMaxAppliesItem.js +0 -5
- package/lib/modifier/getMaxAppliesOrder.js +0 -5
- package/lib/modifier/isUnlimitedAppliesItem.js +0 -6
- package/lib/modifier/isUnlimitedAppliesOrder.js +0 -6
- package/lib/order/getCreditModifiersTotal.js +0 -15
- package/lib/order/getFixedModifiersTotal.js +0 -15
|
@@ -3,28 +3,21 @@ module.exports = ({ utils }) => {
|
|
|
3
3
|
const { getComputeModField } = require('./utils');
|
|
4
4
|
|
|
5
5
|
const divideModifierAmount = ({
|
|
6
|
-
|
|
6
|
+
totalOrigin,
|
|
7
7
|
modifierAmount,
|
|
8
|
-
|
|
8
|
+
totalSplited,
|
|
9
9
|
}) =>
|
|
10
|
-
|
|
10
|
+
totalOrigin
|
|
11
11
|
? math.toDecimalPlaces(
|
|
12
|
-
math.div(
|
|
13
|
-
math.mul(modifierAmount, totalSplitedOrder || 0),
|
|
14
|
-
totalOriginOrder
|
|
15
|
-
)
|
|
12
|
+
math.div(math.mul(modifierAmount, totalSplited || 0), totalOrigin)
|
|
16
13
|
)
|
|
17
14
|
: 0;
|
|
18
15
|
|
|
19
|
-
const splitCreditModifier = ({
|
|
20
|
-
modifier,
|
|
21
|
-
totalOriginOrder,
|
|
22
|
-
totalSplitedOrder,
|
|
23
|
-
}) => {
|
|
16
|
+
const splitCreditModifier = ({ modifier, totalOrigin, totalSplited }) => {
|
|
24
17
|
const maxAmount = divideModifierAmount({
|
|
25
18
|
modifierAmount: modifier.properties.maxAmount,
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
totalOrigin,
|
|
20
|
+
totalSplited,
|
|
28
21
|
});
|
|
29
22
|
const compute = getComputeModField(modifier);
|
|
30
23
|
return {
|
|
@@ -39,15 +32,11 @@ module.exports = ({ utils }) => {
|
|
|
39
32
|
};
|
|
40
33
|
};
|
|
41
34
|
|
|
42
|
-
const splitFixedModifier = ({
|
|
43
|
-
modifier,
|
|
44
|
-
totalOriginOrder,
|
|
45
|
-
totalSplitedOrder,
|
|
46
|
-
}) => {
|
|
35
|
+
const splitFixedModifier = ({ modifier, totalOrigin, totalSplited }) => {
|
|
47
36
|
const amount = divideModifierAmount({
|
|
48
37
|
modifierAmount: modifier.compute.amount,
|
|
49
|
-
|
|
50
|
-
|
|
38
|
+
totalOrigin,
|
|
39
|
+
totalSplited,
|
|
51
40
|
});
|
|
52
41
|
return {
|
|
53
42
|
...modifier,
|
|
@@ -58,27 +47,23 @@ module.exports = ({ utils }) => {
|
|
|
58
47
|
};
|
|
59
48
|
};
|
|
60
49
|
|
|
61
|
-
return function getSplittedModifiers(
|
|
62
|
-
modifiers,
|
|
63
|
-
totalOriginOrder,
|
|
64
|
-
totalSplitedOrder
|
|
65
|
-
) {
|
|
50
|
+
return function getSplittedModifiers(modifiers, totalOrigin, totalSplited) {
|
|
66
51
|
return modifiers.map(each => {
|
|
67
52
|
const modifier = { ...each };
|
|
68
53
|
const compute = getComputeModField(modifier);
|
|
69
54
|
if (modifier.type === 'credit') {
|
|
70
55
|
return splitCreditModifier({
|
|
71
56
|
modifier,
|
|
72
|
-
|
|
73
|
-
|
|
57
|
+
totalOrigin,
|
|
58
|
+
totalSplited,
|
|
74
59
|
});
|
|
75
60
|
}
|
|
76
61
|
|
|
77
62
|
if (compute && compute.type === 'fixed' && compute.amount) {
|
|
78
63
|
return splitFixedModifier({
|
|
79
64
|
modifier,
|
|
80
|
-
|
|
81
|
-
|
|
65
|
+
totalOrigin,
|
|
66
|
+
totalSplited,
|
|
82
67
|
});
|
|
83
68
|
}
|
|
84
69
|
return modifier;
|
package/lib/modifier/index.js
CHANGED
|
@@ -54,6 +54,8 @@ const getSuggestion = require('./getSuggestion');
|
|
|
54
54
|
const getUnhiddenModifiers = require('./getUnhiddenModifiers');
|
|
55
55
|
const getUsingCount = require('./getUsingCount');
|
|
56
56
|
const getFixedModifiersTotal = require('./getFixedModifiersTotal');
|
|
57
|
+
const getFixedModifiersTotalEntities = require('./getFixedModifiersTotalEntities');
|
|
58
|
+
const getCreditModifiersTotalEntities = require('./getCreditModifiersTotalEntities');
|
|
57
59
|
const getCreditModifiersTotal = require('./getCreditModifiersTotal');
|
|
58
60
|
const hasAddModifiers = require('./hasAddModifiers');
|
|
59
61
|
const hasAllTag = require('./hasAllTag');
|
|
@@ -150,13 +152,15 @@ const isGroupPath = require('./isGroupPath');
|
|
|
150
152
|
const isSpreadFrom = require('./isSpreadFrom');
|
|
151
153
|
const getRelatedModifiers = require('./getRelatedModifiers');
|
|
152
154
|
const isRelatedModifier = require('./isRelatedModifier');
|
|
153
|
-
const
|
|
154
|
-
const
|
|
155
|
-
const
|
|
156
|
-
const
|
|
155
|
+
const getMaxItemUse = require('./getMaxItemUse');
|
|
156
|
+
const getMaxOrderUse = require('./getMaxOrderUse');
|
|
157
|
+
const isUnlimitedItemUse = require('./isUnlimitedItemUse');
|
|
158
|
+
const isUnlimitedOrderUse = require('./isUnlimitedOrderUse');
|
|
157
159
|
const validateItemNumber = require('./validateItemNumber');
|
|
158
160
|
const isLimits = require('./isLimits');
|
|
159
161
|
const isItemSet = require('./isItemSet');
|
|
162
|
+
const isOrderUseValid = require('./isOrderUseValid');
|
|
163
|
+
const getMaxItemQuantity = require('./getMaxItemQuantity');
|
|
160
164
|
|
|
161
165
|
const modifierActions = (deps = {}) => {
|
|
162
166
|
const actions = {};
|
|
@@ -321,12 +325,16 @@ const modifierActions = (deps = {}) => {
|
|
|
321
325
|
isSpreadFrom: isSpreadFrom(innerDeps),
|
|
322
326
|
getRelatedModifiers: getRelatedModifiers(innerDeps),
|
|
323
327
|
isRelatedModifier: isRelatedModifier(innerDeps),
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
+
getMaxItemUse: getMaxItemUse(innerDeps),
|
|
329
|
+
getMaxOrderUse: getMaxOrderUse(innerDeps),
|
|
330
|
+
isUnlimitedItemUse: isUnlimitedItemUse(innerDeps),
|
|
331
|
+
isUnlimitedOrderUse: isUnlimitedOrderUse(innerDeps),
|
|
328
332
|
isLimits: isLimits(innerDeps),
|
|
329
333
|
isItemSet: isItemSet(innerDeps),
|
|
334
|
+
isOrderUseValid: isOrderUseValid(innerDeps),
|
|
335
|
+
getMaxItemQuantity: getMaxItemQuantity(innerDeps),
|
|
336
|
+
getFixedModifiersTotalEntities: getFixedModifiersTotalEntities(innerDeps),
|
|
337
|
+
getCreditModifiersTotalEntities: getCreditModifiersTotalEntities(innerDeps),
|
|
330
338
|
});
|
|
331
339
|
|
|
332
340
|
Object.keys(freezedActions).forEach(actionName => {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
|
+
function isOrderUseValid({ order, modifier, item: itemParam }) {
|
|
3
|
+
if (
|
|
4
|
+
!actions.isLimits(modifier) ||
|
|
5
|
+
actions.isUnlimitedOrderUse(modifier) ||
|
|
6
|
+
!actions.getMaxOrderUse(modifier)
|
|
7
|
+
)
|
|
8
|
+
return true;
|
|
9
|
+
|
|
10
|
+
const limit = actions.getMaxOrderUse(modifier);
|
|
11
|
+
|
|
12
|
+
const usedIn = new Set();
|
|
13
|
+
|
|
14
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
15
|
+
for (const item of order.items) {
|
|
16
|
+
if (item.modifiers.some(mod => mod.modifierId === modifier._id)) {
|
|
17
|
+
usedIn.add(item.itemId);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (itemParam && itemParam.itemId && usedIn.has(itemParam.itemId))
|
|
22
|
+
return true;
|
|
23
|
+
|
|
24
|
+
return usedIn.size < limit;
|
|
25
|
+
};
|
|
@@ -86,12 +86,26 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
86
86
|
};
|
|
87
87
|
|
|
88
88
|
const addModifier = ({
|
|
89
|
+
order,
|
|
89
90
|
modifier: _modifier,
|
|
90
91
|
item: itemProp,
|
|
91
92
|
customer,
|
|
92
93
|
originalItem,
|
|
93
94
|
onConditionsNotMet,
|
|
95
|
+
onError,
|
|
94
96
|
}) => {
|
|
97
|
+
if (
|
|
98
|
+
!modifierActions.isOrderUseValid({
|
|
99
|
+
order,
|
|
100
|
+
modifier: _modifier,
|
|
101
|
+
item: itemProp,
|
|
102
|
+
})
|
|
103
|
+
) {
|
|
104
|
+
onError('modifier.has.reached.the.maximum.amount.of.applies');
|
|
105
|
+
|
|
106
|
+
return itemProp;
|
|
107
|
+
}
|
|
108
|
+
|
|
95
109
|
const modifier = modifierActions.removeGroupRelations(_modifier); // to avoid no param reassign lint rule
|
|
96
110
|
let item = { ...itemProp };
|
|
97
111
|
const compute = getComputeModField(modifier);
|
|
@@ -191,17 +205,22 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
191
205
|
}
|
|
192
206
|
// Remove if it has it already only if it is not group of value or override modifier
|
|
193
207
|
|
|
194
|
-
const maxApplies = modifierActions.
|
|
195
|
-
const
|
|
208
|
+
const maxApplies = modifierActions.getMaxItemUse(modifier) || 0;
|
|
209
|
+
const isUnlimitedItemUse = modifierActions.isUnlimitedItemUse(modifier);
|
|
210
|
+
|
|
211
|
+
const maxQuantity =
|
|
212
|
+
math.mul(item.quantity || 0, maxApplies) || item.quantity;
|
|
196
213
|
|
|
197
214
|
if (
|
|
198
|
-
!
|
|
215
|
+
!isUnlimitedItemUse &&
|
|
199
216
|
contains &&
|
|
200
217
|
usingCount >= maxQuantity &&
|
|
201
218
|
!modifierActions.isOverride(modifier)
|
|
202
219
|
) {
|
|
203
|
-
if (maxApplies && onError)
|
|
220
|
+
if (maxApplies && onError) {
|
|
204
221
|
onError('modifier.has.reached.the.maximum.amount.of.applies');
|
|
222
|
+
return order;
|
|
223
|
+
}
|
|
205
224
|
|
|
206
225
|
order = actions.removeItemModifier({
|
|
207
226
|
order,
|
|
@@ -247,11 +266,13 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
247
266
|
}
|
|
248
267
|
|
|
249
268
|
item = addModifier({
|
|
269
|
+
order,
|
|
250
270
|
item,
|
|
251
271
|
modifier,
|
|
252
272
|
originalItem,
|
|
253
273
|
customer,
|
|
254
274
|
onConditionsNotMet,
|
|
275
|
+
onError,
|
|
255
276
|
});
|
|
256
277
|
|
|
257
278
|
// Recursive Rules:
|
|
@@ -263,10 +284,12 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
263
284
|
item = relatedModifiers.reduce(
|
|
264
285
|
(acc, each) =>
|
|
265
286
|
addModifier({
|
|
287
|
+
order,
|
|
266
288
|
item: acc,
|
|
267
289
|
modifier: each,
|
|
268
290
|
originalItem,
|
|
269
291
|
customer,
|
|
292
|
+
onError,
|
|
270
293
|
}),
|
|
271
294
|
item
|
|
272
295
|
);
|
package/lib/order/addModifier.js
CHANGED
|
@@ -1,25 +1,15 @@
|
|
|
1
1
|
module.exports = ({ modifierActions }) =>
|
|
2
2
|
function addModifier({ order, modifier }) {
|
|
3
3
|
if (!modifier) return order;
|
|
4
|
-
const { modifiers = [] } = order;
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
const orderModifiers = Array.isArray(order.modifiers)
|
|
6
|
+
? order.modifiers
|
|
7
|
+
: [];
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
if (orderMod.modifierId === modifier.modifierId) {
|
|
10
|
-
usingCount += 1;
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
const maxQty = modifierActions.getMaxAppliesOrder(modifier) || 1;
|
|
9
|
+
if (modifierActions.contains(orderModifiers, modifier)) return order;
|
|
14
10
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return {
|
|
20
|
-
...order,
|
|
21
|
-
modifiers: [...modifiers, { ...modifier }],
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
return order;
|
|
11
|
+
return {
|
|
12
|
+
...order,
|
|
13
|
+
modifiers: [...orderModifiers, { ...modifier }],
|
|
14
|
+
};
|
|
25
15
|
};
|
package/lib/order/index.js
CHANGED
|
@@ -73,8 +73,6 @@ const getAppliedCredit = require('./getAppliedCredit');
|
|
|
73
73
|
const addCreditModifier = require('./addCreditModifier');
|
|
74
74
|
const adjustCreditModifiersDifference = require('./adjustCreditModifiersDifference');
|
|
75
75
|
const adjustFixedModifiersDifference = require('./adjustFixedModifiersDifference');
|
|
76
|
-
const getCreditModifiersTotal = require('./getCreditModifiersTotal');
|
|
77
|
-
const getFixedModifiersTotal = require('./getFixedModifiersTotal');
|
|
78
76
|
const splitAndCalculate = require('./splitAndCalculate');
|
|
79
77
|
const spreadModifiers = require('./spreadModifiers');
|
|
80
78
|
const validateCreditModifiersTotal = require('./validateCreditModifiersTotal');
|
|
@@ -90,6 +88,7 @@ const getBalance = require('./getBalance');
|
|
|
90
88
|
const getLastLocation = require('./getLastLocation');
|
|
91
89
|
const getModifierRelations = require('./getModifierRelations');
|
|
92
90
|
const resetItem = require('./resetItem');
|
|
91
|
+
const splitItems = require('./splitItems');
|
|
93
92
|
|
|
94
93
|
const orderActions = (deps = {}) => {
|
|
95
94
|
const actions = {};
|
|
@@ -174,8 +173,6 @@ const orderActions = (deps = {}) => {
|
|
|
174
173
|
addCreditModifier: addCreditModifier(innerDeps),
|
|
175
174
|
adjustCreditModifiersDifference: adjustCreditModifiersDifference(innerDeps),
|
|
176
175
|
adjustFixedModifiersDifference: adjustFixedModifiersDifference(innerDeps),
|
|
177
|
-
getCreditModifiersTotal: getCreditModifiersTotal(innerDeps),
|
|
178
|
-
getFixedModifiersTotal: getFixedModifiersTotal(innerDeps),
|
|
179
176
|
splitAndCalculate: splitAndCalculate(innerDeps),
|
|
180
177
|
spreadModifiers: spreadModifiers(innerDeps),
|
|
181
178
|
validateCreditModifiersTotal: validateCreditModifiersTotal(innerDeps),
|
|
@@ -191,6 +188,7 @@ const orderActions = (deps = {}) => {
|
|
|
191
188
|
getLastLocation: getLastLocation(innerDeps),
|
|
192
189
|
getModifierRelations: getModifierRelations(innerDeps),
|
|
193
190
|
resetItem: resetItem(innerDeps),
|
|
191
|
+
splitItems: splitItems(innerDeps),
|
|
194
192
|
});
|
|
195
193
|
|
|
196
194
|
Object.keys(freezedActions).forEach(actionName => {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module.exports = ({ actions, modifierActions, itemActions }) =>
|
|
2
|
+
function splitItems({ order }) {
|
|
3
|
+
if (!order || !order.items) return order;
|
|
4
|
+
|
|
5
|
+
const newItems = [];
|
|
6
|
+
let shouldRecalculate = false;
|
|
7
|
+
|
|
8
|
+
order.items.forEach(item => {
|
|
9
|
+
if (!item.modifiers) {
|
|
10
|
+
newItems.push(item);
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const maxItemQuantityMod = item.modifiers.find(mod =>
|
|
15
|
+
modifierActions.getMaxItemQuantity(mod)
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
const maxQuantity =
|
|
19
|
+
modifierActions.getMaxItemQuantity(maxItemQuantityMod);
|
|
20
|
+
|
|
21
|
+
if (!maxQuantity || item.quantity <= maxQuantity) {
|
|
22
|
+
newItems.push(item);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let remaining = item.quantity;
|
|
27
|
+
let spreadedItems = [];
|
|
28
|
+
while (remaining > 0) {
|
|
29
|
+
if (!shouldRecalculate) shouldRecalculate = true;
|
|
30
|
+
const splitQty = Math.min(remaining, maxQuantity);
|
|
31
|
+
spreadedItems.push({
|
|
32
|
+
...item,
|
|
33
|
+
quantity: splitQty,
|
|
34
|
+
modifiers: [],
|
|
35
|
+
});
|
|
36
|
+
remaining -= splitQty;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
spreadedItems = itemActions.spreadModifiers({
|
|
40
|
+
parentItem: item,
|
|
41
|
+
subItems: spreadedItems,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
newItems.push(...spreadedItems);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return shouldRecalculate
|
|
48
|
+
? actions.calculate({ ...order, items: newItems })
|
|
49
|
+
: order;
|
|
50
|
+
};
|
|
@@ -6,7 +6,7 @@ module.exports = ({ utils, actions, modifierActions }) => {
|
|
|
6
6
|
parentOrder.modifiers
|
|
7
7
|
);
|
|
8
8
|
const subOrdersCreditModifiersTotalAmount =
|
|
9
|
-
|
|
9
|
+
modifierActions.getCreditModifiersTotalEntities(subOrders);
|
|
10
10
|
|
|
11
11
|
if (creditModifiersTotalAmount !== subOrdersCreditModifiersTotalAmount) {
|
|
12
12
|
return actions.adjustCreditModifiersDifference({
|
|
@@ -6,7 +6,7 @@ module.exports = ({ utils, actions, modifierActions }) => {
|
|
|
6
6
|
parentOrder.modifiers
|
|
7
7
|
);
|
|
8
8
|
const subOrdersFixedModifiersTotalAmount =
|
|
9
|
-
|
|
9
|
+
modifierActions.getFixedModifiersTotalEntities(subOrders);
|
|
10
10
|
|
|
11
11
|
if (fixedModifiersTotalAmount !== subOrdersFixedModifiersTotalAmount) {
|
|
12
12
|
return actions.adjustFixedModifiersDifference({
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@darkpos/pricing",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.81",
|
|
4
4
|
"description": "Pricing calculator",
|
|
5
5
|
"author": "Dark POS",
|
|
6
6
|
"license": "ISC",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"supertest": "^6.2.3",
|
|
52
52
|
"supervisor": "^0.12.0"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "41babe2d2f61ea0fac42d1f76c1c98a3afde8507"
|
|
55
55
|
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module.exports = ({ utils, modifierActions }) => {
|
|
2
|
-
const { math } = utils;
|
|
3
|
-
|
|
4
|
-
return function getCreditModifiersTotal(orders) {
|
|
5
|
-
if (!Array.isArray(orders)) return 0;
|
|
6
|
-
return orders.reduce(
|
|
7
|
-
(acc, subOrder) =>
|
|
8
|
-
math.add(
|
|
9
|
-
acc,
|
|
10
|
-
modifierActions.getCreditModifiersTotal(subOrder.modifiers)
|
|
11
|
-
),
|
|
12
|
-
0
|
|
13
|
-
);
|
|
14
|
-
};
|
|
15
|
-
};
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
module.exports = ({ utils, modifierActions }) => {
|
|
2
|
-
const { math } = utils;
|
|
3
|
-
|
|
4
|
-
return function getFixedModifiersTotal(orders) {
|
|
5
|
-
if (!Array.isArray(orders)) return 0;
|
|
6
|
-
return orders.reduce(
|
|
7
|
-
(acc, subOrder) =>
|
|
8
|
-
math.add(
|
|
9
|
-
acc,
|
|
10
|
-
modifierActions.getFixedModifiersTotal(subOrder.modifiers)
|
|
11
|
-
),
|
|
12
|
-
0
|
|
13
|
-
);
|
|
14
|
-
};
|
|
15
|
-
};
|