@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,31 +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
- isValid: jest.fn(),
15
- };
16
-
17
- const settings = {
18
- order: {
19
- 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',
20
31
  },
21
- };
22
-
23
- const getItemModifiersDescription = getItemModifiersDescriptionFunction({
24
- modifierActions,
25
- _,
26
- settings,
27
- });
28
-
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', () => {
29
50
  beforeEach(() => {
30
51
  jest.clearAllMocks();
31
52
  });
@@ -39,51 +60,32 @@ describe('getItemModifiersDescription Function', () => {
39
60
  const item = {
40
61
  modifiers: [
41
62
  {
63
+ ...mockModifier,
42
64
  _id: 'mod1',
43
65
  name: 'Modifier 1',
44
66
  _computed: { description: 'Desc 1' },
45
67
  },
46
- { _id: 'mod2', name: 'Modifier 2' },
68
+ { ...mockModifier, hidden: true, _id: 'mod2', name: 'Modifier 2' },
47
69
  ],
48
70
  };
49
71
 
50
- modifierActions.isHidden
51
- .mockReturnValueOnce(false)
52
- .mockReturnValueOnce(false);
53
- modifierActions.isAmountOverride
54
- .mockReturnValueOnce(false)
55
- .mockReturnValueOnce(false);
56
- modifierActions.isDepartment
57
- .mockReturnValueOnce(false)
58
- .mockReturnValueOnce(false);
59
- modifierActions.isDirect
60
- .mockReturnValueOnce(true)
61
- .mockReturnValueOnce(true);
62
- modifierActions.isGroupOfValues
63
- .mockReturnValueOnce(false)
64
- .mockReturnValueOnce(false);
65
- modifierActions.isValid
66
- .mockReturnValueOnce(false)
67
- .mockReturnValueOnce(false);
68
- modifierActions.getNotesToModifierTags.mockReturnValueOnce([
69
- { label: 'Desc 1', value: 'mod1' },
70
- ]);
71
-
72
72
  const result = getItemModifiersDescription(item);
73
73
 
74
- expect(result).toEqual([{ label: 'Desc 1', value: 'mod1' }]);
75
-
76
- expect(modifierActions.isHidden).toHaveBeenCalledTimes(2);
77
- expect(modifierActions.isValid).toHaveBeenCalledTimes(2);
78
- expect(modifierActions.isAmountOverride).toHaveBeenCalledTimes(0);
79
- expect(modifierActions.isDepartment).toHaveBeenCalledTimes(0);
80
- expect(modifierActions.isDirect).toHaveBeenCalledTimes(0);
74
+ expect(result).toEqual([
75
+ {
76
+ label: 'Desc 1',
77
+ value: 'mod1',
78
+ data: item.modifiers[0],
79
+ quantity: 1,
80
+ },
81
+ ]);
81
82
  });
82
83
 
83
84
  test('should handle selected override options in the modifier', () => {
84
85
  const item = {
85
86
  modifiers: [
86
87
  {
88
+ ...mockModifier,
87
89
  _id: 'mod1',
88
90
  name: 'Modifier 1',
89
91
  compute: { amount: 100 },
@@ -92,19 +94,6 @@ describe('getItemModifiersDescription Function', () => {
92
94
  ],
93
95
  };
94
96
 
95
- modifierActions.isHidden.mockReturnValueOnce(false);
96
- modifierActions.isValid.mockReturnValueOnce(false);
97
- modifierActions.isAmountOverride.mockReturnValueOnce(false);
98
- modifierActions.isDepartment.mockReturnValueOnce(false);
99
- modifierActions.isDirect.mockReturnValueOnce(true);
100
- modifierActions.getNotesToModifierTags.mockReturnValueOnce([
101
- {
102
- label: 'Modifier 1 100 kg',
103
- value: 'mod1',
104
- data: item.modifiers[0],
105
- quantity: 0,
106
- },
107
- ]);
108
97
  const result = getItemModifiersDescription(item);
109
98
 
110
99
  expect(result).toEqual([
@@ -118,9 +107,16 @@ describe('getItemModifiersDescription Function', () => {
118
107
  });
119
108
 
120
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;
121
116
  const item = {
122
117
  modifiers: [
123
118
  {
119
+ ...mockModifier,
124
120
  _id: 'mod1',
125
121
  name: 'Modifier 1',
126
122
  _computed: { description: 'Desc 1' },
@@ -128,21 +124,15 @@ describe('getItemModifiersDescription Function', () => {
128
124
  ],
129
125
  };
130
126
 
131
- settings.order.groupModifiers = true;
132
- modifierActions.isHidden.mockReturnValueOnce(false);
133
- modifierActions.isValid.mockReturnValueOnce(false);
134
- modifierActions.isAmountOverride.mockReturnValueOnce(false);
135
- modifierActions.isDepartment.mockReturnValueOnce(false);
136
- modifierActions.isDirect.mockReturnValueOnce(true);
137
- modifierActions.getGroupedModifiers.mockReturnValueOnce([
138
- { label: 'Grouped Modifier', value: 'mod1' },
139
- ]);
140
- modifierActions.getNotesToModifierTags.mockReturnValueOnce([
141
- { label: 'Grouped Modifier', value: 'mod1' },
142
- ]);
127
+ const result = getItemModifiersDescription2(item);
143
128
 
144
- const result = getItemModifiersDescription(item);
145
-
146
- 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
+ ]);
147
137
  });
148
138
  });
@@ -9,8 +9,8 @@ const inputItems = require('../../partially-paid/input-items.json');
9
9
  const pricingService = usePricing();
10
10
 
11
11
  const paymentModifiers = orderModifiers.map(orderMod =>
12
- pricingService.modifier.createPaymentModifier({
13
- modifier: orderMod,
12
+ pricingService.modifier.duplicate({
13
+ orderMod,
14
14
  items: inputItems,
15
15
  })
16
16
  );
@@ -9,8 +9,8 @@ const inputItems = require('../../unpaid/input-items.json');
9
9
  const pricingService = usePricing();
10
10
 
11
11
  const paymentModifiers = orderModifiers.map(orderMod =>
12
- pricingService.modifier.createPaymentModifier({
13
- modifier: orderMod,
12
+ pricingService.modifier.duplicate({
13
+ ...orderMod,
14
14
  items: inputItems,
15
15
  })
16
16
  );