@things-factory/accounting 10.1.155 → 10.1.156

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 (85) hide show
  1. package/dist-client/tsconfig.tsbuildinfo +1 -1
  2. package/dist-server/activities/activity-expenditure.d.ts +186 -0
  3. package/dist-server/activities/activity-expenditure.js +122 -0
  4. package/dist-server/activities/activity-expenditure.js.map +1 -0
  5. package/dist-server/activities/expenditure-activity-names.d.ts +4 -0
  6. package/dist-server/activities/expenditure-activity-names.js +13 -0
  7. package/dist-server/activities/expenditure-activity-names.js.map +1 -0
  8. package/dist-server/activities/index.d.ts +2 -1
  9. package/dist-server/activities/index.js +19 -12
  10. package/dist-server/activities/index.js.map +1 -1
  11. package/dist-server/index.d.ts +1 -0
  12. package/dist-server/index.js +1 -0
  13. package/dist-server/index.js.map +1 -1
  14. package/dist-server/service/account/account-match.d.ts +5 -3
  15. package/dist-server/service/account/account-match.js +7 -3
  16. package/dist-server/service/account/account-match.js.map +1 -1
  17. package/dist-server/service/bank-statement/bank-import.js +9 -3
  18. package/dist-server/service/bank-statement/bank-import.js.map +1 -1
  19. package/dist-server/service/bank-statement/bank-source.js +2 -1
  20. package/dist-server/service/bank-statement/bank-source.js.map +1 -1
  21. package/dist-server/service/counterparty-account/counterparty-account-query.d.ts +6 -0
  22. package/dist-server/service/counterparty-account/counterparty-account-query.js +48 -0
  23. package/dist-server/service/counterparty-account/counterparty-account-query.js.map +1 -0
  24. package/dist-server/service/counterparty-account/counterparty-account-rules.d.ts +46 -0
  25. package/dist-server/service/counterparty-account/counterparty-account-rules.js +76 -0
  26. package/dist-server/service/counterparty-account/counterparty-account-rules.js.map +1 -0
  27. package/dist-server/service/counterparty-account/counterparty-account-service.d.ts +22 -0
  28. package/dist-server/service/counterparty-account/counterparty-account-service.js +66 -0
  29. package/dist-server/service/counterparty-account/counterparty-account-service.js.map +1 -0
  30. package/dist-server/service/counterparty-account/counterparty-account-type.d.ts +9 -0
  31. package/dist-server/service/counterparty-account/counterparty-account-type.js +40 -0
  32. package/dist-server/service/counterparty-account/counterparty-account-type.js.map +1 -0
  33. package/dist-server/service/counterparty-account/index.d.ts +4 -0
  34. package/dist-server/service/counterparty-account/index.js +8 -0
  35. package/dist-server/service/counterparty-account/index.js.map +1 -0
  36. package/dist-server/service/expenditure-request/expenditure-payment-state.d.ts +52 -0
  37. package/dist-server/service/expenditure-request/expenditure-payment-state.js +100 -0
  38. package/dist-server/service/expenditure-request/expenditure-payment-state.js.map +1 -0
  39. package/dist-server/service/expenditure-request/expenditure-request-item.d.ts +41 -0
  40. package/dist-server/service/expenditure-request/expenditure-request-item.js +149 -0
  41. package/dist-server/service/expenditure-request/expenditure-request-item.js.map +1 -0
  42. package/dist-server/service/expenditure-request/expenditure-request-mutation.d.ts +18 -0
  43. package/dist-server/service/expenditure-request/expenditure-request-mutation.js +140 -0
  44. package/dist-server/service/expenditure-request/expenditure-request-mutation.js.map +1 -0
  45. package/dist-server/service/expenditure-request/expenditure-request-query.d.ts +46 -0
  46. package/dist-server/service/expenditure-request/expenditure-request-query.js +365 -0
  47. package/dist-server/service/expenditure-request/expenditure-request-query.js.map +1 -0
  48. package/dist-server/service/expenditure-request/expenditure-request-rules.d.ts +128 -0
  49. package/dist-server/service/expenditure-request/expenditure-request-rules.js +183 -0
  50. package/dist-server/service/expenditure-request/expenditure-request-rules.js.map +1 -0
  51. package/dist-server/service/expenditure-request/expenditure-request-service.d.ts +92 -0
  52. package/dist-server/service/expenditure-request/expenditure-request-service.js +488 -0
  53. package/dist-server/service/expenditure-request/expenditure-request-service.js.map +1 -0
  54. package/dist-server/service/expenditure-request/expenditure-request-type.d.ts +85 -0
  55. package/dist-server/service/expenditure-request/expenditure-request-type.js +312 -0
  56. package/dist-server/service/expenditure-request/expenditure-request-type.js.map +1 -0
  57. package/dist-server/service/expenditure-request/expenditure-request.d.ts +67 -0
  58. package/dist-server/service/expenditure-request/expenditure-request.js +228 -0
  59. package/dist-server/service/expenditure-request/expenditure-request.js.map +1 -0
  60. package/dist-server/service/expenditure-request/expenditure-target.d.ts +1 -0
  61. package/dist-server/service/expenditure-request/expenditure-target.js +55 -0
  62. package/dist-server/service/expenditure-request/expenditure-target.js.map +1 -0
  63. package/dist-server/service/expenditure-request/index.d.ts +8 -0
  64. package/dist-server/service/expenditure-request/index.js +12 -0
  65. package/dist-server/service/expenditure-request/index.js.map +1 -0
  66. package/dist-server/service/index.d.ts +9 -2
  67. package/dist-server/service/index.js +18 -3
  68. package/dist-server/service/index.js.map +1 -1
  69. package/dist-server/tsconfig.tsbuildinfo +1 -1
  70. package/package.json +7 -6
  71. package/translations/en.json +58 -1
  72. package/translations/es.json +17 -1
  73. package/translations/ja.json +17 -1
  74. package/translations/ko.json +58 -1
  75. package/translations/ms.json +17 -1
  76. package/translations/zh.json +17 -1
  77. package/dist-client/activities/activity-expense-edit.d.ts +0 -14
  78. package/dist-client/activities/activity-expense-edit.js +0 -85
  79. package/dist-client/activities/activity-expense-edit.js.map +0 -1
  80. package/dist-client/activities/activity-expense-view.d.ts +0 -14
  81. package/dist-client/activities/activity-expense-view.js +0 -85
  82. package/dist-client/activities/activity-expense-view.js.map +0 -1
  83. package/dist-server/activities/activity-expense.d.ts +0 -58
  84. package/dist-server/activities/activity-expense.js +0 -150
  85. package/dist-server/activities/activity-expense.js.map +0 -1
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpenditureRequest = exports.ExpenditureRequestStatus = exports.ExpenditureKind = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const type_graphql_1 = require("type-graphql");
7
+ const shell_1 = require("@things-factory/shell");
8
+ const auth_base_1 = require("@things-factory/auth-base");
9
+ const biz_base_1 = require("@things-factory/biz-base");
10
+ const organization_1 = require("@things-factory/organization");
11
+ const expenditure_request_item_1 = require("./expenditure-request-item");
12
+ var ExpenditureKind;
13
+ (function (ExpenditureKind) {
14
+ /** Paying a counterparty - a supplier's invoice, a service, a deposit. */
15
+ ExpenditureKind["VENDOR"] = "VENDOR";
16
+ /** Paying an employee back what they spent for the company (경비 청구). */
17
+ ExpenditureKind["REIMBURSEMENT"] = "REIMBURSEMENT";
18
+ })(ExpenditureKind || (exports.ExpenditureKind = ExpenditureKind = {}));
19
+ (0, type_graphql_1.registerEnumType)(ExpenditureKind, {
20
+ name: 'ExpenditureKind',
21
+ description: 'Who an expenditure request pays - a counterparty, or the employee who spent their own money'
22
+ });
23
+ var ExpenditureRequestStatus;
24
+ (function (ExpenditureRequestStatus) {
25
+ ExpenditureRequestStatus["DRAFT"] = "DRAFT";
26
+ ExpenditureRequestStatus["SUBMITTED"] = "SUBMITTED";
27
+ ExpenditureRequestStatus["APPROVED"] = "APPROVED";
28
+ ExpenditureRequestStatus["REJECTED"] = "REJECTED";
29
+ ExpenditureRequestStatus["WITHDRAWN"] = "WITHDRAWN";
30
+ })(ExpenditureRequestStatus || (exports.ExpenditureRequestStatus = ExpenditureRequestStatus = {}));
31
+ (0, type_graphql_1.registerEnumType)(ExpenditureRequestStatus, {
32
+ name: 'ExpenditureRequestStatus',
33
+ description: 'Where a request stands with its approvers - being written, waiting, decided. Whether it was paid is read from the bank lines that paid it'
34
+ });
35
+ /**
36
+ * 지출결의 - money the company is asked to pay out, put up for approval before it leaves (ADR-0135).
37
+ *
38
+ * Two kinds share it: paying a counterparty, and paying an employee back (경비 청구, one claim per employee and
39
+ * month). The requester writes the lines and submits; approvers decide through the worklist approval the submission
40
+ * raises. Once approved, finance pays it from the payment queue.
41
+ *
42
+ * Whether it was paid, and whether that payment was reconciled with the bank, is not stored: it is read from the
43
+ * payments on it (§`expenditure-payment-state.ts`). The account approvers saw is written down at submission, and it
44
+ * is the account paid.
45
+ */
46
+ let ExpenditureRequest = class ExpenditureRequest {
47
+ };
48
+ exports.ExpenditureRequest = ExpenditureRequest;
49
+ tslib_1.__decorate([
50
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
51
+ (0, type_graphql_1.Field)(type => type_graphql_1.ID, { description: 'Unique identifier' }),
52
+ tslib_1.__metadata("design:type", String)
53
+ ], ExpenditureRequest.prototype, "id", void 0);
54
+ tslib_1.__decorate([
55
+ (0, typeorm_1.ManyToOne)(type => shell_1.Domain),
56
+ (0, type_graphql_1.Field)(type => shell_1.Domain, { nullable: true, description: 'The domain it belongs to' }),
57
+ tslib_1.__metadata("design:type", shell_1.Domain)
58
+ ], ExpenditureRequest.prototype, "domain", void 0);
59
+ tslib_1.__decorate([
60
+ (0, typeorm_1.RelationId)((request) => request.domain),
61
+ tslib_1.__metadata("design:type", String)
62
+ ], ExpenditureRequest.prototype, "domainId", void 0);
63
+ tslib_1.__decorate([
64
+ (0, typeorm_1.Column)(),
65
+ (0, type_graphql_1.Field)(type => ExpenditureKind, { description: 'Whom it pays - a counterparty, or the employee paid back' }),
66
+ tslib_1.__metadata("design:type", String)
67
+ ], ExpenditureRequest.prototype, "kind", void 0);
68
+ tslib_1.__decorate([
69
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: false }),
70
+ (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'Who wrote it - for a reimbursement, also who is paid' }),
71
+ tslib_1.__metadata("design:type", auth_base_1.User)
72
+ ], ExpenditureRequest.prototype, "requester", void 0);
73
+ tslib_1.__decorate([
74
+ (0, typeorm_1.RelationId)((request) => request.requester),
75
+ tslib_1.__metadata("design:type", String)
76
+ ], ExpenditureRequest.prototype, "requesterId", void 0);
77
+ tslib_1.__decorate([
78
+ (0, typeorm_1.ManyToOne)(type => organization_1.Department, { nullable: true }),
79
+ (0, type_graphql_1.Field)(type => organization_1.Department, { nullable: true, description: "The requester's department when it was written" }),
80
+ tslib_1.__metadata("design:type", organization_1.Department)
81
+ ], ExpenditureRequest.prototype, "department", void 0);
82
+ tslib_1.__decorate([
83
+ (0, typeorm_1.RelationId)((request) => request.department),
84
+ tslib_1.__metadata("design:type", String)
85
+ ], ExpenditureRequest.prototype, "departmentId", void 0);
86
+ tslib_1.__decorate([
87
+ (0, typeorm_1.ManyToOne)(type => biz_base_1.Counterparty, { nullable: true }),
88
+ (0, type_graphql_1.Field)(type => biz_base_1.Counterparty, { nullable: true, description: 'Who is paid, for a counterparty payment' }),
89
+ tslib_1.__metadata("design:type", biz_base_1.Counterparty)
90
+ ], ExpenditureRequest.prototype, "counterparty", void 0);
91
+ tslib_1.__decorate([
92
+ (0, typeorm_1.RelationId)((request) => request.counterparty),
93
+ tslib_1.__metadata("design:type", String)
94
+ ], ExpenditureRequest.prototype, "counterpartyId", void 0);
95
+ tslib_1.__decorate([
96
+ (0, typeorm_1.ManyToOne)(type => biz_base_1.CounterpartyBankAccount, { nullable: true }),
97
+ (0, type_graphql_1.Field)(type => biz_base_1.CounterpartyBankAccount, { nullable: true, description: "The counterparty's account chosen to be paid into" }),
98
+ tslib_1.__metadata("design:type", biz_base_1.CounterpartyBankAccount)
99
+ ], ExpenditureRequest.prototype, "payeeAccount", void 0);
100
+ tslib_1.__decorate([
101
+ (0, typeorm_1.RelationId)((request) => request.payeeAccount),
102
+ tslib_1.__metadata("design:type", String)
103
+ ], ExpenditureRequest.prototype, "payeeAccountId", void 0);
104
+ tslib_1.__decorate([
105
+ (0, typeorm_1.Column)({ nullable: true }),
106
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The bank of the account paid into, as approvers saw it' }),
107
+ tslib_1.__metadata("design:type", String)
108
+ ], ExpenditureRequest.prototype, "payeeBankName", void 0);
109
+ tslib_1.__decorate([
110
+ (0, typeorm_1.Column)({ nullable: true }),
111
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The account paid into, as approvers saw it - written at submission' }),
112
+ tslib_1.__metadata("design:type", String)
113
+ ], ExpenditureRequest.prototype, "payeeAccountNumber", void 0);
114
+ tslib_1.__decorate([
115
+ (0, typeorm_1.Column)({ nullable: true }),
116
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The holder of the account paid into, as approvers saw it' }),
117
+ tslib_1.__metadata("design:type", String)
118
+ ], ExpenditureRequest.prototype, "payeeHolderName", void 0);
119
+ tslib_1.__decorate([
120
+ (0, typeorm_1.Column)({ nullable: true }),
121
+ (0, type_graphql_1.Field)({ nullable: true, description: 'YYYY-MM a reimbursement belongs to' }),
122
+ tslib_1.__metadata("design:type", String)
123
+ ], ExpenditureRequest.prototype, "month", void 0);
124
+ tslib_1.__decorate([
125
+ (0, typeorm_1.Column)({ nullable: true }),
126
+ (0, type_graphql_1.Field)({ nullable: true, description: 'YYYY-MM-DD it is to be paid' }),
127
+ tslib_1.__metadata("design:type", String)
128
+ ], ExpenditureRequest.prototype, "dueDate", void 0);
129
+ tslib_1.__decorate([
130
+ (0, typeorm_1.Column)(),
131
+ (0, type_graphql_1.Field)({ description: 'What it is, in a few words' }),
132
+ tslib_1.__metadata("design:type", String)
133
+ ], ExpenditureRequest.prototype, "title", void 0);
134
+ tslib_1.__decorate([
135
+ (0, typeorm_1.Column)({ default: 'KRW' }),
136
+ (0, type_graphql_1.Field)({ description: 'The currency it is asked in' }),
137
+ tslib_1.__metadata("design:type", String)
138
+ ], ExpenditureRequest.prototype, "currency", void 0);
139
+ tslib_1.__decorate([
140
+ (0, typeorm_1.Column)({ default: ExpenditureRequestStatus.DRAFT }),
141
+ (0, type_graphql_1.Field)(type => ExpenditureRequestStatus, { description: 'Where it stands with its approvers' }),
142
+ tslib_1.__metadata("design:type", String)
143
+ ], ExpenditureRequest.prototype, "status", void 0);
144
+ tslib_1.__decorate([
145
+ (0, typeorm_1.Column)((0, shell_1.moneyColumn)()),
146
+ (0, type_graphql_1.Field)(type => type_graphql_1.Float, { description: 'Sum of the lines' }),
147
+ tslib_1.__metadata("design:type", Number)
148
+ ], ExpenditureRequest.prototype, "totalAmount", void 0);
149
+ tslib_1.__decorate([
150
+ (0, typeorm_1.Column)((0, shell_1.moneyColumn)()),
151
+ (0, type_graphql_1.Field)(type => type_graphql_1.Float, { description: 'What the company is to pay - the lines not paid with the corporate card' }),
152
+ tslib_1.__metadata("design:type", Number)
153
+ ], ExpenditureRequest.prototype, "payableAmount", void 0);
154
+ tslib_1.__decorate([
155
+ (0, typeorm_1.OneToMany)(type => expenditure_request_item_1.ExpenditureRequestItem, item => item.request),
156
+ (0, type_graphql_1.Field)(type => [expenditure_request_item_1.ExpenditureRequestItem], { nullable: true, description: 'The lines' }),
157
+ tslib_1.__metadata("design:type", Array)
158
+ ], ExpenditureRequest.prototype, "items", void 0);
159
+ tslib_1.__decorate([
160
+ (0, typeorm_1.Column)({ nullable: true }),
161
+ (0, type_graphql_1.Field)({ nullable: true, description: 'The worklist approval raised by the latest submission' }),
162
+ tslib_1.__metadata("design:type", String)
163
+ ], ExpenditureRequest.prototype, "activityInstanceId", void 0);
164
+ tslib_1.__decorate([
165
+ (0, typeorm_1.Column)({ nullable: true }),
166
+ (0, type_graphql_1.Field)({ nullable: true, description: 'When it was last put up for approval' }),
167
+ tslib_1.__metadata("design:type", Date)
168
+ ], ExpenditureRequest.prototype, "submittedAt", void 0);
169
+ tslib_1.__decorate([
170
+ (0, typeorm_1.Column)({ nullable: true }),
171
+ (0, type_graphql_1.Field)({ nullable: true, description: 'When approvers last decided' }),
172
+ tslib_1.__metadata("design:type", Date)
173
+ ], ExpenditureRequest.prototype, "decidedAt", void 0);
174
+ tslib_1.__decorate([
175
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
176
+ (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'Who made the last decision' }),
177
+ tslib_1.__metadata("design:type", auth_base_1.User)
178
+ ], ExpenditureRequest.prototype, "decidedBy", void 0);
179
+ tslib_1.__decorate([
180
+ (0, typeorm_1.RelationId)((request) => request.decidedBy),
181
+ tslib_1.__metadata("design:type", String)
182
+ ], ExpenditureRequest.prototype, "decidedById", void 0);
183
+ tslib_1.__decorate([
184
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
185
+ (0, type_graphql_1.Field)({ nullable: true, description: 'Notes' }),
186
+ tslib_1.__metadata("design:type", String)
187
+ ], ExpenditureRequest.prototype, "notes", void 0);
188
+ tslib_1.__decorate([
189
+ (0, typeorm_1.CreateDateColumn)(),
190
+ (0, type_graphql_1.Field)({ nullable: true, description: 'When it was written' }),
191
+ tslib_1.__metadata("design:type", Date)
192
+ ], ExpenditureRequest.prototype, "createdAt", void 0);
193
+ tslib_1.__decorate([
194
+ (0, typeorm_1.UpdateDateColumn)(),
195
+ (0, type_graphql_1.Field)({ nullable: true, description: 'When it was last changed' }),
196
+ tslib_1.__metadata("design:type", Date)
197
+ ], ExpenditureRequest.prototype, "updatedAt", void 0);
198
+ tslib_1.__decorate([
199
+ (0, typeorm_1.DeleteDateColumn)(),
200
+ (0, type_graphql_1.Field)({ nullable: true, description: 'When it was deleted - financial rows are kept, not erased' }),
201
+ tslib_1.__metadata("design:type", Date)
202
+ ], ExpenditureRequest.prototype, "deletedAt", void 0);
203
+ tslib_1.__decorate([
204
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
205
+ (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'Who wrote it' }),
206
+ tslib_1.__metadata("design:type", auth_base_1.User)
207
+ ], ExpenditureRequest.prototype, "creator", void 0);
208
+ tslib_1.__decorate([
209
+ (0, typeorm_1.RelationId)((request) => request.creator),
210
+ tslib_1.__metadata("design:type", String)
211
+ ], ExpenditureRequest.prototype, "creatorId", void 0);
212
+ tslib_1.__decorate([
213
+ (0, typeorm_1.ManyToOne)(type => auth_base_1.User, { nullable: true }),
214
+ (0, type_graphql_1.Field)(type => auth_base_1.User, { nullable: true, description: 'Who changed it last' }),
215
+ tslib_1.__metadata("design:type", auth_base_1.User)
216
+ ], ExpenditureRequest.prototype, "updater", void 0);
217
+ tslib_1.__decorate([
218
+ (0, typeorm_1.RelationId)((request) => request.updater),
219
+ tslib_1.__metadata("design:type", String)
220
+ ], ExpenditureRequest.prototype, "updaterId", void 0);
221
+ exports.ExpenditureRequest = ExpenditureRequest = tslib_1.__decorate([
222
+ (0, typeorm_1.Entity)(),
223
+ (0, typeorm_1.Index)('ix_expenditure_request_0', (request) => [request.domain, request.status]),
224
+ (0, typeorm_1.Index)('ix_expenditure_request_1', (request) => [request.domain, request.requester, request.month]),
225
+ (0, typeorm_1.Index)('ix_expenditure_request_2', (request) => [request.domain, request.dueDate]),
226
+ (0, type_graphql_1.ObjectType)({ description: 'Money the company is asked to pay out, put up for approval before it leaves' })
227
+ ], ExpenditureRequest);
228
+ //# sourceMappingURL=expenditure-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expenditure-request.js","sourceRoot":"","sources":["../../../server/service/expenditure-request/expenditure-request.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Column,\n CreateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn,\n RelationId,\n UpdateDateColumn\n} from 'typeorm'\nimport { Field, Float, ID, ObjectType, registerEnumType } from 'type-graphql'\n\nimport { Domain, moneyColumn } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Counterparty, CounterpartyBankAccount } from '@things-factory/biz-base'\nimport { Department } from '@things-factory/organization'\n\nimport { ExpenditureRequestItem } from './expenditure-request-item'\n\nexport enum ExpenditureKind {\n /** Paying a counterparty - a supplier's invoice, a service, a deposit. */\n VENDOR = 'VENDOR',\n /** Paying an employee back what they spent for the company (경비 청구). */\n REIMBURSEMENT = 'REIMBURSEMENT'\n}\n\nregisterEnumType(ExpenditureKind, {\n name: 'ExpenditureKind',\n description: 'Who an expenditure request pays - a counterparty, or the employee who spent their own money'\n})\n\nexport enum ExpenditureRequestStatus {\n DRAFT = 'DRAFT',\n SUBMITTED = 'SUBMITTED',\n APPROVED = 'APPROVED',\n REJECTED = 'REJECTED',\n WITHDRAWN = 'WITHDRAWN'\n}\n\nregisterEnumType(ExpenditureRequestStatus, {\n name: 'ExpenditureRequestStatus',\n description:\n 'Where a request stands with its approvers - being written, waiting, decided. Whether it was paid is read from the bank lines that paid it'\n})\n\n/**\n * 지출결의 - money the company is asked to pay out, put up for approval before it leaves (ADR-0135).\n *\n * Two kinds share it: paying a counterparty, and paying an employee back (경비 청구, one claim per employee and\n * month). The requester writes the lines and submits; approvers decide through the worklist approval the submission\n * raises. Once approved, finance pays it from the payment queue.\n *\n * Whether it was paid, and whether that payment was reconciled with the bank, is not stored: it is read from the\n * payments on it (§`expenditure-payment-state.ts`). The account approvers saw is written down at submission, and it\n * is the account paid.\n */\n@Entity()\n@Index('ix_expenditure_request_0', (request: ExpenditureRequest) => [request.domain, request.status])\n@Index('ix_expenditure_request_1', (request: ExpenditureRequest) => [request.domain, request.requester, request.month])\n@Index('ix_expenditure_request_2', (request: ExpenditureRequest) => [request.domain, request.dueDate])\n@ObjectType({ description: 'Money the company is asked to pay out, put up for approval before it leaves' })\nexport class ExpenditureRequest {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Unique identifier' })\n readonly id: string\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain it belongs to' })\n domain?: Domain\n\n @RelationId((request: ExpenditureRequest) => request.domain)\n domainId?: string\n\n @Column()\n @Field(type => ExpenditureKind, { description: 'Whom it pays - a counterparty, or the employee paid back' })\n kind: ExpenditureKind\n\n @ManyToOne(type => User, { nullable: false })\n @Field(type => User, { nullable: true, description: 'Who wrote it - for a reimbursement, also who is paid' })\n requester?: User\n\n @RelationId((request: ExpenditureRequest) => request.requester)\n requesterId?: string\n\n @ManyToOne(type => Department, { nullable: true })\n @Field(type => Department, { nullable: true, description: \"The requester's department when it was written\" })\n department?: Department\n\n @RelationId((request: ExpenditureRequest) => request.department)\n departmentId?: string\n\n @ManyToOne(type => Counterparty, { nullable: true })\n @Field(type => Counterparty, { nullable: true, description: 'Who is paid, for a counterparty payment' })\n counterparty?: Counterparty\n\n @RelationId((request: ExpenditureRequest) => request.counterparty)\n counterpartyId?: string\n\n @ManyToOne(type => CounterpartyBankAccount, { nullable: true })\n @Field(type => CounterpartyBankAccount, { nullable: true, description: \"The counterparty's account chosen to be paid into\" })\n payeeAccount?: CounterpartyBankAccount\n\n @RelationId((request: ExpenditureRequest) => request.payeeAccount)\n payeeAccountId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The bank of the account paid into, as approvers saw it' })\n payeeBankName?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The account paid into, as approvers saw it - written at submission' })\n payeeAccountNumber?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The holder of the account paid into, as approvers saw it' })\n payeeHolderName?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM a reimbursement belongs to' })\n month?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'YYYY-MM-DD it is to be paid' })\n dueDate?: string\n\n @Column()\n @Field({ description: 'What it is, in a few words' })\n title: string\n\n @Column({ default: 'KRW' })\n @Field({ description: 'The currency it is asked in' })\n currency: string\n\n @Column({ default: ExpenditureRequestStatus.DRAFT })\n @Field(type => ExpenditureRequestStatus, { description: 'Where it stands with its approvers' })\n status: ExpenditureRequestStatus\n\n @Column(moneyColumn())\n @Field(type => Float, { description: 'Sum of the lines' })\n totalAmount: number\n\n @Column(moneyColumn())\n @Field(type => Float, { description: 'What the company is to pay - the lines not paid with the corporate card' })\n payableAmount: number\n\n @OneToMany(type => ExpenditureRequestItem, item => item.request)\n @Field(type => [ExpenditureRequestItem], { nullable: true, description: 'The lines' })\n items?: ExpenditureRequestItem[]\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The worklist approval raised by the latest submission' })\n activityInstanceId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When it was last put up for approval' })\n submittedAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'When approvers last decided' })\n decidedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who made the last decision' })\n decidedBy?: User\n\n @RelationId((request: ExpenditureRequest) => request.decidedBy)\n decidedById?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'Notes' })\n notes?: string\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'When it was written' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'When it was last changed' })\n updatedAt?: Date\n\n @DeleteDateColumn()\n @Field({ nullable: true, description: 'When it was deleted - financial rows are kept, not erased' })\n deletedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who wrote it' })\n creator?: User\n\n @RelationId((request: ExpenditureRequest) => request.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'Who changed it last' })\n updater?: User\n\n @RelationId((request: ExpenditureRequest) => request.updater)\n updaterId?: string\n}\n"]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const typeorm_1 = require("typeorm");
4
+ const shell_1 = require("@things-factory/shell");
5
+ const cash_flow_type_1 = require("../cash-flow-type");
6
+ const payment_1 = require("../payment/payment");
7
+ const payment_targets_1 = require("../payment/payment-targets");
8
+ const transaction_1 = require("../transaction/transaction");
9
+ const expenditure_request_1 = require("./expenditure-request");
10
+ const expenditure_request_item_1 = require("./expenditure-request-item");
11
+ const expenditure_payment_state_1 = require("./expenditure-payment-state");
12
+ /*
13
+ * The bank lines that paid an expenditure request directly (ADR-0135 §2-5) - the part no tax invoice of it stands
14
+ * for. A request is paid only once it is approved, only by withdrawals in its currency, and by no more than that part.
15
+ */
16
+ (0, payment_targets_1.registerPaymentTarget)(expenditure_payment_state_1.EXPENDITURE_TARGET, {
17
+ purpose: payment_1.PaymentPurpose.SETTLEMENT,
18
+ async label(tx, domain, targetIds) {
19
+ const requests = await tx
20
+ .getRepository(expenditure_request_1.ExpenditureRequest)
21
+ .find({ where: { domain: { id: domain.id }, id: (0, typeorm_1.In)(targetIds) }, withDeleted: true });
22
+ return new Map(requests.map(one => [one.id, one.title]));
23
+ },
24
+ async validate(tx, domain, { targetIds }) {
25
+ const requests = await tx
26
+ .getRepository(expenditure_request_1.ExpenditureRequest)
27
+ .find({ where: { domain: { id: domain.id }, id: (0, typeorm_1.In)(targetIds) } });
28
+ if (requests.length !== new Set(targetIds).size)
29
+ throw new shell_1.Refusal('expenditure-not-found', {}, 'the expenditure request was not found - reload and try again');
30
+ const items = await tx
31
+ .getRepository(expenditure_request_item_1.ExpenditureRequestItem)
32
+ .find({ where: { domain: { id: domain.id }, request: { id: (0, typeorm_1.In)(targetIds) } } });
33
+ const payments = await tx.getRepository(payment_1.Payment).find({
34
+ where: { domain: { id: domain.id }, targetType: expenditure_payment_state_1.EXPENDITURE_TARGET, targetId: (0, typeorm_1.In)(targetIds) },
35
+ relations: ['transaction']
36
+ });
37
+ for (const request of requests) {
38
+ const own = payments.filter(one => one.targetId === request.id);
39
+ if (!own.length)
40
+ continue;
41
+ if (request.status !== expenditure_request_1.ExpenditureRequestStatus.APPROVED)
42
+ throw new shell_1.Refusal('expenditure-not-approved', { title: request.title }, `only an approved request is paid - ${request.title}`);
43
+ for (const { transaction: line } of own)
44
+ if (line.category !== transaction_1.TransactionCategory.CONFIRMED || line.type !== cash_flow_type_1.CashFlowType.EXPENSE || (line.currency ?? 'KRW') !== request.currency)
45
+ throw new shell_1.Refusal('expenditure-paid-by-withdrawal', { currency: request.currency }, `a request is paid by a withdrawal in ${request.currency}`);
46
+ }
47
+ const states = await (0, expenditure_payment_state_1.paymentStatesOf)(tx, domain, requests.map(one => ({ id: one.id, items: items.filter(item => item.requestId === one.id) })));
48
+ for (const request of requests) {
49
+ const state = states.get(request.id);
50
+ if (state.settled > state.settleable + 0.005)
51
+ throw new shell_1.Refusal('expenditure-paid-over', { title: request.title }, `more is put on ${request.title} than it asks - a line that cites a tax invoice is paid on that invoice`);
52
+ }
53
+ }
54
+ });
55
+ //# sourceMappingURL=expenditure-target.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expenditure-target.js","sourceRoot":"","sources":["../../../server/service/expenditure-request/expenditure-target.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\n\nimport { Refusal } from '@things-factory/shell'\n\nimport { CashFlowType } from '../cash-flow-type'\nimport { Payment, PaymentPurpose } from '../payment/payment'\nimport { registerPaymentTarget } from '../payment/payment-targets'\nimport { TransactionCategory } from '../transaction/transaction'\nimport { ExpenditureRequest, ExpenditureRequestStatus } from './expenditure-request'\nimport { ExpenditureRequestItem } from './expenditure-request-item'\nimport { EXPENDITURE_TARGET, paymentStatesOf } from './expenditure-payment-state'\n\n/*\n * The bank lines that paid an expenditure request directly (ADR-0135 §2-5) - the part no tax invoice of it stands\n * for. A request is paid only once it is approved, only by withdrawals in its currency, and by no more than that part.\n */\nregisterPaymentTarget(EXPENDITURE_TARGET, {\n purpose: PaymentPurpose.SETTLEMENT,\n\n async label(tx, domain, targetIds) {\n const requests = await tx\n .getRepository(ExpenditureRequest)\n .find({ where: { domain: { id: domain.id }, id: In(targetIds) } as any, withDeleted: true })\n return new Map(requests.map(one => [one.id, one.title]))\n },\n\n async validate(tx, domain, { targetIds }) {\n const requests = await tx\n .getRepository(ExpenditureRequest)\n .find({ where: { domain: { id: domain.id }, id: In(targetIds) } as any })\n if (requests.length !== new Set(targetIds).size)\n throw new Refusal('expenditure-not-found', {}, 'the expenditure request was not found - reload and try again')\n\n const items = await tx\n .getRepository(ExpenditureRequestItem)\n .find({ where: { domain: { id: domain.id }, request: { id: In(targetIds) } } as any })\n const payments = await tx.getRepository(Payment).find({\n where: { domain: { id: domain.id }, targetType: EXPENDITURE_TARGET, targetId: In(targetIds) } as any,\n relations: ['transaction']\n })\n\n for (const request of requests) {\n const own = payments.filter(one => one.targetId === request.id)\n if (!own.length) continue\n if (request.status !== ExpenditureRequestStatus.APPROVED)\n throw new Refusal('expenditure-not-approved', { title: request.title }, `only an approved request is paid - ${request.title}`)\n for (const { transaction: line } of own)\n if (line.category !== TransactionCategory.CONFIRMED || line.type !== CashFlowType.EXPENSE || (line.currency ?? 'KRW') !== request.currency)\n throw new Refusal('expenditure-paid-by-withdrawal', { currency: request.currency }, `a request is paid by a withdrawal in ${request.currency}`)\n }\n\n const states = await paymentStatesOf(\n tx,\n domain,\n requests.map(one => ({ id: one.id, items: items.filter(item => item.requestId === one.id) }))\n )\n for (const request of requests) {\n const state = states.get(request.id)!\n if (state.settled > state.settleable + 0.005)\n throw new Refusal(\n 'expenditure-paid-over',\n { title: request.title },\n `more is put on ${request.title} than it asks - a line that cites a tax invoice is paid on that invoice`\n )\n }\n }\n})\n"]}
@@ -0,0 +1,8 @@
1
+ import { ExpenditureRequest } from './expenditure-request';
2
+ import { ExpenditureRequestItem } from './expenditure-request-item';
3
+ import { ExpenditureRequestItemQuery, ExpenditureRequestQuery } from './expenditure-request-query';
4
+ import { ExpenditureRequestMutation } from './expenditure-request-mutation';
5
+ import './expenditure-target';
6
+ export declare const entities: (typeof ExpenditureRequestItem | typeof ExpenditureRequest)[];
7
+ export declare const resolvers: (typeof ExpenditureRequestQuery | typeof ExpenditureRequestItemQuery | typeof ExpenditureRequestMutation)[];
8
+ export declare const subscribers: any[];
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.subscribers = exports.resolvers = exports.entities = void 0;
4
+ const expenditure_request_1 = require("./expenditure-request");
5
+ const expenditure_request_item_1 = require("./expenditure-request-item");
6
+ const expenditure_request_query_1 = require("./expenditure-request-query");
7
+ const expenditure_request_mutation_1 = require("./expenditure-request-mutation");
8
+ require("./expenditure-target");
9
+ exports.entities = [expenditure_request_1.ExpenditureRequest, expenditure_request_item_1.ExpenditureRequestItem];
10
+ exports.resolvers = [expenditure_request_query_1.ExpenditureRequestQuery, expenditure_request_query_1.ExpenditureRequestItemQuery, expenditure_request_mutation_1.ExpenditureRequestMutation];
11
+ exports.subscribers = [];
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/expenditure-request/index.ts"],"names":[],"mappings":";;;AAAA,+DAA0D;AAC1D,yEAAmE;AACnE,2EAAkG;AAClG,iFAA2E;AAC3E,gCAA6B;AAEhB,QAAA,QAAQ,GAAG,CAAC,wCAAkB,EAAE,iDAAsB,CAAC,CAAA;AACvD,QAAA,SAAS,GAAG,CAAC,mDAAuB,EAAE,uDAA2B,EAAE,yDAA0B,CAAC,CAAA;AAC9F,QAAA,WAAW,GAAG,EAAE,CAAA","sourcesContent":["import { ExpenditureRequest } from './expenditure-request'\nimport { ExpenditureRequestItem } from './expenditure-request-item'\nimport { ExpenditureRequestItemQuery, ExpenditureRequestQuery } from './expenditure-request-query'\nimport { ExpenditureRequestMutation } from './expenditure-request-mutation'\nimport './expenditure-target'\n\nexport const entities = [ExpenditureRequest, ExpenditureRequestItem]\nexport const resolvers = [ExpenditureRequestQuery, ExpenditureRequestItemQuery, ExpenditureRequestMutation]\nexport const subscribers = []\n"]}
@@ -12,6 +12,8 @@ export * from './financial-institution/financial-institution';
12
12
  export * from './fiscal-month/fiscal-month';
13
13
  export * from './fiscal-quarter/fiscal-quarter';
14
14
  export * from './fiscal-year/fiscal-year';
15
+ export * from './expenditure-request/expenditure-request';
16
+ export * from './expenditure-request/expenditure-request-item';
15
17
  export * from './transaction/transaction-period';
16
18
  export * from './transaction/transaction-service';
17
19
  export * from './bank-account/bank-account-service';
@@ -29,8 +31,13 @@ export * from './bank-statement/bank-parser';
29
31
  export * from './bank-statement/bank-reconcile';
30
32
  export * from './bank-statement/bank-import-type';
31
33
  export * from './bank-statement/bank-import';
32
- export declare const entities: (typeof import("./financial-statement/financial-statement-line").FinancialStatementLine | typeof import("./financial-statement/financial-statement").FinancialStatement | typeof import("./accounting-category/accounting-category").AccountingCategory | typeof import("./account/account").Account | typeof import("./bank-account/bank-account").BankAccount | typeof import("./bank-statement/bank-statement").BankStatement | typeof import("./payment/payment").Payment | typeof import("./transaction/transaction").Transaction | typeof import("./accounting-document/accounting-document").AccountingDocument | typeof import("./recurring-cash-item/recurring-cash-item").RecurringCashItem | typeof import("./financial-institution/financial-institution").FinancialInstitution | typeof import("./fiscal-year/fiscal-year").FiscalYear | typeof import("./financial-statement/financial-statement-history").FinancialStatementHistory | typeof import("./transaction/transaction-history").TransactionHistory)[];
34
+ export * from './counterparty-account/counterparty-account-rules';
35
+ export * from './counterparty-account/counterparty-account-service';
36
+ export * from './expenditure-request/expenditure-request-rules';
37
+ export * from './expenditure-request/expenditure-payment-state';
38
+ export * from './expenditure-request/expenditure-request-service';
39
+ export declare const entities: any[];
33
40
  export declare const subscribers: any[];
34
41
  export declare const schema: {
35
- resolverClasses: (typeof import("./financial-statement/financial-statement-query").FinancialStatementQuery | typeof import("./financial-statement/financial-statement-query").FinancialStatementLineQuery | typeof import("./financial-statement/financial-statement-mutation").FinancialStatementMutation | typeof import("./accounting-category/accounting-category-query").AccountingCategoryQuery | typeof import("./accounting-category/accounting-category-mutation").AccountingCategoryMutation | typeof import("./transaction/transaction-query").TransactionQuery | typeof import("./transaction/transaction-mutation").TransactionMutation | typeof import("./bank-account/bank-account-query").BankAccountQuery | typeof import("./bank-account/bank-account-mutation").BankAccountMutation | typeof import("./bank-statement/bank-statement-query").BankStatementQuery | typeof import("./bank-statement/bank-import-mutation").BankImportMutation | typeof import("./payment/payment-query").PaymentQuery | typeof import("./payment/payment-mutation").PaymentMutation | typeof import("./account/account-query").AccountQuery | typeof import("./account/account-mutation").AccountMutation | typeof import("./accounting-document/accounting-document-query").AccountingDocumentQuery | typeof import("./accounting-document/accounting-document-mutation").AccountingDocumentMutation | typeof import("./recurring-cash-item/recurring-cash-item-query").RecurringCashItemQuery | typeof import("./recurring-cash-item/recurring-cash-item-mutation").RecurringCashItemMutation | typeof import("./financial-institution/financial-institution-query").FinancialInstitutionQuery | typeof import("./financial-institution/financial-institution-mutation").FinancialInstitutionMutation | typeof import("./fiscal-month/fiscal-month-query").FiscalMonthQuery | typeof import("./fiscal-month/fiscal-month-mutation").FiscalMonthMutation | typeof import("./fiscal-quarter/fiscal-quarter-query").FiscalQuarterQuery | typeof import("./fiscal-quarter/fiscal-quarter-mutation").FiscalQuarterMutation | typeof import("./fiscal-year/fiscal-year-query").FiscalYearQuery | typeof import("./fiscal-year/fiscal-year-mutation").FiscalYearMutation)[];
42
+ resolverClasses: (typeof import("./financial-statement/financial-statement-query").FinancialStatementQuery | typeof import("./financial-statement/financial-statement-query").FinancialStatementLineQuery | typeof import("./financial-statement/financial-statement-mutation").FinancialStatementMutation | typeof import("./accounting-category/accounting-category-query").AccountingCategoryQuery | typeof import("./accounting-category/accounting-category-mutation").AccountingCategoryMutation | typeof import("./transaction/transaction-query").TransactionQuery | typeof import("./transaction/transaction-mutation").TransactionMutation | typeof import("./bank-account/bank-account-query").BankAccountQuery | typeof import("./bank-account/bank-account-mutation").BankAccountMutation | typeof import("./bank-statement/bank-statement-query").BankStatementQuery | typeof import("./bank-statement/bank-import-mutation").BankImportMutation | typeof import("./payment/payment-query").PaymentQuery | typeof import("./payment/payment-mutation").PaymentMutation | typeof import("./account/account-query").AccountQuery | typeof import("./account/account-mutation").AccountMutation | typeof import("./accounting-document/accounting-document-query").AccountingDocumentQuery | typeof import("./accounting-document/accounting-document-mutation").AccountingDocumentMutation | typeof import("./recurring-cash-item/recurring-cash-item-query").RecurringCashItemQuery | typeof import("./recurring-cash-item/recurring-cash-item-mutation").RecurringCashItemMutation | typeof import("./financial-institution/financial-institution-query").FinancialInstitutionQuery | typeof import("./financial-institution/financial-institution-mutation").FinancialInstitutionMutation | typeof import("./fiscal-month/fiscal-month-query").FiscalMonthQuery | typeof import("./fiscal-month/fiscal-month-mutation").FiscalMonthMutation | typeof import("./fiscal-quarter/fiscal-quarter-query").FiscalQuarterQuery | typeof import("./fiscal-quarter/fiscal-quarter-mutation").FiscalQuarterMutation | typeof import("./fiscal-year/fiscal-year-query").FiscalYearQuery | typeof import("./fiscal-year/fiscal-year-mutation").FiscalYearMutation | typeof import("./counterparty-account/counterparty-account-query").CounterpartyAccountQuery | typeof import("./expenditure-request/expenditure-request-query").ExpenditureRequestQuery | typeof import("./expenditure-request/expenditure-request-query").ExpenditureRequestItemQuery | typeof import("./expenditure-request/expenditure-request-mutation").ExpenditureRequestMutation)[];
36
43
  };
@@ -17,6 +17,8 @@ tslib_1.__exportStar(require("./financial-institution/financial-institution"), e
17
17
  tslib_1.__exportStar(require("./fiscal-month/fiscal-month"), exports);
18
18
  tslib_1.__exportStar(require("./fiscal-quarter/fiscal-quarter"), exports);
19
19
  tslib_1.__exportStar(require("./fiscal-year/fiscal-year"), exports);
20
+ tslib_1.__exportStar(require("./expenditure-request/expenditure-request"), exports);
21
+ tslib_1.__exportStar(require("./expenditure-request/expenditure-request-item"), exports);
20
22
  /* EXPORT SERVICES */
21
23
  tslib_1.__exportStar(require("./transaction/transaction-period"), exports);
22
24
  tslib_1.__exportStar(require("./transaction/transaction-service"), exports);
@@ -35,6 +37,11 @@ tslib_1.__exportStar(require("./bank-statement/bank-parser"), exports);
35
37
  tslib_1.__exportStar(require("./bank-statement/bank-reconcile"), exports);
36
38
  tslib_1.__exportStar(require("./bank-statement/bank-import-type"), exports);
37
39
  tslib_1.__exportStar(require("./bank-statement/bank-import"), exports);
40
+ tslib_1.__exportStar(require("./counterparty-account/counterparty-account-rules"), exports);
41
+ tslib_1.__exportStar(require("./counterparty-account/counterparty-account-service"), exports);
42
+ tslib_1.__exportStar(require("./expenditure-request/expenditure-request-rules"), exports);
43
+ tslib_1.__exportStar(require("./expenditure-request/expenditure-payment-state"), exports);
44
+ tslib_1.__exportStar(require("./expenditure-request/expenditure-request-service"), exports);
38
45
  /* IMPORT ENTITIES AND RESOLVERS */
39
46
  const financial_statement_1 = require("./financial-statement");
40
47
  const accounting_category_1 = require("./accounting-category");
@@ -49,6 +56,8 @@ const financial_institution_1 = require("./financial-institution");
49
56
  const fiscal_month_1 = require("./fiscal-month");
50
57
  const fiscal_quarter_1 = require("./fiscal-quarter");
51
58
  const fiscal_year_1 = require("./fiscal-year");
59
+ const counterparty_account_1 = require("./counterparty-account");
60
+ const expenditure_request_1 = require("./expenditure-request");
52
61
  exports.entities = [
53
62
  ...financial_statement_1.entities,
54
63
  ...accounting_category_1.entities,
@@ -62,7 +71,9 @@ exports.entities = [
62
71
  ...financial_institution_1.entities,
63
72
  ...fiscal_month_1.entities,
64
73
  ...fiscal_quarter_1.entities,
65
- ...fiscal_year_1.entities
74
+ ...fiscal_year_1.entities,
75
+ ...counterparty_account_1.entities,
76
+ ...expenditure_request_1.entities
66
77
  ];
67
78
  exports.subscribers = [
68
79
  ...financial_statement_1.subscribers,
@@ -77,7 +88,9 @@ exports.subscribers = [
77
88
  ...financial_institution_1.subscribers,
78
89
  ...fiscal_month_1.subscribers,
79
90
  ...fiscal_quarter_1.subscribers,
80
- ...fiscal_year_1.subscribers
91
+ ...fiscal_year_1.subscribers,
92
+ ...counterparty_account_1.subscribers,
93
+ ...expenditure_request_1.subscribers
81
94
  ];
82
95
  exports.schema = {
83
96
  resolverClasses: [
@@ -93,7 +106,9 @@ exports.schema = {
93
106
  ...financial_institution_1.resolvers,
94
107
  ...fiscal_month_1.resolvers,
95
108
  ...fiscal_quarter_1.resolvers,
96
- ...fiscal_year_1.resolvers
109
+ ...fiscal_year_1.resolvers,
110
+ ...counterparty_account_1.resolvers,
111
+ ...expenditure_request_1.resolvers
97
112
  ]
98
113
  };
99
114
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,2DAAgC;AAChC,oFAAyD;AACzD,oFAAyD;AACzD,oEAAyC;AACzC,sEAA2C;AAC3C,0EAA+C;AAC/C,4DAAiC;AACjC,4DAAiC;AACjC,oFAAyD;AACzD,oFAAyD;AACzD,wFAA6D;AAC7D,sEAA2C;AAC3C,0EAA+C;AAC/C,oEAAyC;AAEzC,qBAAqB;AACrB,2EAAgD;AAChD,4EAAiD;AACjD,8EAAmD;AACnD,oEAAyC;AACzC,oEAAyC;AACzC,qEAA0C;AAC1C,yFAA8D;AAC9D,4FAAiE;AACjE,mFAAwD;AACxD,4FAAiE;AACjE,kEAAuC;AACvC,qEAA0C;AAC1C,uEAA4C;AAC5C,uEAA4C;AAC5C,0EAA+C;AAC/C,4EAAiD;AACjD,uEAA4C;AAE5C,mCAAmC;AACnC,+DAI8B;AAC9B,+DAI8B;AAC9B,+CAIsB;AACtB,iDAIuB;AACvB,qDAIyB;AACzB,uCAIkB;AAClB,uCAIkB;AAClB,+DAI8B;AAC9B,+DAI8B;AAC9B,mEAIgC;AAChC,iDAIuB;AACvB,qDAIyB;AACzB,+CAIsB;AAET,QAAA,QAAQ,GAAG;IACtB,GAAG,8BAA0B;IAC7B,GAAG,8BAA0B;IAC7B,GAAG,sBAAmB;IACtB,GAAG,uBAAmB;IACtB,GAAG,yBAAqB;IACxB,GAAG,kBAAe;IAClB,GAAG,kBAAe;IAClB,GAAG,8BAA0B;IAC7B,GAAG,8BAAyB;IAC5B,GAAG,gCAA4B;IAC/B,GAAG,uBAAmB;IACtB,GAAG,yBAAqB;IACxB,GAAG,sBAAkB;CACtB,CAAA;AAEY,QAAA,WAAW,GAAG;IACzB,GAAG,iCAA6B;IAChC,GAAG,iCAA6B;IAChC,GAAG,yBAAsB;IACzB,GAAG,0BAAsB;IACzB,GAAG,4BAAwB;IAC3B,GAAG,qBAAkB;IACrB,GAAG,qBAAkB;IACrB,GAAG,iCAA6B;IAChC,GAAG,iCAA4B;IAC/B,GAAG,mCAA+B;IAClC,GAAG,0BAAsB;IACzB,GAAG,4BAAwB;IAC3B,GAAG,yBAAqB;CACzB,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,GAAG,+BAA2B;QAC9B,GAAG,+BAA2B;QAC9B,GAAG,uBAAoB;QACvB,GAAG,wBAAoB;QACvB,GAAG,0BAAsB;QACzB,GAAG,mBAAgB;QACnB,GAAG,mBAAgB;QACnB,GAAG,+BAA2B;QAC9B,GAAG,+BAA0B;QAC7B,GAAG,iCAA6B;QAChC,GAAG,wBAAoB;QACvB,GAAG,0BAAsB;QACzB,GAAG,uBAAmB;KACvB;CACF,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './cash-flow-type'\nexport * from './financial-statement/financial-statement'\nexport * from './accounting-category/accounting-category'\nexport * from './transaction/transaction'\nexport * from './bank-account/bank-account'\nexport * from './bank-statement/bank-statement'\nexport * from './payment/payment'\nexport * from './account/account'\nexport * from './accounting-document/accounting-document'\nexport * from './recurring-cash-item/recurring-cash-item'\nexport * from './financial-institution/financial-institution'\nexport * from './fiscal-month/fiscal-month'\nexport * from './fiscal-quarter/fiscal-quarter'\nexport * from './fiscal-year/fiscal-year'\n\n/* EXPORT SERVICES */\nexport * from './transaction/transaction-period'\nexport * from './transaction/transaction-service'\nexport * from './bank-account/bank-account-service'\nexport * from './payment/payment-targets'\nexport * from './payment/payment-service'\nexport * from './payment/document-targets'\nexport * from './financial-statement/financial-statement-line'\nexport * from './financial-statement/financial-statement-service'\nexport * from './recurring-cash-item/recurring-schedule'\nexport * from './recurring-cash-item/recurring-cash-item-service'\nexport * from './account/account-match'\nexport * from './account/default-accounts'\nexport * from './bank-statement/bank-source'\nexport * from './bank-statement/bank-parser'\nexport * from './bank-statement/bank-reconcile'\nexport * from './bank-statement/bank-import-type'\nexport * from './bank-statement/bank-import'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport {\n entities as FinancialStatementEntities,\n resolvers as FinancialStatementResolvers,\n subscribers as FinancialStatementSubscribers\n} from './financial-statement'\nimport {\n entities as AccountingCategoryEntities,\n resolvers as AccountingCategoryResolvers,\n subscribers as AccountingCategorySubscribers\n} from './accounting-category'\nimport {\n entities as TransactionEntities,\n resolvers as TransactionResolvers,\n subscribers as TransactionSubscribers\n} from './transaction'\nimport {\n entities as BankAccountEntities,\n resolvers as BankAccountResolvers,\n subscribers as BankAccountSubscribers\n} from './bank-account'\nimport {\n entities as BankStatementEntities,\n resolvers as BankStatementResolvers,\n subscribers as BankStatementSubscribers\n} from './bank-statement'\nimport {\n entities as PaymentEntities,\n resolvers as PaymentResolvers,\n subscribers as PaymentSubscribers\n} from './payment'\nimport {\n entities as AccountEntities,\n resolvers as AccountResolvers,\n subscribers as AccountSubscribers\n} from './account'\nimport {\n entities as AccountingDocumentEntities,\n resolvers as AccountingDocumentResolvers,\n subscribers as AccountingDocumentSubscribers\n} from './accounting-document'\nimport {\n entities as RecurringCashItemEntities,\n resolvers as RecurringCashItemResolvers,\n subscribers as RecurringCashItemSubscribers\n} from './recurring-cash-item'\nimport {\n entities as FinancialInstitutionEntities,\n resolvers as FinancialInstitutionResolvers,\n subscribers as FinancialInstitutionSubscribers\n} from './financial-institution'\nimport {\n entities as FiscalMonthEntities,\n resolvers as FiscalMonthResolvers,\n subscribers as FiscalMonthSubscribers\n} from './fiscal-month'\nimport {\n entities as FiscalQuarterEntities,\n resolvers as FiscalQuarterResolvers,\n subscribers as FiscalQuarterSubscribers\n} from './fiscal-quarter'\nimport {\n entities as FiscalYearEntities,\n resolvers as FiscalYearResolvers,\n subscribers as FiscalYearSubscribers\n} from './fiscal-year'\n\nexport const entities = [\n ...FinancialStatementEntities,\n ...AccountingCategoryEntities,\n ...TransactionEntities,\n ...BankAccountEntities,\n ...BankStatementEntities,\n ...PaymentEntities,\n ...AccountEntities,\n ...AccountingDocumentEntities,\n ...RecurringCashItemEntities,\n ...FinancialInstitutionEntities,\n ...FiscalMonthEntities,\n ...FiscalQuarterEntities,\n ...FiscalYearEntities\n]\n\nexport const subscribers = [\n ...FinancialStatementSubscribers,\n ...AccountingCategorySubscribers,\n ...TransactionSubscribers,\n ...BankAccountSubscribers,\n ...BankStatementSubscribers,\n ...PaymentSubscribers,\n ...AccountSubscribers,\n ...AccountingDocumentSubscribers,\n ...RecurringCashItemSubscribers,\n ...FinancialInstitutionSubscribers,\n ...FiscalMonthSubscribers,\n ...FiscalQuarterSubscribers,\n ...FiscalYearSubscribers\n]\n\nexport const schema = {\n resolverClasses: [\n ...FinancialStatementResolvers,\n ...AccountingCategoryResolvers,\n ...TransactionResolvers,\n ...BankAccountResolvers,\n ...BankStatementResolvers,\n ...PaymentResolvers,\n ...AccountResolvers,\n ...AccountingDocumentResolvers,\n ...RecurringCashItemResolvers,\n ...FinancialInstitutionResolvers,\n ...FiscalMonthResolvers,\n ...FiscalQuarterResolvers,\n ...FiscalYearResolvers\n ]\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/service/index.ts"],"names":[],"mappings":";;;;AAAA,yBAAyB;AACzB,2DAAgC;AAChC,oFAAyD;AACzD,oFAAyD;AACzD,oEAAyC;AACzC,sEAA2C;AAC3C,0EAA+C;AAC/C,4DAAiC;AACjC,4DAAiC;AACjC,oFAAyD;AACzD,oFAAyD;AACzD,wFAA6D;AAC7D,sEAA2C;AAC3C,0EAA+C;AAC/C,oEAAyC;AACzC,oFAAyD;AACzD,yFAA8D;AAE9D,qBAAqB;AACrB,2EAAgD;AAChD,4EAAiD;AACjD,8EAAmD;AACnD,oEAAyC;AACzC,oEAAyC;AACzC,qEAA0C;AAC1C,yFAA8D;AAC9D,4FAAiE;AACjE,mFAAwD;AACxD,4FAAiE;AACjE,kEAAuC;AACvC,qEAA0C;AAC1C,uEAA4C;AAC5C,uEAA4C;AAC5C,0EAA+C;AAC/C,4EAAiD;AACjD,uEAA4C;AAC5C,4FAAiE;AACjE,8FAAmE;AACnE,0FAA+D;AAC/D,0FAA+D;AAC/D,4FAAiE;AAEjE,mCAAmC;AACnC,+DAI8B;AAC9B,+DAI8B;AAC9B,+CAIsB;AACtB,iDAIuB;AACvB,qDAIyB;AACzB,uCAIkB;AAClB,uCAIkB;AAClB,+DAI8B;AAC9B,+DAI8B;AAC9B,mEAIgC;AAChC,iDAIuB;AACvB,qDAIyB;AACzB,+CAIsB;AACtB,iEAI+B;AAC/B,+DAI8B;AAEjB,QAAA,QAAQ,GAAG;IACtB,GAAG,8BAA0B;IAC7B,GAAG,8BAA0B;IAC7B,GAAG,sBAAmB;IACtB,GAAG,uBAAmB;IACtB,GAAG,yBAAqB;IACxB,GAAG,kBAAe;IAClB,GAAG,kBAAe;IAClB,GAAG,8BAA0B;IAC7B,GAAG,8BAAyB;IAC5B,GAAG,gCAA4B;IAC/B,GAAG,uBAAmB;IACtB,GAAG,yBAAqB;IACxB,GAAG,sBAAkB;IACrB,GAAG,+BAA2B;IAC9B,GAAG,8BAA0B;CAC9B,CAAA;AAEY,QAAA,WAAW,GAAG;IACzB,GAAG,iCAA6B;IAChC,GAAG,iCAA6B;IAChC,GAAG,yBAAsB;IACzB,GAAG,0BAAsB;IACzB,GAAG,4BAAwB;IAC3B,GAAG,qBAAkB;IACrB,GAAG,qBAAkB;IACrB,GAAG,iCAA6B;IAChC,GAAG,iCAA4B;IAC/B,GAAG,mCAA+B;IAClC,GAAG,0BAAsB;IACzB,GAAG,4BAAwB;IAC3B,GAAG,yBAAqB;IACxB,GAAG,kCAA8B;IACjC,GAAG,iCAA6B;CACjC,CAAA;AAEY,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,GAAG,+BAA2B;QAC9B,GAAG,+BAA2B;QAC9B,GAAG,uBAAoB;QACvB,GAAG,wBAAoB;QACvB,GAAG,0BAAsB;QACzB,GAAG,mBAAgB;QACnB,GAAG,mBAAgB;QACnB,GAAG,+BAA2B;QAC9B,GAAG,+BAA0B;QAC7B,GAAG,iCAA6B;QAChC,GAAG,wBAAoB;QACvB,GAAG,0BAAsB;QACzB,GAAG,uBAAmB;QACtB,GAAG,gCAA4B;QAC/B,GAAG,+BAA2B;KAC/B;CACF,CAAA","sourcesContent":["/* EXPORT ENTITY TYPES */\nexport * from './cash-flow-type'\nexport * from './financial-statement/financial-statement'\nexport * from './accounting-category/accounting-category'\nexport * from './transaction/transaction'\nexport * from './bank-account/bank-account'\nexport * from './bank-statement/bank-statement'\nexport * from './payment/payment'\nexport * from './account/account'\nexport * from './accounting-document/accounting-document'\nexport * from './recurring-cash-item/recurring-cash-item'\nexport * from './financial-institution/financial-institution'\nexport * from './fiscal-month/fiscal-month'\nexport * from './fiscal-quarter/fiscal-quarter'\nexport * from './fiscal-year/fiscal-year'\nexport * from './expenditure-request/expenditure-request'\nexport * from './expenditure-request/expenditure-request-item'\n\n/* EXPORT SERVICES */\nexport * from './transaction/transaction-period'\nexport * from './transaction/transaction-service'\nexport * from './bank-account/bank-account-service'\nexport * from './payment/payment-targets'\nexport * from './payment/payment-service'\nexport * from './payment/document-targets'\nexport * from './financial-statement/financial-statement-line'\nexport * from './financial-statement/financial-statement-service'\nexport * from './recurring-cash-item/recurring-schedule'\nexport * from './recurring-cash-item/recurring-cash-item-service'\nexport * from './account/account-match'\nexport * from './account/default-accounts'\nexport * from './bank-statement/bank-source'\nexport * from './bank-statement/bank-parser'\nexport * from './bank-statement/bank-reconcile'\nexport * from './bank-statement/bank-import-type'\nexport * from './bank-statement/bank-import'\nexport * from './counterparty-account/counterparty-account-rules'\nexport * from './counterparty-account/counterparty-account-service'\nexport * from './expenditure-request/expenditure-request-rules'\nexport * from './expenditure-request/expenditure-payment-state'\nexport * from './expenditure-request/expenditure-request-service'\n\n/* IMPORT ENTITIES AND RESOLVERS */\nimport {\n entities as FinancialStatementEntities,\n resolvers as FinancialStatementResolvers,\n subscribers as FinancialStatementSubscribers\n} from './financial-statement'\nimport {\n entities as AccountingCategoryEntities,\n resolvers as AccountingCategoryResolvers,\n subscribers as AccountingCategorySubscribers\n} from './accounting-category'\nimport {\n entities as TransactionEntities,\n resolvers as TransactionResolvers,\n subscribers as TransactionSubscribers\n} from './transaction'\nimport {\n entities as BankAccountEntities,\n resolvers as BankAccountResolvers,\n subscribers as BankAccountSubscribers\n} from './bank-account'\nimport {\n entities as BankStatementEntities,\n resolvers as BankStatementResolvers,\n subscribers as BankStatementSubscribers\n} from './bank-statement'\nimport {\n entities as PaymentEntities,\n resolvers as PaymentResolvers,\n subscribers as PaymentSubscribers\n} from './payment'\nimport {\n entities as AccountEntities,\n resolvers as AccountResolvers,\n subscribers as AccountSubscribers\n} from './account'\nimport {\n entities as AccountingDocumentEntities,\n resolvers as AccountingDocumentResolvers,\n subscribers as AccountingDocumentSubscribers\n} from './accounting-document'\nimport {\n entities as RecurringCashItemEntities,\n resolvers as RecurringCashItemResolvers,\n subscribers as RecurringCashItemSubscribers\n} from './recurring-cash-item'\nimport {\n entities as FinancialInstitutionEntities,\n resolvers as FinancialInstitutionResolvers,\n subscribers as FinancialInstitutionSubscribers\n} from './financial-institution'\nimport {\n entities as FiscalMonthEntities,\n resolvers as FiscalMonthResolvers,\n subscribers as FiscalMonthSubscribers\n} from './fiscal-month'\nimport {\n entities as FiscalQuarterEntities,\n resolvers as FiscalQuarterResolvers,\n subscribers as FiscalQuarterSubscribers\n} from './fiscal-quarter'\nimport {\n entities as FiscalYearEntities,\n resolvers as FiscalYearResolvers,\n subscribers as FiscalYearSubscribers\n} from './fiscal-year'\nimport {\n entities as CounterpartyAccountEntities,\n resolvers as CounterpartyAccountResolvers,\n subscribers as CounterpartyAccountSubscribers\n} from './counterparty-account'\nimport {\n entities as ExpenditureRequestEntities,\n resolvers as ExpenditureRequestResolvers,\n subscribers as ExpenditureRequestSubscribers\n} from './expenditure-request'\n\nexport const entities = [\n ...FinancialStatementEntities,\n ...AccountingCategoryEntities,\n ...TransactionEntities,\n ...BankAccountEntities,\n ...BankStatementEntities,\n ...PaymentEntities,\n ...AccountEntities,\n ...AccountingDocumentEntities,\n ...RecurringCashItemEntities,\n ...FinancialInstitutionEntities,\n ...FiscalMonthEntities,\n ...FiscalQuarterEntities,\n ...FiscalYearEntities,\n ...CounterpartyAccountEntities,\n ...ExpenditureRequestEntities\n]\n\nexport const subscribers = [\n ...FinancialStatementSubscribers,\n ...AccountingCategorySubscribers,\n ...TransactionSubscribers,\n ...BankAccountSubscribers,\n ...BankStatementSubscribers,\n ...PaymentSubscribers,\n ...AccountSubscribers,\n ...AccountingDocumentSubscribers,\n ...RecurringCashItemSubscribers,\n ...FinancialInstitutionSubscribers,\n ...FiscalMonthSubscribers,\n ...FiscalQuarterSubscribers,\n ...FiscalYearSubscribers,\n ...CounterpartyAccountSubscribers,\n ...ExpenditureRequestSubscribers\n]\n\nexport const schema = {\n resolverClasses: [\n ...FinancialStatementResolvers,\n ...AccountingCategoryResolvers,\n ...TransactionResolvers,\n ...BankAccountResolvers,\n ...BankStatementResolvers,\n ...PaymentResolvers,\n ...AccountResolvers,\n ...AccountingDocumentResolvers,\n ...RecurringCashItemResolvers,\n ...FinancialInstitutionResolvers,\n ...FiscalMonthResolvers,\n ...FiscalQuarterResolvers,\n ...FiscalYearResolvers,\n ...CounterpartyAccountResolvers,\n ...ExpenditureRequestResolvers\n ]\n}\n"]}