@things-factory/accounting 10.1.140 → 10.1.142

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 (43) hide show
  1. package/dist-server/service/account/account-match.d.ts +32 -0
  2. package/dist-server/service/account/account-match.js +74 -0
  3. package/dist-server/service/account/account-match.js.map +1 -0
  4. package/dist-server/service/account/default-accounts-subscriber.d.ts +7 -0
  5. package/dist-server/service/account/default-accounts-subscriber.js +22 -0
  6. package/dist-server/service/account/default-accounts-subscriber.js.map +1 -0
  7. package/dist-server/service/account/default-accounts.d.ts +22 -0
  8. package/dist-server/service/account/default-accounts.js +92 -0
  9. package/dist-server/service/account/default-accounts.js.map +1 -0
  10. package/dist-server/service/account/index.d.ts +3 -2
  11. package/dist-server/service/account/index.js +2 -1
  12. package/dist-server/service/account/index.js.map +1 -1
  13. package/dist-server/service/accounting-category/index.d.ts +1 -1
  14. package/dist-server/service/accounting-document/index.d.ts +1 -1
  15. package/dist-server/service/bank-account/index.d.ts +1 -1
  16. package/dist-server/service/bank-statement/index.d.ts +1 -1
  17. package/dist-server/service/financial-institution/index.d.ts +1 -1
  18. package/dist-server/service/financial-statement/index.d.ts +2 -2
  19. package/dist-server/service/fiscal-month/index.d.ts +1 -1
  20. package/dist-server/service/fiscal-quarter/index.d.ts +1 -1
  21. package/dist-server/service/fiscal-year/index.d.ts +1 -1
  22. package/dist-server/service/index.d.ts +5 -2
  23. package/dist-server/service/index.js +3 -0
  24. package/dist-server/service/index.js.map +1 -1
  25. package/dist-server/service/payment/document-targets.d.ts +16 -0
  26. package/dist-server/service/payment/document-targets.js +99 -0
  27. package/dist-server/service/payment/document-targets.js.map +1 -0
  28. package/dist-server/service/payment/payment-service.js +3 -0
  29. package/dist-server/service/payment/payment-service.js.map +1 -1
  30. package/dist-server/service/payment/payment-targets.d.ts +12 -0
  31. package/dist-server/service/payment/payment-targets.js +9 -0
  32. package/dist-server/service/payment/payment-targets.js.map +1 -1
  33. package/dist-server/service/transaction/transaction-query.js +13 -1
  34. package/dist-server/service/transaction/transaction-query.js.map +1 -1
  35. package/dist-server/service/transaction/transaction-service.js +2 -0
  36. package/dist-server/service/transaction/transaction-service.js.map +1 -1
  37. package/dist-server/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +9 -7
  39. package/translations/en.json +10 -1
  40. package/translations/ko.json +10 -1
  41. package/dist-server/migrations/1725201467183-seed-accounts.d.ts +0 -5
  42. package/dist-server/migrations/1725201467183-seed-accounts.js +0 -323
  43. package/dist-server/migrations/1725201467183-seed-accounts.js.map +0 -1
@@ -0,0 +1,32 @@
1
+ import { EntityManager } from 'typeorm';
2
+ export interface AccountForMatch {
3
+ id: string;
4
+ name: string;
5
+ type: string;
6
+ aliases?: string | null;
7
+ }
8
+ /** An account's name and its aliases (one per line, or comma separated). */
9
+ export declare function aliasesOf(account: Pick<AccountForMatch, 'name' | 'aliases'>): string[];
10
+ /**
11
+ * A function telling which account some words mean. `type` limits it to that direction - an expense is never filed
12
+ * under an income account because a word happens to match.
13
+ */
14
+ export declare function accountMatcher<T extends AccountForMatch>(accounts: readonly T[]): (texts: readonly (string | null | undefined)[], type?: string | null) => T | undefined;
15
+ export interface AccountLinking {
16
+ /** Rows given an account, per kind: confirmed transactions, forecasts, recurring items. */
17
+ linked: {
18
+ transactions: number;
19
+ forecasts: number;
20
+ recurring: number;
21
+ };
22
+ /** The words of confirmed transactions no account matched. */
23
+ unmatched: string[];
24
+ }
25
+ /**
26
+ * Give every row without an account the one its words mean: a confirmed transaction by its description then its
27
+ * ledger category, a forecast by its description, a recurring item by its name. `apply` false writes nothing. Rows a
28
+ * person already filed are left alone.
29
+ */
30
+ export declare function linkAccounts(tx: EntityManager, domain: {
31
+ id: string;
32
+ }, match: ReturnType<typeof accountMatcher>, apply: boolean): Promise<AccountLinking>;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aliasesOf = aliasesOf;
4
+ exports.accountMatcher = accountMatcher;
5
+ exports.linkAccounts = linkAccounts;
6
+ const typeorm_1 = require("typeorm");
7
+ const recurring_cash_item_1 = require("../recurring-cash-item/recurring-cash-item");
8
+ const transaction_1 = require("../transaction/transaction");
9
+ const key = (text) => String(text ?? '')
10
+ .normalize('NFC')
11
+ .replace(/[\s\-_.·,()]+/g, '')
12
+ .toLowerCase();
13
+ /** An account's name and its aliases (one per line, or comma separated). */
14
+ function aliasesOf(account) {
15
+ return [account.name, ...String(account.aliases ?? '').split(/[\n,]/)].map(one => one.trim()).filter(Boolean);
16
+ }
17
+ /**
18
+ * A function telling which account some words mean. `type` limits it to that direction - an expense is never filed
19
+ * under an income account because a word happens to match.
20
+ */
21
+ function accountMatcher(accounts) {
22
+ const words = [];
23
+ for (const account of accounts)
24
+ for (const alias of aliasesOf(account))
25
+ if (key(alias).length >= 2)
26
+ words.push({ word: key(alias), account });
27
+ words.sort((a, b) => b.word.length - a.word.length);
28
+ return (texts, type) => {
29
+ for (const text of texts) {
30
+ const hay = key(text);
31
+ if (!hay)
32
+ continue;
33
+ const hits = words.filter(one => (!type || one.account.type === type) && hay.includes(one.word));
34
+ if (!hits.length)
35
+ continue;
36
+ const longest = hits[0].word.length;
37
+ const top = new Set(hits.filter(one => one.word.length === longest).map(one => one.account.id));
38
+ return top.size === 1 ? hits[0].account : undefined;
39
+ }
40
+ return undefined;
41
+ };
42
+ }
43
+ /**
44
+ * Give every row without an account the one its words mean: a confirmed transaction by its description then its
45
+ * ledger category, a forecast by its description, a recurring item by its name. `apply` false writes nothing. Rows a
46
+ * person already filed are left alone.
47
+ */
48
+ async function linkAccounts(tx, domain, match, apply) {
49
+ const report = { linked: { transactions: 0, forecasts: 0, recurring: 0 }, unmatched: [] };
50
+ const run = async (label, entity, texts, typeOf, scope = {}) => {
51
+ const rows = (await tx.getRepository(entity).find({ where: { domain: { id: domain.id }, ...scope, account: (0, typeorm_1.IsNull)() } }));
52
+ const groups = new Map();
53
+ for (const row of rows) {
54
+ const account = match(texts(row), typeOf(row));
55
+ if (!account) {
56
+ if (label === 'transactions')
57
+ report.unmatched.push(String(texts(row)[0] ?? ''));
58
+ continue;
59
+ }
60
+ groups.set(account.id, [...(groups.get(account.id) ?? []), row.id]);
61
+ }
62
+ report.linked[label] = [...groups.values()].reduce((sum, ids) => sum + ids.length, 0);
63
+ if (!apply)
64
+ return;
65
+ for (const [id, ids] of groups)
66
+ for (let i = 0; i < ids.length; i += 500)
67
+ await tx.getRepository(entity).update(ids.slice(i, i + 500), { account: { id } });
68
+ };
69
+ await run('transactions', transaction_1.Transaction, row => [row.description, row.ledgerCategory], row => row.type, { category: transaction_1.TransactionCategory.CONFIRMED });
70
+ await run('forecasts', transaction_1.Transaction, row => [row.description], row => row.type, { category: transaction_1.TransactionCategory.FORECAST });
71
+ await run('recurring', recurring_cash_item_1.RecurringCashItem, row => [row.name], row => row.type);
72
+ return report;
73
+ }
74
+ //# sourceMappingURL=account-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-match.js","sourceRoot":"","sources":["../../../server/service/account/account-match.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager, IsNull } from 'typeorm'\n\nimport { RecurringCashItem } from '../recurring-cash-item/recurring-cash-item'\nimport { Transaction, TransactionCategory } from '../transaction/transaction'\n\n/*\n * Which account some words mean. An account is known by its name and its aliases; the longest one contained in the\n * text wins, among accounts of the row's direction. Two different accounts matching equally long is no answer, and\n * nothing matching is no answer - a row nobody can place stays unplaced, to be listed, not filed under a catch-all.\n */\n\nexport interface AccountForMatch {\n id: string\n name: string\n type: string\n aliases?: string | null\n}\n\nconst key = (text: string | null | undefined) =>\n String(text ?? '')\n .normalize('NFC')\n .replace(/[\\s\\-_.·,()]+/g, '')\n .toLowerCase()\n\n/** An account's name and its aliases (one per line, or comma separated). */\nexport function aliasesOf(account: Pick<AccountForMatch, 'name' | 'aliases'>): string[] {\n return [account.name, ...String(account.aliases ?? '').split(/[\\n,]/)].map(one => one.trim()).filter(Boolean)\n}\n\n/**\n * A function telling which account some words mean. `type` limits it to that direction - an expense is never filed\n * under an income account because a word happens to match.\n */\nexport function accountMatcher<T extends AccountForMatch>(accounts: readonly T[]) {\n const words: { word: string; account: T }[] = []\n for (const account of accounts) for (const alias of aliasesOf(account)) if (key(alias).length >= 2) words.push({ word: key(alias), account })\n words.sort((a, b) => b.word.length - a.word.length)\n\n return (texts: readonly (string | null | undefined)[], type?: string | null): T | undefined => {\n for (const text of texts) {\n const hay = key(text)\n if (!hay) continue\n const hits = words.filter(one => (!type || one.account.type === type) && hay.includes(one.word))\n if (!hits.length) continue\n const longest = hits[0].word.length\n const top = new Set(hits.filter(one => one.word.length === longest).map(one => one.account.id))\n return top.size === 1 ? hits[0].account : undefined\n }\n return undefined\n }\n}\n\nexport interface AccountLinking {\n /** Rows given an account, per kind: confirmed transactions, forecasts, recurring items. */\n linked: { transactions: number; forecasts: number; recurring: number }\n /** The words of confirmed transactions no account matched. */\n unmatched: string[]\n}\n\n/**\n * Give every row without an account the one its words mean: a confirmed transaction by its description then its\n * ledger category, a forecast by its description, a recurring item by its name. `apply` false writes nothing. Rows a\n * person already filed are left alone.\n */\nexport async function linkAccounts(\n tx: EntityManager,\n domain: { id: string },\n match: ReturnType<typeof accountMatcher>,\n apply: boolean\n): Promise<AccountLinking> {\n const report: AccountLinking = { linked: { transactions: 0, forecasts: 0, recurring: 0 }, unmatched: [] }\n\n const run = async <T extends { id: string }>(\n label: keyof AccountLinking['linked'],\n entity: new () => T,\n texts: (row: T) => (string | null | undefined)[],\n typeOf: (row: T) => string | null,\n scope: Record<string, any> = {}\n ) => {\n const rows = (await tx.getRepository(entity as any).find({ where: { domain: { id: domain.id }, ...scope, account: IsNull() } as any })) as T[]\n const groups = new Map<string, string[]>()\n for (const row of rows) {\n const account = match(texts(row), typeOf(row))\n if (!account) {\n if (label === 'transactions') report.unmatched.push(String(texts(row)[0] ?? ''))\n continue\n }\n groups.set(account.id, [...(groups.get(account.id) ?? []), row.id])\n }\n report.linked[label] = [...groups.values()].reduce((sum, ids) => sum + ids.length, 0)\n if (!apply) return\n for (const [id, ids] of groups)\n for (let i = 0; i < ids.length; i += 500) await tx.getRepository(entity as any).update(ids.slice(i, i + 500), { account: { id } } as any)\n }\n\n await run('transactions', Transaction, row => [row.description, row.ledgerCategory], row => row.type, { category: TransactionCategory.CONFIRMED })\n await run('forecasts', Transaction, row => [row.description], row => row.type, { category: TransactionCategory.FORECAST })\n await run('recurring', RecurringCashItem, row => [row.name], row => row.type)\n return report\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { EntitySubscriberInterface, InsertEvent } from 'typeorm';
2
+ import { Domain } from '@things-factory/shell';
3
+ /** A new domain starts with the default chart of accounts, in the same transaction that made it. */
4
+ export declare class DefaultAccountsSubscriber implements EntitySubscriberInterface<Domain> {
5
+ listenTo(): typeof Domain;
6
+ afterInsert(event: InsertEvent<Domain>): Promise<void>;
7
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultAccountsSubscriber = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const typeorm_1 = require("typeorm");
6
+ const shell_1 = require("@things-factory/shell");
7
+ const default_accounts_1 = require("./default-accounts");
8
+ /** A new domain starts with the default chart of accounts, in the same transaction that made it. */
9
+ let DefaultAccountsSubscriber = class DefaultAccountsSubscriber {
10
+ listenTo() {
11
+ return shell_1.Domain;
12
+ }
13
+ async afterInsert(event) {
14
+ if (event.entity?.id)
15
+ await (0, default_accounts_1.seedDefaultAccounts)(event.manager, event.entity);
16
+ }
17
+ };
18
+ exports.DefaultAccountsSubscriber = DefaultAccountsSubscriber;
19
+ exports.DefaultAccountsSubscriber = DefaultAccountsSubscriber = tslib_1.__decorate([
20
+ (0, typeorm_1.EventSubscriber)()
21
+ ], DefaultAccountsSubscriber);
22
+ //# sourceMappingURL=default-accounts-subscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-accounts-subscriber.js","sourceRoot":"","sources":["../../../server/service/account/default-accounts-subscriber.ts"],"names":[],"mappings":";;;;AAAA,qCAAiF;AAEjF,iDAA8C;AAE9C,yDAAwD;AAExD,oGAAoG;AAE7F,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,QAAQ;QACN,OAAO,cAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA0B;QAC1C,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;YAAE,MAAM,IAAA,sCAAmB,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC9E,CAAC;CACF,CAAA;AARY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,yBAAe,GAAE;GACL,yBAAyB,CAQrC","sourcesContent":["import { EntitySubscriberInterface, EventSubscriber, InsertEvent } from 'typeorm'\n\nimport { Domain } from '@things-factory/shell'\n\nimport { seedDefaultAccounts } from './default-accounts'\n\n/** A new domain starts with the default chart of accounts, in the same transaction that made it. */\n@EventSubscriber()\nexport class DefaultAccountsSubscriber implements EntitySubscriberInterface<Domain> {\n listenTo() {\n return Domain\n }\n\n async afterInsert(event: InsertEvent<Domain>) {\n if (event.entity?.id) await seedDefaultAccounts(event.manager, event.entity)\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import { EntityManager } from 'typeorm';
2
+ export interface AccountSeed {
3
+ code: string;
4
+ name: string;
5
+ type: 'INCOME' | 'EXPENSE';
6
+ /** The category it is grouped under, by name. */
7
+ group: string;
8
+ aliases: string[];
9
+ forExpense?: boolean;
10
+ /** The filed statement line, when not the account's own name. */
11
+ statementLine?: string;
12
+ }
13
+ /** The default charts, by locale. */
14
+ export declare const DEFAULT_ACCOUNTS: Record<string, AccountSeed[]>;
15
+ /**
16
+ * Put the default chart of a locale into a domain that has no account yet, each account under the category its group
17
+ * names (made when the domain has none of that name). A domain with any account is left as it is. Returns how many
18
+ * accounts were put in.
19
+ */
20
+ export declare function seedDefaultAccounts(tx: EntityManager, domain: {
21
+ id: string;
22
+ }, user?: any, locale?: string): Promise<number>;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_ACCOUNTS = void 0;
4
+ exports.seedDefaultAccounts = seedDefaultAccounts;
5
+ const accounting_category_1 = require("../accounting-category/accounting-category");
6
+ const account_1 = require("./account");
7
+ /** The group whose accounts move cash without being income or cost. */
8
+ const NOT_PROFIT_AND_LOSS = '비손익';
9
+ const KO_KR = [
10
+ { code: '401', name: '매출', type: 'INCOME', group: '매출', statementLine: '매출액', aliases: ['수입', '매출', '유지보수', '용역', '라이선스', '잔금', '중도금', '선금', '계약금', '유지보수 어음만기', '어음만기', '어음 입금', '어음입금', '외화환전'] },
11
+ /* What was bought for a sale — 매출원가, as the 제조원가명세서 books it; these are what purchase contracts are drafted from. */
12
+ { code: '451', name: '재료비', type: 'EXPENSE', group: '매출원가', aliases: ['재료비', '재료', '납품', '설비 집행', '설비', 'HW', '하드웨어', '장비', '센서', '검출기', 'PLC', '테블릿', '태블릿', 'PDA', '네트웍공사', '공사'] },
13
+ { code: '837', name: '외주가공비', type: 'EXPENSE', group: '매출원가', aliases: ['외주가공', '외주용역', '외주', '용역비', '개발 용역비', '개발용역', '위탁'] },
14
+ /* Money given back to a customer — less sales, not a cost. */
15
+ { code: '402', name: '매출 환불', type: 'EXPENSE', group: '매출', statementLine: '매출액', aliases: ['환불', '환불금', '반환', '계산서착오', '착오반환'] },
16
+ { code: '901', name: '이자수익', type: 'INCOME', group: '영업외수익', aliases: ['결산이자', '예금이자', '이자수익', '예금결산'] },
17
+ /* A research project's 인건비·연구수당 paid in (「에기연 5월 인건비」) is a grant, not a sale — the 2025 statement's 정부보조금 is exactly these. */
18
+ { code: '904', name: '정부보조금', type: 'INCOME', group: '영업외수익', aliases: ['일자리안정자금', '고용장려금', '추가고용장려금', '보조금', '지원금', '인건비', '내부인건비', '연구수당', '과제비', '청년내일채움', '청년추가지원금', '손실보전금'] },
19
+ { code: '930', name: '잡이익', type: 'INCOME', group: '영업외수익', statementLine: '기타잡이익', aliases: ['잡이익', '환급', '환불'] },
20
+ { code: '990', name: '차입(입금)', type: 'INCOME', group: '비손익', aliases: ['차입금', '기보 대출', '운영비 대출', '대출입금', '대출 실행'] },
21
+ { code: '991', name: '자금이체(입금)', type: 'INCOME', group: '비손익', aliases: ['운영자금이체', '운영자금 이체', '운영자금입금', '자금이체', '어음 할인'] },
22
+ { code: '801', name: '급여', type: 'EXPENSE', group: '판매비와관리비', aliases: ['급여', '인건비', '상여'] },
23
+ /* Severance paid out, to the person or into their IRP — a cost. */
24
+ { code: '806', name: '퇴직급여', type: 'EXPENSE', group: '판매비와관리비', aliases: ['퇴직금', '퇴직금 정산', '퇴직급여', '퇴직연금'] },
25
+ { code: '811', name: '복리후생비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['복리후생', '식대', '식비', '음료', '회식', '국민건강', '건강보험', '검진', '사우회', '사우회비'], forExpense: true },
26
+ { code: '812', name: '여비교통비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['교통비', '주차비', '출장비', '숙박비', '출장경비', '택시', '렌터카', '여비', '항공'], forExpense: true },
27
+ { code: '813', name: '기업업무추진비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['기업업무추진비', '접대비', '접대'], forExpense: true },
28
+ { code: '814', name: '통신비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['통신비', 'SMS', '인터넷', 'LGU', '오피스넷', 'KT'], forExpense: true },
29
+ { code: '815', name: '수도광열비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['전기요금', '수도요금', '가스요금'] },
30
+ { code: '817', name: '세금과공과', type: 'EXPENSE', group: '판매비와관리비', aliases: ['세금과공과', '세금공과', '지방세', '주민세', '국민연금', '면허세', '인지세'] },
31
+ { code: '819', name: '지급임차료', type: 'EXPENSE', group: '판매비와관리비', statementLine: '임차료', aliases: ['임차료', '월세', '관리비'] },
32
+ { code: '821', name: '보험료', type: 'EXPENSE', group: '판매비와관리비', aliases: ['보험료', '고용보험', '산재보험', '보증보험'] },
33
+ { code: '822', name: '차량유지비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['주유', '차량', '통행료', '하이패스'], forExpense: true },
34
+ { code: '825', name: '교육훈련비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['교육훈련', '교육비', '세미나'], forExpense: true },
35
+ { code: '826', name: '도서인쇄비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['도서인쇄', '도서', '인쇄'], forExpense: true },
36
+ { code: '829', name: '회의비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['회의비', '회의'], forExpense: true },
37
+ { code: '830', name: '소모품비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['소모품', '사무용품', '비품'], forExpense: true },
38
+ { code: '831', name: '지급수수료', type: 'EXPENSE', group: '판매비와관리비', aliases: ['지급수수료', '수수료', 'SMS수수료', 'SMS통지수수료', 'SMS 수수료', '세무', '회계', '법무', 'AWS', '클라우드', '청소용역', '증명서발급', 'azure', 'ms office'] },
39
+ { code: '833', name: '광고선전비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['광고', '홍보', '전시회'] },
40
+ { code: '931', name: '이자비용', type: 'EXPENSE', group: '영업외비용', aliases: ['이자비용', '대출이자', '대출금이자', '기보대출이자', '금융비용'] },
41
+ /* Paid into the company's DB pension fund — money moved to an account it still holds, not a cost. */
42
+ { code: '988', name: '퇴직연금 납입', type: 'EXPENSE', group: '비손익', aliases: ['퇴직연금 납입', '퇴직연금납입', '퇴직연금 부담금', 'DB 부담금'] },
43
+ /* Paid to the holders out of profit — not a cost. The tax withheld is paid over under 원천세. */
44
+ { code: '992', name: '배당금 지급', type: 'EXPENSE', group: '비손익', aliases: ['배당금', '배당 지급', '배당금지급'] },
45
+ { code: '993', name: '카드대금', type: 'EXPENSE', group: '비손익', aliases: ['법인카드', '카드대금', '카드결제'] },
46
+ { code: '994', name: '부가세 납부', type: 'EXPENSE', group: '비손익', aliases: ['부가세', '부가가치세'] },
47
+ { code: '995', name: '원천세 납부', type: 'EXPENSE', group: '비손익', aliases: ['원천근로소득', '원천세', '원천징수'] },
48
+ /* Principal and interest paid together (「중진공대출원리」) — kept apart so neither interest nor principal is overstated. */
49
+ { code: '998', name: '대출 원리금', type: 'EXPENSE', group: '비손익', aliases: ['원리금', '대출원리', '대출원리금'] },
50
+ { code: '996', name: '차입금 상환', type: 'EXPENSE', group: '비손익', aliases: ['원금상환', '차입금 상환', '단기차입금 상환', '차입반환', '차입금반환', '차입금 반환', '대출금상환', '대출상환', '일부상환'] },
51
+ { code: '997', name: '자금이체(출금)', type: 'EXPENSE', group: '비손익', aliases: ['자금이체', '운영자금이체', '계좌이체(자사)', '환전'] },
52
+ /* No aliases: a line nothing places stays unplaced and listed — this is for a person to choose. */
53
+ { code: '999', name: '기타 경비', type: 'EXPENSE', group: '판매비와관리비', aliases: [], forExpense: true }
54
+ ];
55
+ /** The default charts, by locale. */
56
+ exports.DEFAULT_ACCOUNTS = { 'ko-KR': KO_KR };
57
+ /**
58
+ * Put the default chart of a locale into a domain that has no account yet, each account under the category its group
59
+ * names (made when the domain has none of that name). A domain with any account is left as it is. Returns how many
60
+ * accounts were put in.
61
+ */
62
+ async function seedDefaultAccounts(tx, domain, user, locale = 'ko-KR') {
63
+ const seeds = exports.DEFAULT_ACCOUNTS[locale];
64
+ if (!seeds)
65
+ return 0;
66
+ const accounts = tx.getRepository(account_1.Account);
67
+ if (await accounts.count({ where: { domain: { id: domain.id } }, withDeleted: true }))
68
+ return 0;
69
+ const categories = tx.getRepository(accounting_category_1.AccountingCategory);
70
+ const groupNamed = new Map();
71
+ for (const name of [...new Set(seeds.map(one => one.group))]) {
72
+ const found = await categories.findOne({ where: { domain: { id: domain.id }, name } });
73
+ groupNamed.set(name, found ?? await categories.save(categories.create({ domain, code: name, name, active: true, creator: user, updater: user })));
74
+ }
75
+ for (const one of seeds)
76
+ await accounts.save(accounts.create({
77
+ domain,
78
+ code: one.code,
79
+ name: one.name,
80
+ type: one.type,
81
+ category: { id: groupNamed.get(one.group).id },
82
+ aliases: one.aliases.join('\n'),
83
+ profitAndLoss: one.group !== NOT_PROFIT_AND_LOSS,
84
+ statementLine: one.statementLine ?? null,
85
+ forExpense: !!one.forExpense,
86
+ active: true,
87
+ creator: user,
88
+ updater: user
89
+ }));
90
+ return seeds.length;
91
+ }
92
+ //# sourceMappingURL=default-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-accounts.js","sourceRoot":"","sources":["../../../server/service/account/default-accounts.ts"],"names":[],"mappings":"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","sourcesContent":["import { EntityManager } from 'typeorm'\n\nimport { AccountingCategory } from '../accounting-category/accounting-category'\nimport { Account } from './account'\n\n/*\n * The chart of accounts a business starts with, put in when its domain is created (§`DefaultAccountsSubscriber`) or,\n * for a domain made before, the first time an application asks (§`seedDefaultAccounts`). It is a starting point:\n * codes, names and aliases are the business's to change.\n *\n * ── ko-KR ───────────────────────────────────────────────────────────────────────────────────────\n * The headings a Korean small company books its cash under — 판매비와관리비 8xx, 영업외 9xx — with the words bank\n * lines and expense claims use as aliases (「대출이자」, 「고용보험2512」). A note maturing (「어음만기」) and a foreign\n * collection changed into won (「외화환전」) are the customer paying — 매출, not a transfer; a bank's SMS fee is\n * 지급수수료, not 통신비. 「비손익」 accounts move cash without being income or cost — the card bill (the spending is\n * booked when the card is used), VAT paid over, loan principal, transfers between own accounts.\n */\n\nexport interface AccountSeed {\n code: string\n name: string\n type: 'INCOME' | 'EXPENSE'\n /** The category it is grouped under, by name. */\n group: string\n aliases: string[]\n forExpense?: boolean\n /** The filed statement line, when not the account's own name. */\n statementLine?: string\n}\n\n/** The group whose accounts move cash without being income or cost. */\nconst NOT_PROFIT_AND_LOSS = '비손익'\n\nconst KO_KR: AccountSeed[] = [\n { code: '401', name: '매출', type: 'INCOME', group: '매출', statementLine: '매출액', aliases: ['수입', '매출', '유지보수', '용역', '라이선스', '잔금', '중도금', '선금', '계약금', '유지보수 어음만기', '어음만기', '어음 입금', '어음입금', '외화환전'] },\n /* What was bought for a sale — 매출원가, as the 제조원가명세서 books it; these are what purchase contracts are drafted from. */\n { code: '451', name: '재료비', type: 'EXPENSE', group: '매출원가', aliases: ['재료비', '재료', '납품', '설비 집행', '설비', 'HW', '하드웨어', '장비', '센서', '검출기', 'PLC', '테블릿', '태블릿', 'PDA', '네트웍공사', '공사'] },\n { code: '837', name: '외주가공비', type: 'EXPENSE', group: '매출원가', aliases: ['외주가공', '외주용역', '외주', '용역비', '개발 용역비', '개발용역', '위탁'] },\n /* Money given back to a customer — less sales, not a cost. */\n { code: '402', name: '매출 환불', type: 'EXPENSE', group: '매출', statementLine: '매출액', aliases: ['환불', '환불금', '반환', '계산서착오', '착오반환'] },\n { code: '901', name: '이자수익', type: 'INCOME', group: '영업외수익', aliases: ['결산이자', '예금이자', '이자수익', '예금결산'] },\n /* A research project's 인건비·연구수당 paid in (「에기연 5월 인건비」) is a grant, not a sale — the 2025 statement's 정부보조금 is exactly these. */\n { code: '904', name: '정부보조금', type: 'INCOME', group: '영업외수익', aliases: ['일자리안정자금', '고용장려금', '추가고용장려금', '보조금', '지원금', '인건비', '내부인건비', '연구수당', '과제비', '청년내일채움', '청년추가지원금', '손실보전금'] },\n { code: '930', name: '잡이익', type: 'INCOME', group: '영업외수익', statementLine: '기타잡이익', aliases: ['잡이익', '환급', '환불'] },\n { code: '990', name: '차입(입금)', type: 'INCOME', group: '비손익', aliases: ['차입금', '기보 대출', '운영비 대출', '대출입금', '대출 실행'] },\n { code: '991', name: '자금이체(입금)', type: 'INCOME', group: '비손익', aliases: ['운영자금이체', '운영자금 이체', '운영자금입금', '자금이체', '어음 할인'] },\n\n { code: '801', name: '급여', type: 'EXPENSE', group: '판매비와관리비', aliases: ['급여', '인건비', '상여'] },\n /* Severance paid out, to the person or into their IRP — a cost. */\n { code: '806', name: '퇴직급여', type: 'EXPENSE', group: '판매비와관리비', aliases: ['퇴직금', '퇴직금 정산', '퇴직급여', '퇴직연금'] },\n { code: '811', name: '복리후생비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['복리후생', '식대', '식비', '음료', '회식', '국민건강', '건강보험', '검진', '사우회', '사우회비'], forExpense: true },\n { code: '812', name: '여비교통비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['교통비', '주차비', '출장비', '숙박비', '출장경비', '택시', '렌터카', '여비', '항공'], forExpense: true },\n { code: '813', name: '기업업무추진비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['기업업무추진비', '접대비', '접대'], forExpense: true },\n { code: '814', name: '통신비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['통신비', 'SMS', '인터넷', 'LGU', '오피스넷', 'KT'], forExpense: true },\n { code: '815', name: '수도광열비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['전기요금', '수도요금', '가스요금'] },\n { code: '817', name: '세금과공과', type: 'EXPENSE', group: '판매비와관리비', aliases: ['세금과공과', '세금공과', '지방세', '주민세', '국민연금', '면허세', '인지세'] },\n { code: '819', name: '지급임차료', type: 'EXPENSE', group: '판매비와관리비', statementLine: '임차료', aliases: ['임차료', '월세', '관리비'] },\n { code: '821', name: '보험료', type: 'EXPENSE', group: '판매비와관리비', aliases: ['보험료', '고용보험', '산재보험', '보증보험'] },\n { code: '822', name: '차량유지비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['주유', '차량', '통행료', '하이패스'], forExpense: true },\n { code: '825', name: '교육훈련비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['교육훈련', '교육비', '세미나'], forExpense: true },\n { code: '826', name: '도서인쇄비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['도서인쇄', '도서', '인쇄'], forExpense: true },\n { code: '829', name: '회의비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['회의비', '회의'], forExpense: true },\n { code: '830', name: '소모품비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['소모품', '사무용품', '비품'], forExpense: true },\n { code: '831', name: '지급수수료', type: 'EXPENSE', group: '판매비와관리비', aliases: ['지급수수료', '수수료', 'SMS수수료', 'SMS통지수수료', 'SMS 수수료', '세무', '회계', '법무', 'AWS', '클라우드', '청소용역', '증명서발급', 'azure', 'ms office'] },\n { code: '833', name: '광고선전비', type: 'EXPENSE', group: '판매비와관리비', aliases: ['광고', '홍보', '전시회'] },\n { code: '931', name: '이자비용', type: 'EXPENSE', group: '영업외비용', aliases: ['이자비용', '대출이자', '대출금이자', '기보대출이자', '금융비용'] },\n /* Paid into the company's DB pension fund — money moved to an account it still holds, not a cost. */\n { code: '988', name: '퇴직연금 납입', type: 'EXPENSE', group: '비손익', aliases: ['퇴직연금 납입', '퇴직연금납입', '퇴직연금 부담금', 'DB 부담금'] },\n /* Paid to the holders out of profit — not a cost. The tax withheld is paid over under 원천세. */\n { code: '992', name: '배당금 지급', type: 'EXPENSE', group: '비손익', aliases: ['배당금', '배당 지급', '배당금지급'] },\n { code: '993', name: '카드대금', type: 'EXPENSE', group: '비손익', aliases: ['법인카드', '카드대금', '카드결제'] },\n { code: '994', name: '부가세 납부', type: 'EXPENSE', group: '비손익', aliases: ['부가세', '부가가치세'] },\n { code: '995', name: '원천세 납부', type: 'EXPENSE', group: '비손익', aliases: ['원천근로소득', '원천세', '원천징수'] },\n /* Principal and interest paid together (「중진공대출원리」) — kept apart so neither interest nor principal is overstated. */\n { code: '998', name: '대출 원리금', type: 'EXPENSE', group: '비손익', aliases: ['원리금', '대출원리', '대출원리금'] },\n { code: '996', name: '차입금 상환', type: 'EXPENSE', group: '비손익', aliases: ['원금상환', '차입금 상환', '단기차입금 상환', '차입반환', '차입금반환', '차입금 반환', '대출금상환', '대출상환', '일부상환'] },\n { code: '997', name: '자금이체(출금)', type: 'EXPENSE', group: '비손익', aliases: ['자금이체', '운영자금이체', '계좌이체(자사)', '환전'] },\n /* No aliases: a line nothing places stays unplaced and listed — this is for a person to choose. */\n { code: '999', name: '기타 경비', type: 'EXPENSE', group: '판매비와관리비', aliases: [], forExpense: true }\n]\n\n/** The default charts, by locale. */\nexport const DEFAULT_ACCOUNTS: Record<string, AccountSeed[]> = { 'ko-KR': KO_KR }\n\n/**\n * Put the default chart of a locale into a domain that has no account yet, each account under the category its group\n * names (made when the domain has none of that name). A domain with any account is left as it is. Returns how many\n * accounts were put in.\n */\nexport async function seedDefaultAccounts(tx: EntityManager, domain: { id: string }, user?: any, locale = 'ko-KR'): Promise<number> {\n const seeds = DEFAULT_ACCOUNTS[locale]\n if (!seeds) return 0\n const accounts = tx.getRepository(Account)\n if (await accounts.count({ where: { domain: { id: domain.id } } as any, withDeleted: true })) return 0\n\n const categories = tx.getRepository(AccountingCategory)\n const groupNamed = new Map<string, AccountingCategory>()\n for (const name of [...new Set(seeds.map(one => one.group))]) {\n const found = await categories.findOne({ where: { domain: { id: domain.id }, name } as any })\n groupNamed.set(name, found ?? (await categories.save(categories.create({ domain, code: name, name, active: true, creator: user, updater: user } as any)) as unknown as AccountingCategory))\n }\n for (const one of seeds)\n await accounts.save(\n accounts.create({\n domain,\n code: one.code,\n name: one.name,\n type: one.type,\n category: { id: groupNamed.get(one.group)!.id },\n aliases: one.aliases.join('\\n'),\n profitAndLoss: one.group !== NOT_PROFIT_AND_LOSS,\n statementLine: one.statementLine ?? null,\n forExpense: !!one.forExpense,\n active: true,\n creator: user,\n updater: user\n } as any)\n )\n return seeds.length\n}\n"]}
@@ -2,6 +2,7 @@ import { Account } from './account';
2
2
  import { AccountQuery } from './account-query';
3
3
  import { AccountMutation } from './account-mutation';
4
4
  import { AccountHistoryEntitySubscriber } from './event-subscriber';
5
+ import { DefaultAccountsSubscriber } from './default-accounts-subscriber';
5
6
  export declare const entities: (typeof Account)[];
6
- export declare const resolvers: (typeof AccountMutation | typeof AccountQuery)[];
7
- export declare const subscribers: (typeof AccountHistoryEntitySubscriber)[];
7
+ export declare const resolvers: (typeof AccountQuery | typeof AccountMutation)[];
8
+ export declare const subscribers: (typeof AccountHistoryEntitySubscriber | typeof DefaultAccountsSubscriber)[];
@@ -6,7 +6,8 @@ const account_history_1 = require("./account-history");
6
6
  const account_query_1 = require("./account-query");
7
7
  const account_mutation_1 = require("./account-mutation");
8
8
  const event_subscriber_1 = require("./event-subscriber");
9
+ const default_accounts_subscriber_1 = require("./default-accounts-subscriber");
9
10
  exports.entities = [account_1.Account, account_history_1.AccountHistory];
10
11
  exports.resolvers = [account_query_1.AccountQuery, account_mutation_1.AccountMutation];
11
- exports.subscribers = [event_subscriber_1.AccountHistoryEntitySubscriber];
12
+ exports.subscribers = [event_subscriber_1.AccountHistoryEntitySubscriber, default_accounts_subscriber_1.DefaultAccountsSubscriber];
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/account/index.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AACnC,uDAAkD;AAClD,mDAA8C;AAC9C,yDAAoD;AACpD,yDAAmE;AAEtD,QAAA,QAAQ,GAAG,CAAC,iBAAO,EAAE,gCAAc,CAAC,CAAA;AACpC,QAAA,SAAS,GAAG,CAAC,4BAAY,EAAE,kCAAe,CAAC,CAAA;AAC3C,QAAA,WAAW,GAAG,CAAC,iDAA8B,CAAC,CAAA","sourcesContent":["import { Account } from './account'\nimport { AccountHistory } from './account-history'\nimport { AccountQuery } from './account-query'\nimport { AccountMutation } from './account-mutation'\nimport { AccountHistoryEntitySubscriber } from './event-subscriber'\n\nexport const entities = [Account, AccountHistory]\nexport const resolvers = [AccountQuery, AccountMutation]\nexport const subscribers = [AccountHistoryEntitySubscriber]\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/service/account/index.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AACnC,uDAAkD;AAClD,mDAA8C;AAC9C,yDAAoD;AACpD,yDAAmE;AACnE,+EAAyE;AAE5D,QAAA,QAAQ,GAAG,CAAC,iBAAO,EAAE,gCAAc,CAAC,CAAA;AACpC,QAAA,SAAS,GAAG,CAAC,4BAAY,EAAE,kCAAe,CAAC,CAAA;AAC3C,QAAA,WAAW,GAAG,CAAC,iDAA8B,EAAE,uDAAyB,CAAC,CAAA","sourcesContent":["import { Account } from './account'\nimport { AccountHistory } from './account-history'\nimport { AccountQuery } from './account-query'\nimport { AccountMutation } from './account-mutation'\nimport { AccountHistoryEntitySubscriber } from './event-subscriber'\nimport { DefaultAccountsSubscriber } from './default-accounts-subscriber'\n\nexport const entities = [Account, AccountHistory]\nexport const resolvers = [AccountQuery, AccountMutation]\nexport const subscribers = [AccountHistoryEntitySubscriber, DefaultAccountsSubscriber]\n"]}
@@ -3,5 +3,5 @@ import { AccountingCategoryQuery } from './accounting-category-query';
3
3
  import { AccountingCategoryMutation } from './accounting-category-mutation';
4
4
  import { AccountingCategoryHistoryEntitySubscriber } from './event-subscriber';
5
5
  export declare const entities: (typeof AccountingCategory)[];
6
- export declare const resolvers: (typeof AccountingCategoryMutation | typeof AccountingCategoryQuery)[];
6
+ export declare const resolvers: (typeof AccountingCategoryQuery | typeof AccountingCategoryMutation)[];
7
7
  export declare const subscribers: (typeof AccountingCategoryHistoryEntitySubscriber)[];
@@ -3,5 +3,5 @@ import { AccountingDocumentHistoryEntitySubscriber } from './event-subscriber';
3
3
  import { AccountingDocumentQuery } from './accounting-document-query';
4
4
  import { AccountingDocumentMutation } from './accounting-document-mutation';
5
5
  export declare const entities: (typeof AccountingDocument)[];
6
- export declare const resolvers: (typeof AccountingDocumentMutation | typeof AccountingDocumentQuery)[];
6
+ export declare const resolvers: (typeof AccountingDocumentQuery | typeof AccountingDocumentMutation)[];
7
7
  export declare const subscribers: (typeof AccountingDocumentHistoryEntitySubscriber)[];
@@ -3,5 +3,5 @@ import { BankAccountHistoryEntitySubscriber } from './event-subscriber';
3
3
  import { BankAccountQuery } from './bank-account-query';
4
4
  import { BankAccountMutation } from './bank-account-mutation';
5
5
  export declare const entities: (typeof BankAccount)[];
6
- export declare const resolvers: (typeof BankAccountMutation | typeof BankAccountQuery)[];
6
+ export declare const resolvers: (typeof BankAccountQuery | typeof BankAccountMutation)[];
7
7
  export declare const subscribers: (typeof BankAccountHistoryEntitySubscriber)[];
@@ -2,5 +2,5 @@ import { BankStatement } from './bank-statement';
2
2
  import { BankStatementQuery } from './bank-statement-query';
3
3
  import { BankImportMutation } from './bank-import-mutation';
4
4
  export declare const entities: (typeof BankStatement)[];
5
- export declare const resolvers: (typeof BankImportMutation | typeof BankStatementQuery)[];
5
+ export declare const resolvers: (typeof BankStatementQuery | typeof BankImportMutation)[];
6
6
  export declare const subscribers: any[];
@@ -2,5 +2,5 @@ import { FinancialInstitution } from './financial-institution';
2
2
  import { FinancialInstitutionQuery } from './financial-institution-query';
3
3
  import { FinancialInstitutionMutation } from './financial-institution-mutation';
4
4
  export declare const entities: (typeof FinancialInstitution)[];
5
- export declare const resolvers: (typeof FinancialInstitutionMutation | typeof FinancialInstitutionQuery)[];
5
+ export declare const resolvers: (typeof FinancialInstitutionQuery | typeof FinancialInstitutionMutation)[];
6
6
  export declare const subscribers: any[];
@@ -4,6 +4,6 @@ import { FinancialStatementHistory } from './financial-statement-history';
4
4
  import { FinancialStatementLineQuery, FinancialStatementQuery } from './financial-statement-query';
5
5
  import { FinancialStatementMutation } from './financial-statement-mutation';
6
6
  import { FinancialStatementHistoryEntitySubscriber } from './event-subscriber';
7
- export declare const entities: (typeof FinancialStatement | typeof FinancialStatementHistory | typeof FinancialStatementLine)[];
8
- export declare const resolvers: (typeof FinancialStatementMutation | typeof FinancialStatementQuery | typeof FinancialStatementLineQuery)[];
7
+ export declare const entities: (typeof FinancialStatementLine | typeof FinancialStatement | typeof FinancialStatementHistory)[];
8
+ export declare const resolvers: (typeof FinancialStatementQuery | typeof FinancialStatementLineQuery | typeof FinancialStatementMutation)[];
9
9
  export declare const subscribers: (typeof FinancialStatementHistoryEntitySubscriber)[];
@@ -2,5 +2,5 @@ import { FiscalMonth } from './fiscal-month';
2
2
  import { FiscalMonthQuery } from './fiscal-month-query';
3
3
  import { FiscalMonthMutation } from './fiscal-month-mutation';
4
4
  export declare const entities: (typeof FiscalMonth)[];
5
- export declare const resolvers: (typeof FiscalMonthMutation | typeof FiscalMonthQuery)[];
5
+ export declare const resolvers: (typeof FiscalMonthQuery | typeof FiscalMonthMutation)[];
6
6
  export declare const subscribers: any[];
@@ -2,5 +2,5 @@ import { FiscalQuarter } from './fiscal-quarter';
2
2
  import { FiscalQuarterQuery } from './fiscal-quarter-query';
3
3
  import { FiscalQuarterMutation } from './fiscal-quarter-mutation';
4
4
  export declare const entities: (typeof FiscalQuarter)[];
5
- export declare const resolvers: (typeof FiscalQuarterMutation | typeof FiscalQuarterQuery)[];
5
+ export declare const resolvers: (typeof FiscalQuarterQuery | typeof FiscalQuarterMutation)[];
6
6
  export declare const subscribers: any[];
@@ -2,5 +2,5 @@ import { FiscalYear } from './fiscal-year';
2
2
  import { FiscalYearQuery } from './fiscal-year-query';
3
3
  import { FiscalYearMutation } from './fiscal-year-mutation';
4
4
  export declare const entities: (typeof FiscalYear)[];
5
- export declare const resolvers: (typeof FiscalYearMutation | typeof FiscalYearQuery)[];
5
+ export declare const resolvers: (typeof FiscalYearQuery | typeof FiscalYearMutation)[];
6
6
  export declare const subscribers: any[];
@@ -17,17 +17,20 @@ export * from './transaction/transaction-service';
17
17
  export * from './bank-account/bank-account-service';
18
18
  export * from './payment/payment-targets';
19
19
  export * from './payment/payment-service';
20
+ export * from './payment/document-targets';
20
21
  export * from './financial-statement/financial-statement-line';
21
22
  export * from './financial-statement/financial-statement-service';
22
23
  export * from './recurring-cash-item/recurring-schedule';
23
24
  export * from './recurring-cash-item/recurring-cash-item-service';
25
+ export * from './account/account-match';
26
+ export * from './account/default-accounts';
24
27
  export * from './bank-statement/bank-source';
25
28
  export * from './bank-statement/bank-parser';
26
29
  export * from './bank-statement/bank-reconcile';
27
30
  export * from './bank-statement/bank-import-type';
28
31
  export * from './bank-statement/bank-import';
29
- export declare const entities: (typeof import("./fiscal-year/fiscal-year").FiscalYear | typeof import("./accounting-category/accounting-category").AccountingCategory | typeof import("./account/account").Account | typeof import("./financial-institution/financial-institution").FinancialInstitution | typeof import("./transaction/transaction").Transaction | typeof import("./accounting-document/accounting-document").AccountingDocument | typeof import("./bank-account/bank-account").BankAccount | typeof import("./bank-statement/bank-statement").BankStatement | typeof import("./financial-statement/financial-statement").FinancialStatement | typeof import("./financial-statement/financial-statement-history").FinancialStatementHistory | typeof import("./financial-statement/financial-statement-line").FinancialStatementLine | typeof import("./transaction/transaction-history").TransactionHistory | typeof import("./payment/payment").Payment | typeof import("./recurring-cash-item/recurring-cash-item").RecurringCashItem)[];
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)[];
30
33
  export declare const subscribers: any[];
31
34
  export declare const schema: {
32
- resolverClasses: (typeof import("./account/account-mutation").AccountMutation | typeof import("./account/account-query").AccountQuery | typeof import("./accounting-category/accounting-category-mutation").AccountingCategoryMutation | typeof import("./accounting-category/accounting-category-query").AccountingCategoryQuery | typeof import("./accounting-document/accounting-document-mutation").AccountingDocumentMutation | typeof import("./accounting-document/accounting-document-query").AccountingDocumentQuery | typeof import("./bank-account/bank-account-mutation").BankAccountMutation | typeof import("./bank-account/bank-account-query").BankAccountQuery | typeof import("./bank-statement/bank-import-mutation").BankImportMutation | typeof import("./bank-statement/bank-statement-query").BankStatementQuery | typeof import("./financial-institution/financial-institution-mutation").FinancialInstitutionMutation | typeof import("./financial-institution/financial-institution-query").FinancialInstitutionQuery | typeof import("./financial-statement/financial-statement-mutation").FinancialStatementMutation | typeof import("./financial-statement/financial-statement-query").FinancialStatementQuery | typeof import("./financial-statement/financial-statement-query").FinancialStatementLineQuery | typeof import("./fiscal-month/fiscal-month-mutation").FiscalMonthMutation | typeof import("./fiscal-month/fiscal-month-query").FiscalMonthQuery | typeof import("./fiscal-quarter/fiscal-quarter-mutation").FiscalQuarterMutation | typeof import("./fiscal-quarter/fiscal-quarter-query").FiscalQuarterQuery | typeof import("./fiscal-year/fiscal-year-mutation").FiscalYearMutation | typeof import("./fiscal-year/fiscal-year-query").FiscalYearQuery | typeof import("./transaction/transaction-query").TransactionQuery | typeof import("./transaction/transaction-mutation").TransactionMutation | typeof import("./payment/payment-query").PaymentQuery | typeof import("./payment/payment-mutation").PaymentMutation | typeof import("./recurring-cash-item/recurring-cash-item-query").RecurringCashItemQuery | typeof import("./recurring-cash-item/recurring-cash-item-mutation").RecurringCashItemMutation)[];
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)[];
33
36
  };
@@ -23,10 +23,13 @@ tslib_1.__exportStar(require("./transaction/transaction-service"), exports);
23
23
  tslib_1.__exportStar(require("./bank-account/bank-account-service"), exports);
24
24
  tslib_1.__exportStar(require("./payment/payment-targets"), exports);
25
25
  tslib_1.__exportStar(require("./payment/payment-service"), exports);
26
+ tslib_1.__exportStar(require("./payment/document-targets"), exports);
26
27
  tslib_1.__exportStar(require("./financial-statement/financial-statement-line"), exports);
27
28
  tslib_1.__exportStar(require("./financial-statement/financial-statement-service"), exports);
28
29
  tslib_1.__exportStar(require("./recurring-cash-item/recurring-schedule"), exports);
29
30
  tslib_1.__exportStar(require("./recurring-cash-item/recurring-cash-item-service"), exports);
31
+ tslib_1.__exportStar(require("./account/account-match"), exports);
32
+ tslib_1.__exportStar(require("./account/default-accounts"), exports);
30
33
  tslib_1.__exportStar(require("./bank-statement/bank-source"), exports);
31
34
  tslib_1.__exportStar(require("./bank-statement/bank-parser"), exports);
32
35
  tslib_1.__exportStar(require("./bank-statement/bank-reconcile"), exports);
@@ -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,yFAA8D;AAC9D,4FAAiE;AACjE,mFAAwD;AACxD,4FAAiE;AACjE,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 './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 './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;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"]}
@@ -0,0 +1,16 @@
1
+ import { EntityManager } from 'typeorm';
2
+ import { Payment } from './payment';
3
+ export declare const INVOICE_TARGET = "Invoice";
4
+ export declare const TAX_INVOICE_TARGET = "TaxInvoice";
5
+ /** What a payment pays of its document, in the document's currency. */
6
+ export declare const paidOfDocument: (payment: Payment) => number;
7
+ /** The payments on some documents of a kind, or of some bank lines, with their line. */
8
+ export declare function documentPaymentsOf(tx: EntityManager, domain: {
9
+ id: string;
10
+ }, targetType: string, of: {
11
+ documentIds?: string[];
12
+ transactionIds?: string[];
13
+ }, options?: {
14
+ withDeleted?: boolean;
15
+ relations?: string[];
16
+ }): Promise<Payment[]>;