@darkpos/pricing 1.0.117 → 1.0.120
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 +2502 -1954
- package/__TEST__/modifier/getInvalidRequiredModifiers.test.js +38 -0
- package/lib/item/getInvalidRequiredModifiers.js +3 -2
- package/lib/item/getPipeModifiers.js +3 -2
- package/lib/item/index.js +2 -0
- package/lib/item/isPriceChanged.js +5 -0
- package/lib/modifier/calculatePaymentModifier.js +3 -0
- package/lib/modifier/index.js +2 -0
- package/lib/modifier/isEmptyOverride.js +14 -0
- package/lib/order/addItem.js +0 -5
- package/lib/order/addItemModifier.js +12 -2
- package/lib/order/removeItemModifier.js +6 -4
- package/package.json +2 -2
|
@@ -281,3 +281,41 @@ test('getInvalidRequiredModifiers having related items', () => {
|
|
|
281
281
|
name: 'White',
|
|
282
282
|
});
|
|
283
283
|
});
|
|
284
|
+
|
|
285
|
+
test('getInvalidRequiredModifiers having override modifiers', () => {
|
|
286
|
+
const item = {
|
|
287
|
+
modifiers: [
|
|
288
|
+
{
|
|
289
|
+
_id: '675354ee39a47228afd1f1a4',
|
|
290
|
+
attributes: ['override'],
|
|
291
|
+
modifierId: '6751f7eeb60c71cefee138ee',
|
|
292
|
+
name: 'Override modamount fixed 10',
|
|
293
|
+
group: 'Upcharge',
|
|
294
|
+
type: 'fee',
|
|
295
|
+
tags: ['default', 'all'],
|
|
296
|
+
direct: true,
|
|
297
|
+
required: true,
|
|
298
|
+
properties: {
|
|
299
|
+
override: {
|
|
300
|
+
type: 'fixed',
|
|
301
|
+
field: 'amount',
|
|
302
|
+
fixedValue: undefined,
|
|
303
|
+
multiplier: false,
|
|
304
|
+
},
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
],
|
|
308
|
+
_id: '67dc63610c106ab7d481d7dd',
|
|
309
|
+
itemId: '62cdbfd01ee1b4001932821a',
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
const response = pricingService.item.getInvalidRequiredModifiers({
|
|
313
|
+
item,
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
expect(response.length).toBe(1);
|
|
317
|
+
expect(response[0]).toMatchObject({
|
|
318
|
+
_id: '675354ee39a47228afd1f1a4',
|
|
319
|
+
name: 'Override modamount fixed 10',
|
|
320
|
+
});
|
|
321
|
+
});
|
|
@@ -6,8 +6,9 @@ module.exports = ({ modifierActions, actions }) =>
|
|
|
6
6
|
item.modifiers.forEach(modifier => {
|
|
7
7
|
if (
|
|
8
8
|
modifierActions.isRequired(modifier) &&
|
|
9
|
-
modifierActions.isGroup(modifier) &&
|
|
10
|
-
|
|
9
|
+
((modifierActions.isGroup(modifier) &&
|
|
10
|
+
!actions.hasModifier({ item, modifier, relatedItems })) ||
|
|
11
|
+
modifierActions.isEmptyOverride(modifier))
|
|
11
12
|
) {
|
|
12
13
|
invalidModifiers.push(modifier);
|
|
13
14
|
}
|
|
@@ -3,8 +3,9 @@ module.exports = ({ modifierActions }) =>
|
|
|
3
3
|
if (!item || !Array.isArray(item.modifiers)) return [];
|
|
4
4
|
return item.modifiers.filter(
|
|
5
5
|
modifier =>
|
|
6
|
-
modifierActions.isGroup(modifier) &&
|
|
7
6
|
modifierActions.isRequired(modifier) &&
|
|
8
|
-
modifierActions.
|
|
7
|
+
((modifierActions.isGroup(modifier) &&
|
|
8
|
+
modifierActions.enableAutoPopup(modifier)) ||
|
|
9
|
+
modifierActions.isOverride(modifier))
|
|
9
10
|
);
|
|
10
11
|
};
|
package/lib/item/index.js
CHANGED
|
@@ -70,6 +70,7 @@ const adjustNegativeTotal = require('./adjustNegativeTotal');
|
|
|
70
70
|
const applyNotesOverridesToItem = require('./applyNotesOverridesToItem');
|
|
71
71
|
const getModifiersToNotCompute = require('./getModifiersToNotCompute');
|
|
72
72
|
const getSplitDepartment = require('./getSplitDepartment');
|
|
73
|
+
const isPriceChanged = require('./isPriceChanged');
|
|
73
74
|
|
|
74
75
|
const itemActions = (deps = {}) => {
|
|
75
76
|
const actions = {};
|
|
@@ -153,6 +154,7 @@ const itemActions = (deps = {}) => {
|
|
|
153
154
|
applyNotesOverridesToItem: applyNotesOverridesToItem(innerDeps),
|
|
154
155
|
getModifiersToNotCompute: getModifiersToNotCompute(innerDeps),
|
|
155
156
|
getSplitDepartment: getSplitDepartment(innerDeps),
|
|
157
|
+
isPriceChanged: isPriceChanged(innerDeps),
|
|
156
158
|
});
|
|
157
159
|
|
|
158
160
|
Object.keys(freezedActions).forEach(actionName => {
|
package/lib/modifier/index.js
CHANGED
|
@@ -178,6 +178,7 @@ const isKeepRelatedItems = require('./isKeepRelatedItems');
|
|
|
178
178
|
const isSplitDepartment = require('./isSplitDepartment');
|
|
179
179
|
const isModifierValid = require('./isModifierValid');
|
|
180
180
|
const markModifierAsNotValid = require('./markModifierAsNotValid');
|
|
181
|
+
const isEmptyOverride = require('./isEmptyOverride');
|
|
181
182
|
|
|
182
183
|
const modifierActions = (deps = {}) => {
|
|
183
184
|
const actions = {};
|
|
@@ -369,6 +370,7 @@ const modifierActions = (deps = {}) => {
|
|
|
369
370
|
isSplitDepartment: isSplitDepartment(innerDeps),
|
|
370
371
|
isModifierValid: isModifierValid(innerDeps),
|
|
371
372
|
markModifierAsNotValid: markModifierAsNotValid(innerDeps),
|
|
373
|
+
isEmptyOverride: isEmptyOverride(innerDeps),
|
|
372
374
|
});
|
|
373
375
|
|
|
374
376
|
Object.keys(freezedActions).forEach(actionName => {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
|
+
function isEmptyOverride(modifier) {
|
|
3
|
+
if (!actions.isOverride(modifier) || actions.isNotesOverride(modifier))
|
|
4
|
+
return false;
|
|
5
|
+
const computeAmount = modifier.compute && modifier.compute.amount;
|
|
6
|
+
const { fixedValue } = modifier.properties.override;
|
|
7
|
+
|
|
8
|
+
console.log({ computeAmount, fixedValue });
|
|
9
|
+
|
|
10
|
+
const result =
|
|
11
|
+
typeof computeAmount !== 'number' && typeof fixedValue !== 'number';
|
|
12
|
+
|
|
13
|
+
return result;
|
|
14
|
+
};
|
package/lib/order/addItem.js
CHANGED
|
@@ -218,10 +218,6 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
|
|
|
218
218
|
let [nextOrder, nextItemIndex] = params;
|
|
219
219
|
const [, , nextItem] = params;
|
|
220
220
|
|
|
221
|
-
const overrideModifiers = modifiersToAdd.filter(modToAdd =>
|
|
222
|
-
modifierActions.isOverride(modToAdd)
|
|
223
|
-
);
|
|
224
|
-
|
|
225
221
|
if (modifiersToAdd.length) {
|
|
226
222
|
nextOrder = modifiersToAdd.reduce(
|
|
227
223
|
(acc, modifier) =>
|
|
@@ -287,7 +283,6 @@ module.exports = ({ actions, itemActions, modifierActions, settings, _ }) => {
|
|
|
287
283
|
updatedOrder: nextOrder,
|
|
288
284
|
itemIndex: nextItemIndex,
|
|
289
285
|
item: nextItem,
|
|
290
|
-
overrideModifiers,
|
|
291
286
|
};
|
|
292
287
|
};
|
|
293
288
|
};
|
|
@@ -39,6 +39,8 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
39
39
|
...(item.properties || {}),
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
+
if (itemActions.isPriceChanged(item)) return item;
|
|
43
|
+
|
|
42
44
|
item.price = itemActions.getItemPrice({
|
|
43
45
|
item,
|
|
44
46
|
itemPriceLevels: originalItem ? originalItem.priceLevels : undefined,
|
|
@@ -65,7 +67,7 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
65
67
|
}
|
|
66
68
|
|
|
67
69
|
const customer = actions.getCustomer(order);
|
|
68
|
-
|
|
70
|
+
let contains =
|
|
69
71
|
!_.isEmpty(item.modifiers) &&
|
|
70
72
|
modifierActions.contains(
|
|
71
73
|
item.modifiers.filter(mod => !modifierActions.isGroupOfModifiers(mod)),
|
|
@@ -97,13 +99,21 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
97
99
|
return order;
|
|
98
100
|
}
|
|
99
101
|
|
|
102
|
+
const isOverride = modifierActions.isOverride(modifier);
|
|
103
|
+
|
|
100
104
|
order = actions.removeItemModifier({
|
|
101
105
|
order,
|
|
102
106
|
modifier,
|
|
103
107
|
itemIndex,
|
|
104
108
|
originalItem,
|
|
109
|
+
forceRemove: isOverride,
|
|
105
110
|
});
|
|
106
|
-
|
|
111
|
+
|
|
112
|
+
if (!isOverride) {
|
|
113
|
+
return order;
|
|
114
|
+
}
|
|
115
|
+
contains = false;
|
|
116
|
+
item = actions.getSelectedItem({ order, itemIndex });
|
|
107
117
|
}
|
|
108
118
|
|
|
109
119
|
const modifiersToRemove = itemActions.getModifiersBySingleValueId({
|
|
@@ -17,14 +17,16 @@ module.exports = ({ actions, modifierActions, itemActions, _ }) => {
|
|
|
17
17
|
modifier,
|
|
18
18
|
itemIndex,
|
|
19
19
|
originalItem,
|
|
20
|
+
forceRemove,
|
|
20
21
|
}) {
|
|
21
22
|
const order = _.cloneDeep(orderProp);
|
|
22
23
|
|
|
23
24
|
if (
|
|
24
|
-
!
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
!forceRemove &&
|
|
26
|
+
(!order ||
|
|
27
|
+
itemIndex < 0 ||
|
|
28
|
+
!modifier ||
|
|
29
|
+
modifierActions.isRequired(modifier))
|
|
28
30
|
)
|
|
29
31
|
return order;
|
|
30
32
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@darkpos/pricing",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.120",
|
|
4
4
|
"description": "Pricing calculator",
|
|
5
5
|
"author": "Dark POS",
|
|
6
6
|
"license": "ISC",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"supertest": "^6.2.3",
|
|
56
56
|
"supervisor": "^0.12.0"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "60acf14d0f3046fd5c04ca2ddc0fbc89832eb561"
|
|
59
59
|
}
|