@things-factory/accounting 10.1.232 → 10.1.234

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 (90) hide show
  1. package/dist-client/tsconfig.tsbuildinfo +1 -1
  2. package/dist-server/service/account/account-mutation.js +7 -53
  3. package/dist-server/service/account/account-mutation.js.map +1 -1
  4. package/dist-server/service/account/account-service.d.ts +15 -0
  5. package/dist-server/service/account/account-service.js +40 -0
  6. package/dist-server/service/account/account-service.js.map +1 -1
  7. package/dist-server/service/bank-account/bank-account-history.d.ts +7 -0
  8. package/dist-server/service/bank-account/bank-account-history.js +29 -0
  9. package/dist-server/service/bank-account/bank-account-history.js.map +1 -1
  10. package/dist-server/service/bank-account/bank-account-mutation.js +4 -4
  11. package/dist-server/service/bank-account/bank-account-mutation.js.map +1 -1
  12. package/dist-server/service/bank-account/bank-account-query.d.ts +3 -0
  13. package/dist-server/service/bank-account/bank-account-query.js +23 -0
  14. package/dist-server/service/bank-account/bank-account-query.js.map +1 -1
  15. package/dist-server/service/bank-account/bank-account-service.d.ts +27 -0
  16. package/dist-server/service/bank-account/bank-account-service.js +55 -0
  17. package/dist-server/service/bank-account/bank-account-service.js.map +1 -1
  18. package/dist-server/service/bank-account/bank-account-type.d.ts +9 -0
  19. package/dist-server/service/bank-account/bank-account-type.js +33 -0
  20. package/dist-server/service/bank-account/bank-account-type.js.map +1 -1
  21. package/dist-server/service/bank-account/bank-account.d.ts +7 -0
  22. package/dist-server/service/bank-account/bank-account.js +29 -0
  23. package/dist-server/service/bank-account/bank-account.js.map +1 -1
  24. package/dist-server/service/bank-account/card-query.d.ts +24 -0
  25. package/dist-server/service/bank-account/card-query.js +140 -0
  26. package/dist-server/service/bank-account/card-query.js.map +1 -0
  27. package/dist-server/service/bank-account/card-rules.d.ts +21 -0
  28. package/dist-server/service/bank-account/card-rules.js +30 -0
  29. package/dist-server/service/bank-account/card-rules.js.map +1 -0
  30. package/dist-server/service/bank-account/card-summary.d.ts +29 -0
  31. package/dist-server/service/bank-account/card-summary.js +42 -0
  32. package/dist-server/service/bank-account/card-summary.js.map +1 -0
  33. package/dist-server/service/bank-account/index.d.ts +2 -1
  34. package/dist-server/service/bank-account/index.js +2 -1
  35. package/dist-server/service/bank-account/index.js.map +1 -1
  36. package/dist-server/service/expenditure-request/card-charge-query.d.ts +10 -0
  37. package/dist-server/service/expenditure-request/card-charge-query.js +54 -0
  38. package/dist-server/service/expenditure-request/card-charge-query.js.map +1 -0
  39. package/dist-server/service/expenditure-request/expenditure-request-item.d.ts +4 -0
  40. package/dist-server/service/expenditure-request/expenditure-request-item.js +19 -1
  41. package/dist-server/service/expenditure-request/expenditure-request-item.js.map +1 -1
  42. package/dist-server/service/expenditure-request/expenditure-request-mutation.js +2 -1
  43. package/dist-server/service/expenditure-request/expenditure-request-mutation.js.map +1 -1
  44. package/dist-server/service/expenditure-request/expenditure-request-rules.d.ts +26 -2
  45. package/dist-server/service/expenditure-request/expenditure-request-rules.js +19 -2
  46. package/dist-server/service/expenditure-request/expenditure-request-rules.js.map +1 -1
  47. package/dist-server/service/expenditure-request/expenditure-request-service.d.ts +6 -0
  48. package/dist-server/service/expenditure-request/expenditure-request-service.js +35 -1
  49. package/dist-server/service/expenditure-request/expenditure-request-service.js.map +1 -1
  50. package/dist-server/service/expenditure-request/expenditure-request-type.d.ts +2 -0
  51. package/dist-server/service/expenditure-request/expenditure-request-type.js +8 -0
  52. package/dist-server/service/expenditure-request/expenditure-request-type.js.map +1 -1
  53. package/dist-server/service/expenditure-request/index.d.ts +2 -1
  54. package/dist-server/service/expenditure-request/index.js +2 -1
  55. package/dist-server/service/expenditure-request/index.js.map +1 -1
  56. package/dist-server/service/index.d.ts +4 -1
  57. package/dist-server/service/index.js +3 -0
  58. package/dist-server/service/index.js.map +1 -1
  59. package/dist-server/service/payment/card-bill-target.d.ts +2 -0
  60. package/dist-server/service/payment/card-bill-target.js +37 -0
  61. package/dist-server/service/payment/card-bill-target.js.map +1 -0
  62. package/dist-server/service/payment/index.d.ts +1 -0
  63. package/dist-server/service/payment/index.js +1 -0
  64. package/dist-server/service/payment/index.js.map +1 -1
  65. package/dist-server/service/recurring-cash-item/recurring-cash-item-query.d.ts +2 -0
  66. package/dist-server/service/recurring-cash-item/recurring-cash-item-query.js +14 -0
  67. package/dist-server/service/recurring-cash-item/recurring-cash-item-query.js.map +1 -1
  68. package/dist-server/service/recurring-cash-item/recurring-cash-item-service.d.ts +5 -0
  69. package/dist-server/service/recurring-cash-item/recurring-cash-item-service.js +22 -1
  70. package/dist-server/service/recurring-cash-item/recurring-cash-item-service.js.map +1 -1
  71. package/dist-server/service/recurring-cash-item/recurring-schedule.d.ts +5 -1
  72. package/dist-server/service/recurring-cash-item/recurring-schedule.js +10 -2
  73. package/dist-server/service/recurring-cash-item/recurring-schedule.js.map +1 -1
  74. package/dist-server/service/transaction/transaction-query.d.ts +5 -0
  75. package/dist-server/service/transaction/transaction-query.js +3 -3
  76. package/dist-server/service/transaction/transaction-query.js.map +1 -1
  77. package/dist-server/service/transaction/transaction-service.d.ts +5 -1
  78. package/dist-server/service/transaction/transaction-service.js +15 -10
  79. package/dist-server/service/transaction/transaction-service.js.map +1 -1
  80. package/dist-server/service/transaction/transaction.d.ts +5 -3
  81. package/dist-server/service/transaction/transaction.js +6 -4
  82. package/dist-server/service/transaction/transaction.js.map +1 -1
  83. package/dist-server/tsconfig.tsbuildinfo +1 -1
  84. package/package.json +11 -10
  85. package/translations/en.json +30 -1
  86. package/translations/es.json +30 -1
  87. package/translations/ja.json +30 -1
  88. package/translations/ko.json +30 -1
  89. package/translations/ms.json +30 -1
  90. package/translations/zh.json +30 -1
@@ -8,11 +8,13 @@ import { CashFlowType } from '../cash-flow-type';
8
8
  import { Payment } from '../payment/payment';
9
9
  import { AccountingDocument } from '../accounting-document/accounting-document';
10
10
  /**
11
- * What a transaction is: a line that happened on the bank account. Money still to come is read from the records that
12
- * owe it, never written as a transaction (ADR-0157) - the category is the one kind left.
11
+ * What a transaction is: a line that happened on a bank account, or a charge on a corporate card - spent, and paid
12
+ * later by the card's bill, which is the bank line (ADR-0178). Money still to come is read from the records that owe
13
+ * it, never written as a transaction (ADR-0157). The category follows the account the line is on.
13
14
  */
14
15
  export declare enum TransactionCategory {
15
- CONFIRMED = "CONFIRMED"
16
+ CONFIRMED = "CONFIRMED",
17
+ CARD = "CARD"
16
18
  }
17
19
  export declare enum TransactionSource {
18
20
  BANK_STATEMENT = "BANK_STATEMENT",
@@ -14,16 +14,18 @@ const cash_flow_type_1 = require("../cash-flow-type");
14
14
  const payment_1 = require("../payment/payment");
15
15
  const accounting_document_1 = require("../accounting-document/accounting-document");
16
16
  /**
17
- * What a transaction is: a line that happened on the bank account. Money still to come is read from the records that
18
- * owe it, never written as a transaction (ADR-0157) - the category is the one kind left.
17
+ * What a transaction is: a line that happened on a bank account, or a charge on a corporate card - spent, and paid
18
+ * later by the card's bill, which is the bank line (ADR-0178). Money still to come is read from the records that owe
19
+ * it, never written as a transaction (ADR-0157). The category follows the account the line is on.
19
20
  */
20
21
  var TransactionCategory;
21
22
  (function (TransactionCategory) {
22
23
  TransactionCategory["CONFIRMED"] = "CONFIRMED";
24
+ TransactionCategory["CARD"] = "CARD";
23
25
  })(TransactionCategory || (exports.TransactionCategory = TransactionCategory = {}));
24
26
  (0, type_graphql_1.registerEnumType)(TransactionCategory, {
25
27
  name: 'TransactionCategory',
26
- description: 'That a transaction happened on the bank account (confirmed)'
28
+ description: 'A line on a bank account (confirmed), or a charge on a corporate card - not money that left the bank yet'
27
29
  });
28
30
  var TransactionSource;
29
31
  (function (TransactionSource) {
@@ -68,7 +70,7 @@ tslib_1.__decorate([
68
70
  ], Transaction.prototype, "domainId", void 0);
69
71
  tslib_1.__decorate([
70
72
  (0, typeorm_1.Column)({ default: TransactionCategory.CONFIRMED }),
71
- (0, type_graphql_1.Field)(type => TransactionCategory, { description: 'Confirmed - on the bank account' }),
73
+ (0, type_graphql_1.Field)(type => TransactionCategory, { description: 'A bank line, or a charge on a card - follows the account' }),
72
74
  tslib_1.__metadata("design:type", String)
73
75
  ], Transaction.prototype, "category", void 0);
74
76
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../server/service/transaction/transaction.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\nimport { ObjectType, Field, Float, ID, Int, registerEnumType } from 'type-graphql'\n\nimport { Domain, moneyColumn } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Counterparty } from '@things-factory/biz-base'\n\nimport { Account } from '../account/account'\nimport { BankAccount } from '../bank-account/bank-account'\nimport { BankStatement } from '../bank-statement/bank-statement'\nimport { CashFlowType } from '../cash-flow-type'\nimport { Payment } from '../payment/payment'\nimport { AccountingDocument } from '../accounting-document/accounting-document'\n\n/**\n * What a transaction is: a line that happened on the bank account. Money still to come is read from the records that\n * owe it, never written as a transaction (ADR-0157) - the category is the one kind left.\n */\nexport enum TransactionCategory {\n CONFIRMED = 'CONFIRMED'\n}\n\nregisterEnumType(TransactionCategory, {\n name: 'TransactionCategory',\n description: 'That a transaction happened on the bank account (confirmed)'\n})\n\nexport enum TransactionSource {\n BANK_STATEMENT = 'BANK_STATEMENT',\n LEGACY = 'LEGACY',\n MANUAL = 'MANUAL'\n}\n\nregisterEnumType(TransactionSource, {\n name: 'TransactionSource',\n description:\n 'Where the facts of a confirmed transaction come from - a bank statement file, an old ledger, or a person'\n})\n\n/**\n * Money that moved in or out of the business: a line on a bank account.\n *\n * What a transaction paid - a contract round, a tax invoice, a VAT period - is its payments (§`Payment`). The facts\n * of a bank line are kept as the bank gave them, beside what a person wrote about it.\n */\n@ObjectType({ description: 'Money that moved in or out - a bank line' })\n@Entity()\n@Index('ix_transaction_0', (transaction: Transaction) => [transaction.domain, transaction.bankFingerprint], {\n unique: true,\n where: '\"deleted_at\" IS NULL AND \"bank_fingerprint\" IS NOT NULL'\n})\n@Index('ix_transaction_1', (transaction: Transaction) => [\n transaction.domain,\n transaction.bankAccount,\n transaction.transactionDate\n])\n@Index('ix_transaction_2', (transaction: Transaction) => [\n transaction.domain,\n transaction.category,\n transaction.year,\n transaction.month\n])\n@Index('ix_transaction_3', (transaction: Transaction) => [transaction.domain, transaction.transactionDate])\nexport class Transaction {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Unique identifier for the transaction' })\n readonly id: string\n\n @VersionColumn()\n @Field({ nullable: true, description: 'Version number for optimistic locking' })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain in which this transaction belongs' })\n domain?: Domain\n\n @RelationId((transaction: Transaction) => transaction.domain)\n domainId?: string\n\n @Column({ default: TransactionCategory.CONFIRMED })\n @Field(type => TransactionCategory, { description: 'Confirmed - on the bank account' })\n category: TransactionCategory\n\n @Column({ default: CashFlowType.INCOME })\n @Field(type => CashFlowType, { description: 'Money in or money out' })\n type: CashFlowType\n\n @ManyToOne(type => BankAccount, { nullable: true })\n @Field(type => BankAccount, { nullable: true, description: 'The account the money moved in or out of' })\n bankAccount?: BankAccount\n\n @RelationId((transaction: Transaction) => transaction.bankAccount)\n bankAccountId?: string\n\n @Column({ nullable: true })\n @Field({\n nullable: true,\n description:\n \"YYYY-MM-DD - the day in the account's time zone\"\n })\n transactionDate?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Bank timestamp with UTC offset; empty when only a date is known' })\n transactionAt?: string\n\n @Column({ type: 'int' })\n @Field(type => Int, { description: 'Year of the transaction date' })\n year: number\n\n @Column({ type: 'int' })\n @Field(type => Int, { description: 'Month of the transaction date' })\n month: number\n\n @Column(moneyColumn())\n @Field(type => Float, { description: 'Amount, in the currency' })\n amount: number\n\n @Column({ default: 'KRW' })\n @Field({ description: 'ISO 4217 code - the currency of the account' })\n currency: string\n\n @Column(moneyColumn({ nullable: true, default: null }))\n @Field(type => Float, {\n nullable: true,\n description: 'Account balance after this transaction, as the bank statement says'\n })\n balance?: number\n\n @ManyToOne(type => Account, { nullable: true, onDelete: 'SET NULL' })\n @Field(type => Account, { nullable: true, description: 'The account subject it is booked to' })\n account?: Account\n\n @RelationId((transaction: Transaction) => transaction.account)\n accountId?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What a person wrote about it' })\n description?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The classifying word of the ledger it was kept in' })\n ledgerCategory?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The counterparty name as a person wrote it' })\n counterpartyName?: string\n\n @ManyToOne(type => Counterparty, { nullable: true, onDelete: 'SET NULL' })\n @Field(type => Counterparty, {\n nullable: true,\n description: 'The registered counterparty, when the name is one the domain knows'\n })\n counterparty?: Counterparty\n\n @RelationId((transaction: Transaction) => transaction.counterparty)\n counterpartyId?: string\n\n @Column({ default: TransactionSource.MANUAL })\n @Field(type => TransactionSource, { description: 'Where the facts of the line come from' })\n source: TransactionSource\n\n @ManyToOne(type => BankStatement, { nullable: true, onDelete: 'RESTRICT' })\n @Field(type => BankStatement, { nullable: true, description: 'The bank statement file the line was read from' })\n bankStatement?: BankStatement\n\n @RelationId((transaction: Transaction) => transaction.bankStatement)\n bankStatementId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The file the line was read from, for lines from before statements were kept' })\n sourceFile?: string\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'The row of the source file' })\n sourceRow?: number\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'Chronological order within the source statement' })\n bankSequence?: number\n\n @Column({ nullable: true })\n @Field({\n nullable: true,\n description: 'What makes the bank line itself unique in the domain - the same line read twice is refused'\n })\n bankFingerprint?: string\n\n @Column({ type: 'simple-json', nullable: true })\n bankReconciliationBefore?: Record<string, any>\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Description as the bank wrote it' })\n bankDescription?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Kind of the line as the bank wrote it' })\n bankKind?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Counterparty name as the bank wrote it' })\n bankCounterpartyName?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: \"Counterparty's account number as the bank wrote it\" })\n bankCounterpartyAccount?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: \"Counterparty's bank as the bank wrote it\" })\n bankCounterpartyBank?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Memo as the bank wrote it' })\n bankMemo?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'Notes' })\n notes?: string\n\n @OneToMany(type => Payment, payment => payment.transaction)\n @Field(type => [Payment], { nullable: true, description: 'What this transaction paid' })\n payments?: Payment[]\n\n @OneToMany(type => AccountingDocument, document => document.transaction)\n @Field(type => [AccountingDocument], { nullable: true, description: 'Documents linked to this transaction' })\n documents?: AccountingDocument[]\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Timestamp when the transaction record was created' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Timestamp when the transaction record was last updated' })\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: 'User who created the transaction record' })\n creator?: User\n\n @RelationId((transaction: Transaction) => transaction.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'User who last updated the transaction record' })\n updater?: User\n\n @RelationId((transaction: Transaction) => transaction.updater)\n updaterId?: string\n}\n"]}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../server/service/transaction/transaction.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CreateDateColumn,\n UpdateDateColumn,\n DeleteDateColumn,\n Entity,\n Index,\n Column,\n RelationId,\n ManyToOne,\n OneToMany,\n PrimaryGeneratedColumn,\n VersionColumn\n} from 'typeorm'\nimport { ObjectType, Field, Float, ID, Int, registerEnumType } from 'type-graphql'\n\nimport { Domain, moneyColumn } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { Counterparty } from '@things-factory/biz-base'\n\nimport { Account } from '../account/account'\nimport { BankAccount } from '../bank-account/bank-account'\nimport { BankStatement } from '../bank-statement/bank-statement'\nimport { CashFlowType } from '../cash-flow-type'\nimport { Payment } from '../payment/payment'\nimport { AccountingDocument } from '../accounting-document/accounting-document'\n\n/**\n * What a transaction is: a line that happened on a bank account, or a charge on a corporate card - spent, and paid\n * later by the card's bill, which is the bank line (ADR-0178). Money still to come is read from the records that owe\n * it, never written as a transaction (ADR-0157). The category follows the account the line is on.\n */\nexport enum TransactionCategory {\n CONFIRMED = 'CONFIRMED',\n CARD = 'CARD'\n}\n\nregisterEnumType(TransactionCategory, {\n name: 'TransactionCategory',\n description: 'A line on a bank account (confirmed), or a charge on a corporate card - not money that left the bank yet'\n})\n\nexport enum TransactionSource {\n BANK_STATEMENT = 'BANK_STATEMENT',\n LEGACY = 'LEGACY',\n MANUAL = 'MANUAL'\n}\n\nregisterEnumType(TransactionSource, {\n name: 'TransactionSource',\n description:\n 'Where the facts of a confirmed transaction come from - a bank statement file, an old ledger, or a person'\n})\n\n/**\n * Money that moved in or out of the business: a line on a bank account.\n *\n * What a transaction paid - a contract round, a tax invoice, a VAT period - is its payments (§`Payment`). The facts\n * of a bank line are kept as the bank gave them, beside what a person wrote about it.\n */\n@ObjectType({ description: 'Money that moved in or out - a bank line' })\n@Entity()\n@Index('ix_transaction_0', (transaction: Transaction) => [transaction.domain, transaction.bankFingerprint], {\n unique: true,\n where: '\"deleted_at\" IS NULL AND \"bank_fingerprint\" IS NOT NULL'\n})\n@Index('ix_transaction_1', (transaction: Transaction) => [\n transaction.domain,\n transaction.bankAccount,\n transaction.transactionDate\n])\n@Index('ix_transaction_2', (transaction: Transaction) => [\n transaction.domain,\n transaction.category,\n transaction.year,\n transaction.month\n])\n@Index('ix_transaction_3', (transaction: Transaction) => [transaction.domain, transaction.transactionDate])\nexport class Transaction {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID, { description: 'Unique identifier for the transaction' })\n readonly id: string\n\n @VersionColumn()\n @Field({ nullable: true, description: 'Version number for optimistic locking' })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true, description: 'The domain in which this transaction belongs' })\n domain?: Domain\n\n @RelationId((transaction: Transaction) => transaction.domain)\n domainId?: string\n\n @Column({ default: TransactionCategory.CONFIRMED })\n @Field(type => TransactionCategory, { description: 'A bank line, or a charge on a card - follows the account' })\n category: TransactionCategory\n\n @Column({ default: CashFlowType.INCOME })\n @Field(type => CashFlowType, { description: 'Money in or money out' })\n type: CashFlowType\n\n @ManyToOne(type => BankAccount, { nullable: true })\n @Field(type => BankAccount, { nullable: true, description: 'The account the money moved in or out of' })\n bankAccount?: BankAccount\n\n @RelationId((transaction: Transaction) => transaction.bankAccount)\n bankAccountId?: string\n\n @Column({ nullable: true })\n @Field({\n nullable: true,\n description:\n \"YYYY-MM-DD - the day in the account's time zone\"\n })\n transactionDate?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Bank timestamp with UTC offset; empty when only a date is known' })\n transactionAt?: string\n\n @Column({ type: 'int' })\n @Field(type => Int, { description: 'Year of the transaction date' })\n year: number\n\n @Column({ type: 'int' })\n @Field(type => Int, { description: 'Month of the transaction date' })\n month: number\n\n @Column(moneyColumn())\n @Field(type => Float, { description: 'Amount, in the currency' })\n amount: number\n\n @Column({ default: 'KRW' })\n @Field({ description: 'ISO 4217 code - the currency of the account' })\n currency: string\n\n @Column(moneyColumn({ nullable: true, default: null }))\n @Field(type => Float, {\n nullable: true,\n description: 'Account balance after this transaction, as the bank statement says'\n })\n balance?: number\n\n @ManyToOne(type => Account, { nullable: true, onDelete: 'SET NULL' })\n @Field(type => Account, { nullable: true, description: 'The account subject it is booked to' })\n account?: Account\n\n @RelationId((transaction: Transaction) => transaction.account)\n accountId?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'What a person wrote about it' })\n description?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The classifying word of the ledger it was kept in' })\n ledgerCategory?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The counterparty name as a person wrote it' })\n counterpartyName?: string\n\n @ManyToOne(type => Counterparty, { nullable: true, onDelete: 'SET NULL' })\n @Field(type => Counterparty, {\n nullable: true,\n description: 'The registered counterparty, when the name is one the domain knows'\n })\n counterparty?: Counterparty\n\n @RelationId((transaction: Transaction) => transaction.counterparty)\n counterpartyId?: string\n\n @Column({ default: TransactionSource.MANUAL })\n @Field(type => TransactionSource, { description: 'Where the facts of the line come from' })\n source: TransactionSource\n\n @ManyToOne(type => BankStatement, { nullable: true, onDelete: 'RESTRICT' })\n @Field(type => BankStatement, { nullable: true, description: 'The bank statement file the line was read from' })\n bankStatement?: BankStatement\n\n @RelationId((transaction: Transaction) => transaction.bankStatement)\n bankStatementId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'The file the line was read from, for lines from before statements were kept' })\n sourceFile?: string\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'The row of the source file' })\n sourceRow?: number\n\n @Column({ type: 'int', nullable: true })\n @Field(type => Int, { nullable: true, description: 'Chronological order within the source statement' })\n bankSequence?: number\n\n @Column({ nullable: true })\n @Field({\n nullable: true,\n description: 'What makes the bank line itself unique in the domain - the same line read twice is refused'\n })\n bankFingerprint?: string\n\n @Column({ type: 'simple-json', nullable: true })\n bankReconciliationBefore?: Record<string, any>\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Description as the bank wrote it' })\n bankDescription?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Kind of the line as the bank wrote it' })\n bankKind?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Counterparty name as the bank wrote it' })\n bankCounterpartyName?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: \"Counterparty's account number as the bank wrote it\" })\n bankCounterpartyAccount?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: \"Counterparty's bank as the bank wrote it\" })\n bankCounterpartyBank?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true, description: 'Memo as the bank wrote it' })\n bankMemo?: string\n\n @Column({ type: 'text', nullable: true })\n @Field({ nullable: true, description: 'Notes' })\n notes?: string\n\n @OneToMany(type => Payment, payment => payment.transaction)\n @Field(type => [Payment], { nullable: true, description: 'What this transaction paid' })\n payments?: Payment[]\n\n @OneToMany(type => AccountingDocument, document => document.transaction)\n @Field(type => [AccountingDocument], { nullable: true, description: 'Documents linked to this transaction' })\n documents?: AccountingDocument[]\n\n @CreateDateColumn()\n @Field({ nullable: true, description: 'Timestamp when the transaction record was created' })\n createdAt?: Date\n\n @UpdateDateColumn()\n @Field({ nullable: true, description: 'Timestamp when the transaction record was last updated' })\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: 'User who created the transaction record' })\n creator?: User\n\n @RelationId((transaction: Transaction) => transaction.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true, description: 'User who last updated the transaction record' })\n updater?: User\n\n @RelationId((transaction: Transaction) => transaction.updater)\n updaterId?: string\n}\n"]}