@darkpos/pricing 1.0.43 → 1.0.45

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 (79) hide show
  1. package/__TEST__/item/getItemsModifierDescription.test.js +75 -78
  2. package/__TEST__/mocks/addItemMock.js +18729 -19357
  3. package/__TEST__/mocks/partially-paid/order-modifiers.json +48 -51
  4. package/__TEST__/mocks/partially-paid/order-partially-paid.json +893 -860
  5. package/__TEST__/mocks/scripts/calculate-partially-paid/index.js +2 -2
  6. package/__TEST__/mocks/scripts/calculate-unpaid/index.js +2 -2
  7. package/__TEST__/mocks/unpaid/order-modifiers.json +48 -52
  8. package/__TEST__/modifier/calculate.test.js +1 -0
  9. package/__TEST__/modifier/getMatchTagsModifiers.test.js +72 -18
  10. package/__TEST__/modifier/getModifierIndex.test.js +10 -7
  11. package/__TEST__/modifier/getRecommendedModifiers.test.js +6 -4
  12. package/__TEST__/modifier/hasAttribute.test.js +11 -5
  13. package/__TEST__/modifier/hasMatchTags.test.js +33 -11
  14. package/__TEST__/modifier/sort.test.js +1 -1
  15. package/__TEST__/order/conditionsNotMet.test.js +133 -0
  16. package/__TEST__/order/manualSplit.test.js +104 -0
  17. package/__TEST__/order/order-payment-modifier.test.js +1117 -0
  18. package/__TEST__/order/order.test.js +53 -105
  19. package/__TEST__/order/pickEndDate.test.js +7 -153
  20. package/__TEST__/order/validateConditionsCalculate.test.js +396 -0
  21. package/lib/constants/index.js +1 -1
  22. package/lib/index.js +11 -2
  23. package/lib/item/calculate.js +93 -18
  24. package/lib/item/getAmounts.js +14 -0
  25. package/lib/item/getBalance.js +0 -1
  26. package/lib/item/getItemModifiersDescription.js +1 -0
  27. package/lib/item/getItemsBalance.js +9 -0
  28. package/lib/item/getItemsTotals.js +27 -0
  29. package/lib/item/getTotal.js +3 -1
  30. package/lib/item/hasPaymentMethodType.js +17 -0
  31. package/lib/item/hasPaymentModifierWithPaymentId.js +9 -0
  32. package/lib/item/index.js +15 -8
  33. package/lib/item/removePaymentModifiersByPaymentId.js +13 -0
  34. package/lib/modifier/areConditionsMet.js +61 -0
  35. package/lib/modifier/calculatePaymentDiscountModifier.js +31 -0
  36. package/lib/modifier/calculatePaymentFeeModifier.js +27 -0
  37. package/lib/modifier/calculatePaymentModifier.js +67 -0
  38. package/lib/modifier/createDiscountModifier.js +2 -1
  39. package/lib/modifier/createFeeModifier.js +2 -1
  40. package/lib/modifier/getChildren.js +8 -0
  41. package/lib/modifier/getComputedAmount.js +9 -0
  42. package/lib/modifier/hasPaymentMethodType.js +14 -0
  43. package/lib/modifier/index.js +33 -9
  44. package/lib/modifier/isCalculatedPaymentModifier.js +4 -0
  45. package/lib/modifier/isChild.js +6 -0
  46. package/lib/modifier/isDiscount.js +6 -2
  47. package/lib/modifier/isFee.js +5 -2
  48. package/lib/modifier/isPaymentMethodModifier.js +4 -1
  49. package/lib/modifier/isPaymentTypeModifier.js +4 -1
  50. package/lib/modifier/isPercentage.js +10 -0
  51. package/lib/modifier/isValid.js +12 -0
  52. package/lib/modifier/sort.js +28 -0
  53. package/lib/modifier/validate.js +14 -0
  54. package/lib/modifier/validateDateDaysDiff.js +30 -0
  55. package/lib/modifier/validateInArr.js +12 -0
  56. package/lib/modifier/validateNumberCondition.js +20 -0
  57. package/lib/modifier/validateRequiredModifiers.js +16 -0
  58. package/lib/order/addItemModifier.js +72 -28
  59. package/lib/order/applyPayment.js +61 -0
  60. package/lib/order/calculate.js +45 -22
  61. package/lib/order/getBalance.js +0 -1
  62. package/lib/order/getOrdersBalance.js +8 -0
  63. package/lib/order/index.js +9 -10
  64. package/lib/order/manualSplit.js +34 -0
  65. package/lib/order/manualSplitByQuantity.js +50 -0
  66. package/lib/store/getRecommendedEndDate.js +13 -0
  67. package/lib/store/index.js +25 -0
  68. package/package.json +6 -4
  69. package/lib/item/getBalanceToPay.js +0 -12
  70. package/lib/item/getTotals.js +0 -40
  71. package/lib/item/markModifiersAsLocked.js +0 -11
  72. package/lib/modifier/createPaymentModifier.js +0 -12
  73. package/lib/modifier/findByPaymentMethod.js +0 -10
  74. package/lib/modifier/findByPaymentType.js +0 -10
  75. package/lib/modifier/getLockedModifiers.js +0 -5
  76. package/lib/order/markModifiersAsLocked.js +0 -14
  77. package/lib/order/removeModifiersWithPaymentMethods.js +0 -29
  78. package/lib/order/removeModifiersWithPaymentTypes.js +0 -27
  79. package/lib/{order → store}/pickEndDate.js +2 -2
@@ -1,30 +1,52 @@
1
- const _ = require('lodash');
2
- const getItemModifiersDescriptionFunction = require('../../lib/item/getItemModifiersDescription');
3
-
4
- describe('getItemModifiersDescription Function', () => {
5
- const modifierActions = {
6
- isHidden: jest.fn(),
7
- isAmountOverride: jest.fn(),
8
- isDepartment: jest.fn(),
9
- isDirect: jest.fn(),
10
- isGroupOfValues: jest.fn(),
11
- getSelectedValues: jest.fn(),
12
- getGroupedModifiers: jest.fn(),
13
- getNotesToModifierTags: jest.fn(),
14
- };
15
-
16
- const settings = {
17
- order: {
18
- groupModifiers: false,
1
+ const usePricing = require('../../lib/index');
2
+
3
+ const pricingService = usePricing();
4
+
5
+ const { getItemModifiersDescription } = pricingService.item;
6
+ const mockModifier = {
7
+ _id: '67106323db3c71afb52b07b7',
8
+ attributes: ['override'],
9
+ modifierId: '66e0a6c2f0f1df1a20a00bbf',
10
+ _parentId: null,
11
+ locked: false,
12
+ name: 'ItemsPriceManual',
13
+ sku: '',
14
+ description: '',
15
+ group: '',
16
+ type: '',
17
+ tags: ['default'],
18
+ order: 0,
19
+ included: false,
20
+ direct: true,
21
+ hidden: false,
22
+ print: true,
23
+ required: false,
24
+ recommended: false,
25
+ default: false,
26
+ code: '',
27
+ properties: {
28
+ override: {
29
+ field: 'price',
30
+ type: 'manual',
19
31
  },
20
- };
21
-
22
- const getItemModifiersDescription = getItemModifiersDescriptionFunction({
23
- modifierActions,
24
- _,
25
- settings,
26
- });
27
-
32
+ group: {
33
+ modifiers: [],
34
+ items: [],
35
+ },
36
+ sort: null,
37
+ },
38
+ _computed: {
39
+ amount: 0,
40
+ description: 'ItemsPriceManual ($0.00)',
41
+ },
42
+ addModifiers: [],
43
+ delModifiers: [],
44
+ conditions: null,
45
+ compute: null,
46
+ _createdAt: '2024-10-17T01:12:34.370Z',
47
+ _updatedAt: '2024-10-17T01:12:34.370Z',
48
+ };
49
+ describe('getItemModifiersDescription Function', () => {
28
50
  beforeEach(() => {
29
51
  jest.clearAllMocks();
30
52
  });
@@ -38,47 +60,32 @@ describe('getItemModifiersDescription Function', () => {
38
60
  const item = {
39
61
  modifiers: [
40
62
  {
63
+ ...mockModifier,
41
64
  _id: 'mod1',
42
65
  name: 'Modifier 1',
43
66
  _computed: { description: 'Desc 1' },
44
67
  },
45
- { _id: 'mod2', name: 'Modifier 2' },
68
+ { ...mockModifier, hidden: true, _id: 'mod2', name: 'Modifier 2' },
46
69
  ],
47
70
  };
48
71
 
49
- modifierActions.isHidden
50
- .mockReturnValueOnce(false)
51
- .mockReturnValueOnce(false);
52
- modifierActions.isAmountOverride
53
- .mockReturnValueOnce(false)
54
- .mockReturnValueOnce(false);
55
- modifierActions.isDepartment
56
- .mockReturnValueOnce(false)
57
- .mockReturnValueOnce(false);
58
- modifierActions.isDirect
59
- .mockReturnValueOnce(true)
60
- .mockReturnValueOnce(true);
61
- modifierActions.isGroupOfValues
62
- .mockReturnValueOnce(false)
63
- .mockReturnValueOnce(false);
64
- modifierActions.getNotesToModifierTags.mockReturnValueOnce([
65
- { label: 'Desc 1', value: 'mod1' },
66
- ]);
67
-
68
72
  const result = getItemModifiersDescription(item);
69
73
 
70
- expect(result).toEqual([{ label: 'Desc 1', value: 'mod1' }]);
71
-
72
- expect(modifierActions.isHidden).toHaveBeenCalledTimes(2);
73
- expect(modifierActions.isAmountOverride).toHaveBeenCalledTimes(2);
74
- expect(modifierActions.isDepartment).toHaveBeenCalledTimes(2);
75
- expect(modifierActions.isDirect).toHaveBeenCalledTimes(2);
74
+ expect(result).toEqual([
75
+ {
76
+ label: 'Desc 1',
77
+ value: 'mod1',
78
+ data: item.modifiers[0],
79
+ quantity: 1,
80
+ },
81
+ ]);
76
82
  });
77
83
 
78
84
  test('should handle selected override options in the modifier', () => {
79
85
  const item = {
80
86
  modifiers: [
81
87
  {
88
+ ...mockModifier,
82
89
  _id: 'mod1',
83
90
  name: 'Modifier 1',
84
91
  compute: { amount: 100 },
@@ -87,18 +94,6 @@ describe('getItemModifiersDescription Function', () => {
87
94
  ],
88
95
  };
89
96
 
90
- modifierActions.isHidden.mockReturnValueOnce(false);
91
- modifierActions.isAmountOverride.mockReturnValueOnce(false);
92
- modifierActions.isDepartment.mockReturnValueOnce(false);
93
- modifierActions.isDirect.mockReturnValueOnce(true);
94
- modifierActions.getNotesToModifierTags.mockReturnValueOnce([
95
- {
96
- label: 'Modifier 1 100 kg',
97
- value: 'mod1',
98
- data: item.modifiers[0],
99
- quantity: 0,
100
- },
101
- ]);
102
97
  const result = getItemModifiersDescription(item);
103
98
 
104
99
  expect(result).toEqual([
@@ -112,9 +107,16 @@ describe('getItemModifiersDescription Function', () => {
112
107
  });
113
108
 
114
109
  test('should group modifiers when groupModifiers setting is true', () => {
110
+ const pricingService2 = usePricing({
111
+ store: { _settings: { order: { groupModifiers: true } } },
112
+ });
113
+
114
+ const { getItemModifiersDescription: getItemModifiersDescription2 } =
115
+ pricingService2.item;
115
116
  const item = {
116
117
  modifiers: [
117
118
  {
119
+ ...mockModifier,
118
120
  _id: 'mod1',
119
121
  name: 'Modifier 1',
120
122
  _computed: { description: 'Desc 1' },
@@ -122,20 +124,15 @@ describe('getItemModifiersDescription Function', () => {
122
124
  ],
123
125
  };
124
126
 
125
- settings.order.groupModifiers = true;
126
- modifierActions.isHidden.mockReturnValueOnce(false);
127
- modifierActions.isAmountOverride.mockReturnValueOnce(false);
128
- modifierActions.isDepartment.mockReturnValueOnce(false);
129
- modifierActions.isDirect.mockReturnValueOnce(true);
130
- modifierActions.getGroupedModifiers.mockReturnValueOnce([
131
- { label: 'Grouped Modifier', value: 'mod1' },
132
- ]);
133
- modifierActions.getNotesToModifierTags.mockReturnValueOnce([
134
- { label: 'Grouped Modifier', value: 'mod1' },
135
- ]);
127
+ const result = getItemModifiersDescription2(item);
136
128
 
137
- const result = getItemModifiersDescription(item);
138
-
139
- expect(result).toEqual([{ label: 'Grouped Modifier', value: 'mod1' }]);
129
+ expect(result).toEqual([
130
+ {
131
+ label: '1 Desc 1',
132
+ value: 'mod1',
133
+ quantity: 1,
134
+ data: item.modifiers[0],
135
+ },
136
+ ]);
140
137
  });
141
138
  });