@accounter/server 0.0.8-alpha-20251102200443-d7162b8ce1dfc629b8b454df17dcec9ed005a052 → 0.0.8-alpha-20251102213150-c9d936f545d5351df0dc5326c2623266f1ad1f46

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 (178) hide show
  1. package/CHANGELOG.md +47 -7
  2. package/dist/green-invoice-graphql/src/mesh-artifacts/index.d.ts +1 -1
  3. package/dist/server/src/__generated__/types.d.ts +77 -0
  4. package/dist/server/src/__generated__/types.js.map +1 -1
  5. package/dist/server/src/modules/charges-matcher/__generated__/types.d.ts +68 -0
  6. package/dist/server/src/modules/charges-matcher/__generated__/types.js +7 -0
  7. package/dist/server/src/modules/charges-matcher/__generated__/types.js.map +1 -0
  8. package/dist/server/src/modules/charges-matcher/__tests__/amount-confidence.test.d.ts +1 -0
  9. package/dist/server/src/modules/charges-matcher/__tests__/amount-confidence.test.js +218 -0
  10. package/dist/server/src/modules/charges-matcher/__tests__/amount-confidence.test.js.map +1 -0
  11. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.d.ts +1 -0
  12. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js +645 -0
  13. package/dist/server/src/modules/charges-matcher/__tests__/auto-match-integration.test.js.map +1 -0
  14. package/dist/server/src/modules/charges-matcher/__tests__/auto-match.test.d.ts +1 -0
  15. package/dist/server/src/modules/charges-matcher/__tests__/auto-match.test.js +530 -0
  16. package/dist/server/src/modules/charges-matcher/__tests__/auto-match.test.js.map +1 -0
  17. package/dist/server/src/modules/charges-matcher/__tests__/business-confidence.test.d.ts +1 -0
  18. package/dist/server/src/modules/charges-matcher/__tests__/business-confidence.test.js +143 -0
  19. package/dist/server/src/modules/charges-matcher/__tests__/business-confidence.test.js.map +1 -0
  20. package/dist/server/src/modules/charges-matcher/__tests__/candidate-filter.test.d.ts +1 -0
  21. package/dist/server/src/modules/charges-matcher/__tests__/candidate-filter.test.js +186 -0
  22. package/dist/server/src/modules/charges-matcher/__tests__/candidate-filter.test.js.map +1 -0
  23. package/dist/server/src/modules/charges-matcher/__tests__/charge-validator.test.d.ts +1 -0
  24. package/dist/server/src/modules/charges-matcher/__tests__/charge-validator.test.js +301 -0
  25. package/dist/server/src/modules/charges-matcher/__tests__/charge-validator.test.js.map +1 -0
  26. package/dist/server/src/modules/charges-matcher/__tests__/currency-confidence.test.d.ts +1 -0
  27. package/dist/server/src/modules/charges-matcher/__tests__/currency-confidence.test.js +127 -0
  28. package/dist/server/src/modules/charges-matcher/__tests__/currency-confidence.test.js.map +1 -0
  29. package/dist/server/src/modules/charges-matcher/__tests__/date-confidence.test.d.ts +1 -0
  30. package/dist/server/src/modules/charges-matcher/__tests__/date-confidence.test.js +246 -0
  31. package/dist/server/src/modules/charges-matcher/__tests__/date-confidence.test.js.map +1 -0
  32. package/dist/server/src/modules/charges-matcher/__tests__/document-aggregator.test.d.ts +1 -0
  33. package/dist/server/src/modules/charges-matcher/__tests__/document-aggregator.test.js +475 -0
  34. package/dist/server/src/modules/charges-matcher/__tests__/document-aggregator.test.js.map +1 -0
  35. package/dist/server/src/modules/charges-matcher/__tests__/document-amount.test.d.ts +1 -0
  36. package/dist/server/src/modules/charges-matcher/__tests__/document-amount.test.js +287 -0
  37. package/dist/server/src/modules/charges-matcher/__tests__/document-amount.test.js.map +1 -0
  38. package/dist/server/src/modules/charges-matcher/__tests__/document-business.test.d.ts +1 -0
  39. package/dist/server/src/modules/charges-matcher/__tests__/document-business.test.js +151 -0
  40. package/dist/server/src/modules/charges-matcher/__tests__/document-business.test.js.map +1 -0
  41. package/dist/server/src/modules/charges-matcher/__tests__/match-scorer.test.d.ts +1 -0
  42. package/dist/server/src/modules/charges-matcher/__tests__/match-scorer.test.js +550 -0
  43. package/dist/server/src/modules/charges-matcher/__tests__/match-scorer.test.js.map +1 -0
  44. package/dist/server/src/modules/charges-matcher/__tests__/overall-confidence.test.d.ts +1 -0
  45. package/dist/server/src/modules/charges-matcher/__tests__/overall-confidence.test.js +410 -0
  46. package/dist/server/src/modules/charges-matcher/__tests__/overall-confidence.test.js.map +1 -0
  47. package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.d.ts +1 -0
  48. package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js +504 -0
  49. package/dist/server/src/modules/charges-matcher/__tests__/single-match-integration.test.js.map +1 -0
  50. package/dist/server/src/modules/charges-matcher/__tests__/single-match.test.d.ts +1 -0
  51. package/dist/server/src/modules/charges-matcher/__tests__/single-match.test.js +483 -0
  52. package/dist/server/src/modules/charges-matcher/__tests__/single-match.test.js.map +1 -0
  53. package/dist/server/src/modules/charges-matcher/__tests__/test-helpers.d.ts +46 -0
  54. package/dist/server/src/modules/charges-matcher/__tests__/test-helpers.js +143 -0
  55. package/dist/server/src/modules/charges-matcher/__tests__/test-helpers.js.map +1 -0
  56. package/dist/server/src/modules/charges-matcher/__tests__/test-infrastructure.spec.d.ts +1 -0
  57. package/dist/server/src/modules/charges-matcher/__tests__/test-infrastructure.spec.js +137 -0
  58. package/dist/server/src/modules/charges-matcher/__tests__/test-infrastructure.spec.js.map +1 -0
  59. package/dist/server/src/modules/charges-matcher/__tests__/transaction-aggregator.test.d.ts +1 -0
  60. package/dist/server/src/modules/charges-matcher/__tests__/transaction-aggregator.test.js +415 -0
  61. package/dist/server/src/modules/charges-matcher/__tests__/transaction-aggregator.test.js.map +1 -0
  62. package/dist/server/src/modules/charges-matcher/helpers/amount-confidence.helper.d.ts +7 -0
  63. package/dist/server/src/modules/charges-matcher/helpers/amount-confidence.helper.js +70 -0
  64. package/dist/server/src/modules/charges-matcher/helpers/amount-confidence.helper.js.map +1 -0
  65. package/dist/server/src/modules/charges-matcher/helpers/business-confidence.helper.d.ts +7 -0
  66. package/dist/server/src/modules/charges-matcher/helpers/business-confidence.helper.js +19 -0
  67. package/dist/server/src/modules/charges-matcher/helpers/business-confidence.helper.js.map +1 -0
  68. package/dist/server/src/modules/charges-matcher/helpers/candidate-filter.helper.d.ts +24 -0
  69. package/dist/server/src/modules/charges-matcher/helpers/candidate-filter.helper.js +45 -0
  70. package/dist/server/src/modules/charges-matcher/helpers/candidate-filter.helper.js.map +1 -0
  71. package/dist/server/src/modules/charges-matcher/helpers/charge-validator.helper.d.ts +33 -0
  72. package/dist/server/src/modules/charges-matcher/helpers/charge-validator.helper.js +65 -0
  73. package/dist/server/src/modules/charges-matcher/helpers/charge-validator.helper.js.map +1 -0
  74. package/dist/server/src/modules/charges-matcher/helpers/currency-confidence.helper.d.ts +7 -0
  75. package/dist/server/src/modules/charges-matcher/helpers/currency-confidence.helper.js +18 -0
  76. package/dist/server/src/modules/charges-matcher/helpers/currency-confidence.helper.js.map +1 -0
  77. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.d.ts +7 -0
  78. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.js +35 -0
  79. package/dist/server/src/modules/charges-matcher/helpers/date-confidence.helper.js.map +1 -0
  80. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.d.ts +49 -0
  81. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.js +58 -0
  82. package/dist/server/src/modules/charges-matcher/helpers/document-amount.helper.js.map +1 -0
  83. package/dist/server/src/modules/charges-matcher/helpers/document-business.helper.d.ts +13 -0
  84. package/dist/server/src/modules/charges-matcher/helpers/document-business.helper.js +37 -0
  85. package/dist/server/src/modules/charges-matcher/helpers/document-business.helper.js.map +1 -0
  86. package/dist/server/src/modules/charges-matcher/helpers/overall-confidence.helper.d.ts +42 -0
  87. package/dist/server/src/modules/charges-matcher/helpers/overall-confidence.helper.js +77 -0
  88. package/dist/server/src/modules/charges-matcher/helpers/overall-confidence.helper.js.map +1 -0
  89. package/dist/server/src/modules/charges-matcher/index.d.ts +3 -0
  90. package/dist/server/src/modules/charges-matcher/index.js +15 -0
  91. package/dist/server/src/modules/charges-matcher/index.js.map +1 -0
  92. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.d.ts +48 -0
  93. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.js +133 -0
  94. package/dist/server/src/modules/charges-matcher/providers/auto-match.provider.js.map +1 -0
  95. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.d.ts +38 -0
  96. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js +248 -0
  97. package/dist/server/src/modules/charges-matcher/providers/charges-matcher.provider.js.map +1 -0
  98. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.d.ts +61 -0
  99. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.js +153 -0
  100. package/dist/server/src/modules/charges-matcher/providers/document-aggregator.js.map +1 -0
  101. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.d.ts +25 -0
  102. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.js +114 -0
  103. package/dist/server/src/modules/charges-matcher/providers/match-scorer.provider.js.map +1 -0
  104. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.d.ts +39 -0
  105. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.js +189 -0
  106. package/dist/server/src/modules/charges-matcher/providers/single-match.provider.js.map +1 -0
  107. package/dist/server/src/modules/charges-matcher/providers/transaction-aggregator.d.ts +54 -0
  108. package/dist/server/src/modules/charges-matcher/providers/transaction-aggregator.js +93 -0
  109. package/dist/server/src/modules/charges-matcher/providers/transaction-aggregator.js.map +1 -0
  110. package/dist/server/src/modules/charges-matcher/resolvers/auto-match-charges.resolver.d.ts +2 -0
  111. package/dist/server/src/modules/charges-matcher/resolvers/auto-match-charges.resolver.js +22 -0
  112. package/dist/server/src/modules/charges-matcher/resolvers/auto-match-charges.resolver.js.map +1 -0
  113. package/dist/server/src/modules/charges-matcher/resolvers/find-charge-matches.resolver.d.ts +2 -0
  114. package/dist/server/src/modules/charges-matcher/resolvers/find-charge-matches.resolver.js +24 -0
  115. package/dist/server/src/modules/charges-matcher/resolvers/find-charge-matches.resolver.js.map +1 -0
  116. package/dist/server/src/modules/charges-matcher/resolvers/index.d.ts +2 -0
  117. package/dist/server/src/modules/charges-matcher/resolvers/index.js +11 -0
  118. package/dist/server/src/modules/charges-matcher/resolvers/index.js.map +1 -0
  119. package/dist/server/src/modules/charges-matcher/typeDefs/charges-matcher.graphql.d.ts +2 -0
  120. package/dist/server/src/modules/charges-matcher/typeDefs/charges-matcher.graphql.js +47 -0
  121. package/dist/server/src/modules/charges-matcher/typeDefs/charges-matcher.graphql.js.map +1 -0
  122. package/dist/server/src/modules/charges-matcher/types.d.ts +179 -0
  123. package/dist/server/src/modules/charges-matcher/types.js +14 -0
  124. package/dist/server/src/modules/charges-matcher/types.js.map +1 -0
  125. package/dist/server/src/modules/documents/resolvers/document-suggestions.resolver.js +2 -2
  126. package/dist/server/src/modules/documents/resolvers/document-suggestions.resolver.js.map +1 -1
  127. package/dist/server/src/modules-app.js +2 -0
  128. package/dist/server/src/modules-app.js.map +1 -1
  129. package/dist/server/src/shared/types/index.d.ts +1 -1
  130. package/package.json +4 -4
  131. package/src/__generated__/types.ts +87 -0
  132. package/src/modules/charges-matcher/README.md +279 -0
  133. package/src/modules/charges-matcher/__generated__/types.ts +71 -0
  134. package/src/modules/charges-matcher/__tests__/amount-confidence.test.ts +260 -0
  135. package/src/modules/charges-matcher/__tests__/auto-match-integration.test.ts +714 -0
  136. package/src/modules/charges-matcher/__tests__/auto-match.test.ts +621 -0
  137. package/src/modules/charges-matcher/__tests__/business-confidence.test.ts +177 -0
  138. package/src/modules/charges-matcher/__tests__/candidate-filter.test.ts +238 -0
  139. package/src/modules/charges-matcher/__tests__/charge-validator.test.ts +374 -0
  140. package/src/modules/charges-matcher/__tests__/currency-confidence.test.ts +164 -0
  141. package/src/modules/charges-matcher/__tests__/date-confidence.test.ts +291 -0
  142. package/src/modules/charges-matcher/__tests__/document-aggregator.test.ts +614 -0
  143. package/src/modules/charges-matcher/__tests__/document-amount.test.ts +352 -0
  144. package/src/modules/charges-matcher/__tests__/document-business.test.ts +192 -0
  145. package/src/modules/charges-matcher/__tests__/match-scorer.test.ts +659 -0
  146. package/src/modules/charges-matcher/__tests__/overall-confidence.test.ts +502 -0
  147. package/src/modules/charges-matcher/__tests__/single-match-integration.test.ts +556 -0
  148. package/src/modules/charges-matcher/__tests__/single-match.test.ts +608 -0
  149. package/src/modules/charges-matcher/__tests__/test-helpers.ts +174 -0
  150. package/src/modules/charges-matcher/__tests__/test-infrastructure.spec.ts +177 -0
  151. package/src/modules/charges-matcher/__tests__/transaction-aggregator.test.ts +547 -0
  152. package/src/modules/charges-matcher/documentation/README.md +331 -0
  153. package/src/modules/charges-matcher/documentation/SPEC.md +1503 -0
  154. package/src/modules/charges-matcher/documentation/TODO.md +799 -0
  155. package/src/modules/charges-matcher/helpers/amount-confidence.helper.ts +88 -0
  156. package/src/modules/charges-matcher/helpers/business-confidence.helper.ts +23 -0
  157. package/src/modules/charges-matcher/helpers/candidate-filter.helper.ts +56 -0
  158. package/src/modules/charges-matcher/helpers/charge-validator.helper.ts +100 -0
  159. package/src/modules/charges-matcher/helpers/currency-confidence.helper.ts +22 -0
  160. package/src/modules/charges-matcher/helpers/date-confidence.helper.ts +41 -0
  161. package/src/modules/charges-matcher/helpers/document-amount.helper.ts +77 -0
  162. package/src/modules/charges-matcher/helpers/document-business.helper.ts +54 -0
  163. package/src/modules/charges-matcher/helpers/overall-confidence.helper.ts +90 -0
  164. package/src/modules/charges-matcher/index.ts +17 -0
  165. package/src/modules/charges-matcher/providers/auto-match.provider.ts +176 -0
  166. package/src/modules/charges-matcher/providers/charges-matcher.provider.ts +322 -0
  167. package/src/modules/charges-matcher/providers/document-aggregator.ts +211 -0
  168. package/src/modules/charges-matcher/providers/match-scorer.provider.ts +154 -0
  169. package/src/modules/charges-matcher/providers/single-match.provider.ts +252 -0
  170. package/src/modules/charges-matcher/providers/transaction-aggregator.ts +131 -0
  171. package/src/modules/charges-matcher/resolvers/auto-match-charges.resolver.ts +23 -0
  172. package/src/modules/charges-matcher/resolvers/find-charge-matches.resolver.ts +25 -0
  173. package/src/modules/charges-matcher/resolvers/index.ts +12 -0
  174. package/src/modules/charges-matcher/typeDefs/charges-matcher.graphql.ts +47 -0
  175. package/src/modules/charges-matcher/types.ts +200 -0
  176. package/src/modules/documents/resolvers/document-suggestions.resolver.ts +2 -2
  177. package/src/modules-app.ts +2 -0
  178. package/src/shared/types/index.ts +1 -1
@@ -0,0 +1,47 @@
1
+ import { gql } from 'graphql-modules';
2
+ export default gql `
3
+ extend type Query {
4
+ " Find potential matches for a single unmatched charge "
5
+ findChargeMatches(chargeId: UUID!): ChargeMatchesResult! @auth(role: ACCOUNTANT)
6
+ }
7
+
8
+ extend type Mutation {
9
+ " Automatically match all unmatched charges above the confidence threshold "
10
+ autoMatchCharges: AutoMatchChargesResult! @auth(role: ACCOUNTANT)
11
+ }
12
+
13
+ " Result of finding matches for a single charge "
14
+ type ChargeMatchesResult {
15
+ " Array of up to 5 matches, ordered by confidence score (highest first) "
16
+ matches: [ChargeMatch!]!
17
+ }
18
+
19
+ " A single charge match with its confidence score "
20
+ type ChargeMatch {
21
+ " UUID of the matched charge "
22
+ chargeId: UUID!
23
+ " Confidence score between 0.00 and 1.00 "
24
+ confidenceScore: Float!
25
+ }
26
+
27
+ " Result of the auto-match operation "
28
+ type AutoMatchChargesResult {
29
+ " Total number of charges that were successfully matched and merged "
30
+ totalMatches: Int!
31
+ " Array of charges that were merged, with their confidence scores "
32
+ mergedCharges: [MergedCharge!]!
33
+ " Array of charge UUIDs that had multiple high-confidence matches and were skipped "
34
+ skippedCharges: [UUID!]!
35
+ " Array of error messages encountered during the operation "
36
+ errors: [String!]!
37
+ }
38
+
39
+ " A charge that was successfully merged during auto-match "
40
+ type MergedCharge {
41
+ " UUID of the deleted/merged-away charge "
42
+ chargeId: UUID!
43
+ " Confidence score that triggered the merge "
44
+ confidenceScore: Float!
45
+ }
46
+ `;
47
+ //# sourceMappingURL=charges-matcher.graphql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"charges-matcher.graphql.js","sourceRoot":"","sources":["../../../../../../src/modules/charges-matcher/typeDefs/charges-matcher.graphql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,eAAe,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CjB,CAAC"}
@@ -0,0 +1,179 @@
1
+ import type { currency, document_type, IGetAllDocumentsResult } from '../documents/types.js';
2
+ import type { IGetTransactionsByIdsResult } from '../transactions/types.js';
3
+ export * from './__generated__/types.js';
4
+ /**
5
+ * Re-export shared types from other modules
6
+ */
7
+ export type { currency as Currency, document_type as DocumentType, } from '../documents/types.js';
8
+ /**
9
+ * Transaction interface matching the database schema
10
+ * Uses the complete type from transactions module
11
+ */
12
+ export type Transaction = IGetTransactionsByIdsResult;
13
+ /**
14
+ * Document interface matching the database schema
15
+ * Uses the complete type from documents module
16
+ */
17
+ export type Document = IGetAllDocumentsResult;
18
+ /**
19
+ * Represents a single charge match with its confidence score
20
+ */
21
+ export interface ChargeMatch {
22
+ /** UUID of the matched charge */
23
+ chargeId: string;
24
+ /** Confidence score between 0.00 and 1.00 (two decimal precision) */
25
+ confidenceScore: number;
26
+ }
27
+ /**
28
+ * Result of finding matches for a single charge
29
+ */
30
+ export interface ChargeMatchesResult {
31
+ /** Array of up to 5 matches, ordered by confidence score (highest first) */
32
+ matches: ChargeMatch[];
33
+ }
34
+ /**
35
+ * Represents a charge that was successfully merged during auto-match
36
+ */
37
+ export interface MergedCharge {
38
+ /** UUID of the deleted/merged-away charge */
39
+ chargeId: string;
40
+ /** Confidence score that triggered the merge (≥0.95) */
41
+ confidenceScore: number;
42
+ }
43
+ /**
44
+ * Result of the auto-match operation
45
+ */
46
+ export interface AutoMatchChargesResult {
47
+ /** Total number of charges that were successfully matched and merged */
48
+ totalMatches: number;
49
+ /** Array of charges that were merged, with their confidence scores */
50
+ mergedCharges: MergedCharge[];
51
+ /** Array of charge UUIDs that had multiple high-confidence matches and were skipped */
52
+ skippedCharges: string[];
53
+ /** Array of error messages encountered during the operation */
54
+ errors: string[];
55
+ }
56
+ /**
57
+ * Aggregated transaction data for matching purposes
58
+ */
59
+ export interface AggregatedTransaction {
60
+ /** Sum of all transaction amounts */
61
+ amount: number;
62
+ /** Common currency across all transactions */
63
+ currency: currency;
64
+ /** Single non-null business ID (or null if all are null) */
65
+ businessId: string | null;
66
+ /** Earliest event_date among transactions */
67
+ date: Date;
68
+ /** Earliest debit_date/debit_timestamp (for receipt matching) */
69
+ debitDate: Date | null;
70
+ /** Concatenated source_description values */
71
+ description: string;
72
+ }
73
+ /**
74
+ * Aggregated document data for matching purposes
75
+ */
76
+ export interface AggregatedDocument {
77
+ /** Sum of all normalized document amounts */
78
+ amount: number;
79
+ /** Common currency across all documents */
80
+ currency: currency;
81
+ /** Single non-null business ID (or null if all are null) */
82
+ businessId: string | null;
83
+ /** Latest document date */
84
+ date: Date;
85
+ /** Concatenated serial numbers and identifiers */
86
+ description: string;
87
+ /** Document type (for date matching logic) */
88
+ type: document_type;
89
+ /** Whether the business is on the creditor side */
90
+ businessIsCreditor: boolean;
91
+ }
92
+ /**
93
+ * Individual confidence scores for different matching factors
94
+ */
95
+ export interface ConfidenceScores {
96
+ /** Amount confidence (0.0 - 1.0) */
97
+ amount: number;
98
+ /** Currency confidence (0.0 - 1.0) */
99
+ currency: number;
100
+ /** Business confidence (0.0 - 1.0) */
101
+ business: number;
102
+ /** Date confidence (0.0 - 1.0) */
103
+ date: number;
104
+ }
105
+ /**
106
+ * Complete confidence calculation result
107
+ */
108
+ export interface ConfidenceResult {
109
+ /** Overall weighted confidence score */
110
+ overall: number;
111
+ /** Individual component scores */
112
+ scores: ConfidenceScores;
113
+ }
114
+ /**
115
+ * Charge classification for matching purposes
116
+ */
117
+ export declare enum ChargeType {
118
+ /** Charge has transactions but no accounting documents */
119
+ TRANSACTION_ONLY = "TRANSACTION_ONLY",
120
+ /** Charge has accounting documents but no transactions */
121
+ DOCUMENT_ONLY = "DOCUMENT_ONLY",
122
+ /** Charge has both transactions and accounting documents */
123
+ MATCHED = "MATCHED"
124
+ }
125
+ /**
126
+ * Charge with its associated data for matching
127
+ */
128
+ export interface ChargeWithData {
129
+ /** Charge UUID */
130
+ chargeId: string;
131
+ /** Owner UUID */
132
+ ownerId: string;
133
+ /** Charge classification */
134
+ type: ChargeType;
135
+ /** Associated transactions (if any) */
136
+ transactions: Transaction[];
137
+ /** Associated documents (if any) */
138
+ documents: Document[];
139
+ }
140
+ /**
141
+ * Candidate charge for matching with aggregated data
142
+ */
143
+ export interface MatchCandidate {
144
+ /** Charge UUID */
145
+ chargeId: string;
146
+ /** Aggregated transaction data (if transaction charge) */
147
+ transactionData?: AggregatedTransaction;
148
+ /** Aggregated document data (if document charge) */
149
+ documentData?: AggregatedDocument;
150
+ }
151
+ /**
152
+ * Match score result with confidence and components
153
+ */
154
+ export interface MatchScore {
155
+ /** Charge ID being scored */
156
+ chargeId: string;
157
+ /** Overall confidence score (0.0 - 1.0) */
158
+ confidenceScore: number;
159
+ /** Individual confidence component scores */
160
+ components: ConfidenceScores;
161
+ }
162
+ /**
163
+ * Transaction charge for matching
164
+ */
165
+ export interface TransactionCharge {
166
+ /** Charge UUID */
167
+ chargeId: string;
168
+ /** Array of transactions in the charge */
169
+ transactions: Transaction[];
170
+ }
171
+ /**
172
+ * Document charge for matching
173
+ */
174
+ export interface DocumentCharge {
175
+ /** Charge UUID */
176
+ chargeId: string;
177
+ /** Array of documents in the charge */
178
+ documents: Document[];
179
+ }
@@ -0,0 +1,14 @@
1
+ export * from './__generated__/types.js';
2
+ /**
3
+ * Charge classification for matching purposes
4
+ */
5
+ export var ChargeType;
6
+ (function (ChargeType) {
7
+ /** Charge has transactions but no accounting documents */
8
+ ChargeType["TRANSACTION_ONLY"] = "TRANSACTION_ONLY";
9
+ /** Charge has accounting documents but no transactions */
10
+ ChargeType["DOCUMENT_ONLY"] = "DOCUMENT_ONLY";
11
+ /** Charge has both transactions and accounting documents */
12
+ ChargeType["MATCHED"] = "MATCHED";
13
+ })(ChargeType || (ChargeType = {}));
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/modules/charges-matcher/types.ts"],"names":[],"mappings":"AAGA,cAAc,0BAA0B,CAAC;AA8HzC;;GAEG;AACH,MAAM,CAAN,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,0DAA0D;IAC1D,mDAAqC,CAAA;IACrC,0DAA0D;IAC1D,6CAA+B,CAAA;IAC/B,4DAA4D;IAC5D,iCAAmB,CAAA;AACrB,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB"}
@@ -23,14 +23,14 @@ const missingInfoSuggestions = async (RawDocument, _, { injector }) => {
23
23
  if (charge?.transactions_event_amount && charge?.transactions_currency) {
24
24
  // use transactions info, if exists
25
25
  response.amount = {
26
- amount: charge.transactions_event_amount,
26
+ amount: Number(charge.transactions_event_amount),
27
27
  currency: formatCurrency(charge.transactions_currency),
28
28
  };
29
29
  }
30
30
  else if (charge?.documents_event_amount && charge?.documents_currency) {
31
31
  // Use parallel documents (if exists) as documents_event_amount is based on invoices OR receipts
32
32
  response.amount = {
33
- amount: String(charge.documents_event_amount),
33
+ amount: charge.documents_event_amount,
34
34
  currency: formatCurrency(charge.documents_currency),
35
35
  };
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"document-suggestions.resolver.js","sourceRoot":"","sources":["../../../../../../src/modules/documents/resolvers/document-suggestions.resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-suggestions.resolver.js","sourceRoot":"","sources":["../../../../../../src/modules/documents/resolvers/document-suggestions.resolver.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ import { GmailServiceProvider } from './modules/app-providers/gmail-listener/gma
20
20
  import { PubsubServiceProvider } from './modules/app-providers/gmail-listener/pubsub-service.provider.js';
21
21
  import { GreenInvoiceClientProvider } from './modules/app-providers/green-invoice-client.js';
22
22
  import { businessTripsModule } from './modules/business-trips/index.js';
23
+ import { chargesMatcherModule } from './modules/charges-matcher/index.js';
23
24
  import { chargesModule } from './modules/charges/index.js';
24
25
  import { chartsModule } from './modules/charts/index.js';
25
26
  import { commonModule } from './modules/common/index.js';
@@ -45,6 +46,7 @@ export async function createGraphQLApp(env) {
45
46
  accountantApprovalModule,
46
47
  businessTripsModule,
47
48
  chargesModule,
49
+ chargesMatcherModule,
48
50
  cornJobsModule,
49
51
  depreciationModule,
50
52
  documentsModule,
@@ -1 +1 @@
1
- {"version":3,"file":"modules-app.js","sourceRoot":"","sources":["../../../src/modules-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"modules-app.js","sourceRoot":"","sources":["../../../src/modules-app.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ export interface DocumentSuggestionsProto {
23
23
  ownerId?: string;
24
24
  counterpartyId?: string;
25
25
  amount?: {
26
- amount: string;
26
+ amount: number;
27
27
  currency: Currency;
28
28
  };
29
29
  isIncome?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@accounter/server",
3
- "version": "0.0.8-alpha-20251102200443-d7162b8ce1dfc629b8b454df17dcec9ed005a052",
3
+ "version": "0.0.8-alpha-20251102213150-c9d936f545d5351df0dc5326c2623266f1ad1f46",
4
4
  "type": "module",
5
5
  "description": "",
6
6
  "license": "MIT",
@@ -22,7 +22,7 @@
22
22
  "@accounter/pcn874-generator": "workspace:^",
23
23
  "@accounter/shaam-uniform-format-generator": "workspace:^",
24
24
  "@accounter/shaam6111-generator": "workspace:^",
25
- "@ai-sdk/anthropic": "2.0.39",
25
+ "@ai-sdk/anthropic": "2.0.40",
26
26
  "@envelop/generic-auth": "10.0.1",
27
27
  "@envelop/graphql-modules": "8.0.0",
28
28
  "@google-cloud/pubsub": "5.2.0",
@@ -31,7 +31,7 @@
31
31
  "@pgtyped/cli": "2.4.3",
32
32
  "@pgtyped/runtime": "2.4.2",
33
33
  "@whatwg-node/fetch": "0.10.11",
34
- "ai": "5.0.82",
34
+ "ai": "5.0.86",
35
35
  "basic-auth": "2.0.1",
36
36
  "bcrypt": "6.0.0",
37
37
  "cloudinary": "2.8.0",
@@ -40,7 +40,7 @@
40
40
  "dotenv": "17.2.3",
41
41
  "dotenv-cli": "11.0.0",
42
42
  "googleapis": "164.1.0",
43
- "graphql": "16.11.0",
43
+ "graphql": "16.12.0",
44
44
  "graphql-modules": "3.0.0",
45
45
  "graphql-scalars": "1.25.0",
46
46
  "graphql-yoga": "5.16.0",
@@ -323,6 +323,19 @@ export type AuditOpinionType =
323
323
  /** Unqualified opinion with other emphases (בנוסח אחיד עם הפניות תשומת לב אחרת) */
324
324
  | 'UNQUALIFIED_WITH_OTHER_EMPHASES';
325
325
 
326
+ /** Result of the auto-match operation */
327
+ export type AutoMatchChargesResult = {
328
+ readonly __typename?: 'AutoMatchChargesResult';
329
+ /** Array of error messages encountered during the operation */
330
+ readonly errors: ReadonlyArray<Scalars['String']['output']>;
331
+ /** Array of charges that were merged, with their confidence scores */
332
+ readonly mergedCharges: ReadonlyArray<MergedCharge>;
333
+ /** Array of charge UUIDs that had multiple high-confidence matches and were skipped */
334
+ readonly skippedCharges: ReadonlyArray<Scalars['UUID']['output']>;
335
+ /** Total number of charges that were successfully matched and merged */
336
+ readonly totalMatches: Scalars['Int']['output'];
337
+ };
338
+
326
339
  /** transactions for balance report */
327
340
  export type BalanceTransactions = {
328
341
  readonly __typename?: 'BalanceTransactions';
@@ -860,6 +873,22 @@ export type ChargeFilterType =
860
873
  | 'EXPENSE'
861
874
  | 'INCOME';
862
875
 
876
+ /** A single charge match with its confidence score */
877
+ export type ChargeMatch = {
878
+ readonly __typename?: 'ChargeMatch';
879
+ /** UUID of the matched charge */
880
+ readonly chargeId: Scalars['UUID']['output'];
881
+ /** Confidence score between 0.00 and 1.00 */
882
+ readonly confidenceScore: Scalars['Float']['output'];
883
+ };
884
+
885
+ /** Result of finding matches for a single charge */
886
+ export type ChargeMatchesResult = {
887
+ readonly __typename?: 'ChargeMatchesResult';
888
+ /** Array of up to 5 matches, ordered by confidence score (highest first) */
889
+ readonly matches: ReadonlyArray<ChargeMatch>;
890
+ };
891
+
863
892
  /** represent charge's metadata */
864
893
  export type ChargeMetadata = {
865
894
  readonly __typename?: 'ChargeMetadata';
@@ -2549,6 +2578,15 @@ export type MergeChargesByTransactionReferenceResult = {
2549
2578
  readonly success: Scalars['Boolean']['output'];
2550
2579
  };
2551
2580
 
2581
+ /** A charge that was successfully merged during auto-match */
2582
+ export type MergedCharge = {
2583
+ readonly __typename?: 'MergedCharge';
2584
+ /** UUID of the deleted/merged-away charge */
2585
+ readonly chargeId: Scalars['UUID']['output'];
2586
+ /** Confidence score that triggered the merge */
2587
+ readonly confidenceScore: Scalars['Float']['output'];
2588
+ };
2589
+
2552
2590
  /** a misc expense */
2553
2591
  export type MiscExpense = {
2554
2592
  readonly __typename?: 'MiscExpense';
@@ -2609,6 +2647,8 @@ export type Mutation = {
2609
2647
  readonly addDeelContract: Scalars['Boolean']['output'];
2610
2648
  readonly addSortCode: Scalars['Boolean']['output'];
2611
2649
  readonly addTag: Scalars['Boolean']['output'];
2650
+ /** Automatically match all unmatched charges above the confidence threshold */
2651
+ readonly autoMatchCharges: AutoMatchChargesResult;
2612
2652
  readonly batchGenerateBusinessesOutOfTransactions: ReadonlyArray<Business>;
2613
2653
  readonly batchUpdateCharges: BatchUpdateChargesResult;
2614
2654
  readonly batchUploadDocuments: ReadonlyArray<UploadDocumentResult>;
@@ -3570,6 +3610,8 @@ export type Query = {
3570
3610
  /** get exchage rates by date */
3571
3611
  readonly exchangeRates?: Maybe<ExchangeRates>;
3572
3612
  readonly financialEntity: FinancialEntity;
3613
+ /** Find potential matches for a single unmatched charge */
3614
+ readonly findChargeMatches: ChargeMatchesResult;
3573
3615
  readonly gmailListenerStatus: Scalars['Boolean']['output'];
3574
3616
  readonly greenInvoiceClient: GreenInvoiceClient;
3575
3617
  readonly incomeExpenseChart: IncomeExpenseChart;
@@ -3816,6 +3858,12 @@ export type QueryFinancialEntityArgs = {
3816
3858
  };
3817
3859
 
3818
3860
 
3861
+ /** query root */
3862
+ export type QueryFindChargeMatchesArgs = {
3863
+ chargeId: Scalars['UUID']['input'];
3864
+ };
3865
+
3866
+
3819
3867
  /** query root */
3820
3868
  export type QueryGreenInvoiceClientArgs = {
3821
3869
  clientId: Scalars['UUID']['input'];
@@ -5060,6 +5108,7 @@ export type ResolversTypes = {
5060
5108
  AnnualId: ResolverTypeWrapper<AnnualId>;
5061
5109
  AnnualIdInput: AnnualIdInput;
5062
5110
  AuditOpinionType: AuditOpinionType;
5111
+ AutoMatchChargesResult: ResolverTypeWrapper<AutoMatchChargesResult>;
5063
5112
  BalanceTransactions: ResolverTypeWrapper<IGetNormalizedBalanceTransactionsResult>;
5064
5113
  BankDeposit: ResolverTypeWrapper<Omit<BankDeposit, 'transactions'> & { transactions: ReadonlyArray<ResolversTypes['Transaction']> }>;
5065
5114
  BankDepositCharge: ResolverTypeWrapper<IGetChargesByIdsResult>;
@@ -5099,6 +5148,8 @@ export type ResolversTypes = {
5099
5148
  Charge: ResolverTypeWrapper<ResolversInterfaceTypes<ResolversTypes>['Charge']>;
5100
5149
  ChargeFilter: ChargeFilter;
5101
5150
  ChargeFilterType: ChargeFilterType;
5151
+ ChargeMatch: ResolverTypeWrapper<ChargeMatch>;
5152
+ ChargeMatchesResult: ResolverTypeWrapper<ChargeMatchesResult>;
5102
5153
  ChargeMetadata: ResolverTypeWrapper<IGetChargesByIdsResult>;
5103
5154
  ChargeSortBy: ChargeSortBy;
5104
5155
  ChargeSortByField: ChargeSortByField;
@@ -5226,6 +5277,7 @@ export type ResolversTypes = {
5226
5277
  MergeChargeResult: ResolverTypeWrapper<ResolversUnionTypes<ResolversTypes>['MergeChargeResult']>;
5227
5278
  MergeChargeSuccessfulResult: ResolverTypeWrapper<Omit<MergeChargeSuccessfulResult, 'charge'> & { charge: ResolversTypes['Charge'] }>;
5228
5279
  MergeChargesByTransactionReferenceResult: ResolverTypeWrapper<Omit<MergeChargesByTransactionReferenceResult, 'charges'> & { charges?: Maybe<ReadonlyArray<ResolversTypes['Charge']>> }>;
5280
+ MergedCharge: ResolverTypeWrapper<MergedCharge>;
5229
5281
  MiscExpense: ResolverTypeWrapper<IGetExpensesByChargeIdsResult>;
5230
5282
  MissingChargeInfo: MissingChargeInfo;
5231
5283
  MonthlyVatCharge: ResolverTypeWrapper<IGetChargesByIdsResult>;
@@ -5350,6 +5402,7 @@ export type ResolversParentTypes = {
5350
5402
  AdminContextInput: AdminContextInput;
5351
5403
  AnnualId: AnnualId;
5352
5404
  AnnualIdInput: AnnualIdInput;
5405
+ AutoMatchChargesResult: AutoMatchChargesResult;
5353
5406
  BalanceTransactions: IGetNormalizedBalanceTransactionsResult;
5354
5407
  BankDeposit: Omit<BankDeposit, 'transactions'> & { transactions: ReadonlyArray<ResolversParentTypes['Transaction']> };
5355
5408
  BankDepositCharge: IGetChargesByIdsResult;
@@ -5384,6 +5437,8 @@ export type ResolversParentTypes = {
5384
5437
  CategorizeIntoExistingBusinessTripExpenseInput: CategorizeIntoExistingBusinessTripExpenseInput;
5385
5438
  Charge: ResolversInterfaceTypes<ResolversParentTypes>['Charge'];
5386
5439
  ChargeFilter: ChargeFilter;
5440
+ ChargeMatch: ChargeMatch;
5441
+ ChargeMatchesResult: ChargeMatchesResult;
5387
5442
  ChargeMetadata: IGetChargesByIdsResult;
5388
5443
  ChargeSortBy: ChargeSortBy;
5389
5444
  ChargeSuggestions: Omit<ChargeSuggestions, 'tags'> & { tags: ReadonlyArray<ResolversParentTypes['Tag']> };
@@ -5488,6 +5543,7 @@ export type ResolversParentTypes = {
5488
5543
  MergeChargeResult: ResolversUnionTypes<ResolversParentTypes>['MergeChargeResult'];
5489
5544
  MergeChargeSuccessfulResult: Omit<MergeChargeSuccessfulResult, 'charge'> & { charge: ResolversParentTypes['Charge'] };
5490
5545
  MergeChargesByTransactionReferenceResult: Omit<MergeChargesByTransactionReferenceResult, 'charges'> & { charges?: Maybe<ReadonlyArray<ResolversParentTypes['Charge']>> };
5546
+ MergedCharge: MergedCharge;
5491
5547
  MiscExpense: IGetExpensesByChargeIdsResult;
5492
5548
  MonthlyVatCharge: IGetChargesByIdsResult;
5493
5549
  Mutation: {};
@@ -5695,6 +5751,14 @@ export type AnnualIdResolvers<ContextType = GraphQLModules.Context, ParentType e
5695
5751
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
5696
5752
  };
5697
5753
 
5754
+ export type AutoMatchChargesResultResolvers<ContextType = GraphQLModules.Context, ParentType extends ResolversParentTypes['AutoMatchChargesResult'] = ResolversParentTypes['AutoMatchChargesResult']> = {
5755
+ errors?: Resolver<ReadonlyArray<ResolversTypes['String']>, ParentType, ContextType>;
5756
+ mergedCharges?: Resolver<ReadonlyArray<ResolversTypes['MergedCharge']>, ParentType, ContextType>;
5757
+ skippedCharges?: Resolver<ReadonlyArray<ResolversTypes['UUID']>, ParentType, ContextType>;
5758
+ totalMatches?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
5759
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
5760
+ };
5761
+
5698
5762
  export type BalanceTransactionsResolvers<ContextType = GraphQLModules.Context, ParentType extends ResolversParentTypes['BalanceTransactions'] = ResolversParentTypes['BalanceTransactions']> = {
5699
5763
  amount?: Resolver<ResolversTypes['FinancialAmount'], ParentType, ContextType>;
5700
5764
  amountUsd?: Resolver<ResolversTypes['FinancialAmount'], ParentType, ContextType>;
@@ -6043,6 +6107,17 @@ export type ChargeResolvers<ContextType = GraphQLModules.Context, ParentType ext
6043
6107
  yearsOfRelevance?: Resolver<Maybe<ReadonlyArray<ResolversTypes['YearOfRelevance']>>, ParentType, ContextType>;
6044
6108
  };
6045
6109
 
6110
+ export type ChargeMatchResolvers<ContextType = GraphQLModules.Context, ParentType extends ResolversParentTypes['ChargeMatch'] = ResolversParentTypes['ChargeMatch']> = {
6111
+ chargeId?: Resolver<ResolversTypes['UUID'], ParentType, ContextType>;
6112
+ confidenceScore?: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
6113
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
6114
+ };
6115
+
6116
+ export type ChargeMatchesResultResolvers<ContextType = GraphQLModules.Context, ParentType extends ResolversParentTypes['ChargeMatchesResult'] = ResolversParentTypes['ChargeMatchesResult']> = {
6117
+ matches?: Resolver<ReadonlyArray<ResolversTypes['ChargeMatch']>, ParentType, ContextType>;
6118
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
6119
+ };
6120
+
6046
6121
  export type ChargeMetadataResolvers<ContextType = GraphQLModules.Context, ParentType extends ResolversParentTypes['ChargeMetadata'] = ResolversParentTypes['ChargeMetadata']> = {
6047
6122
  createdAt?: Resolver<ResolversTypes['DateTime'], ParentType, ContextType>;
6048
6123
  documentsCount?: Resolver<ResolversTypes['Int'], ParentType, ContextType>;
@@ -7000,6 +7075,12 @@ export type MergeChargesByTransactionReferenceResultResolvers<ContextType = Grap
7000
7075
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
7001
7076
  };
7002
7077
 
7078
+ export type MergedChargeResolvers<ContextType = GraphQLModules.Context, ParentType extends ResolversParentTypes['MergedCharge'] = ResolversParentTypes['MergedCharge']> = {
7079
+ chargeId?: Resolver<ResolversTypes['UUID'], ParentType, ContextType>;
7080
+ confidenceScore?: Resolver<ResolversTypes['Float'], ParentType, ContextType>;
7081
+ __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
7082
+ };
7083
+
7003
7084
  export type MiscExpenseResolvers<ContextType = GraphQLModules.Context, ParentType extends ResolversParentTypes['MiscExpense'] = ResolversParentTypes['MiscExpense']> = {
7004
7085
  amount?: Resolver<ResolversTypes['FinancialAmount'], ParentType, ContextType>;
7005
7086
  charge?: Resolver<ResolversTypes['Charge'], ParentType, ContextType>;
@@ -7056,6 +7137,7 @@ export type MutationResolvers<ContextType = GraphQLModules.Context, ParentType e
7056
7137
  addDeelContract?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType, RequireFields<MutationAddDeelContractArgs, 'businessId' | 'contractId' | 'contractStartDate' | 'contractorId' | 'contractorName'>>;
7057
7138
  addSortCode?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType, RequireFields<MutationAddSortCodeArgs, 'key' | 'name'>>;
7058
7139
  addTag?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType, RequireFields<MutationAddTagArgs, 'name'>>;
7140
+ autoMatchCharges?: Resolver<ResolversTypes['AutoMatchChargesResult'], ParentType, ContextType>;
7059
7141
  batchGenerateBusinessesOutOfTransactions?: Resolver<ReadonlyArray<ResolversTypes['Business']>, ParentType, ContextType>;
7060
7142
  batchUpdateCharges?: Resolver<ResolversTypes['BatchUpdateChargesResult'], ParentType, ContextType, RequireFields<MutationBatchUpdateChargesArgs, 'chargeIds' | 'fields'>>;
7061
7143
  batchUploadDocuments?: Resolver<ReadonlyArray<ResolversTypes['UploadDocumentResult']>, ParentType, ContextType, RequireFields<MutationBatchUploadDocumentsArgs, 'documents'>>;
@@ -7339,6 +7421,7 @@ export type QueryResolvers<ContextType = GraphQLModules.Context, ParentType exte
7339
7421
  employeesByEmployerId?: Resolver<ReadonlyArray<ResolversTypes['Employee']>, ParentType, ContextType, RequireFields<QueryEmployeesByEmployerIdArgs, 'employerId'>>;
7340
7422
  exchangeRates?: Resolver<Maybe<ResolversTypes['ExchangeRates']>, ParentType, ContextType, Partial<QueryExchangeRatesArgs>>;
7341
7423
  financialEntity?: Resolver<ResolversTypes['FinancialEntity'], ParentType, ContextType, RequireFields<QueryFinancialEntityArgs, 'id'>>;
7424
+ findChargeMatches?: Resolver<ResolversTypes['ChargeMatchesResult'], ParentType, ContextType, RequireFields<QueryFindChargeMatchesArgs, 'chargeId'>>;
7342
7425
  gmailListenerStatus?: Resolver<ResolversTypes['Boolean'], ParentType, ContextType>;
7343
7426
  greenInvoiceClient?: Resolver<ResolversTypes['GreenInvoiceClient'], ParentType, ContextType, RequireFields<QueryGreenInvoiceClientArgs, 'clientId'>>;
7344
7427
  incomeExpenseChart?: Resolver<ResolversTypes['IncomeExpenseChart'], ParentType, ContextType, RequireFields<QueryIncomeExpenseChartArgs, 'filters'>>;
@@ -7880,6 +7963,7 @@ export type Resolvers<ContextType = GraphQLModules.Context> = {
7880
7963
  AdminBusiness?: AdminBusinessResolvers<ContextType>;
7881
7964
  AdminContext?: AdminContextResolvers<ContextType>;
7882
7965
  AnnualId?: AnnualIdResolvers<ContextType>;
7966
+ AutoMatchChargesResult?: AutoMatchChargesResultResolvers<ContextType>;
7883
7967
  BalanceTransactions?: BalanceTransactionsResolvers<ContextType>;
7884
7968
  BankDeposit?: BankDepositResolvers<ContextType>;
7885
7969
  BankDepositCharge?: BankDepositChargeResolvers<ContextType>;
@@ -7907,6 +7991,8 @@ export type Resolvers<ContextType = GraphQLModules.Context> = {
7907
7991
  BusinessTripTravelAndSubsistenceExpense?: BusinessTripTravelAndSubsistenceExpenseResolvers<ContextType>;
7908
7992
  CardFinancialAccount?: CardFinancialAccountResolvers<ContextType>;
7909
7993
  Charge?: ChargeResolvers<ContextType>;
7994
+ ChargeMatch?: ChargeMatchResolvers<ContextType>;
7995
+ ChargeMatchesResult?: ChargeMatchesResultResolvers<ContextType>;
7910
7996
  ChargeMetadata?: ChargeMetadataResolvers<ContextType>;
7911
7997
  ChargeSortByField?: ChargeSortByFieldResolvers;
7912
7998
  ChargeSuggestions?: ChargeSuggestionsResolvers<ContextType>;
@@ -7989,6 +8075,7 @@ export type Resolvers<ContextType = GraphQLModules.Context> = {
7989
8075
  MergeChargeResult?: MergeChargeResultResolvers<ContextType>;
7990
8076
  MergeChargeSuccessfulResult?: MergeChargeSuccessfulResultResolvers<ContextType>;
7991
8077
  MergeChargesByTransactionReferenceResult?: MergeChargesByTransactionReferenceResultResolvers<ContextType>;
8078
+ MergedCharge?: MergedChargeResolvers<ContextType>;
7992
8079
  MiscExpense?: MiscExpenseResolvers<ContextType>;
7993
8080
  MissingChargeInfo?: MissingChargeInfoResolvers;
7994
8081
  MonthlyVatCharge?: MonthlyVatChargeResolvers<ContextType>;