@darkpos/pricing 1.0.45 → 1.0.46
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/hasModifier.test.js +1626 -0
- package/__TEST__/order/addItem.test.js +2 -4
- package/lib/item/getInvalidRequiredModifiers.js +24 -0
- package/lib/item/getItemModifiersDescription.js +2 -1
- package/lib/item/getPipeModifiers.js +10 -0
- package/lib/item/hasModifier.js +21 -9
- package/lib/item/hasModifiers.js +3 -4
- package/lib/item/index.js +4 -2
- package/lib/modifier/duplicate.js +1 -1
- package/lib/modifier/getGroupRelatedModifiers.js +5 -1
- package/lib/modifier/getItemModifiers.js +1 -3
- package/lib/modifier/index.js +4 -0
- package/lib/modifier/isRelatedModifier.js +13 -0
- package/lib/modifier/removeGroupData.js +20 -0
- package/lib/order/addItemModifier.js +8 -1
- package/package.json +3 -2
- package/lib/item/isSelected.js +0 -13
|
@@ -153,7 +153,7 @@ describe('addItem function', () => {
|
|
|
153
153
|
},
|
|
154
154
|
{
|
|
155
155
|
_id: '66cdf18a1e48455e128a4f64',
|
|
156
|
-
modifierId:
|
|
156
|
+
modifierId: null,
|
|
157
157
|
_parentId: null,
|
|
158
158
|
name: null,
|
|
159
159
|
sku: null,
|
|
@@ -190,9 +190,7 @@ describe('addItem function', () => {
|
|
|
190
190
|
// Assertions
|
|
191
191
|
expect(updatedOrder.items).toHaveLength(1); // Should have one item
|
|
192
192
|
expect(updatedOrder.items[0].modifiers).toHaveLength(2); // Item should have two modifiers
|
|
193
|
-
expect(updatedOrder.items[0].modifiers[0].modifierId).toBe(
|
|
194
|
-
'66cdf18a1e48455e128a4f63'
|
|
195
|
-
); // Check first modifier
|
|
193
|
+
expect(updatedOrder.items[0].modifiers[0].modifierId).toBe('mod1'); // Check first modifier
|
|
196
194
|
expect(updatedOrder.items[0].modifiers[1].modifierId).toBe(
|
|
197
195
|
'66cdf18a1e48455e128a4f64'
|
|
198
196
|
); // Check second modifier
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module.exports = ({ modifierActions }) =>
|
|
2
|
+
function getInvalidRequiredModifiers({ item }) {
|
|
3
|
+
if (!item || !Array.isArray(item.modifiers)) return true;
|
|
4
|
+
const invalidModifiers = [];
|
|
5
|
+
|
|
6
|
+
item.modifiers.forEach(modifier => {
|
|
7
|
+
if (
|
|
8
|
+
modifierActions.isRequired(modifier) &&
|
|
9
|
+
modifierActions.isGroupOfModifiers(modifier) &&
|
|
10
|
+
!item.modifiers
|
|
11
|
+
.filter(mod => mod._id !== modifier._id)
|
|
12
|
+
.some(itemModifier =>
|
|
13
|
+
modifierActions.isRelatedModifier({
|
|
14
|
+
_id: itemModifier.modifierId || itemModifier._id,
|
|
15
|
+
modifier,
|
|
16
|
+
})
|
|
17
|
+
)
|
|
18
|
+
) {
|
|
19
|
+
invalidModifiers.push(modifier);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return invalidModifiers;
|
|
24
|
+
};
|
|
@@ -10,7 +10,8 @@ module.exports = ({ modifierActions, _, settings }) =>
|
|
|
10
10
|
modifierActions.isValid(each) &&
|
|
11
11
|
!modifierActions.isAmountOverride(each) &&
|
|
12
12
|
!modifierActions.isDepartment(each) &&
|
|
13
|
-
modifierActions.isDirect(each)
|
|
13
|
+
modifierActions.isDirect(each) &&
|
|
14
|
+
!modifierActions.isGroupOfModifiers(each)
|
|
14
15
|
)
|
|
15
16
|
.map(modifier => {
|
|
16
17
|
const { name, _id, compute = {} } = modifier;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module.exports = ({ modifierActions }) =>
|
|
2
|
+
function getPipeModifiers({ item }) {
|
|
3
|
+
if (!item || !Array.isArray(item.modifiers)) return [];
|
|
4
|
+
return item.modifiers.filter(
|
|
5
|
+
modifier =>
|
|
6
|
+
modifierActions.isGroupOfModifiers(modifier) &&
|
|
7
|
+
modifierActions.isRequired(modifier) &&
|
|
8
|
+
modifierActions.enableAutoPopup(modifier)
|
|
9
|
+
);
|
|
10
|
+
};
|
package/lib/item/hasModifier.js
CHANGED
|
@@ -1,15 +1,27 @@
|
|
|
1
|
-
module.exports = () =>
|
|
1
|
+
module.exports = ({ modifierActions }) =>
|
|
2
2
|
function hasModifier({ item, modifier }) {
|
|
3
3
|
if (!item || !modifier || !item.modifiers) return false;
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
if (modifierActions.isGroupOfModifiers(modifier)) {
|
|
6
|
+
const relatedModifiers = modifier.properties.group.modifiers;
|
|
7
|
+
return [
|
|
8
|
+
modifierActions.removeGroupData({ modifier }),
|
|
9
|
+
...relatedModifiers,
|
|
10
|
+
].some(relatedModifier =>
|
|
11
|
+
hasModifier({ item, modifier: relatedModifier })
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const itemModifier = item.modifiers
|
|
16
|
+
.filter(itemMod => !modifierActions.isGroupOfModifiers(itemMod))
|
|
17
|
+
.find(
|
|
18
|
+
each =>
|
|
19
|
+
(each.modifierId &&
|
|
20
|
+
(each.modifierId === modifier.modifierId ||
|
|
21
|
+
each.modifierId === modifier._id)) ||
|
|
22
|
+
(typeof each.modifier === 'object' &&
|
|
23
|
+
each.modifier._id === modifier.modifierId)
|
|
24
|
+
);
|
|
13
25
|
|
|
14
26
|
return !!itemModifier;
|
|
15
27
|
};
|
package/lib/item/hasModifiers.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
module.exports = () =>
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
2
|
function hasModifiers({ item, modifiers }) {
|
|
3
3
|
if (!item || !modifiers || !item.modifiers) return false;
|
|
4
4
|
|
|
5
|
-
return
|
|
6
|
-
|
|
7
|
-
!!modifiers.find(each => each._id === itemModifier.modifierId)
|
|
5
|
+
return modifiers.some(each =>
|
|
6
|
+
actions.hasModifier({ item, modifier: each })
|
|
8
7
|
);
|
|
9
8
|
};
|
package/lib/item/index.js
CHANGED
|
@@ -9,7 +9,6 @@ const removeModifiers = require('./removeModifiers');
|
|
|
9
9
|
const findOriginalItem = require('./findOriginalItem');
|
|
10
10
|
const create = require('./create');
|
|
11
11
|
const hasModifier = require('./hasModifier');
|
|
12
|
-
const isSelected = require('./isSelected');
|
|
13
12
|
const hasModifiers = require('./hasModifiers');
|
|
14
13
|
const addIndirectModifier = require('./addIndirectModifier');
|
|
15
14
|
const calculate = require('./calculate');
|
|
@@ -40,6 +39,8 @@ const hasPaymentMethodType = require('./hasPaymentMethodType');
|
|
|
40
39
|
const removePaymentModifiersByPaymentId = require('./removePaymentModifiersByPaymentId');
|
|
41
40
|
const hasPaymentModifierWithPaymentId = require('./hasPaymentModifierWithPaymentId');
|
|
42
41
|
const getBalance = require('./getBalance');
|
|
42
|
+
const getPipeModifiers = require('./getPipeModifiers');
|
|
43
|
+
const getInvalidRequiredModifiers = require('./getInvalidRequiredModifiers');
|
|
43
44
|
|
|
44
45
|
const itemActions = (deps = {}) => {
|
|
45
46
|
const actions = {};
|
|
@@ -61,7 +62,6 @@ const itemActions = (deps = {}) => {
|
|
|
61
62
|
findOriginalItem: findOriginalItem(innerDeps),
|
|
62
63
|
create: create(innerDeps),
|
|
63
64
|
hasModifier: hasModifier(innerDeps),
|
|
64
|
-
isSelected: isSelected(innerDeps),
|
|
65
65
|
hasModifiers: hasModifiers(innerDeps),
|
|
66
66
|
addIndirectModifier: addIndirectModifier(innerDeps),
|
|
67
67
|
calculate: calculate(innerDeps),
|
|
@@ -93,6 +93,8 @@ const itemActions = (deps = {}) => {
|
|
|
93
93
|
removePaymentModifiersByPaymentId(innerDeps),
|
|
94
94
|
hasPaymentModifierWithPaymentId: hasPaymentModifierWithPaymentId(innerDeps),
|
|
95
95
|
getBalance: getBalance(innerDeps),
|
|
96
|
+
getPipeModifiers: getPipeModifiers(innerDeps),
|
|
97
|
+
getInvalidRequiredModifiers: getInvalidRequiredModifiers(innerDeps),
|
|
96
98
|
});
|
|
97
99
|
|
|
98
100
|
Object.keys(freezedActions).forEach(actionName => {
|
|
@@ -19,7 +19,11 @@ module.exports = ({ actions }) => {
|
|
|
19
19
|
return arr;
|
|
20
20
|
}, []);
|
|
21
21
|
|
|
22
|
-
if (actions.includesInGroup(modifier))
|
|
22
|
+
if (actions.includesInGroup(modifier))
|
|
23
|
+
groupModifiers.unshift({
|
|
24
|
+
...actions.removeGroupData({ modifier }),
|
|
25
|
+
required: false,
|
|
26
|
+
});
|
|
23
27
|
|
|
24
28
|
return groupModifiers;
|
|
25
29
|
};
|
|
@@ -6,9 +6,7 @@ module.exports = ({ actions }) =>
|
|
|
6
6
|
});
|
|
7
7
|
|
|
8
8
|
const enabledModifiers = matchedModifiers.filter(
|
|
9
|
-
each =>
|
|
10
|
-
(actions.isDefault(each) || actions.isRequired(each)) &&
|
|
11
|
-
!(actions.isGroupOfValues(each) || actions.isGroupOfModifiers(each))
|
|
9
|
+
each => actions.isDefault(each) || actions.isRequired(each)
|
|
12
10
|
);
|
|
13
11
|
|
|
14
12
|
const relatedModifiers = enabledModifiers
|
package/lib/modifier/index.js
CHANGED
|
@@ -126,6 +126,8 @@ const mutateModifier = require('./mutateModifier');
|
|
|
126
126
|
const isFixedDiscount = require('./isFixedDiscount');
|
|
127
127
|
const removeLocked = require('./removeLocked');
|
|
128
128
|
const hasItems = require('./hasItems');
|
|
129
|
+
const removeGroupData = require('./removeGroupData');
|
|
130
|
+
const isRelatedModifier = require('./isRelatedModifier');
|
|
129
131
|
const getGroupedModifiers = require('./getGroupedModifiers');
|
|
130
132
|
const getNotesToModifierTags = require('./getNotesToModifierTags');
|
|
131
133
|
const isOptionsOverride = require('./isOptionsOverride');
|
|
@@ -281,6 +283,8 @@ const modifierActions = (deps = {}) => {
|
|
|
281
283
|
isFee: isFee(innerDeps),
|
|
282
284
|
isAdd: isAdd(innerDeps),
|
|
283
285
|
mutateModifier: mutateModifier(innerDeps),
|
|
286
|
+
removeGroupData: removeGroupData(innerDeps),
|
|
287
|
+
isRelatedModifier: isRelatedModifier(innerDeps),
|
|
284
288
|
getGroupedModifiers: getGroupedModifiers(innerDeps),
|
|
285
289
|
getNotesToModifierTags: getNotesToModifierTags(innerDeps),
|
|
286
290
|
isOptionsOverride: isOptionsOverride(innerDeps),
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module.exports = ({ actions }) =>
|
|
2
|
+
function isRelatedModifier({ _id, modifier }) {
|
|
3
|
+
if (!modifier || !_id) return false;
|
|
4
|
+
|
|
5
|
+
if (actions.isGroupOfModifiers(modifier)) {
|
|
6
|
+
const relatedModifiers = modifier.properties.group.modifiers;
|
|
7
|
+
return [actions.removeGroupData({ modifier }), ...relatedModifiers].some(
|
|
8
|
+
relatedModifier => isRelatedModifier({ _id, modifier: relatedModifier })
|
|
9
|
+
);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return modifier._id === _id || modifier.modifierId === _id;
|
|
13
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module.exports = ({ constants }) => {
|
|
2
|
+
const { Modifier } = constants;
|
|
3
|
+
|
|
4
|
+
return function removeGroupData({ modifier }) {
|
|
5
|
+
if (!modifier) return modifier;
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
...modifier,
|
|
9
|
+
properties:
|
|
10
|
+
modifier.properties && modifier.properties.group
|
|
11
|
+
? { ...modifier.properties, group: null }
|
|
12
|
+
: modifier.properties,
|
|
13
|
+
attributes: Array.isArray(modifier.attributes)
|
|
14
|
+
? modifier.attributes.filter(
|
|
15
|
+
attribute => attribute !== Modifier.Attributes.GROUP
|
|
16
|
+
)
|
|
17
|
+
: modifier.attributes,
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -173,7 +173,14 @@ module.exports = ({ actions, itemActions, modifierActions, utils, _ }) => {
|
|
|
173
173
|
const customer = actions.getCustomer(order);
|
|
174
174
|
const contains =
|
|
175
175
|
!_.isEmpty(item.modifiers) &&
|
|
176
|
-
modifierActions.contains(
|
|
176
|
+
modifierActions.contains(
|
|
177
|
+
item.modifiers.filter(
|
|
178
|
+
mod =>
|
|
179
|
+
!modifierActions.isRequired(mod) &&
|
|
180
|
+
!modifierActions.isGroupOfModifiers(mod)
|
|
181
|
+
),
|
|
182
|
+
modifier
|
|
183
|
+
);
|
|
177
184
|
|
|
178
185
|
const usingCount = contains
|
|
179
186
|
? modifierActions.getUsingCount(item.modifiers, modifier)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@darkpos/pricing",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.46",
|
|
4
4
|
"description": "Pricing calculator",
|
|
5
5
|
"author": "Dark POS",
|
|
6
6
|
"license": "ISC",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"test:me": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/order-payment-modifier.test.js",
|
|
16
16
|
"test:order": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/order.test.js",
|
|
17
17
|
"test:validateConditions": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/order/validateConditionsCalculate.test.js",
|
|
18
|
+
"test:hasModifier": "jest --runInBand --detectOpenHandles --logHeapUsage --forceExit ./__TEST__/modifier/hasModifier.test.js",
|
|
18
19
|
"lint": "eslint --quiet lib/"
|
|
19
20
|
},
|
|
20
21
|
"publishConfig": {
|
|
@@ -38,5 +39,5 @@
|
|
|
38
39
|
"supertest": "^6.2.3",
|
|
39
40
|
"supervisor": "^0.12.0"
|
|
40
41
|
},
|
|
41
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "e048578555dc3d2147bbc4e5b4e0d55809261dcc"
|
|
42
43
|
}
|
package/lib/item/isSelected.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
module.exports = ({ modifierActions, actions }) =>
|
|
2
|
-
function isSelected({ item, modifier }) {
|
|
3
|
-
if (!item || !item.modifiers || !modifier) return false;
|
|
4
|
-
let hasModifier = actions.hasModifier({ item, modifier });
|
|
5
|
-
|
|
6
|
-
if (!hasModifier && modifierActions.isGroupOfModifiers(modifier))
|
|
7
|
-
hasModifier = actions.hasModifiers({
|
|
8
|
-
item,
|
|
9
|
-
modifiers: modifier.properties.group.modifiers,
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
return hasModifier;
|
|
13
|
-
};
|