@tomei/finance 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/account/account.d.ts +22 -27
  2. package/dist/account/account.js +89 -77
  3. package/dist/account/account.js.map +1 -1
  4. package/dist/account/account.repository.d.ts +3 -14
  5. package/dist/account/account.repository.js +4 -39
  6. package/dist/account/account.repository.js.map +1 -1
  7. package/dist/account/interfaces/account-attr.interface.d.ts +15 -7
  8. package/dist/account-system-entity/account-system-entity.d.ts +2 -2
  9. package/dist/account-system-entity/account-system-entity.js +1 -1
  10. package/dist/account-system-entity/post-history.repository.d.ts +2 -2
  11. package/dist/account-system-entity/post-history.repository.js +1 -1
  12. package/dist/customer/customer.d.ts +3 -3
  13. package/dist/customer/customer.js +1 -2
  14. package/dist/customer/customer.js.map +1 -1
  15. package/dist/customer/finance-customer.repository.d.ts +2 -2
  16. package/dist/customer/finance-customer.repository.js +1 -1
  17. package/dist/customer/interfaces/finance-customer.repository.interface.d.ts +2 -2
  18. package/dist/document/document-item.d.ts +2 -1
  19. package/dist/document/document-item.js +2 -2
  20. package/dist/document/document-item.js.map +1 -1
  21. package/dist/document/document-item.repository.d.ts +3 -15
  22. package/dist/document/document-item.repository.js +4 -43
  23. package/dist/document/document-item.repository.js.map +1 -1
  24. package/dist/document/document.d.ts +20 -23
  25. package/dist/document/document.js +85 -54
  26. package/dist/document/document.js.map +1 -1
  27. package/dist/document/document.repository.d.ts +3 -14
  28. package/dist/document/document.repository.js +4 -39
  29. package/dist/document/document.repository.js.map +1 -1
  30. package/dist/document/interfaces/document-item.repository.interface.d.ts +2 -2
  31. package/dist/enum/index.d.ts +2 -1
  32. package/dist/enum/index.js +3 -1
  33. package/dist/enum/index.js.map +1 -1
  34. package/dist/enum/payment-status.enum.d.ts +4 -0
  35. package/dist/enum/payment-status.enum.js +9 -0
  36. package/dist/enum/payment-status.enum.js.map +1 -0
  37. package/dist/enum/transaction-type.enum.d.ts +2 -2
  38. package/dist/enum/transaction-type.enum.js +2 -2
  39. package/dist/enum/transaction-type.enum.js.map +1 -1
  40. package/dist/finance-company/finance-company.d.ts +15 -10
  41. package/dist/finance-company/finance-company.js +473 -30
  42. package/dist/finance-company/finance-company.js.map +1 -1
  43. package/dist/finance-company/finance-company.repository.d.ts +2 -2
  44. package/dist/finance-company/finance-company.repository.js +1 -1
  45. package/dist/index.d.ts +11 -8
  46. package/dist/index.js +14 -8
  47. package/dist/index.js.map +1 -1
  48. package/dist/interfaces/account-system.interface.d.ts +2 -2
  49. package/dist/journal-entry/journal-entry.d.ts +13 -17
  50. package/dist/journal-entry/journal-entry.js +83 -35
  51. package/dist/journal-entry/journal-entry.js.map +1 -1
  52. package/dist/journal-entry/journal-entry.repository.d.ts +3 -13
  53. package/dist/journal-entry/journal-entry.repository.js +5 -38
  54. package/dist/journal-entry/journal-entry.repository.js.map +1 -1
  55. package/dist/ledger-transaction/interfaces/ledger-transaction-attr.interface.d.ts +0 -4
  56. package/dist/ledger-transaction/ledger-transaction.d.ts +6 -5
  57. package/dist/ledger-transaction/ledger-transaction.js +6 -9
  58. package/dist/ledger-transaction/ledger-transaction.js.map +1 -1
  59. package/dist/ledger-transaction/ledger-transaction.repository.d.ts +3 -8
  60. package/dist/ledger-transaction/ledger-transaction.repository.js +5 -32
  61. package/dist/ledger-transaction/ledger-transaction.repository.js.map +1 -1
  62. package/dist/models/account.entity.d.ts +7 -3
  63. package/dist/models/account.entity.js +69 -34
  64. package/dist/models/account.entity.js.map +1 -1
  65. package/dist/models/finance-company.entity.d.ts +0 -4
  66. package/dist/models/finance-company.entity.js +0 -20
  67. package/dist/models/finance-company.entity.js.map +1 -1
  68. package/dist/models/payment-item.entity.d.ts +1 -0
  69. package/dist/models/payment-item.entity.js +7 -0
  70. package/dist/models/payment-item.entity.js.map +1 -1
  71. package/dist/models/payment-method-type.entity.d.ts +13 -0
  72. package/dist/models/payment-method-type.entity.js +86 -0
  73. package/dist/models/payment-method-type.entity.js.map +1 -0
  74. package/dist/models/payment-method.entity.d.ts +7 -0
  75. package/dist/models/payment-method.entity.js +46 -0
  76. package/dist/models/payment-method.entity.js.map +1 -0
  77. package/dist/models/payment.entity.d.ts +15 -10
  78. package/dist/models/payment.entity.js +92 -34
  79. package/dist/models/payment.entity.js.map +1 -1
  80. package/dist/payment/interfaces/payment-attr.interface.d.ts +11 -8
  81. package/dist/payment/interfaces/payment-attr.interface.js.map +1 -1
  82. package/dist/payment/interfaces/payment-item-attr.interface.d.ts +1 -0
  83. package/dist/payment/interfaces/payment-item-attr.interface.js.map +1 -1
  84. package/dist/payment/payment-item.repository.d.ts +3 -15
  85. package/dist/payment/payment-item.repository.js +4 -43
  86. package/dist/payment/payment-item.repository.js.map +1 -1
  87. package/dist/payment/payment.d.ts +44 -48
  88. package/dist/payment/payment.js +122 -133
  89. package/dist/payment/payment.js.map +1 -1
  90. package/dist/payment/payment.repository.d.ts +3 -14
  91. package/dist/payment/payment.repository.js +4 -39
  92. package/dist/payment/payment.repository.js.map +1 -1
  93. package/dist/payment-item/interfaces/payment-item-attr.interface.d.ts +8 -0
  94. package/dist/payment-item/interfaces/payment-item-attr.interface.js +7 -0
  95. package/dist/payment-item/interfaces/payment-item-attr.interface.js.map +1 -0
  96. package/{src/payment/interfaces/payment-item.repository.interface.ts → dist/payment-item/interfaces/payment-item.repository.interface.d.ts} +0 -1
  97. package/dist/payment-item/interfaces/payment-item.repository.interface.js +3 -0
  98. package/dist/payment-item/interfaces/payment-item.repository.interface.js.map +1 -0
  99. package/dist/payment-item/payment-item.d.ts +19 -0
  100. package/dist/payment-item/payment-item.js +42 -0
  101. package/dist/payment-item/payment-item.js.map +1 -0
  102. package/dist/payment-item/payment-item.repository.d.ts +5 -0
  103. package/dist/payment-item/payment-item.repository.js +12 -0
  104. package/dist/payment-item/payment-item.repository.js.map +1 -0
  105. package/dist/payment-method/interfaces/payment-method-attr.interface.d.ts +4 -0
  106. package/dist/payment-method/interfaces/payment-method-attr.interface.js +3 -0
  107. package/dist/payment-method/interfaces/payment-method-attr.interface.js.map +1 -0
  108. package/dist/payment-method/payment-method.d.ts +17 -0
  109. package/dist/payment-method/payment-method.js +83 -0
  110. package/dist/payment-method/payment-method.js.map +1 -0
  111. package/dist/payment-method/payment-method.repository.d.ts +5 -0
  112. package/dist/payment-method/payment-method.repository.js +12 -0
  113. package/dist/payment-method/payment-method.repository.js.map +1 -0
  114. package/dist/payment-method-type/interfaces/payment-method-type-attr.interface.d.ts +8 -0
  115. package/dist/payment-method-type/interfaces/payment-method-type-attr.interface.js +3 -0
  116. package/dist/payment-method-type/interfaces/payment-method-type-attr.interface.js.map +1 -0
  117. package/dist/payment-method-type/payment-method-type.d.ts +15 -0
  118. package/dist/payment-method-type/payment-method-type.js +55 -0
  119. package/dist/payment-method-type/payment-method-type.js.map +1 -0
  120. package/dist/payment-method-type/payment-method-type.repository.d.ts +5 -0
  121. package/dist/payment-method-type/payment-method-type.repository.js +12 -0
  122. package/dist/payment-method-type/payment-method-type.repository.js.map +1 -0
  123. package/dist/tsconfig.tsbuildinfo +1 -1
  124. package/migrations/finance-account-migration.js +30 -16
  125. package/migrations/finance-company-migration.js +0 -14
  126. package/migrations/finance-payment-item-migration.js +4 -0
  127. package/migrations/finance-payment-method-migration.js +21 -0
  128. package/migrations/finance-payment-method-type-migration.js +55 -0
  129. package/migrations/finance-payment-migration.js +42 -25
  130. package/package.json +4 -4
  131. package/src/account/account.repository.ts +5 -38
  132. package/src/account/account.ts +115 -98
  133. package/src/account/interfaces/account-attr.interface.ts +15 -7
  134. package/src/account-system-entity/account-system-entity.ts +4 -4
  135. package/src/account-system-entity/post-history.repository.ts +3 -3
  136. package/src/customer/customer.ts +3 -3
  137. package/src/customer/finance-customer.repository.ts +2 -2
  138. package/src/customer/interfaces/finance-customer.repository.interface.ts +2 -2
  139. package/src/document/document-item.repository.ts +5 -43
  140. package/src/document/document-item.ts +5 -1
  141. package/src/document/document.repository.ts +5 -35
  142. package/src/document/document.ts +127 -74
  143. package/src/document/interfaces/document-item.repository.interface.ts +2 -2
  144. package/src/enum/index.ts +2 -0
  145. package/src/enum/payment-status.enum.ts +4 -0
  146. package/src/enum/transaction-type.enum.ts +2 -2
  147. package/src/finance-company/finance-company.repository.ts +3 -3
  148. package/src/finance-company/finance-company.ts +685 -48
  149. package/src/index.ts +13 -7
  150. package/src/interfaces/account-system.interface.ts +2 -2
  151. package/src/journal-entry/journal-entry.repository.ts +5 -34
  152. package/src/journal-entry/journal-entry.ts +163 -63
  153. package/src/ledger-transaction/interfaces/ledger-transaction-attr.interface.ts +0 -5
  154. package/src/ledger-transaction/ledger-transaction.repository.ts +5 -24
  155. package/src/ledger-transaction/ledger-transaction.ts +8 -12
  156. package/src/models/account.entity.ts +67 -32
  157. package/src/models/finance-company.entity.ts +0 -16
  158. package/src/models/payment-item.entity.ts +6 -0
  159. package/src/models/payment-method-type.entity.ts +70 -0
  160. package/src/models/payment-method.entity.ts +28 -0
  161. package/src/models/payment.entity.ts +86 -31
  162. package/src/payment/interfaces/payment-attr.interface.ts +11 -8
  163. package/src/payment/payment.repository.ts +5 -35
  164. package/src/payment/payment.ts +183 -181
  165. package/src/{payment → payment-item}/interfaces/payment-item-attr.interface.ts +1 -0
  166. package/src/payment-item/payment-item.repository.ts +11 -0
  167. package/src/payment-item/payment-item.ts +54 -0
  168. package/src/payment-method/interfaces/payment-method-attr.interface.ts +4 -0
  169. package/src/payment-method/payment-method.repository.ts +11 -0
  170. package/src/payment-method/payment-method.ts +95 -0
  171. package/src/payment-method-type/interfaces/payment-method-type-attr.interface.ts +8 -0
  172. package/src/payment-method-type/payment-method-type.repository.ts +11 -0
  173. package/src/payment-method-type/payment-method-type.ts +58 -0
  174. package/src/account/interfaces/account.repository.interface.ts +0 -4
  175. package/src/document/interfaces/document.repository.interface.ts +0 -4
  176. package/src/journal-entry/interfaces/journal-entry.repository.interface.ts +0 -11
  177. package/src/payment/interfaces/payment.repository.interface.ts +0 -4
  178. package/src/payment/payment-item.repository.ts +0 -49
@@ -1,9 +1,9 @@
1
- import { BaseRepository, IBaseRepository } from '@tomei/general';
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
2
  import FinancePostHistoryModel from '../models/post-history.entity';
3
3
 
4
4
  export class PostHistoryRepository
5
- extends BaseRepository<FinancePostHistoryModel>
6
- implements IBaseRepository<FinancePostHistoryModel>
5
+ extends RepositoryBase<FinancePostHistoryModel>
6
+ implements IRepositoryBase<FinancePostHistoryModel>
7
7
  {
8
8
  constructor() {
9
9
  super(FinancePostHistoryModel);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  IAddress,
3
- IBaseRepository,
3
+ IRepositoryBase,
4
4
  IPerson,
5
5
  LoginUserBase,
6
6
  RecordNotFoundError,
@@ -10,7 +10,7 @@ import { IFinanceCustomerRepository } from './interfaces/finance-customer.reposi
10
10
  import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
11
11
 
12
12
  // const AccountSystemEntity = import('../account-system-entity').then(({AccountSystemEntity}) => AccountSystemEntity);
13
- export abstract class FinanceCustomerBase
13
+ export default abstract class FinanceCustomerBase
14
14
  extends AccountSystemEntity
15
15
  implements IPerson
16
16
  {
@@ -43,7 +43,7 @@ export abstract class FinanceCustomerBase
43
43
  CustomerId: string;
44
44
  CustSystemCode: string;
45
45
  CustSystemRefId: string;
46
- BaseRepository: IBaseRepository<any>;
46
+ RepositoryBase: IRepositoryBase<any>;
47
47
 
48
48
  constructor(
49
49
  custSystemRefId: string,
@@ -1,13 +1,13 @@
1
1
  import { Injectable } from '@nestjs/common/decorators';
2
2
  import { InjectModel } from '@nestjs/sequelize';
3
- import { BaseRepository } from '@tomei/general';
3
+ import { RepositoryBase } from '@tomei/general';
4
4
  import FinanceCustomerModel from '../models/customer.entity';
5
5
  import { IFinanceCustomerAttr } from './interfaces/finance-customer-attr.interface';
6
6
  import { IFinanceCustomerRepository } from './interfaces/finance-customer.repository.interface';
7
7
 
8
8
  @Injectable()
9
9
  export class FinanceCustomerRepository
10
- extends BaseRepository<FinanceCustomerModel>
10
+ extends RepositoryBase<FinanceCustomerModel>
11
11
  implements IFinanceCustomerRepository
12
12
  {
13
13
  constructor(
@@ -1,4 +1,4 @@
1
- import { IBaseRepository } from '@tomei/general';
1
+ import { IRepositoryBase } from '@tomei/general';
2
2
  import FinanceCustomerModel from '../../models/customer.entity';
3
3
 
4
- export type IFinanceCustomerRepository = IBaseRepository<FinanceCustomerModel>;
4
+ export type IFinanceCustomerRepository = IRepositoryBase<FinanceCustomerModel>;
@@ -1,49 +1,11 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/sequelize';
3
- import { BaseRepository } from '@tomei/general';
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
4
2
  import DocumentItemModel from '../models/document-item.entity';
5
- import { IDocumentItemAttr } from './interfaces/document-item-attr.interface';
6
- import { IDocumentItemRepository } from './interfaces/document-item.repository.interface';
7
3
 
8
- @Injectable()
9
4
  export class DocumentItemRepository
10
- extends BaseRepository<DocumentItemModel>
11
- implements IDocumentItemRepository
5
+ extends RepositoryBase<DocumentItemModel>
6
+ implements IRepositoryBase<DocumentItemModel>
12
7
  {
13
- constructor(
14
- @InjectModel(DocumentItemModel)
15
- private readonly documentItemModel: typeof DocumentItemModel,
16
- ) {
17
- super(documentItemModel);
18
- }
19
-
20
- create(
21
- data: IDocumentItemAttr,
22
- options?: any,
23
- ): Promise<DocumentItemModel> | any {
24
- return this.documentItemModel.create({ ...data }, options);
25
- }
26
-
27
- bulkCreate(data: IDocumentItemAttr[], options?: any): any {
28
- const payload: any = [...data];
29
- return this.documentItemModel.bulkCreate(payload, options);
30
- }
31
-
32
- findAll(options: any): Promise<DocumentItemModel[]> {
33
- return this.documentItemModel.findAll(options);
34
- }
35
-
36
- findAllWithPagination(
37
- options: any,
38
- ): Promise<{ count: number; rows: DocumentItemModel[] }> {
39
- return this.documentItemModel.findAndCountAll(options);
40
- }
41
-
42
- findOne(options: any): Promise<DocumentItemModel> {
43
- return this.documentItemModel.findOne(options);
44
- }
45
-
46
- update(data: IDocumentItemAttr, options?: any): any {
47
- return this.documentItemModel.update({ ...data }, options);
8
+ constructor() {
9
+ super(DocumentItemModel);
48
10
  }
49
11
  }
@@ -1,4 +1,6 @@
1
- export class DocumentItem {
1
+ import { DocumentItemRepository } from './document-item.repository';
2
+
3
+ export default class DocumentItem {
2
4
  DocumentItemId: string;
3
5
  DocNo: string;
4
6
  Name: string;
@@ -19,4 +21,6 @@ export class DocumentItem {
19
21
  TaxInclusiveYN?: string;
20
22
  DtAccountNo?: string;
21
23
  CtAccountNo?: string;
24
+
25
+ constructor(dbTransaction?: any, documentItemId?: string) {}
22
26
  }
@@ -1,41 +1,11 @@
1
- import { Injectable } from '@nestjs/common';
2
- import { InjectModel } from '@nestjs/sequelize';
3
- import { BaseRepository } from '@tomei/general';
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
4
2
  import DocumentModel from '../models/document.entity';
5
- import { IDocumentAttr } from './interfaces/document-attr.interface';
6
- import { IDocumentRepository } from './interfaces/document.repository.interface';
7
3
 
8
- @Injectable()
9
4
  export class DocumentRepository
10
- extends BaseRepository<DocumentModel>
11
- implements IDocumentRepository
5
+ extends RepositoryBase<DocumentModel>
6
+ implements IRepositoryBase<DocumentModel>
12
7
  {
13
- constructor(
14
- @InjectModel(DocumentModel)
15
- private readonly documentModel: typeof DocumentModel,
16
- ) {
17
- super(documentModel);
18
- }
19
-
20
- create(data: IDocumentAttr, options?: any): Promise<DocumentModel> | any {
21
- return this.documentModel.create({ ...data }, options);
22
- }
23
-
24
- findAll(options: any): Promise<DocumentModel[]> {
25
- return this.documentModel.findAll(options);
26
- }
27
-
28
- findAllWithPagination(
29
- options: any,
30
- ): Promise<{ count: number; rows: DocumentModel[] }> {
31
- return this.documentModel.findAndCountAll(options);
32
- }
33
-
34
- findOne(options: any): Promise<DocumentModel> {
35
- return this.documentModel.findOne(options);
36
- }
37
-
38
- update(data: IDocumentAttr, options?: any): any {
39
- return this.documentModel.update({ ...data }, options);
8
+ constructor() {
9
+ super(DocumentModel);
40
10
  }
41
11
  }
@@ -1,7 +1,7 @@
1
1
  import * as util from 'util';
2
2
  import * as fs from 'fs';
3
3
  import puppeteer from 'puppeteer';
4
- import { IBaseRepository, RecordNotFoundError } from '@tomei/general';
4
+ import { RecordNotFoundError } from '@tomei/general';
5
5
  import {
6
6
  Medias,
7
7
  InternalMediaDto,
@@ -13,52 +13,55 @@ import {
13
13
  import { DocumentStatus, DocType } from '../enum';
14
14
  import { IDocumentAttr } from './interfaces/document-attr.interface';
15
15
  import { DocumentItemRepository } from './document-item.repository';
16
- import { DocumentItem } from './document-item';
17
- import { IDocumentRepository } from './interfaces/document.repository.interface';
16
+ import DocumentItem from './document-item';
18
17
  import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
19
- import DocumentModel from '../models/document.entity';
18
+ import { DocumentRepository } from './document.repository';
19
+ import FinanceCompany from '../finance-company/finance-company';
20
+ import FinanceCustomerBase from '../customer/customer';
20
21
 
21
- export class Document extends AccountSystemEntity {
22
+ export default class Document extends AccountSystemEntity {
22
23
  DocNo: string;
23
24
  private _DocType: DocType;
24
- private _DocDate: Date = new Date();
25
+ private _DocDate = new Date();
25
26
  Currency: string;
26
27
  Amount: number;
27
28
  Description: string;
29
+ private _Status = DocumentStatus.UNPAID;
28
30
  IssuedById: string;
29
31
  IssuedToId: string;
30
32
  IssuedToType: string;
31
33
  CreatedById: string;
32
34
  CreatedAt: Date;
33
- UpdatedById?: string;
34
- UpdatedAt?: Date;
35
+ UpdatedById: string;
36
+ UpdatedAt: Date;
35
37
  UseAccSystemDocYN: string;
36
38
 
37
- private _documentRepository: IBaseRepository<DocumentModel> =
38
- new DocumentModel();
39
- protected _BaseRepository: IBaseRepository;
40
-
41
- _ObjectId: string;
42
- _ObjectName: string;
43
- _TableName: string;
44
-
45
39
  private _DocHTMLFileMediaId: string;
46
40
  private _DocPDFFileMediaId: string;
47
- private _Status: DocumentStatus = DocumentStatus.UNPAID;
48
41
 
49
- private IsNewRecord = true;
50
- private _DocumentItems: any;
42
+ private static _RepositoryBase = new DocumentRepository();
43
+ private static _DocumentItemRepository = new DocumentItemRepository();
44
+
45
+ private _DbTransaction: any;
46
+ private _IsNewRecord = true;
47
+ private _DocumentItems = null;
51
48
 
52
- documentRepository: IDocumentRepository;
53
- documentItemRepository: DocumentItemRepository;
54
49
  mediaRepository: IMediasRepository;
55
50
  mediaCommonService: MediaCommonService;
56
51
 
52
+ private get IsNewRecord() {
53
+ return this._IsNewRecord;
54
+ }
55
+
56
+ private set IsNewRecord(record: boolean) {
57
+ this._IsNewRecord = record;
58
+ }
59
+
57
60
  public get DocType() {
58
61
  return this._DocType;
59
62
  }
60
63
 
61
- private set DocType(docType: DocType) {
64
+ public set DocType(docType: DocType) {
62
65
  this._DocType = docType;
63
66
  }
64
67
 
@@ -95,80 +98,121 @@ export class Document extends AccountSystemEntity {
95
98
  }
96
99
 
97
100
  /* AccountSystemEntity Implementation */
98
- override get BaseRepository() {
99
- return this._documentRepository;
101
+ get RepositoryBase() {
102
+ return Document._RepositoryBase;
100
103
  }
101
104
 
102
105
  /* ObjectBase Implementation */
103
- override get ObjectId() {
106
+ get ObjectId() {
104
107
  return this.DocNo;
105
108
  }
106
109
 
107
- override get ObjectName() {
110
+ get ObjectName() {
108
111
  return this.DocNo;
109
112
  }
110
113
 
111
- override get TableName() {
114
+ get TableName() {
112
115
  return 'finance_Document';
113
116
  }
114
117
 
115
- constructor(dbTransaction: any);
116
- constructor(dbTransaction: any, docNo?: string) {
118
+ constructor(dbTransaction?: any, docNo?: string) {
117
119
  super();
118
- const documentData = this.BaseRepository.findOne({
119
- where: {
120
- DocNo: docNo,
121
- },
122
- transaction: dbTransaction,
123
- });
124
- if (documentData) {
125
- this.IsNewRecord = false;
126
- this.DocType = documentData.DocType;
127
- this.DocDate = documentData.DocDate;
128
- this.CompanyId = documentData.CompanyId;
129
- this.Currency = documentData.Currency;
130
- this.Amount = documentData.Amount;
131
- this.Description = documentData.Description;
132
- this.Status = documentData.Status;
133
- this.IssuedById = documentData.IssuedById;
134
- this.IssuedToId = documentData.IssuedToId;
135
- this.IssuedToType = documentData.IssuedToType;
136
- this.CreatedById = documentData.CreatedById;
137
- this.CreatedAt = documentData.CreatedAt;
138
- this.UpdatedById = documentData.UpdatedById;
139
- this.UpdatedAt = documentData.UpdatedAt;
140
- this.DocPDFFileMediaId = documentData.DocPDFFileMediaId;
141
- this.DocHTMLFileMediaId = documentData.DocHTMLFileMediaId;
142
- this.AccSystemRefId = documentData.AccSystemRefId;
143
- this.PostedToAccSystemYN = documentData.PostedToAccSystemYN;
144
- this.PostedById = documentData.PostedById;
145
- this.PostedDateTime = documentData.PostedDateTime;
146
- this.UseAccSystemDocYN = documentData.UseAccSystemDocYN;
147
- } else {
148
- const notFoundError = new RecordNotFoundError('No Record Found.');
149
- throw notFoundError;
120
+ if (dbTransaction) {
121
+ this._DbTransaction = dbTransaction;
122
+ }
123
+ if (docNo) {
124
+ this.RepositoryBase.findOne({
125
+ where: {
126
+ DocNo: docNo,
127
+ },
128
+ transaction: dbTransaction,
129
+ })
130
+ .then((documentData) => {
131
+ if (documentData) {
132
+ this.IsNewRecord = false;
133
+ this.DocType = documentData.DocType;
134
+ this.DocDate = documentData.DocDate;
135
+ this.CompanyId = documentData.CompanyId;
136
+ this.Currency = documentData.Currency;
137
+ this.Amount = documentData.Amount;
138
+ this.Description = documentData.Description;
139
+ this.Status = documentData.Status;
140
+ this.IssuedById = documentData.IssuedById;
141
+ this.IssuedToId = documentData.IssuedToId;
142
+ this.IssuedToType = documentData.IssuedToType;
143
+ this.CreatedById = documentData.CreatedById;
144
+ this.CreatedAt = documentData.CreatedAt;
145
+ this.UpdatedById = documentData.UpdatedById;
146
+ this.UpdatedAt = documentData.UpdatedAt;
147
+ this.DocPDFFileMediaId = documentData.DocPDFFileMediaId;
148
+ this.DocHTMLFileMediaId = documentData.DocHTMLFileMediaId;
149
+ this.AccSystemRefId = documentData.AccSystemRefId;
150
+ this.PostedToAccSystemYN = documentData.PostedToAccSystemYN;
151
+ this.PostedById = documentData.PostedById;
152
+ this.PostedDateTime = documentData.PostedDateTime;
153
+ this.UseAccSystemDocYN = documentData.UseAccSystemDocYN;
154
+ } else {
155
+ const notFoundError = new RecordNotFoundError('No Record Found.');
156
+ throw notFoundError;
157
+ }
158
+ })
159
+ .catch((err) => {
160
+ // tslint:disable-next-line:no-console
161
+ console.log('Document Class constructor err: ', err);
162
+ });
150
163
  }
151
164
  }
152
165
 
153
- public get DocumentItems() {
154
- // this._DocumentItems = new DocumentItem();
155
- if (this._DocumentItems === null) {
166
+ get DocumentItems(): Promise<DocumentItem[]> {
167
+ return new Promise((resolve, reject) => {
156
168
  if (!this.IsNewRecord) {
157
- this.documentItemRepository
169
+ Document._DocumentItemRepository
158
170
  .findAll({
159
171
  where: {
160
172
  DocNo: this.DocNo,
161
173
  },
174
+ transaction: this._DbTransaction,
175
+ })
176
+ .then((documentItems) => {
177
+ const documentItemObjects = documentItems.map((documentItem) => {
178
+ new DocumentItem(
179
+ this._DbTransaction,
180
+ documentItem.DocumentItemId,
181
+ );
182
+ });
183
+ return Promise.all(documentItemObjects);
162
184
  })
163
- .then((allDocumentItems) => {
164
- this._DocumentItems = allDocumentItems;
185
+ .then((documentItemObjects) => {
186
+ this._DocumentItems = documentItemObjects;
187
+ resolve(this._DocumentItems);
188
+ })
189
+ .catch((err) => {
190
+ reject(err);
165
191
  });
166
192
  }
167
- }
168
-
169
- return this._DocumentItems;
193
+ resolve(this._DocumentItems);
194
+ });
170
195
  }
171
196
 
197
+ // public get DocumentItems() {
198
+ // // this._DocumentItems = new DocumentItem();
199
+ // if (this._DocumentItems === null) {
200
+ // if (!this.IsNewRecord) {
201
+ // Document._DocumentItemRepository
202
+ // .findAll({
203
+ // where: {
204
+ // DocNo: this.DocNo,
205
+ // },
206
+ // })
207
+ // .then((allDocumentItems) => {
208
+ // this._DocumentItems = allDocumentItems;
209
+ // });
210
+ // }
211
+ // }
212
+
213
+ // return this._DocumentItems;
214
+ // }
215
+
172
216
  /**
173
217
  * Returns HTML template file for invoice generation
174
218
  *
@@ -315,10 +359,16 @@ export class Document extends AccountSystemEntity {
315
359
  * @see DocumentFileInHTML - for implementation
316
360
  * @see DocumentFileInPDF - for implementation
317
361
  *
362
+ * @see {@link FinanceCompany.issueInvoice} - for implementation
363
+ *
318
364
  * @param userId - userId that trigger this function
365
+ *
319
366
  * @returns {MediasModel} - HTML & PDF Media
320
367
  */
321
- async generateInvoice(userId?: string): Promise<{
368
+ async generateInvoice(
369
+ userId?: string,
370
+ customer?: FinanceCustomerBase,
371
+ ): Promise<{
322
372
  HTMLMedia: MediasModel;
323
373
  PDFMedia: MediasModel;
324
374
  }> {
@@ -328,6 +378,7 @@ export class Document extends AccountSystemEntity {
328
378
  );
329
379
 
330
380
  /* todo: needs to manipulate HTML DOM before uploading to media*/
381
+ console.log(customer || 'no customer provided', '<< customer');
331
382
 
332
383
  /* insert FileStream on htmlPayload */
333
384
  const htmlPayload: InternalMediaDto = {
@@ -370,7 +421,7 @@ export class Document extends AccountSystemEntity {
370
421
  );
371
422
 
372
423
  try {
373
- const document = await this.documentRepository.findOne({
424
+ const document = await this.RepositoryBase.findOne({
374
425
  where: {
375
426
  DocNo: this.DocNo,
376
427
  },
@@ -391,15 +442,17 @@ export class Document extends AccountSystemEntity {
391
442
  };
392
443
  }
393
444
 
445
+ async generateCreditNote(userId?: string, customer?: FinanceCustomerBase) {}
446
+
394
447
  /**
395
448
  * Create a new Document Item which is automatically added to the DocumentItems list
396
449
  *
397
450
  * @returns {DocumentItem}
398
451
  */
399
- async newDocumentItem(): Promise<DocumentItem> {
452
+ get NewDocumentItem(): DocumentItem {
400
453
  const documentItem = new DocumentItem();
401
454
  documentItem.DocNo = this.DocNo;
402
- this.DocumentItems.push(documentItem);
455
+ this._DocumentItems.push(documentItem);
403
456
  return documentItem;
404
457
  }
405
458
  }
@@ -1,4 +1,4 @@
1
- import { IBaseRepository } from '@tomei/general';
1
+ import { IRepositoryBase } from '@tomei/general';
2
2
  import DocumentItemModel from '../../models/document-item.entity';
3
3
 
4
- export type IDocumentItemRepository = IBaseRepository<DocumentItemModel>;
4
+ export type IDocumentItemRepository = IRepositoryBase<DocumentItemModel>;
package/src/enum/index.ts CHANGED
@@ -4,6 +4,7 @@ import { PaymentMethod } from './payment-method.enum';
4
4
  import { TransactionTypeOptions } from './transaction-type.enum';
5
5
  import { DocType } from './doc-type.enum';
6
6
  import { DocumentStatus } from './document-status.enum';
7
+ import { PaymentStatus } from './payment-status.enum';
7
8
 
8
9
  export {
9
10
  ClientScopes,
@@ -12,4 +13,5 @@ export {
12
13
  TransactionTypeOptions,
13
14
  DocType,
14
15
  DocumentStatus,
16
+ PaymentStatus,
15
17
  };
@@ -0,0 +1,4 @@
1
+ export enum PaymentStatus {
2
+ SUCCESSFUL = 'Successful',
3
+ FAILED = 'Failed',
4
+ }
@@ -1,4 +1,4 @@
1
1
  export enum TransactionTypeOptions {
2
- Debit = 1,
3
- Credit = 2,
2
+ DEBIT = 'Debit',
3
+ CREDIT = 'Credit',
4
4
  }
@@ -1,9 +1,9 @@
1
- import { BaseRepository, IBaseRepository } from '@tomei/general';
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
2
  import FinanceCompanyModel from '../models/finance-company.entity';
3
3
 
4
4
  export class FinanceCompanyRepository
5
- extends BaseRepository<FinanceCompanyModel>
6
- implements IBaseRepository<FinanceCompanyModel>
5
+ extends RepositoryBase<FinanceCompanyModel>
6
+ implements IRepositoryBase<FinanceCompanyModel>
7
7
  {
8
8
  constructor() {
9
9
  super(FinanceCompanyModel);