@darkpos/pricing 1.0.13 → 1.0.15
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/lib/modifier/getCreditModifiersTotal.js +14 -0
- package/lib/modifier/getFixedModifiersTotal.js +16 -0
- package/lib/modifier/getSplittedModifiers.js +75 -16
- package/lib/modifier/hasCreditModifier.js +4 -0
- package/lib/modifier/hasFixedModifier.js +4 -0
- package/lib/modifier/index.js +8 -0
- package/lib/order/addItem.js +10 -2
- package/lib/order/adjustCreditModifiersDifference.js +34 -0
- package/lib/order/adjustFixedModifiersDifference.js +36 -0
- package/lib/order/getCreditModifiersTotal.js +15 -0
- package/lib/order/getFixedModifiersTotal.js +15 -0
- package/lib/order/index.js +16 -0
- package/lib/order/splitAndCalculate.js +16 -0
- package/lib/order/splitByDepartments.js +7 -28
- package/lib/order/spreadModifiers.js +21 -0
- package/lib/order/validateCreditModifiersTotal.js +23 -0
- package/lib/order/validateFixedModifiersTotal.js +23 -0
- package/package.json +2 -2
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module.exports = ({ utils }) => {
|
|
2
|
+
const { math } = utils;
|
|
3
|
+
|
|
4
|
+
return function getCreditModifiersTotal(modifiers) {
|
|
5
|
+
if (!Array.isArray(modifiers)) return 0;
|
|
6
|
+
|
|
7
|
+
const creditModifiers = modifiers.filter(mod => mod.type === 'credit');
|
|
8
|
+
|
|
9
|
+
return creditModifiers.reduce(
|
|
10
|
+
(acc, modifier) => math.add(acc, modifier.properties.maxAmount || 0),
|
|
11
|
+
0
|
|
12
|
+
);
|
|
13
|
+
};
|
|
14
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = ({ utils }) => {
|
|
2
|
+
const { math } = utils;
|
|
3
|
+
|
|
4
|
+
return function getFixedModifiersTotal(modifiers) {
|
|
5
|
+
if (!Array.isArray(modifiers)) return 0;
|
|
6
|
+
|
|
7
|
+
const fixedModifiers = modifiers.filter(
|
|
8
|
+
mod => mod.compute.type === 'fixed'
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
return fixedModifiers.reduce(
|
|
12
|
+
(acc, modifier) => math.add(acc, modifier.compute.amount || 0),
|
|
13
|
+
0
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
};
|
|
@@ -1,5 +1,61 @@
|
|
|
1
1
|
module.exports = ({ utils }) => {
|
|
2
2
|
const { math, helpers } = utils;
|
|
3
|
+
|
|
4
|
+
const divideModifierAmount = ({
|
|
5
|
+
totalOriginOrder,
|
|
6
|
+
modifierAmount,
|
|
7
|
+
totalSplitedOrder,
|
|
8
|
+
}) =>
|
|
9
|
+
totalOriginOrder
|
|
10
|
+
? math.div(
|
|
11
|
+
math.mul(modifierAmount, totalSplitedOrder || 0),
|
|
12
|
+
totalOriginOrder
|
|
13
|
+
)
|
|
14
|
+
: 0;
|
|
15
|
+
|
|
16
|
+
const splitCreditModifier = ({
|
|
17
|
+
modifier,
|
|
18
|
+
totalOriginOrder,
|
|
19
|
+
totalSplitedOrder,
|
|
20
|
+
}) => {
|
|
21
|
+
const maxAmount = divideModifierAmount({
|
|
22
|
+
modifierAmount: modifier.properties.maxAmount,
|
|
23
|
+
totalOriginOrder,
|
|
24
|
+
totalSplitedOrder,
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
...modifier,
|
|
28
|
+
compute: {
|
|
29
|
+
...modifier.compute,
|
|
30
|
+
_id: helpers.getObjectID(),
|
|
31
|
+
},
|
|
32
|
+
properties: {
|
|
33
|
+
...modifier.properties,
|
|
34
|
+
maxAmount,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const splitFixedModifier = ({
|
|
40
|
+
modifier,
|
|
41
|
+
totalOriginOrder,
|
|
42
|
+
totalSplitedOrder,
|
|
43
|
+
}) => {
|
|
44
|
+
const amount = divideModifierAmount({
|
|
45
|
+
modifierAmount: modifier.compute.amount,
|
|
46
|
+
totalOriginOrder,
|
|
47
|
+
totalSplitedOrder,
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
...modifier,
|
|
51
|
+
compute: {
|
|
52
|
+
...modifier.compute,
|
|
53
|
+
_id: helpers.getObjectID(),
|
|
54
|
+
amount,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
3
59
|
return function getSplittedModifiers(
|
|
4
60
|
modifiers,
|
|
5
61
|
totalOriginOrder,
|
|
@@ -7,22 +63,25 @@ module.exports = ({ utils }) => {
|
|
|
7
63
|
) {
|
|
8
64
|
return modifiers.map(each => {
|
|
9
65
|
const modifier = { ...each };
|
|
10
|
-
|
|
11
|
-
if (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
66
|
+
|
|
67
|
+
if (modifier.type === 'credit') {
|
|
68
|
+
return splitCreditModifier({
|
|
69
|
+
modifier,
|
|
70
|
+
totalOriginOrder,
|
|
71
|
+
totalSplitedOrder,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (
|
|
76
|
+
modifier.compute &&
|
|
77
|
+
modifier.compute.type === 'fixed' &&
|
|
78
|
+
modifier.compute.amount
|
|
79
|
+
) {
|
|
80
|
+
return splitFixedModifier({
|
|
81
|
+
modifier,
|
|
82
|
+
totalOriginOrder,
|
|
83
|
+
totalSplitedOrder,
|
|
84
|
+
});
|
|
26
85
|
}
|
|
27
86
|
return modifier;
|
|
28
87
|
});
|
package/lib/modifier/index.js
CHANGED
|
@@ -61,6 +61,8 @@ const getSplittedModifiers = require('./getSplittedModifiers');
|
|
|
61
61
|
const getSuggestion = require('./getSuggestion');
|
|
62
62
|
const getUnhiddenModifiers = require('./getUnhiddenModifiers');
|
|
63
63
|
const getUsingCount = require('./getUsingCount');
|
|
64
|
+
const getFixedModifiersTotal = require('./getFixedModifiersTotal');
|
|
65
|
+
const getCreditModifiersTotal = require('./getCreditModifiersTotal');
|
|
64
66
|
const hasAddModifiers = require('./hasAddModifiers');
|
|
65
67
|
const hasAllTag = require('./hasAllTag');
|
|
66
68
|
const hasAttribute = require('./hasAttribute');
|
|
@@ -70,6 +72,8 @@ const hasDisplayPrompt = require('./hasDisplayPrompt');
|
|
|
70
72
|
const hasMatchTags = require('./hasMatchTags');
|
|
71
73
|
const hasModifier = require('./hasModifier');
|
|
72
74
|
const hasRelatedItems = require('./hasRelatedItems');
|
|
75
|
+
const hasFixedModifier = require('./hasFixedModifier');
|
|
76
|
+
const hasCreditModifier = require('./hasCreditModifier');
|
|
73
77
|
const includePiecesInQuantity = require('./includePiecesInQuantity');
|
|
74
78
|
const includesInGroup = require('./includesInGroup');
|
|
75
79
|
const isTrackUsageSubscription = require('./isTrackUsageSubscription');
|
|
@@ -184,6 +188,8 @@ const modifierActions = (deps = {}) => {
|
|
|
184
188
|
getSuggestion: getSuggestion(innerDeps),
|
|
185
189
|
getUnhiddenModifiers: getUnhiddenModifiers(innerDeps),
|
|
186
190
|
getUsingCount: getUsingCount(innerDeps),
|
|
191
|
+
getFixedModifiersTotal: getFixedModifiersTotal(innerDeps),
|
|
192
|
+
getCreditModifiersTotal: getCreditModifiersTotal(innerDeps),
|
|
187
193
|
hasAddModifiers: hasAddModifiers(innerDeps),
|
|
188
194
|
hasAllTag: hasAllTag(innerDeps),
|
|
189
195
|
hasNoTags: hasNoTags(innerDeps),
|
|
@@ -194,6 +200,8 @@ const modifierActions = (deps = {}) => {
|
|
|
194
200
|
hasRelatedItems: hasRelatedItems(innerDeps),
|
|
195
201
|
hasAttribute: hasAttribute(innerDeps),
|
|
196
202
|
hasAttributes: hasAttributes(innerDeps),
|
|
203
|
+
hasFixedModifier: hasFixedModifier(innerDeps),
|
|
204
|
+
hasCreditModifier: hasCreditModifier(innerDeps),
|
|
197
205
|
includePiecesInQuantity: includePiecesInQuantity(innerDeps),
|
|
198
206
|
includesInGroup: includesInGroup(innerDeps),
|
|
199
207
|
isTrackUsageSubscription: isTrackUsageSubscription(innerDeps),
|
package/lib/order/addItem.js
CHANGED
|
@@ -190,8 +190,16 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
|
|
|
190
190
|
!_.isEmpty(orderItem.modifiers)
|
|
191
191
|
)
|
|
192
192
|
requiredModifiers = getUnselectedModifiers(orderItem, requiredModifiers);
|
|
193
|
-
if (!_.isEmpty(requiredModifiers))
|
|
194
|
-
modifiersToAdd.push(
|
|
193
|
+
if (!_.isEmpty(requiredModifiers)) {
|
|
194
|
+
modifiersToAdd.push(
|
|
195
|
+
...requiredModifiers.filter(
|
|
196
|
+
reqMod =>
|
|
197
|
+
!modifiersToAdd.find(
|
|
198
|
+
modToAdd => modToAdd.modifierId === reqMod.modifierId
|
|
199
|
+
)
|
|
200
|
+
)
|
|
201
|
+
);
|
|
202
|
+
}
|
|
195
203
|
|
|
196
204
|
orderItem = actions.getOrderItemSubscriptions({
|
|
197
205
|
order,
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module.exports = ({ utils, actions, modifierActions }) => {
|
|
2
|
+
const { math } = utils;
|
|
3
|
+
|
|
4
|
+
return function adjustCreditModifiersDifference({ subOrders, difference }) {
|
|
5
|
+
const selectedSubOrderIndex = subOrders.findIndex(
|
|
6
|
+
subOrder =>
|
|
7
|
+
modifierActions.hasCreditModifier(subOrder.modifiers) &&
|
|
8
|
+
actions.isOpen(subOrder) &&
|
|
9
|
+
subOrder.total > difference
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
if (selectedSubOrderIndex !== -1) {
|
|
13
|
+
const subOrderToUpdate = {
|
|
14
|
+
...subOrders[selectedSubOrderIndex],
|
|
15
|
+
};
|
|
16
|
+
const modifierToUpdateIdx = subOrderToUpdate.modifiers.findIndex(
|
|
17
|
+
mod => mod.type === 'credit'
|
|
18
|
+
);
|
|
19
|
+
const prevAmount =
|
|
20
|
+
subOrderToUpdate.modifiers[modifierToUpdateIdx].properties.maxAmount;
|
|
21
|
+
|
|
22
|
+
subOrderToUpdate.modifiers[modifierToUpdateIdx].properties.maxAmount =
|
|
23
|
+
math.add(prevAmount, difference);
|
|
24
|
+
|
|
25
|
+
subOrders.splice(
|
|
26
|
+
selectedSubOrderIndex,
|
|
27
|
+
1,
|
|
28
|
+
actions.calculate(subOrderToUpdate)
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return subOrders;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module.exports = ({ utils, actions, modifierActions }) => {
|
|
2
|
+
const { math } = utils;
|
|
3
|
+
|
|
4
|
+
return function adjustFixedModifiersDifference({ subOrders, difference }) {
|
|
5
|
+
const selectedSubOrderIndex = subOrders.findIndex(
|
|
6
|
+
subOrder =>
|
|
7
|
+
modifierActions.hasFixedModifier(subOrder.modifiers) &&
|
|
8
|
+
actions.isOpen(subOrder) &&
|
|
9
|
+
subOrder.total > difference
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
if (selectedSubOrderIndex !== -1) {
|
|
13
|
+
const subOrderToUpdate = {
|
|
14
|
+
...subOrders[selectedSubOrderIndex],
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const modifierToUpdateIdx = subOrderToUpdate.modifiers.findIndex(
|
|
18
|
+
mod => mod.compute.type === 'fixed'
|
|
19
|
+
);
|
|
20
|
+
const prevAmount =
|
|
21
|
+
subOrderToUpdate.modifiers[modifierToUpdateIdx].compute.amount;
|
|
22
|
+
|
|
23
|
+
subOrderToUpdate.modifiers[modifierToUpdateIdx].compute.amount = math.add(
|
|
24
|
+
prevAmount,
|
|
25
|
+
difference
|
|
26
|
+
);
|
|
27
|
+
subOrders.splice(
|
|
28
|
+
selectedSubOrderIndex,
|
|
29
|
+
1,
|
|
30
|
+
actions.calculate(subOrderToUpdate)
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return subOrders;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
};
|
package/lib/order/index.js
CHANGED
|
@@ -72,6 +72,14 @@ const getScheduleByCustomer = require('./getScheduleByCustomer');
|
|
|
72
72
|
const pickEndDate = require('./pickEndDate');
|
|
73
73
|
const getAppliedCredit = require('./getAppliedCredit');
|
|
74
74
|
const addCreditModifier = require('./addCreditModifier');
|
|
75
|
+
const adjustCreditModifiersDifference = require('./adjustCreditModifiersDifference');
|
|
76
|
+
const adjustFixedModifiersDifference = require('./adjustFixedModifiersDifference');
|
|
77
|
+
const getCreditModifiersTotal = require('./getCreditModifiersTotal');
|
|
78
|
+
const getFixedModifiersTotal = require('./getFixedModifiersTotal');
|
|
79
|
+
const splitAndCalculate = require('./splitAndCalculate');
|
|
80
|
+
const spreadModifiers = require('./spreadModifiers');
|
|
81
|
+
const validateCreditModifiersTotal = require('./validateCreditModifiersTotal');
|
|
82
|
+
const validateFixedModifiersTotal = require('./validateFixedModifiersTotal');
|
|
75
83
|
|
|
76
84
|
const orderActions = (deps = {}) => {
|
|
77
85
|
const actions = {};
|
|
@@ -156,6 +164,14 @@ const orderActions = (deps = {}) => {
|
|
|
156
164
|
pickEndDate: pickEndDate(innerDeps),
|
|
157
165
|
getAppliedCredit: getAppliedCredit(innerDeps),
|
|
158
166
|
addCreditModifier: addCreditModifier(innerDeps),
|
|
167
|
+
adjustCreditModifiersDifference: adjustCreditModifiersDifference(innerDeps),
|
|
168
|
+
adjustFixedModifiersDifference: adjustFixedModifiersDifference(innerDeps),
|
|
169
|
+
getCreditModifiersTotal: getCreditModifiersTotal(innerDeps),
|
|
170
|
+
getFixedModifiersTotal: getFixedModifiersTotal(innerDeps),
|
|
171
|
+
splitAndCalculate: splitAndCalculate(innerDeps),
|
|
172
|
+
spreadModifiers: spreadModifiers(innerDeps),
|
|
173
|
+
validateCreditModifiersTotal: validateCreditModifiersTotal(innerDeps),
|
|
174
|
+
validateFixedModifiersTotal: validateFixedModifiersTotal(innerDeps),
|
|
159
175
|
});
|
|
160
176
|
|
|
161
177
|
Object.keys(freezedActions).forEach(actionName => {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module.exports = ({ actions, modifierActions }) =>
|
|
2
|
+
function splitAndCalculate({ parentOrder, subOrders }) {
|
|
3
|
+
if (!parentOrder || !Array.isArray(subOrders)) return [];
|
|
4
|
+
return subOrders.map(each => {
|
|
5
|
+
const { subTotal } = actions.calculate(each);
|
|
6
|
+
const newOrder = {
|
|
7
|
+
...each,
|
|
8
|
+
modifiers: modifierActions.getSplittedModifiers(
|
|
9
|
+
parentOrder.modifiers,
|
|
10
|
+
parentOrder.subTotal,
|
|
11
|
+
subTotal
|
|
12
|
+
),
|
|
13
|
+
};
|
|
14
|
+
return actions.calculate(newOrder);
|
|
15
|
+
});
|
|
16
|
+
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module.exports = ({
|
|
2
2
|
utils,
|
|
3
3
|
_,
|
|
4
|
+
actions,
|
|
4
5
|
itemActions,
|
|
5
6
|
modifierActions,
|
|
6
|
-
actions,
|
|
7
7
|
settings,
|
|
8
8
|
}) => {
|
|
9
9
|
const orderSettings = _.get(settings, 'order');
|
|
10
|
-
const { date,
|
|
10
|
+
const { date, helpers } = utils;
|
|
11
11
|
const noteDefaults = {
|
|
12
12
|
message: '',
|
|
13
13
|
attributes: [],
|
|
@@ -17,25 +17,6 @@ module.exports = ({
|
|
|
17
17
|
__typename: 'Note',
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const getSplitModifiers = (modifiers, totalOriginOrder, totalSplitedOrder) =>
|
|
21
|
-
modifiers.map(each => {
|
|
22
|
-
const modifier = { ...each };
|
|
23
|
-
if (modifier.type === 'fixed' && modifier.amount) {
|
|
24
|
-
const amount = totalOriginOrder
|
|
25
|
-
? math.div(
|
|
26
|
-
math.mul(modifier.amount, totalSplitedOrder || 0),
|
|
27
|
-
totalOriginOrder
|
|
28
|
-
)
|
|
29
|
-
: 0;
|
|
30
|
-
return {
|
|
31
|
-
...modifier,
|
|
32
|
-
_id: helpers.getObjectID(),
|
|
33
|
-
amount,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
return modifier;
|
|
37
|
-
});
|
|
38
|
-
|
|
39
20
|
const joinItemQuantity = orders =>
|
|
40
21
|
orders.map(order => {
|
|
41
22
|
const items = order.items.reduce((arr, item) => {
|
|
@@ -139,13 +120,11 @@ module.exports = ({
|
|
|
139
120
|
|
|
140
121
|
splitOrders = joinItemQuantity(splitOrders);
|
|
141
122
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
...each,
|
|
146
|
-
modifiers: getSplitModifiers(order.modifiers, order.subTotal, subTotal),
|
|
147
|
-
};
|
|
148
|
-
return actions.calculate(newOrder);
|
|
123
|
+
splitOrders = actions.spreadModifiers({
|
|
124
|
+
parentOrder: order,
|
|
125
|
+
subOrders: splitOrders,
|
|
149
126
|
});
|
|
127
|
+
|
|
128
|
+
return splitOrders;
|
|
150
129
|
};
|
|
151
130
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
|
+
function spreadModifiers({ parentOrder, subOrders }) {
|
|
3
|
+
let subOrdersWithCalculatedModifiers = actions.splitAndCalculate({
|
|
4
|
+
parentOrder,
|
|
5
|
+
subOrders,
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
// Validation
|
|
9
|
+
|
|
10
|
+
subOrdersWithCalculatedModifiers = actions.validateFixedModifiersTotal({
|
|
11
|
+
parentOrder,
|
|
12
|
+
subOrders: [...subOrdersWithCalculatedModifiers],
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
subOrdersWithCalculatedModifiers = actions.validateCreditModifiersTotal({
|
|
16
|
+
parentOrder,
|
|
17
|
+
subOrders: [...subOrdersWithCalculatedModifiers],
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return subOrdersWithCalculatedModifiers;
|
|
21
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = ({ utils, actions, modifierActions }) => {
|
|
2
|
+
const { math } = utils;
|
|
3
|
+
|
|
4
|
+
return function validateCreditModifiersTotal({ parentOrder, subOrders }) {
|
|
5
|
+
const creditModifiersTotalAmount = modifierActions.getCreditModifiersTotal(
|
|
6
|
+
parentOrder.modifiers
|
|
7
|
+
);
|
|
8
|
+
const subOrdersCreditModifiersTotalAmount =
|
|
9
|
+
actions.getCreditModifiersTotal(subOrders);
|
|
10
|
+
|
|
11
|
+
if (creditModifiersTotalAmount !== subOrdersCreditModifiersTotalAmount) {
|
|
12
|
+
return actions.adjustCreditModifiersDifference({
|
|
13
|
+
subOrders: [...subOrders],
|
|
14
|
+
difference: math.sub(
|
|
15
|
+
creditModifiersTotalAmount,
|
|
16
|
+
subOrdersCreditModifiersTotalAmount
|
|
17
|
+
),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return subOrders;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module.exports = ({ utils, actions, modifierActions }) => {
|
|
2
|
+
const { math } = utils;
|
|
3
|
+
|
|
4
|
+
return function validateFixedModifiersTotal({ parentOrder, subOrders }) {
|
|
5
|
+
const fixedModifiersTotalAmount = modifierActions.getFixedModifiersTotal(
|
|
6
|
+
parentOrder.modifiers
|
|
7
|
+
);
|
|
8
|
+
const subOrdersFixedModifiersTotalAmount =
|
|
9
|
+
actions.getFixedModifiersTotal(subOrders);
|
|
10
|
+
|
|
11
|
+
if (fixedModifiersTotalAmount !== subOrdersFixedModifiersTotalAmount) {
|
|
12
|
+
return actions.adjustFixedModifiersDifference({
|
|
13
|
+
subOrders: [...subOrders],
|
|
14
|
+
difference: math.sub(
|
|
15
|
+
fixedModifiersTotalAmount,
|
|
16
|
+
subOrdersFixedModifiersTotalAmount
|
|
17
|
+
),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return subOrders;
|
|
22
|
+
};
|
|
23
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@darkpos/pricing",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.15",
|
|
4
4
|
"description": "Pricing calculator",
|
|
5
5
|
"author": "Dark POS",
|
|
6
6
|
"license": "ISC",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"supertest": "^6.2.3",
|
|
36
36
|
"supervisor": "^0.12.0"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "c39fea127ca5bd932ee4828ea463bfafb0083693"
|
|
39
39
|
}
|