@tomei/finance 0.6.35 → 0.6.37

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 (99) hide show
  1. package/.commitlintrc.json +22 -22
  2. package/.eslintrc.js +72 -72
  3. package/.husky/commit-msg +4 -4
  4. package/.husky/pre-commit +4 -4
  5. package/.prettierrc +4 -4
  6. package/CONTRIBUTING.md +30 -30
  7. package/LICENSE +21 -21
  8. package/README.md +13 -13
  9. package/configs/config.js +348 -348
  10. package/dist/document/document.js +1 -0
  11. package/dist/document/document.js.map +1 -1
  12. package/dist/models/payment.entity.d.ts +2 -0
  13. package/dist/models/payment.entity.js +5 -0
  14. package/dist/models/payment.entity.js.map +1 -1
  15. package/dist/payment-item/payment-item.js +4 -4
  16. package/dist/tsconfig.tsbuildinfo +1 -1
  17. package/invoice-template/assets/css/style.css.map +12 -12
  18. package/invoice-template/assets/css/style.min.css +1 -1
  19. package/invoice-template/assets/img/arrow_bg.svg +11 -11
  20. package/invoice-template/assets/img/coffy_shop_img.svg +18 -18
  21. package/invoice-template/assets/img/logo_accent.svg +3 -3
  22. package/invoice-template/assets/img/logo_white.svg +4 -4
  23. package/invoice-template/assets/img/sign.svg +12 -12
  24. package/invoice-template/assets/img/tomei-logo.svg +9 -9
  25. package/invoice-template/assets/js/html2canvas.min.js +10379 -10379
  26. package/invoice-template/assets/js/jquery.min.js +1 -1
  27. package/invoice-template/assets/sass/common/_color_variable.scss +12 -12
  28. package/invoice-template/assets/sass/common/_typography.scss +178 -178
  29. package/invoice-template/assets/sass/style.scss +12 -12
  30. package/migrations/finance-account-migration.js +97 -97
  31. package/migrations/finance-company-migration.js +29 -29
  32. package/migrations/finance-customer-migration.js +51 -51
  33. package/migrations/finance-document-item-migration.js +111 -111
  34. package/migrations/finance-document-migration.js +122 -122
  35. package/migrations/finance-payment-item-migration.js +52 -52
  36. package/migrations/finance-payment-method-migration.js +31 -31
  37. package/migrations/finance-payment-method-type-migration.js +55 -55
  38. package/migrations/finance-payment-migration.js +96 -96
  39. package/migrations/finance-post-history-migration.js +45 -45
  40. package/migrations/finance-tax-migration.js +52 -52
  41. package/nest-cli.json +19 -19
  42. package/package.json +82 -82
  43. package/src/account/account.repository.ts +11 -11
  44. package/src/account/account.ts +271 -271
  45. package/src/account/interfaces/account-attr.interface.ts +31 -31
  46. package/src/account-system-entity/account-system-entity.ts +65 -65
  47. package/src/account-system-entity/post-history.repository.ts +11 -11
  48. package/src/config.ts +382 -382
  49. package/src/customer/customer.ts +299 -299
  50. package/src/customer/finance-customer.repository.ts +13 -13
  51. package/src/customer/interfaces/customer.repository.interface.ts +3 -3
  52. package/src/customer/interfaces/finance-customer-attr.interface.ts +10 -10
  53. package/src/customer/interfaces/finance-customer.repository.interface.ts +4 -4
  54. package/src/database.ts +48 -48
  55. package/src/document/document-item.repository.ts +11 -11
  56. package/src/document/document.repository.ts +11 -11
  57. package/src/document/document.ts +1 -0
  58. package/src/document/interfaces/document-attr.interface.ts +28 -28
  59. package/src/document/interfaces/document-item-attr.interface.ts +22 -22
  60. package/src/document/interfaces/document-item.repository.interface.ts +4 -4
  61. package/src/enum/doc-type.enum.ts +8 -8
  62. package/src/enum/index.ts +17 -17
  63. package/src/enum/payment-method.enum.ts +3 -3
  64. package/src/enum/payment-type.enum.ts +4 -4
  65. package/src/finance-company/finance-company.repository.ts +11 -11
  66. package/src/finance-company/finance-company.ts +2062 -2062
  67. package/src/helpers/login-user.ts +33 -33
  68. package/src/helpers/typeof.ts +29 -29
  69. package/src/index.ts +32 -32
  70. package/src/interfaces/account-system.interface.ts +20 -20
  71. package/src/interfaces/index.ts +3 -3
  72. package/src/models/account.entity.ts +206 -206
  73. package/src/models/customer.entity.ts +93 -93
  74. package/src/models/document-item.entity.ts +143 -143
  75. package/src/models/document.entity.ts +211 -211
  76. package/src/models/finance-company.entity.ts +29 -29
  77. package/src/models/journal-entry.entity.ts +110 -110
  78. package/src/models/ledger-transaction.entity.ts +148 -148
  79. package/src/models/payment-item.entity.ts +60 -60
  80. package/src/models/payment-method-type.entity.ts +70 -70
  81. package/src/models/payment-method.entity.ts +51 -51
  82. package/src/models/payment.entity.ts +165 -161
  83. package/src/models/post-history.entity.ts +41 -41
  84. package/src/models/tax.entity.ts +75 -75
  85. package/src/payment/interfaces/payment-attr.interface.ts +23 -23
  86. package/src/payment/interfaces/payment-params.interface.ts +8 -8
  87. package/src/payment/payment.repository.ts +11 -11
  88. package/src/payment/payment.ts +217 -217
  89. package/src/payment-item/interfaces/payment-item-attr.interface.ts +10 -10
  90. package/src/payment-item/payment-item.repository.ts +11 -11
  91. package/src/payment-item/payment-item.ts +128 -128
  92. package/src/payment-method/payment-method.repository.ts +11 -11
  93. package/src/payment-method-type/payment-method-type.repository.ts +11 -11
  94. package/src/tax/interfaces/tax-attr.interface.ts +10 -10
  95. package/src/tax/tax.repository.ts +11 -11
  96. package/src/test-document.ts +25 -25
  97. package/tsconfig.build.json +4 -4
  98. package/tsconfig.json +22 -22
  99. package/tslint.json +18 -18
@@ -1,75 +1,75 @@
1
- import { ApiProperty } from '@nestjs/swagger';
2
- import {
3
- BelongsTo,
4
- Column,
5
- CreatedAt,
6
- DataType,
7
- ForeignKey,
8
- Model,
9
- Table,
10
- UpdatedAt,
11
- } from 'sequelize-typescript';
12
- import FinanceCompanyModel from './finance-company.entity';
13
-
14
- @Table({ tableName: 'finance_Tax' })
15
- export default class FinanceTaxModel extends Model {
16
- @ApiProperty({ type: String, description: 'TaxCode' })
17
- @Column({
18
- primaryKey: true,
19
- allowNull: false,
20
- type: DataType.STRING(30),
21
- })
22
- TaxCode: string;
23
-
24
- @ApiProperty({ type: Number, description: 'TaxRate' })
25
- @Column({ allowNull: false, type: DataType.DECIMAL(10, 2) })
26
- TaxRate: number;
27
-
28
- @ApiProperty({ type: String, description: 'Description' })
29
- @Column({ allowNull: true, type: DataType.STRING(1000) })
30
- Description: string;
31
-
32
- @ForeignKey(() => FinanceCompanyModel)
33
- @Column({
34
- allowNull: false,
35
- type: DataType.STRING(30),
36
- })
37
- CompanyId: string;
38
-
39
- @ApiProperty({
40
- example: '138140891dd211b288d34bc7b4312a49',
41
- description: 'CreatedById.',
42
- })
43
- @Column({
44
- allowNull: false,
45
- type: DataType.STRING(30),
46
- })
47
- CreatedById: string;
48
-
49
- @ApiProperty({
50
- example: new Date(),
51
- description: 'Timestamp for data creation.',
52
- })
53
- @CreatedAt
54
- CreatedAt: Date;
55
-
56
- @ApiProperty({
57
- example: '138140891dd211b288d34bc7b4312a49',
58
- description: 'UpdatedById.',
59
- })
60
- @Column({
61
- allowNull: false,
62
- type: DataType.STRING(30),
63
- })
64
- UpdatedById: string;
65
-
66
- @ApiProperty({
67
- example: new Date(),
68
- description: 'Timestamp for latest data modification',
69
- })
70
- @UpdatedAt
71
- UpdatedAt: Date;
72
-
73
- @BelongsTo(() => FinanceCompanyModel)
74
- FinanceCompany: FinanceCompanyModel;
75
- }
1
+ import { ApiProperty } from '@nestjs/swagger';
2
+ import {
3
+ BelongsTo,
4
+ Column,
5
+ CreatedAt,
6
+ DataType,
7
+ ForeignKey,
8
+ Model,
9
+ Table,
10
+ UpdatedAt,
11
+ } from 'sequelize-typescript';
12
+ import FinanceCompanyModel from './finance-company.entity';
13
+
14
+ @Table({ tableName: 'finance_Tax' })
15
+ export default class FinanceTaxModel extends Model {
16
+ @ApiProperty({ type: String, description: 'TaxCode' })
17
+ @Column({
18
+ primaryKey: true,
19
+ allowNull: false,
20
+ type: DataType.STRING(30),
21
+ })
22
+ TaxCode: string;
23
+
24
+ @ApiProperty({ type: Number, description: 'TaxRate' })
25
+ @Column({ allowNull: false, type: DataType.DECIMAL(10, 2) })
26
+ TaxRate: number;
27
+
28
+ @ApiProperty({ type: String, description: 'Description' })
29
+ @Column({ allowNull: true, type: DataType.STRING(1000) })
30
+ Description: string;
31
+
32
+ @ForeignKey(() => FinanceCompanyModel)
33
+ @Column({
34
+ allowNull: false,
35
+ type: DataType.STRING(30),
36
+ })
37
+ CompanyId: string;
38
+
39
+ @ApiProperty({
40
+ example: '138140891dd211b288d34bc7b4312a49',
41
+ description: 'CreatedById.',
42
+ })
43
+ @Column({
44
+ allowNull: false,
45
+ type: DataType.STRING(30),
46
+ })
47
+ CreatedById: string;
48
+
49
+ @ApiProperty({
50
+ example: new Date(),
51
+ description: 'Timestamp for data creation.',
52
+ })
53
+ @CreatedAt
54
+ CreatedAt: Date;
55
+
56
+ @ApiProperty({
57
+ example: '138140891dd211b288d34bc7b4312a49',
58
+ description: 'UpdatedById.',
59
+ })
60
+ @Column({
61
+ allowNull: false,
62
+ type: DataType.STRING(30),
63
+ })
64
+ UpdatedById: string;
65
+
66
+ @ApiProperty({
67
+ example: new Date(),
68
+ description: 'Timestamp for latest data modification',
69
+ })
70
+ @UpdatedAt
71
+ UpdatedAt: Date;
72
+
73
+ @BelongsTo(() => FinanceCompanyModel)
74
+ FinanceCompany: FinanceCompanyModel;
75
+ }
@@ -1,23 +1,23 @@
1
- import { PaymentType, PaymentStatus } from '../../enum';
2
-
3
- export class IPaymentAttr {
4
- PaymentId: string;
5
- PaymentType: PaymentType;
6
- PaymentDate: Date;
7
- Description: string;
8
- Currency: string;
9
- Amount: number;
10
- Status: PaymentStatus;
11
- ReceivedBy?: string;
12
- IssuedBy?: string;
13
- RelatedObjectId?: string;
14
- RelatedObjectType?: string;
15
- ReceiptDocNo?: string;
16
- Remarks?: string;
17
- UpdatedAt: Date;
18
- UpdatedBy: string;
19
- AccSystemRefId?: string;
20
- PostedToAccSystemYN: string;
21
- PostedById?: string;
22
- PostedDateTime?: Date;
23
- }
1
+ import { PaymentType, PaymentStatus } from '../../enum';
2
+
3
+ export class IPaymentAttr {
4
+ PaymentId: string;
5
+ PaymentType: PaymentType;
6
+ PaymentDate: Date;
7
+ Description: string;
8
+ Currency: string;
9
+ Amount: number;
10
+ Status: PaymentStatus;
11
+ ReceivedBy?: string;
12
+ IssuedBy?: string;
13
+ RelatedObjectId?: string;
14
+ RelatedObjectType?: string;
15
+ ReceiptDocNo?: string;
16
+ Remarks?: string;
17
+ UpdatedAt: Date;
18
+ UpdatedBy: string;
19
+ AccSystemRefId?: string;
20
+ PostedToAccSystemYN: string;
21
+ PostedById?: string;
22
+ PostedDateTime?: Date;
23
+ }
@@ -1,8 +1,8 @@
1
- import { PaymentMethod, PaymentType } from '../../enum';
2
-
3
- export interface IPaymentParams {
4
- Currency?: string;
5
- Method?: PaymentMethod;
6
- MethodParty?: string;
7
- PaymentType?: PaymentType;
8
- }
1
+ import { PaymentMethod, PaymentType } from '../../enum';
2
+
3
+ export interface IPaymentParams {
4
+ Currency?: string;
5
+ Method?: PaymentMethod;
6
+ MethodParty?: string;
7
+ PaymentType?: PaymentType;
8
+ }
@@ -1,11 +1,11 @@
1
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
- import PaymentModel from '../models/payment.entity';
3
-
4
- export class PaymentRepository
5
- extends RepositoryBase<PaymentModel>
6
- implements IRepositoryBase<PaymentModel>
7
- {
8
- constructor() {
9
- super(PaymentModel);
10
- }
11
- }
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
+ import PaymentModel from '../models/payment.entity';
3
+
4
+ export class PaymentRepository
5
+ extends RepositoryBase<PaymentModel>
6
+ implements IRepositoryBase<PaymentModel>
7
+ {
8
+ constructor() {
9
+ super(PaymentModel);
10
+ }
11
+ }
@@ -1,217 +1,217 @@
1
- import { ObjectBase } from '@tomei/general';
2
- import { RecordNotFoundError } from '@tomei/general/dist/class/exceptions/record-not-found.error';
3
- import { PaymentType } from '../enum';
4
- import { IPaymentParams } from './interfaces/payment-params.interface';
5
- import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
6
- import { PaymentStatus } from '../enum/payment-status.enum';
7
- import { PaymentRepository } from './payment.repository';
8
- import { PaymentItemRepository } from '../payment-item/payment-item.repository';
9
- // import PaymentItemModel from '../models/payment-item.entity';
10
- import PaymentItem from '../payment-item/payment-item';
11
- import PaymentPaidWith from '../payment-paid-with/payment-paid-with';
12
- import { PaymentPaidWithRepository } from '../payment-paid-with/payment-paid-with.repository';
13
-
14
- export default class Payment extends AccountSystemEntity {
15
- private _PaymentId = 'New';
16
- PaymentType: PaymentType;
17
- PaymentDate: Date;
18
- MethodTypeId: string;
19
- Description = '';
20
- Currency = 'MYR';
21
- Amount = 0;
22
- Status: PaymentStatus;
23
- TransactionId: string;
24
- TransactionApprovalCode: string;
25
- TransactionAccountName: string;
26
- TransactionAccountNo: string;
27
- ReceivedBy = '';
28
- IssuedBy = '';
29
- UpdatedBy = '';
30
- UpdatedAt: Date;
31
- Remarks = '';
32
- RelatedObjectId = '';
33
- RelatedObjectType = '';
34
- ReceiptDocNo = '';
35
-
36
- private static _RepositoryBase = new PaymentRepository();
37
- private static _PaymentItemRepository = new PaymentItemRepository();
38
- private static _PaymentPaidWithRepository = new PaymentPaidWithRepository();
39
-
40
- private _DbTransaction: any;
41
- private _PaymentItems = [];
42
- private _PaymentPaidWith = [];
43
-
44
- paymentItemRepository: PaymentItemRepository;
45
-
46
- public get PaymentId() {
47
- return this._PaymentId;
48
- }
49
-
50
- public set PaymentId(id: string) {
51
- this._PaymentId = id;
52
- }
53
-
54
- /* AccountSystemEntity Implementation */
55
- get RepositoryBase() {
56
- return Payment._RepositoryBase;
57
- }
58
-
59
- /* ObjectBase Implementation */
60
- get ObjectId() {
61
- return this.PaymentId;
62
- }
63
-
64
- get ObjectName() {
65
- return this.PaymentId;
66
- }
67
-
68
- get TableName() {
69
- return 'finance_Payment';
70
- }
71
-
72
- constructor(dbTransaction?: any, paymentId?: string) {
73
- super();
74
- if (dbTransaction) {
75
- this._DbTransaction = dbTransaction;
76
- }
77
- if (paymentId) {
78
- this.PaymentId = paymentId;
79
- }
80
- }
81
-
82
- static async initPayment(
83
- dbTransaction: any,
84
- paymentId: string,
85
- ): Promise<Payment> {
86
- try {
87
- const paymentData = await this._RepositoryBase.findOne({
88
- where: {
89
- PaymentId: paymentId,
90
- },
91
- transaction: dbTransaction,
92
- });
93
- if (paymentData) {
94
- const payment = new Payment(dbTransaction, paymentId);
95
- payment.PaymentType = paymentData.PaymentType;
96
- payment.PaymentDate = paymentData.PaymentDate;
97
- payment.Description = paymentData.Description;
98
- payment.Currency = paymentData.Currency;
99
- payment.Amount = paymentData.Amount;
100
- payment.Status = paymentData.Status;
101
- payment.ReceivedBy = paymentData.ReceivedBy;
102
- payment.IssuedBy = paymentData.IssuedBy;
103
- payment.UpdatedAt = paymentData.UpdatedAt;
104
- payment.UpdatedBy = paymentData.UpdatedBy;
105
- payment.Remarks = paymentData.Remarks;
106
- payment.RelatedObjectId = paymentData.RelatedObjectId;
107
- payment.RelatedObjectType = paymentData.RelatedObjectType;
108
- payment.ReceiptDocNo = paymentData.ReceiptDocNo;
109
- payment.AccSystemRefId = paymentData.AccSystemRefId;
110
- payment.PostedToAccSystemYN = paymentData.PostedToAccSystemYN;
111
- payment.PostedById = paymentData.PostedById;
112
- payment.PostedDateTime = paymentData.PostedDateTime;
113
- return payment;
114
- } else {
115
- const notFoundError = new RecordNotFoundError(
116
- 'PaymentErrMsg',
117
- 'No Record Found.',
118
- );
119
- throw notFoundError;
120
- }
121
- } catch (error) {
122
- console.log('Payment Class constructor err: ', error);
123
- }
124
- }
125
-
126
- get PaymentItems(): Promise<PaymentItem[]> {
127
- return new Promise((resolve, reject) => {
128
- if (this.PaymentId !== 'New') {
129
- Payment._PaymentItemRepository
130
- .findAll({
131
- where: {
132
- PaymentId: this.PaymentId,
133
- },
134
- transaction: this._DbTransaction,
135
- })
136
- .then((paymentItems) => {
137
- const paymentItemObjects = paymentItems.map((paymentItem) => {
138
- new PaymentItem(
139
- new Payment(this._DbTransaction, paymentItem.PaymentId),
140
- {
141
- ObjectId: this.ObjectId,
142
- ObjectName: this.ObjectName,
143
- TableName: this.TableName,
144
- },
145
- );
146
- });
147
- return Promise.all(paymentItemObjects);
148
- })
149
- .then((paymentItemObjects) => {
150
- this._PaymentItems = paymentItemObjects;
151
- resolve(this._PaymentItems);
152
- })
153
- .catch((err) => {
154
- reject(err);
155
- });
156
- }
157
- resolve(this._PaymentItems);
158
- });
159
- }
160
-
161
- get PaymentPaidWith(): Promise<PaymentPaidWith[]> {
162
- return new Promise((resolve, reject) => {
163
- if (this.PaymentId !== 'New') {
164
- Payment._PaymentPaidWithRepository
165
- .findAll({
166
- where: {
167
- PaymentId: this.PaymentId,
168
- },
169
- transaction: this._DbTransaction,
170
- })
171
- .then((paymentPaidWithItems) => {
172
- const paymentPaidWithObjects = paymentPaidWithItems.map(
173
- (paymentPaidWithItem) => {
174
- new PaymentPaidWith(
175
- new Payment(
176
- this._DbTransaction,
177
- paymentPaidWithItem.PaymentId,
178
- ),
179
- paymentPaidWithItem.MethodTypeId,
180
- );
181
- },
182
- );
183
- return Promise.all(paymentPaidWithObjects);
184
- })
185
- .then((paymentPaidWithObjects) => {
186
- this._PaymentPaidWith = paymentPaidWithObjects;
187
- resolve(this._PaymentPaidWith);
188
- })
189
- .catch((err) => {
190
- reject(err);
191
- });
192
- }
193
- resolve(this._PaymentPaidWith);
194
- });
195
- }
196
-
197
- newPaymentItem(objectBeingPaidFor: ObjectBase): PaymentItem {
198
- const paymentItem = new PaymentItem(this, objectBeingPaidFor);
199
- this._PaymentItems.push(paymentItem);
200
- return paymentItem;
201
- }
202
-
203
- newPaymentPaidWith(paymentMethodTypeId: string) {
204
- const paymentPaidWith = new PaymentPaidWith(
205
- this,
206
- paymentMethodTypeId,
207
- this._DbTransaction,
208
- );
209
- this._PaymentPaidWith.push(paymentPaidWith);
210
- return paymentPaidWith;
211
- }
212
-
213
- init(Params: IPaymentParams): void {
214
- if (Params.Currency) this.Currency = Params.Currency;
215
- if (Params.PaymentType) this.PaymentType = Params.PaymentType;
216
- }
217
- }
1
+ import { ObjectBase } from '@tomei/general';
2
+ import { RecordNotFoundError } from '@tomei/general/dist/class/exceptions/record-not-found.error';
3
+ import { PaymentType } from '../enum';
4
+ import { IPaymentParams } from './interfaces/payment-params.interface';
5
+ import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
6
+ import { PaymentStatus } from '../enum/payment-status.enum';
7
+ import { PaymentRepository } from './payment.repository';
8
+ import { PaymentItemRepository } from '../payment-item/payment-item.repository';
9
+ // import PaymentItemModel from '../models/payment-item.entity';
10
+ import PaymentItem from '../payment-item/payment-item';
11
+ import PaymentPaidWith from '../payment-paid-with/payment-paid-with';
12
+ import { PaymentPaidWithRepository } from '../payment-paid-with/payment-paid-with.repository';
13
+
14
+ export default class Payment extends AccountSystemEntity {
15
+ private _PaymentId = 'New';
16
+ PaymentType: PaymentType;
17
+ PaymentDate: Date;
18
+ MethodTypeId: string;
19
+ Description = '';
20
+ Currency = 'MYR';
21
+ Amount = 0;
22
+ Status: PaymentStatus;
23
+ TransactionId: string;
24
+ TransactionApprovalCode: string;
25
+ TransactionAccountName: string;
26
+ TransactionAccountNo: string;
27
+ ReceivedBy = '';
28
+ IssuedBy = '';
29
+ UpdatedBy = '';
30
+ UpdatedAt: Date;
31
+ Remarks = '';
32
+ RelatedObjectId = '';
33
+ RelatedObjectType = '';
34
+ ReceiptDocNo = '';
35
+
36
+ private static _RepositoryBase = new PaymentRepository();
37
+ private static _PaymentItemRepository = new PaymentItemRepository();
38
+ private static _PaymentPaidWithRepository = new PaymentPaidWithRepository();
39
+
40
+ private _DbTransaction: any;
41
+ private _PaymentItems = [];
42
+ private _PaymentPaidWith = [];
43
+
44
+ paymentItemRepository: PaymentItemRepository;
45
+
46
+ public get PaymentId() {
47
+ return this._PaymentId;
48
+ }
49
+
50
+ public set PaymentId(id: string) {
51
+ this._PaymentId = id;
52
+ }
53
+
54
+ /* AccountSystemEntity Implementation */
55
+ get RepositoryBase() {
56
+ return Payment._RepositoryBase;
57
+ }
58
+
59
+ /* ObjectBase Implementation */
60
+ get ObjectId() {
61
+ return this.PaymentId;
62
+ }
63
+
64
+ get ObjectName() {
65
+ return this.PaymentId;
66
+ }
67
+
68
+ get TableName() {
69
+ return 'finance_Payment';
70
+ }
71
+
72
+ constructor(dbTransaction?: any, paymentId?: string) {
73
+ super();
74
+ if (dbTransaction) {
75
+ this._DbTransaction = dbTransaction;
76
+ }
77
+ if (paymentId) {
78
+ this.PaymentId = paymentId;
79
+ }
80
+ }
81
+
82
+ static async initPayment(
83
+ dbTransaction: any,
84
+ paymentId: string,
85
+ ): Promise<Payment> {
86
+ try {
87
+ const paymentData = await this._RepositoryBase.findOne({
88
+ where: {
89
+ PaymentId: paymentId,
90
+ },
91
+ transaction: dbTransaction,
92
+ });
93
+ if (paymentData) {
94
+ const payment = new Payment(dbTransaction, paymentId);
95
+ payment.PaymentType = paymentData.PaymentType;
96
+ payment.PaymentDate = paymentData.PaymentDate;
97
+ payment.Description = paymentData.Description;
98
+ payment.Currency = paymentData.Currency;
99
+ payment.Amount = paymentData.Amount;
100
+ payment.Status = paymentData.Status;
101
+ payment.ReceivedBy = paymentData.ReceivedBy;
102
+ payment.IssuedBy = paymentData.IssuedBy;
103
+ payment.UpdatedAt = paymentData.UpdatedAt;
104
+ payment.UpdatedBy = paymentData.UpdatedBy;
105
+ payment.Remarks = paymentData.Remarks;
106
+ payment.RelatedObjectId = paymentData.RelatedObjectId;
107
+ payment.RelatedObjectType = paymentData.RelatedObjectType;
108
+ payment.ReceiptDocNo = paymentData.ReceiptDocNo;
109
+ payment.AccSystemRefId = paymentData.AccSystemRefId;
110
+ payment.PostedToAccSystemYN = paymentData.PostedToAccSystemYN;
111
+ payment.PostedById = paymentData.PostedById;
112
+ payment.PostedDateTime = paymentData.PostedDateTime;
113
+ return payment;
114
+ } else {
115
+ const notFoundError = new RecordNotFoundError(
116
+ 'PaymentErrMsg',
117
+ 'No Record Found.',
118
+ );
119
+ throw notFoundError;
120
+ }
121
+ } catch (error) {
122
+ console.log('Payment Class constructor err: ', error);
123
+ }
124
+ }
125
+
126
+ get PaymentItems(): Promise<PaymentItem[]> {
127
+ return new Promise((resolve, reject) => {
128
+ if (this.PaymentId !== 'New') {
129
+ Payment._PaymentItemRepository
130
+ .findAll({
131
+ where: {
132
+ PaymentId: this.PaymentId,
133
+ },
134
+ transaction: this._DbTransaction,
135
+ })
136
+ .then((paymentItems) => {
137
+ const paymentItemObjects = paymentItems.map((paymentItem) => {
138
+ new PaymentItem(
139
+ new Payment(this._DbTransaction, paymentItem.PaymentId),
140
+ {
141
+ ObjectId: this.ObjectId,
142
+ ObjectName: this.ObjectName,
143
+ TableName: this.TableName,
144
+ },
145
+ );
146
+ });
147
+ return Promise.all(paymentItemObjects);
148
+ })
149
+ .then((paymentItemObjects) => {
150
+ this._PaymentItems = paymentItemObjects;
151
+ resolve(this._PaymentItems);
152
+ })
153
+ .catch((err) => {
154
+ reject(err);
155
+ });
156
+ }
157
+ resolve(this._PaymentItems);
158
+ });
159
+ }
160
+
161
+ get PaymentPaidWith(): Promise<PaymentPaidWith[]> {
162
+ return new Promise((resolve, reject) => {
163
+ if (this.PaymentId !== 'New') {
164
+ Payment._PaymentPaidWithRepository
165
+ .findAll({
166
+ where: {
167
+ PaymentId: this.PaymentId,
168
+ },
169
+ transaction: this._DbTransaction,
170
+ })
171
+ .then((paymentPaidWithItems) => {
172
+ const paymentPaidWithObjects = paymentPaidWithItems.map(
173
+ (paymentPaidWithItem) => {
174
+ new PaymentPaidWith(
175
+ new Payment(
176
+ this._DbTransaction,
177
+ paymentPaidWithItem.PaymentId,
178
+ ),
179
+ paymentPaidWithItem.MethodTypeId,
180
+ );
181
+ },
182
+ );
183
+ return Promise.all(paymentPaidWithObjects);
184
+ })
185
+ .then((paymentPaidWithObjects) => {
186
+ this._PaymentPaidWith = paymentPaidWithObjects;
187
+ resolve(this._PaymentPaidWith);
188
+ })
189
+ .catch((err) => {
190
+ reject(err);
191
+ });
192
+ }
193
+ resolve(this._PaymentPaidWith);
194
+ });
195
+ }
196
+
197
+ newPaymentItem(objectBeingPaidFor: ObjectBase): PaymentItem {
198
+ const paymentItem = new PaymentItem(this, objectBeingPaidFor);
199
+ this._PaymentItems.push(paymentItem);
200
+ return paymentItem;
201
+ }
202
+
203
+ newPaymentPaidWith(paymentMethodTypeId: string) {
204
+ const paymentPaidWith = new PaymentPaidWith(
205
+ this,
206
+ paymentMethodTypeId,
207
+ this._DbTransaction,
208
+ );
209
+ this._PaymentPaidWith.push(paymentPaidWith);
210
+ return paymentPaidWith;
211
+ }
212
+
213
+ init(Params: IPaymentParams): void {
214
+ if (Params.Currency) this.Currency = Params.Currency;
215
+ if (Params.PaymentType) this.PaymentType = Params.PaymentType;
216
+ }
217
+ }