@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
@@ -153,7 +153,7 @@ describe('addItem function', () => {
153
153
  },
154
154
  {
155
155
  _id: '66cdf18a1e48455e128a4f64',
156
- modifierId: 'mod2',
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,104 @@
1
+ const usePricing = require('../../index');
2
+ const mockStores = require('../mocks/stores');
3
+
4
+ const session = {
5
+ store: mockStores[0],
6
+ };
7
+
8
+ const pricingService = usePricing(session);
9
+
10
+ describe('manualSplit', () => {
11
+ test('should split item by quantity between suborders', () => {
12
+ const currentOrder = { items: [{ _id: 'item1', quantity: 2 }] };
13
+ const subOrders = [
14
+ { items: [{ _id: 'item1', quantity: 2 }] },
15
+ { items: [] },
16
+ ];
17
+
18
+ const result = pricingService.order.manualSplit(
19
+ { orderIndex: 0, itemIndex: 0 },
20
+ 1,
21
+ currentOrder,
22
+ subOrders,
23
+ 'item1',
24
+ true
25
+ );
26
+
27
+ expect(result[0].items[0].quantity).toBe(1); // Decreases quantity in original order
28
+ expect(result[1].items[0].quantity).toBe(1); // Adds quantity to destination
29
+ });
30
+ test('should remove item if quantity becomes zero', () => {
31
+ const currentOrder = { items: [{ _id: 'item1', quantity: 1 }] };
32
+ const subOrders = [
33
+ { items: [{ _id: 'item1', quantity: 1 }] },
34
+ { items: [] },
35
+ ];
36
+
37
+ const result = pricingService.order.manualSplit(
38
+ { orderIndex: 0, itemIndex: 0 },
39
+ 1,
40
+ currentOrder,
41
+ subOrders,
42
+ 'item1',
43
+ true
44
+ );
45
+
46
+ expect(result[0].items.length).toBe(0); // Removes item from original order
47
+ expect(result[1].items[0].quantity).toBe(1); // Adds to destination
48
+ });
49
+
50
+ test('should call manualSplitByQuantity if splitQuantity is true', () => {
51
+ const currentOrder = { items: [{ _id: 'item1', quantity: 2 }] };
52
+ const subOrders = [
53
+ { items: [{ _id: 'item1', quantity: 2 }] },
54
+ { items: [] },
55
+ ];
56
+
57
+ const result = pricingService.order.manualSplit(
58
+ { orderIndex: 0, itemIndex: 0 },
59
+ 1,
60
+ currentOrder,
61
+ subOrders,
62
+ 'item1',
63
+ true
64
+ );
65
+
66
+ expect(result[0].items[0].quantity).toBe(1); // Split by quantity
67
+ expect(result[1].items[0].quantity).toBe(1);
68
+ });
69
+
70
+ test('should move item to destination subOrder if splitQuantity is false', () => {
71
+ const currentOrder = { items: [{ _id: 'item1', quantity: 2 }] };
72
+ const subOrders = [
73
+ { items: [{ _id: 'item1', quantity: 2 }] },
74
+ { items: [] },
75
+ ];
76
+
77
+ const result = pricingService.order.manualSplit(
78
+ { orderIndex: 0, itemIndex: 0 },
79
+ 1,
80
+ currentOrder,
81
+ subOrders,
82
+ 'item1',
83
+ false
84
+ );
85
+
86
+ expect(result[0].items.length).toBe(0); // Removes item from original suborder
87
+ expect(result[1].items[0]._id).toBe('item1'); // Moves item to destination
88
+ });
89
+
90
+ test('should return subOrders unchanged if indices are invalid', () => {
91
+ const subOrders = [{ items: [] }, { items: [] }];
92
+
93
+ const result = pricingService.order.manualSplit(
94
+ { orderIndex: null, itemIndex: null },
95
+ 1,
96
+ {},
97
+ subOrders,
98
+ 'item1',
99
+ false
100
+ );
101
+
102
+ expect(result).toEqual(subOrders); // No change
103
+ });
104
+ });