@darkpos/pricing 1.0.44 → 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.
Files changed (67) hide show
  1. package/__TEST__/item/getItemsModifierDescription.test.js +75 -85
  2. package/__TEST__/mocks/scripts/calculate-partially-paid/index.js +2 -2
  3. package/__TEST__/mocks/scripts/calculate-unpaid/index.js +2 -2
  4. package/__TEST__/modifier/hasModifier.test.js +1626 -0
  5. package/__TEST__/order/addItem.test.js +2 -4
  6. package/__TEST__/order/manualSplit.test.js +104 -0
  7. package/__TEST__/order/order-payment-modifier.test.js +1117 -0
  8. package/__TEST__/order/order.test.js +50 -104
  9. package/__TEST__/order/pickEndDate.test.js +7 -153
  10. package/__TEST__/order/validateConditionsCalculate.test.js +42 -43
  11. package/lib/item/calculate.js +67 -9
  12. package/lib/item/getAmounts.js +14 -0
  13. package/lib/item/getBalance.js +0 -1
  14. package/lib/item/getInvalidRequiredModifiers.js +24 -0
  15. package/lib/item/getItemModifiersDescription.js +2 -1
  16. package/lib/item/getItemsBalance.js +9 -0
  17. package/lib/item/getItemsTotals.js +27 -0
  18. package/lib/item/getPipeModifiers.js +10 -0
  19. package/lib/item/getTotal.js +3 -1
  20. package/lib/item/hasModifier.js +21 -9
  21. package/lib/item/hasModifiers.js +3 -4
  22. package/lib/item/hasPaymentMethodType.js +17 -0
  23. package/lib/item/hasPaymentModifierWithPaymentId.js +9 -0
  24. package/lib/item/index.js +19 -10
  25. package/lib/item/removePaymentModifiersByPaymentId.js +13 -0
  26. package/lib/modifier/areConditionsMet.js +3 -13
  27. package/lib/modifier/calculatePaymentDiscountModifier.js +31 -0
  28. package/lib/modifier/calculatePaymentFeeModifier.js +27 -0
  29. package/lib/modifier/calculatePaymentModifier.js +67 -0
  30. package/lib/modifier/createDiscountModifier.js +2 -1
  31. package/lib/modifier/createFeeModifier.js +2 -1
  32. package/lib/modifier/duplicate.js +1 -1
  33. package/lib/modifier/getChildren.js +8 -0
  34. package/lib/modifier/getComputedAmount.js +9 -0
  35. package/lib/modifier/getGroupRelatedModifiers.js +5 -1
  36. package/lib/modifier/getItemModifiers.js +1 -3
  37. package/lib/modifier/hasPaymentMethodType.js +14 -0
  38. package/lib/modifier/index.js +23 -4
  39. package/lib/modifier/isCalculatedPaymentModifier.js +4 -0
  40. package/lib/modifier/isChild.js +6 -0
  41. package/lib/modifier/isDiscount.js +6 -2
  42. package/lib/modifier/isFee.js +5 -2
  43. package/lib/modifier/isPaymentMethodModifier.js +4 -1
  44. package/lib/modifier/isPaymentTypeModifier.js +4 -1
  45. package/lib/modifier/isPercentage.js +10 -0
  46. package/lib/modifier/isRelatedModifier.js +13 -0
  47. package/lib/modifier/removeGroupData.js +20 -0
  48. package/lib/modifier/sort.js +28 -0
  49. package/lib/order/addItemModifier.js +8 -1
  50. package/lib/order/applyPayment.js +61 -0
  51. package/lib/order/calculate.js +34 -16
  52. package/lib/order/getBalance.js +0 -1
  53. package/lib/order/getOrdersBalance.js +8 -0
  54. package/lib/order/index.js +9 -8
  55. package/lib/order/manualSplit.js +34 -0
  56. package/lib/order/manualSplitByQuantity.js +50 -0
  57. package/lib/store/pickEndDate.js +2 -2
  58. package/package.json +7 -4
  59. package/lib/item/getBalanceToPay.js +0 -12
  60. package/lib/item/getTotals.js +0 -40
  61. package/lib/item/isSelected.js +0 -13
  62. package/lib/item/markModifiersAsLocked.js +0 -13
  63. package/lib/modifier/createPaymentModifier.js +0 -12
  64. package/lib/modifier/getLockedModifiers.js +0 -5
  65. package/lib/order/markModifiersAsLocked.js +0 -14
  66. package/lib/order/removeModifiersWithPaymentMethods.js +0 -28
  67. package/lib/order/removeModifiersWithPaymentTypes.js +0 -26
@@ -1,40 +0,0 @@
1
- /* eslint-disable no-restricted-syntax */
2
-
3
- module.exports = ({ utils }) => {
4
- const { math } = utils;
5
- return function getTotals(items) {
6
- let subTotals = {};
7
- let subTotal = 0;
8
-
9
- for (const item of items) {
10
- subTotal = math.add(subTotal, item.subTotals._actual);
11
- const keys = Object.keys(item.subTotals).filter(
12
- key => !key.includes('_')
13
- );
14
- for (const key of keys) {
15
- subTotals[key] = math.add(subTotals[key] || 0, item.subTotals[key]);
16
- }
17
- }
18
-
19
- const total = math.toDecimalPlaces(
20
- Object.keys(subTotals).reduce(
21
- (acc, key) => math.add(acc, subTotals[key]),
22
- subTotal
23
- )
24
- );
25
-
26
- subTotals = Object.keys(subTotals).reduce(
27
- (acc, key) => ({
28
- ...acc,
29
- [key]: math.toDecimalPlaces(subTotals[key]),
30
- }),
31
- {}
32
- );
33
-
34
- return {
35
- subTotals,
36
- subTotal,
37
- total,
38
- };
39
- };
40
- };
@@ -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
- };
@@ -1,13 +0,0 @@
1
- module.exports = () =>
2
- function markModifiersAsLocked({ item, modifierIds }) {
3
- if (!item || !Array.isArray(item.modifiers)) return {};
4
-
5
- return {
6
- ...item,
7
- modifiers: item.modifiers.map(mod =>
8
- modifierIds.includes(mod._parentId || mod._id)
9
- ? { ...mod, locked: true }
10
- : mod
11
- ),
12
- };
13
- };
@@ -1,12 +0,0 @@
1
- module.exports = ({ actions }) =>
2
- function createPaymentModifier({
3
- modifier = {},
4
- items = [],
5
- locked = false,
6
- }) {
7
- return {
8
- ...actions.duplicate(modifier),
9
- items,
10
- locked,
11
- };
12
- };
@@ -1,5 +0,0 @@
1
- module.exports = () =>
2
- function getLockedModifiers(modifiers = []) {
3
- if (!Array.isArray(modifiers)) return [];
4
- return modifiers.filter(modifier => modifier.locked);
5
- };
@@ -1,14 +0,0 @@
1
- module.exports = ({ itemActions }) =>
2
- function markModifiersAsLocked({ order, modifierIds }) {
3
- if (!order || !Array.isArray(order.modifiers)) return {};
4
-
5
- return {
6
- ...order,
7
- modifiers: order.modifiers.map(mod =>
8
- modifierIds.includes(mod._id) ? { ...mod, locked: true } : mod
9
- ),
10
- items: (order.items || []).map(item =>
11
- itemActions.markModifiersAsLocked({ item, modifierIds })
12
- ),
13
- };
14
- };
@@ -1,28 +0,0 @@
1
- module.exports = () => {
2
- const hasPaymentMethods = modifier =>
3
- modifier.conditions &&
4
- modifier.conditions.some(condition => condition.key === 'paymentMethods');
5
-
6
- return function removeModifiersWithPaymentMethods({
7
- order,
8
- applyItems = false,
9
- }) {
10
- if (!order || !Array.isArray(order.modifiers)) return order;
11
-
12
- const newOrder = { ...order };
13
- newOrder.modifiers = order.modifiers.filter(
14
- each => !hasPaymentMethods(each)
15
- );
16
-
17
- if (applyItems && Array.isArray(order.items)) {
18
- newOrder.items = order.items.map(item => {
19
- if (!Array.isArray(item.modifiers)) return item;
20
- return {
21
- ...item,
22
- modifiers: item.modifiers.filter(each => !hasPaymentMethods(each)),
23
- };
24
- });
25
- }
26
- return newOrder;
27
- };
28
- };
@@ -1,26 +0,0 @@
1
- module.exports = () => {
2
- const hasPaymentTypes = modifier =>
3
- modifier.conditions &&
4
- modifier.conditions.some(condition => condition.key === 'paymentMethods');
5
-
6
- return function removeModifiersWithPaymentTypes({
7
- order,
8
- applyItems = false,
9
- }) {
10
- if (!order || !Array.isArray(order.modifiers)) return order;
11
-
12
- const newOrder = { ...order };
13
- newOrder.modifiers = order.modifiers.filter(each => !hasPaymentTypes(each));
14
-
15
- if (applyItems && Array.isArray(order.items)) {
16
- newOrder.items = order.items.map(item => {
17
- if (!Array.isArray(item.modifiers)) return item;
18
- return {
19
- ...item,
20
- modifiers: item.modifiers.filter(each => !hasPaymentTypes(each)),
21
- };
22
- });
23
- }
24
- return newOrder;
25
- };
26
- };