@accounter/server 0.0.9-alpha-20251217093036-7168648b507d62946aa287af4ea690b73b077b2d → 0.0.9-alpha-20251217131153-65f961a4072436d7f1042ea8ea4d96534cb3650e

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 (69) hide show
  1. package/CHANGELOG.md +16 -8
  2. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js +45 -122
  3. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js.map +1 -1
  4. package/dist/server/src/modules/charges-matcher/__tests__/auto-match.test.js +45 -29
  5. package/dist/server/src/modules/charges-matcher/__tests__/auto-match.test.js.map +1 -1
  6. package/dist/server/src/modules/charges-matcher/__tests__/charge-validator.test.js +2 -11
  7. package/dist/server/src/modules/charges-matcher/__tests__/charge-validator.test.js.map +1 -1
  8. package/dist/server/src/modules/charges-matcher/__tests__/date-confidence.test.js +25 -0
  9. package/dist/server/src/modules/charges-matcher/__tests__/date-confidence.test.js.map +1 -1
  10. package/dist/server/src/modules/charges-matcher/__tests__/document-aggregator.test.js.map +1 -1
  11. package/dist/server/src/modules/charges-matcher/__tests__/document-amount.test.js +65 -64
  12. package/dist/server/src/modules/charges-matcher/__tests__/document-amount.test.js.map +1 -1
  13. package/dist/server/src/modules/charges-matcher/__tests__/match-scorer.test.js +494 -60
  14. package/dist/server/src/modules/charges-matcher/__tests__/match-scorer.test.js.map +1 -1
  15. package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js +34 -98
  16. package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js.map +1 -1
  17. package/dist/server/src/modules/charges-matcher/__tests__/single-match.test.js +79 -59
  18. package/dist/server/src/modules/charges-matcher/__tests__/single-match.test.js.map +1 -1
  19. package/dist/server/src/modules/charges-matcher/helpers/charge-validator.helper.js +6 -4
  20. package/dist/server/src/modules/charges-matcher/helpers/charge-validator.helper.js.map +1 -1
  21. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.d.ts +9 -2
  22. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.js +24 -2
  23. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.js.map +1 -1
  24. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.d.ts +1 -4
  25. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.js +2 -1
  26. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.js.map +1 -1
  27. package/dist/server/src/modules/charges-matcher/index.d.ts +0 -1
  28. package/dist/server/src/modules/charges-matcher/index.js +0 -1
  29. package/dist/server/src/modules/charges-matcher/index.js.map +1 -1
  30. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.d.ts +2 -1
  31. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.js +2 -2
  32. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.js.map +1 -1
  33. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js +2 -2
  34. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js.map +1 -1
  35. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.d.ts +4 -5
  36. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.js +5 -4
  37. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.js.map +1 -1
  38. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.d.ts +5 -3
  39. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.js +70 -13
  40. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.js.map +1 -1
  41. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.d.ts +4 -2
  42. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.js +15 -7
  43. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.js.map +1 -1
  44. package/dist/server/src/modules/charges-matcher/providers/transaction-aggregator.d.ts +1 -1
  45. package/dist/server/src/modules/charges-matcher/types.d.ts +2 -4
  46. package/dist/server/src/modules/charges-matcher/types.js.map +1 -1
  47. package/package.json +2 -2
  48. package/src/modules/charges-matcher/README.md +14 -3
  49. package/src/modules/charges-matcher/__tests__/auto-match-integration.test.ts +52 -100
  50. package/src/modules/charges-matcher/__tests__/auto-match.test.ts +51 -29
  51. package/src/modules/charges-matcher/__tests__/charge-validator.test.ts +2 -13
  52. package/src/modules/charges-matcher/__tests__/date-confidence.test.ts +29 -0
  53. package/src/modules/charges-matcher/__tests__/document-aggregator.test.ts +0 -1
  54. package/src/modules/charges-matcher/__tests__/document-amount.test.ts +66 -65
  55. package/src/modules/charges-matcher/__tests__/match-scorer.test.ts +552 -60
  56. package/src/modules/charges-matcher/__tests__/single-match-integration.test.ts +43 -73
  57. package/src/modules/charges-matcher/__tests__/single-match.test.ts +81 -59
  58. package/src/modules/charges-matcher/documentation/SPEC.md +276 -4
  59. package/src/modules/charges-matcher/helpers/charge-validator.helper.ts +7 -5
  60. package/src/modules/charges-matcher/helpers/date-confidence.helper.ts +32 -2
  61. package/src/modules/charges-matcher/helpers/document-amount.helper.ts +2 -12
  62. package/src/modules/charges-matcher/index.ts +0 -1
  63. package/src/modules/charges-matcher/providers/auto-match.provider.ts +5 -3
  64. package/src/modules/charges-matcher/providers/charges-matcher.provider.ts +8 -2
  65. package/src/modules/charges-matcher/providers/document-aggregator.ts +12 -11
  66. package/src/modules/charges-matcher/providers/match-scorer.provider.ts +97 -17
  67. package/src/modules/charges-matcher/providers/single-match.provider.ts +21 -8
  68. package/src/modules/charges-matcher/providers/transaction-aggregator.ts +1 -1
  69. package/src/modules/charges-matcher/types.ts +2 -5
@@ -1,182 +1,183 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
  import { normalizeDocumentAmount, } from '../helpers/document-amount.helper.js';
3
+ import { DocumentType } from '../../../shared/enums.js';
3
4
  describe('Document Amount Normalization', () => {
4
5
  describe('INVOICE - Business is Debtor (User is Creditor)', () => {
5
6
  it('should return positive amount when business is debtor', () => {
6
7
  // Business owes user (user is creditor, business is debtor)
7
- const result = normalizeDocumentAmount(100, false, 'INVOICE');
8
+ const result = normalizeDocumentAmount(100, false, DocumentType.Invoice);
8
9
  expect(result).toBe(100);
9
10
  });
10
11
  it('should handle decimal amounts', () => {
11
- const result = normalizeDocumentAmount(150.75, false, 'INVOICE');
12
+ const result = normalizeDocumentAmount(150.75, false, DocumentType.Invoice);
12
13
  expect(result).toBe(150.75);
13
14
  });
14
15
  it('should handle large amounts', () => {
15
- const result = normalizeDocumentAmount(1000000, false, 'INVOICE');
16
+ const result = normalizeDocumentAmount(1000000, false, DocumentType.Invoice);
16
17
  expect(result).toBe(1000000);
17
18
  });
18
19
  });
19
20
  describe('INVOICE - Business is Creditor (User is Debtor)', () => {
20
21
  it('should return negative amount when business is creditor', () => {
21
22
  // User owes business (user is debtor, business is creditor)
22
- const result = normalizeDocumentAmount(100, true, 'INVOICE');
23
+ const result = normalizeDocumentAmount(100, true, DocumentType.Invoice);
23
24
  expect(result).toBe(-100);
24
25
  });
25
26
  it('should handle decimal amounts', () => {
26
- const result = normalizeDocumentAmount(250.50, true, 'INVOICE');
27
+ const result = normalizeDocumentAmount(250.50, true, DocumentType.Invoice);
27
28
  expect(result).toBe(-250.50);
28
29
  });
29
30
  it('should handle large amounts', () => {
30
- const result = normalizeDocumentAmount(5000000, true, 'INVOICE');
31
+ const result = normalizeDocumentAmount(5000000, true, DocumentType.Invoice);
31
32
  expect(result).toBe(-5000000);
32
33
  });
33
34
  });
34
35
  describe('CREDIT_INVOICE - Business is Debtor (User is Creditor)', () => {
35
36
  it('should return negative amount for credit invoice with business debtor', () => {
36
37
  // Credit invoice: user owes refund to business (opposite of regular invoice)
37
- const result = normalizeDocumentAmount(100, false, 'CREDIT_INVOICE');
38
+ const result = normalizeDocumentAmount(100, false, DocumentType.CreditInvoice);
38
39
  expect(result).toBe(-100);
39
40
  });
40
41
  it('should handle decimal amounts', () => {
41
- const result = normalizeDocumentAmount(75.25, false, 'CREDIT_INVOICE');
42
+ const result = normalizeDocumentAmount(75.25, false, DocumentType.CreditInvoice);
42
43
  expect(result).toBe(-75.25);
43
44
  });
44
45
  it('should handle large amounts', () => {
45
- const result = normalizeDocumentAmount(2000000, false, 'CREDIT_INVOICE');
46
+ const result = normalizeDocumentAmount(2000000, false, DocumentType.CreditInvoice);
46
47
  expect(result).toBe(-2000000);
47
48
  });
48
49
  });
49
50
  describe('CREDIT_INVOICE - Business is Creditor (User is Debtor)', () => {
50
51
  it('should return positive amount for credit invoice with business creditor (double negation)', () => {
51
52
  // Credit invoice: business owes refund to user (double negation: -1 * -1 = 1)
52
- const result = normalizeDocumentAmount(100, true, 'CREDIT_INVOICE');
53
+ const result = normalizeDocumentAmount(100, true, DocumentType.CreditInvoice);
53
54
  expect(result).toBe(100);
54
55
  });
55
56
  it('should handle decimal amounts', () => {
56
- const result = normalizeDocumentAmount(125.99, true, 'CREDIT_INVOICE');
57
+ const result = normalizeDocumentAmount(125.99, true, DocumentType.CreditInvoice);
57
58
  expect(result).toBe(125.99);
58
59
  });
59
60
  it('should handle large amounts', () => {
60
- const result = normalizeDocumentAmount(3000000, true, 'CREDIT_INVOICE');
61
+ const result = normalizeDocumentAmount(3000000, true, DocumentType.CreditInvoice);
61
62
  expect(result).toBe(3000000);
62
63
  });
63
64
  });
64
65
  describe('RECEIPT - Business is Debtor (User is Creditor)', () => {
65
66
  it('should return positive amount when business is debtor', () => {
66
- const result = normalizeDocumentAmount(100, false, 'RECEIPT');
67
+ const result = normalizeDocumentAmount(100, false, DocumentType.Receipt);
67
68
  expect(result).toBe(100);
68
69
  });
69
70
  it('should handle typical receipt amounts', () => {
70
- const result = normalizeDocumentAmount(49.99, false, 'RECEIPT');
71
+ const result = normalizeDocumentAmount(49.99, false, DocumentType.Receipt);
71
72
  expect(result).toBe(49.99);
72
73
  });
73
74
  });
74
75
  describe('RECEIPT - Business is Creditor (User is Debtor)', () => {
75
76
  it('should return negative amount when business is creditor', () => {
76
- const result = normalizeDocumentAmount(100, true, 'RECEIPT');
77
+ const result = normalizeDocumentAmount(100, true, DocumentType.Receipt);
77
78
  expect(result).toBe(-100);
78
79
  });
79
80
  it('should handle typical receipt amounts', () => {
80
- const result = normalizeDocumentAmount(89.50, true, 'RECEIPT');
81
+ const result = normalizeDocumentAmount(89.50, true, DocumentType.Receipt);
81
82
  expect(result).toBe(-89.50);
82
83
  });
83
84
  });
84
85
  describe('INVOICE_RECEIPT - Business is Debtor (User is Creditor)', () => {
85
86
  it('should return positive amount when business is debtor', () => {
86
- const result = normalizeDocumentAmount(100, false, 'INVOICE_RECEIPT');
87
+ const result = normalizeDocumentAmount(100, false, DocumentType.InvoiceReceipt);
87
88
  expect(result).toBe(100);
88
89
  });
89
90
  it('should handle combined invoice-receipt amounts', () => {
90
- const result = normalizeDocumentAmount(350.00, false, 'INVOICE_RECEIPT');
91
+ const result = normalizeDocumentAmount(350.00, false, DocumentType.InvoiceReceipt);
91
92
  expect(result).toBe(350.00);
92
93
  });
93
94
  });
94
95
  describe('INVOICE_RECEIPT - Business is Creditor (User is Debtor)', () => {
95
96
  it('should return negative amount when business is creditor', () => {
96
- const result = normalizeDocumentAmount(100, true, 'INVOICE_RECEIPT');
97
+ const result = normalizeDocumentAmount(100, true, DocumentType.InvoiceReceipt);
97
98
  expect(result).toBe(-100);
98
99
  });
99
100
  it('should handle combined invoice-receipt amounts', () => {
100
- const result = normalizeDocumentAmount(425.75, true, 'INVOICE_RECEIPT');
101
+ const result = normalizeDocumentAmount(425.75, true, DocumentType.InvoiceReceipt);
101
102
  expect(result).toBe(-425.75);
102
103
  });
103
104
  });
104
105
  describe('OTHER Document Type', () => {
105
106
  it('should handle OTHER type with business debtor', () => {
106
- const result = normalizeDocumentAmount(100, false, 'OTHER');
107
+ const result = normalizeDocumentAmount(100, false, DocumentType.Other);
107
108
  expect(result).toBe(100);
108
109
  });
109
110
  it('should handle OTHER type with business creditor', () => {
110
- const result = normalizeDocumentAmount(100, true, 'OTHER');
111
+ const result = normalizeDocumentAmount(100, true, DocumentType.Other);
111
112
  expect(result).toBe(-100);
112
113
  });
113
114
  });
114
115
  describe('PROFORMA Document Type', () => {
115
116
  it('should handle PROFORMA type with business debtor', () => {
116
- const result = normalizeDocumentAmount(100, false, 'PROFORMA');
117
+ const result = normalizeDocumentAmount(100, false, DocumentType.Proforma);
117
118
  expect(result).toBe(100);
118
119
  });
119
120
  it('should handle PROFORMA type with business creditor', () => {
120
- const result = normalizeDocumentAmount(100, true, 'PROFORMA');
121
+ const result = normalizeDocumentAmount(100, true, DocumentType.Proforma);
121
122
  expect(result).toBe(-100);
122
123
  });
123
124
  });
124
125
  describe('UNPROCESSED Document Type', () => {
125
126
  it('should handle UNPROCESSED type with business debtor', () => {
126
- const result = normalizeDocumentAmount(100, false, 'UNPROCESSED');
127
+ const result = normalizeDocumentAmount(100, false, DocumentType.Unprocessed);
127
128
  expect(result).toBe(100);
128
129
  });
129
130
  it('should handle UNPROCESSED type with business creditor', () => {
130
- const result = normalizeDocumentAmount(100, true, 'UNPROCESSED');
131
+ const result = normalizeDocumentAmount(100, true, DocumentType.Unprocessed);
131
132
  expect(result).toBe(-100);
132
133
  });
133
134
  });
134
135
  describe('Negative Input Amounts (Absolute Value First)', () => {
135
136
  it('should convert negative input to positive for INVOICE with business debtor', () => {
136
137
  // Input is -100, should become |−100| = 100
137
- const result = normalizeDocumentAmount(-100, false, 'INVOICE');
138
+ const result = normalizeDocumentAmount(-100, false, DocumentType.Invoice);
138
139
  expect(result).toBe(100);
139
140
  });
140
141
  it('should convert negative input to negative for INVOICE with business creditor', () => {
141
142
  // Input is -100, should become |−100| * -1 = -100
142
- const result = normalizeDocumentAmount(-100, true, 'INVOICE');
143
+ const result = normalizeDocumentAmount(-100, true, DocumentType.Invoice);
143
144
  expect(result).toBe(-100);
144
145
  });
145
146
  it('should convert negative input for CREDIT_INVOICE with business debtor', () => {
146
147
  // Input is -100, should become |−100| * -1 = -100
147
- const result = normalizeDocumentAmount(-100, false, 'CREDIT_INVOICE');
148
+ const result = normalizeDocumentAmount(-100, false, DocumentType.CreditInvoice);
148
149
  expect(result).toBe(-100);
149
150
  });
150
151
  it('should convert negative input for CREDIT_INVOICE with business creditor', () => {
151
152
  // Input is -100, should become |−100| * -1 * -1 = 100
152
- const result = normalizeDocumentAmount(-100, true, 'CREDIT_INVOICE');
153
+ const result = normalizeDocumentAmount(-100, true, DocumentType.CreditInvoice);
153
154
  expect(result).toBe(100);
154
155
  });
155
156
  it('should handle negative decimal amounts', () => {
156
- const result = normalizeDocumentAmount(-250.50, false, 'INVOICE');
157
+ const result = normalizeDocumentAmount(-250.50, false, DocumentType.Invoice);
157
158
  expect(result).toBe(250.50);
158
159
  });
159
160
  it('should handle large negative amounts', () => {
160
- const result = normalizeDocumentAmount(-1000000, true, 'RECEIPT');
161
+ const result = normalizeDocumentAmount(-1000000, true, DocumentType.Receipt);
161
162
  expect(result).toBe(-1000000);
162
163
  });
163
164
  });
164
165
  describe('Zero Amounts', () => {
165
166
  it('should handle zero amount with business debtor', () => {
166
- const result = normalizeDocumentAmount(0, false, 'INVOICE');
167
+ const result = normalizeDocumentAmount(0, false, DocumentType.Invoice);
167
168
  expect(result).toBe(0);
168
169
  });
169
170
  it('should handle zero amount with business creditor', () => {
170
- const result = normalizeDocumentAmount(0, true, 'INVOICE');
171
+ const result = normalizeDocumentAmount(0, true, DocumentType.Invoice);
171
172
  expect(result).toBe(-0); // JavaScript has -0, but 0 === -0 is true
172
173
  });
173
174
  it('should handle zero for CREDIT_INVOICE', () => {
174
- const result = normalizeDocumentAmount(0, false, 'CREDIT_INVOICE');
175
+ const result = normalizeDocumentAmount(0, false, DocumentType.CreditInvoice);
175
176
  expect(result).toBe(-0);
176
177
  });
177
178
  it('should verify zero equality regardless of sign', () => {
178
- const result1 = normalizeDocumentAmount(0, false, 'INVOICE');
179
- const result2 = normalizeDocumentAmount(0, true, 'INVOICE');
179
+ const result1 = normalizeDocumentAmount(0, false, DocumentType.Invoice);
180
+ const result2 = normalizeDocumentAmount(0, true, DocumentType.Invoice);
180
181
  expect(result1).toBe(0);
181
182
  // In JavaScript, -0 and 0 are loosely equal but Object.is distinguishes them
182
183
  // For our purposes, they are functionally equivalent
@@ -186,36 +187,36 @@ describe('Document Amount Normalization', () => {
186
187
  describe('Very Large Amounts', () => {
187
188
  it('should handle very large positive amounts', () => {
188
189
  const largeAmount = 999999999.99;
189
- const result = normalizeDocumentAmount(largeAmount, false, 'INVOICE');
190
+ const result = normalizeDocumentAmount(largeAmount, false, DocumentType.Invoice);
190
191
  expect(result).toBe(largeAmount);
191
192
  });
192
193
  it('should handle very large amounts with creditor negation', () => {
193
194
  const largeAmount = 999999999.99;
194
- const result = normalizeDocumentAmount(largeAmount, true, 'INVOICE');
195
+ const result = normalizeDocumentAmount(largeAmount, true, DocumentType.Invoice);
195
196
  expect(result).toBe(-largeAmount);
196
197
  });
197
198
  it('should handle very large amounts with CREDIT_INVOICE', () => {
198
199
  const largeAmount = 888888888.88;
199
- const result = normalizeDocumentAmount(largeAmount, true, 'CREDIT_INVOICE');
200
+ const result = normalizeDocumentAmount(largeAmount, true, DocumentType.CreditInvoice);
200
201
  expect(result).toBe(largeAmount);
201
202
  });
202
203
  it('should handle maximum safe integer', () => {
203
204
  const maxSafe = Number.MAX_SAFE_INTEGER;
204
- const result = normalizeDocumentAmount(maxSafe, false, 'INVOICE');
205
+ const result = normalizeDocumentAmount(maxSafe, false, DocumentType.Invoice);
205
206
  expect(result).toBe(maxSafe);
206
207
  });
207
208
  });
208
209
  describe('Small Decimal Amounts', () => {
209
210
  it('should handle very small decimal amounts', () => {
210
- const result = normalizeDocumentAmount(0.01, false, 'INVOICE');
211
+ const result = normalizeDocumentAmount(0.01, false, DocumentType.Invoice);
211
212
  expect(result).toBe(0.01);
212
213
  });
213
214
  it('should handle fractional cents', () => {
214
- const result = normalizeDocumentAmount(0.001, true, 'RECEIPT');
215
+ const result = normalizeDocumentAmount(0.001, true, DocumentType.Receipt);
215
216
  expect(result).toBe(-0.001);
216
217
  });
217
218
  it('should preserve precision for small decimals', () => {
218
- const result = normalizeDocumentAmount(1.23456789, false, 'INVOICE');
219
+ const result = normalizeDocumentAmount(1.23456789, false, DocumentType.Invoice);
219
220
  expect(result).toBe(1.23456789);
220
221
  });
221
222
  });
@@ -224,26 +225,26 @@ describe('Document Amount Normalization', () => {
224
225
  it('should correctly normalize all document type and business role combinations', () => {
225
226
  const testCases = [
226
227
  // INVOICE
227
- { type: 'INVOICE', isCreditor: false, input: 100, expected: 100, description: 'INVOICE, business debtor' },
228
- { type: 'INVOICE', isCreditor: true, input: 100, expected: -100, description: 'INVOICE, business creditor' },
228
+ { type: DocumentType.Invoice, isCreditor: false, input: 100, expected: 100, description: 'INVOICE, business debtor' },
229
+ { type: DocumentType.Invoice, isCreditor: true, input: 100, expected: -100, description: 'INVOICE, business creditor' },
229
230
  // CREDIT_INVOICE
230
- { type: 'CREDIT_INVOICE', isCreditor: false, input: 100, expected: -100, description: 'CREDIT_INVOICE, business debtor' },
231
- { type: 'CREDIT_INVOICE', isCreditor: true, input: 100, expected: 100, description: 'CREDIT_INVOICE, business creditor (double neg)' },
231
+ { type: DocumentType.CreditInvoice, isCreditor: false, input: 100, expected: -100, description: 'CREDIT_INVOICE, business debtor' },
232
+ { type: DocumentType.CreditInvoice, isCreditor: true, input: 100, expected: 100, description: 'CREDIT_INVOICE, business creditor (double neg)' },
232
233
  // RECEIPT
233
- { type: 'RECEIPT', isCreditor: false, input: 100, expected: 100, description: 'RECEIPT, business debtor' },
234
- { type: 'RECEIPT', isCreditor: true, input: 100, expected: -100, description: 'RECEIPT, business creditor' },
234
+ { type: DocumentType.Receipt, isCreditor: false, input: 100, expected: 100, description: 'RECEIPT, business debtor' },
235
+ { type: DocumentType.Receipt, isCreditor: true, input: 100, expected: -100, description: 'RECEIPT, business creditor' },
235
236
  // INVOICE_RECEIPT
236
- { type: 'INVOICE_RECEIPT', isCreditor: false, input: 100, expected: 100, description: 'INVOICE_RECEIPT, business debtor' },
237
- { type: 'INVOICE_RECEIPT', isCreditor: true, input: 100, expected: -100, description: 'INVOICE_RECEIPT, business creditor' },
237
+ { type: DocumentType.InvoiceReceipt, isCreditor: false, input: 100, expected: 100, description: 'INVOICE_RECEIPT, business debtor' },
238
+ { type: DocumentType.InvoiceReceipt, isCreditor: true, input: 100, expected: -100, description: 'INVOICE_RECEIPT, business creditor' },
238
239
  // OTHER
239
- { type: 'OTHER', isCreditor: false, input: 100, expected: 100, description: 'OTHER, business debtor' },
240
- { type: 'OTHER', isCreditor: true, input: 100, expected: -100, description: 'OTHER, business creditor' },
240
+ { type: DocumentType.Other, isCreditor: false, input: 100, expected: 100, description: 'OTHER, business debtor' },
241
+ { type: DocumentType.Other, isCreditor: true, input: 100, expected: -100, description: 'OTHER, business creditor' },
241
242
  // PROFORMA
242
- { type: 'PROFORMA', isCreditor: false, input: 100, expected: 100, description: 'PROFORMA, business debtor' },
243
- { type: 'PROFORMA', isCreditor: true, input: 100, expected: -100, description: 'PROFORMA, business creditor' },
243
+ { type: DocumentType.Proforma, isCreditor: false, input: 100, expected: 100, description: 'PROFORMA, business debtor' },
244
+ { type: DocumentType.Proforma, isCreditor: true, input: 100, expected: -100, description: 'PROFORMA, business creditor' },
244
245
  // UNPROCESSED
245
- { type: 'UNPROCESSED', isCreditor: false, input: 100, expected: 100, description: 'UNPROCESSED, business debtor' },
246
- { type: 'UNPROCESSED', isCreditor: true, input: 100, expected: -100, description: 'UNPROCESSED, business creditor' },
246
+ { type: DocumentType.Unprocessed, isCreditor: false, input: 100, expected: 100, description: 'UNPROCESSED, business debtor' },
247
+ { type: DocumentType.Unprocessed, isCreditor: true, input: 100, expected: -100, description: 'UNPROCESSED, business creditor' },
247
248
  ];
248
249
  testCases.forEach(({ type, isCreditor, input, expected, description }) => {
249
250
  const result = normalizeDocumentAmount(input, isCreditor, type);
@@ -254,32 +255,32 @@ describe('Document Amount Normalization', () => {
254
255
  describe('Real-World Scenarios', () => {
255
256
  it('should normalize customer invoice (business sends invoice to customer)', () => {
256
257
  // Business is creditor (customer owes business)
257
- const result = normalizeDocumentAmount(1500, true, 'INVOICE');
258
+ const result = normalizeDocumentAmount(1500, true, DocumentType.Invoice);
258
259
  expect(result).toBe(-1500); // Negative because user owes
259
260
  });
260
261
  it('should normalize vendor invoice (vendor sends invoice to business)', () => {
261
262
  // Business is debtor (business owes vendor)
262
- const result = normalizeDocumentAmount(750, false, 'INVOICE');
263
+ const result = normalizeDocumentAmount(750, false, DocumentType.Invoice);
263
264
  expect(result).toBe(750); // Positive because vendor owes user
264
265
  });
265
266
  it('should normalize customer refund (credit invoice to customer)', () => {
266
267
  // Business owes customer a refund
267
- const result = normalizeDocumentAmount(200, true, 'CREDIT_INVOICE');
268
+ const result = normalizeDocumentAmount(200, true, DocumentType.CreditInvoice);
268
269
  expect(result).toBe(200); // Positive because business owes refund
269
270
  });
270
271
  it('should normalize vendor credit note (credit invoice from vendor)', () => {
271
272
  // Vendor gives credit note to business
272
- const result = normalizeDocumentAmount(150, false, 'CREDIT_INVOICE');
273
+ const result = normalizeDocumentAmount(150, false, DocumentType.CreditInvoice);
273
274
  expect(result).toBe(-150); // Negative because business owes vendor less now
274
275
  });
275
276
  it('should normalize payment receipt from customer', () => {
276
277
  // Customer pays business
277
- const result = normalizeDocumentAmount(500, true, 'RECEIPT');
278
+ const result = normalizeDocumentAmount(500, true, DocumentType.Receipt);
278
279
  expect(result).toBe(-500); // Negative because customer paid
279
280
  });
280
281
  it('should normalize payment receipt to vendor', () => {
281
282
  // Business pays vendor
282
- const result = normalizeDocumentAmount(300, false, 'RECEIPT');
283
+ const result = normalizeDocumentAmount(300, false, DocumentType.Receipt);
283
284
  expect(result).toBe(300); // Positive because business paid
284
285
  });
285
286
  });
@@ -1 +1 @@
1
- {"version":3,"file":"document-amount.test.js","sourceRoot":"","sources":["../../../../../../src/modules/charges-matcher/__tests__/document-amount.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-amount.test.js","sourceRoot":"","sources":["../../../../../../src/modules/charges-matcher/__tests__/document-amount.test.ts"],"names":[],"mappings":"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"}