@tomei/finance 0.4.17 → 0.4.19

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 (289) 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 +336 -336
  10. package/dist/document/document.d.ts +1 -1
  11. package/dist/document/document.js +99 -5
  12. package/dist/document/document.js.map +1 -1
  13. package/dist/payment-item/payment-item.js +5 -5
  14. package/dist/payment-item/payment-item.js.map +1 -1
  15. package/dist/tsconfig.tsbuildinfo +1 -1
  16. package/invoice-template/assets/css/style.css.map +12 -12
  17. package/invoice-template/assets/css/style.min.css +1 -1
  18. package/invoice-template/assets/img/arrow_bg.svg +11 -11
  19. package/invoice-template/assets/img/coffy_shop_img.svg +18 -18
  20. package/invoice-template/assets/img/logo_accent.svg +3 -3
  21. package/invoice-template/assets/img/logo_white.svg +4 -4
  22. package/invoice-template/assets/img/sign.svg +12 -12
  23. package/invoice-template/assets/img/tomei-logo.png +0 -0
  24. package/invoice-template/assets/img/tomei-logo.svg +9 -0
  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/invoice-template/index.html +4 -4
  31. package/migrations/finance-account-migration.js +97 -97
  32. package/migrations/finance-company-migration.js +29 -29
  33. package/migrations/finance-customer-migration.js +51 -51
  34. package/migrations/finance-document-item-migration.js +111 -111
  35. package/migrations/finance-document-migration.js +116 -116
  36. package/migrations/finance-payment-item-migration.js +52 -52
  37. package/migrations/finance-payment-method-migration.js +31 -31
  38. package/migrations/finance-payment-method-type-migration.js +55 -55
  39. package/migrations/finance-payment-migration.js +86 -86
  40. package/migrations/finance-post-history-migration.js +45 -45
  41. package/nest-cli.json +19 -19
  42. package/package.json +79 -79
  43. package/src/account/account.repository.ts +11 -11
  44. package/src/account/account.ts +264 -264
  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 +276 -276
  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 +15 -15
  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 +122 -5
  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 +1626 -1626
  67. package/src/helpers/typeof.ts +29 -29
  68. package/src/index.ts +30 -30
  69. package/src/interfaces/account-system.interface.ts +20 -20
  70. package/src/interfaces/index.ts +3 -3
  71. package/src/models/account.entity.ts +206 -206
  72. package/src/models/customer.entity.ts +93 -93
  73. package/src/models/document-item.entity.ts +143 -143
  74. package/src/models/document.entity.ts +203 -203
  75. package/src/models/finance-company.entity.ts +25 -25
  76. package/src/models/journal-entry.entity.ts +110 -110
  77. package/src/models/ledger-transaction.entity.ts +148 -148
  78. package/src/models/payment-item.entity.ts +60 -60
  79. package/src/models/payment-method-type.entity.ts +70 -70
  80. package/src/models/payment-method.entity.ts +51 -51
  81. package/src/models/payment.entity.ts +147 -147
  82. package/src/models/post-history.entity.ts +41 -41
  83. package/src/payment/interfaces/payment-attr.interface.ts +22 -22
  84. package/src/payment/interfaces/payment-params.interface.ts +8 -8
  85. package/src/payment/payment.repository.ts +11 -11
  86. package/src/payment/payment.ts +211 -211
  87. package/src/payment-item/interfaces/payment-item-attr.interface.ts +10 -10
  88. package/src/payment-item/payment-item.repository.ts +11 -11
  89. package/src/payment-item/payment-item.ts +104 -104
  90. package/src/payment-method/payment-method.repository.ts +11 -11
  91. package/src/payment-method-type/payment-method-type.repository.ts +11 -11
  92. package/tsconfig.build.json +4 -4
  93. package/tsconfig.json +22 -22
  94. package/tslint.json +18 -18
  95. package/dist/account/entities/account.entity.d.ts +0 -26
  96. package/dist/account/entities/account.entity.js +0 -199
  97. package/dist/account/entities/account.entity.js.map +0 -1
  98. package/dist/account/entities/fee-associated-object.entity.d.ts +0 -6
  99. package/dist/account/entities/fee-associated-object.entity.js +0 -52
  100. package/dist/account/entities/fee-associated-object.entity.js.map +0 -1
  101. package/dist/account/index.d.ts +0 -6
  102. package/dist/account/index.js +0 -10
  103. package/dist/account/index.js.map +0 -1
  104. package/dist/account/interfaces/account.repository.interface.d.ts +0 -3
  105. package/dist/account/interfaces/account.repository.interface.js +0 -3
  106. package/dist/account/interfaces/account.repository.interface.js.map +0 -1
  107. package/dist/account-system-entity/index.d.ts +0 -2
  108. package/dist/account-system-entity/index.js +0 -6
  109. package/dist/account-system-entity/index.js.map +0 -1
  110. package/dist/account-system-entity/post-history.entity.d.ts +0 -11
  111. package/dist/account-system-entity/post-history.entity.js +0 -65
  112. package/dist/account-system-entity/post-history.entity.js.map +0 -1
  113. package/dist/base/account-system.interface.d.ts +0 -7
  114. package/dist/base/account-system.interface.js +0 -3
  115. package/dist/base/account-system.interface.js.map +0 -1
  116. package/dist/base/address.base.abstract.d.ts +0 -4
  117. package/dist/base/address.base.abstract.js +0 -10
  118. package/dist/base/address.base.abstract.js.map +0 -1
  119. package/dist/base/base.address.d.ts +0 -8
  120. package/dist/base/base.address.js +0 -15
  121. package/dist/base/base.address.js.map +0 -1
  122. package/dist/base/base.object.d.ts +0 -7
  123. package/dist/base/base.object.js +0 -14
  124. package/dist/base/base.object.js.map +0 -1
  125. package/dist/base/base.owner.d.ts +0 -23
  126. package/dist/base/base.owner.js +0 -34
  127. package/dist/base/base.owner.js.map +0 -1
  128. package/dist/base/base.repository.abstract.d.ts +0 -12
  129. package/dist/base/base.repository.abstract.js +0 -22
  130. package/dist/base/base.repository.abstract.js.map +0 -1
  131. package/dist/base/base.repository.interface.d.ts +0 -9
  132. package/dist/base/base.repository.interface.js +0 -3
  133. package/dist/base/base.repository.interface.js.map +0 -1
  134. package/dist/base/index.d.ts +0 -4
  135. package/dist/base/index.js +0 -10
  136. package/dist/base/index.js.map +0 -1
  137. package/dist/base/object/base.object.abstract.d.ts +0 -5
  138. package/dist/base/object/base.object.abstract.js +0 -7
  139. package/dist/base/object/base.object.abstract.js.map +0 -1
  140. package/dist/base/object/base.object.d.ts +0 -7
  141. package/dist/base/object/base.object.js +0 -14
  142. package/dist/base/object/base.object.js.map +0 -1
  143. package/dist/base/object/object.interface.d.ts +0 -4
  144. package/dist/base/object/object.interface.js +0 -3
  145. package/dist/base/object/object.interface.js.map +0 -1
  146. package/dist/base/object.base.abstract.d.ts +0 -5
  147. package/dist/base/object.base.abstract.js +0 -11
  148. package/dist/base/object.base.abstract.js.map +0 -1
  149. package/dist/base/owner/base.owner.abstract.d.ts +0 -20
  150. package/dist/base/owner/base.owner.abstract.js +0 -8
  151. package/dist/base/owner/base.owner.abstract.js.map +0 -1
  152. package/dist/base/owner/base.owner.d.ts +0 -22
  153. package/dist/base/owner/base.owner.js +0 -31
  154. package/dist/base/owner/base.owner.js.map +0 -1
  155. package/dist/base/owner/owner.interface.d.ts +0 -19
  156. package/dist/base/owner/owner.interface.js +0 -3
  157. package/dist/base/owner/owner.interface.js.map +0 -1
  158. package/dist/base/person.base.abstract.d.ts +0 -21
  159. package/dist/base/person.base.abstract.js +0 -17
  160. package/dist/base/person.base.abstract.js.map +0 -1
  161. package/dist/base/repository/base.repository.abstract.d.ts +0 -12
  162. package/dist/base/repository/base.repository.abstract.js +0 -22
  163. package/dist/base/repository/base.repository.abstract.js.map +0 -1
  164. package/dist/base/repository/base.repository.interface.d.ts +0 -9
  165. package/dist/base/repository/base.repository.interface.js +0 -3
  166. package/dist/base/repository/base.repository.interface.js.map +0 -1
  167. package/dist/customer/customer.repository.d.ts +0 -0
  168. package/dist/customer/customer.repository.js +0 -1
  169. package/dist/customer/customer.repository.js.map +0 -1
  170. package/dist/customer/entities/customer.entity.d.ts +0 -13
  171. package/dist/customer/entities/customer.entity.js +0 -111
  172. package/dist/customer/entities/customer.entity.js.map +0 -1
  173. package/dist/customer/index.d.ts +0 -7
  174. package/dist/customer/index.js +0 -10
  175. package/dist/customer/index.js.map +0 -1
  176. package/dist/document/entities/document-item.entity.d.ts +0 -27
  177. package/dist/document/entities/document-item.entity.js +0 -174
  178. package/dist/document/entities/document-item.entity.js.map +0 -1
  179. package/dist/document/entities/document.entity.d.ts +0 -22
  180. package/dist/document/entities/document.entity.js +0 -139
  181. package/dist/document/entities/document.entity.js.map +0 -1
  182. package/dist/document/index.d.ts +0 -11
  183. package/dist/document/index.js +0 -20
  184. package/dist/document/index.js.map +0 -1
  185. package/dist/document/interfaces/document.repository.interface.d.ts +0 -3
  186. package/dist/document/interfaces/document.repository.interface.js +0 -3
  187. package/dist/document/interfaces/document.repository.interface.js.map +0 -1
  188. package/dist/enum/document-type.enum.d.ts +0 -7
  189. package/dist/enum/document-type.enum.js +0 -12
  190. package/dist/enum/document-type.enum.js.map +0 -1
  191. package/dist/enum/intuit-client.enum.d.ts +0 -13
  192. package/dist/enum/intuit-client.enum.js +0 -19
  193. package/dist/enum/intuit-client.enum.js.map +0 -1
  194. package/dist/finance-company/entities/finance-company.entity.d.ts +0 -13
  195. package/dist/finance-company/entities/finance-company.entity.js +0 -113
  196. package/dist/finance-company/entities/finance-company.entity.js.map +0 -1
  197. package/dist/finance-company/finance-company.entity.d.ts +0 -13
  198. package/dist/finance-company/finance-company.entity.js +0 -66
  199. package/dist/finance-company/finance-company.entity.js.map +0 -1
  200. package/dist/finance-company/index.d.ts +0 -3
  201. package/dist/finance-company/index.js +0 -8
  202. package/dist/finance-company/index.js.map +0 -1
  203. package/dist/finance-company/interfaces/finance-company-attr.interface.d.ts +0 -10
  204. package/dist/finance-company/interfaces/finance-company-attr.interface.js +0 -3
  205. package/dist/finance-company/interfaces/finance-company-attr.interface.js.map +0 -1
  206. package/dist/finance-company/interfaces/finance-company.repository.interface.d.ts +0 -3
  207. package/dist/finance-company/interfaces/finance-company.repository.interface.js +0 -3
  208. package/dist/finance-company/interfaces/finance-company.repository.interface.js.map +0 -1
  209. package/dist/interfaces/account-system-entity.interface.d.ts +0 -7
  210. package/dist/interfaces/account-system-entity.interface.js +0 -3
  211. package/dist/interfaces/account-system-entity.interface.js.map +0 -1
  212. package/dist/interfaces/customer.repository.interface.d.ts +0 -3
  213. package/dist/interfaces/customer.repository.interface.js +0 -3
  214. package/dist/interfaces/customer.repository.interface.js.map +0 -1
  215. package/dist/interfaces/finance-customer.repository.interface.d.ts +0 -3
  216. package/dist/interfaces/finance-customer.repository.interface.js +0 -3
  217. package/dist/interfaces/finance-customer.repository.interface.js.map +0 -1
  218. package/dist/interfaces/systemConfig.interface.d.ts +0 -0
  219. package/dist/interfaces/systemConfig.interface.js +0 -1
  220. package/dist/interfaces/systemConfig.interface.js.map +0 -1
  221. package/dist/intuit-client/client.d.ts +0 -14
  222. package/dist/intuit-client/client.js +0 -44
  223. package/dist/intuit-client/client.js.map +0 -1
  224. package/dist/journal-entry/entities/journal-entry.entity.d.ts +0 -16
  225. package/dist/journal-entry/entities/journal-entry.entity.js +0 -129
  226. package/dist/journal-entry/entities/journal-entry.entity.js.map +0 -1
  227. package/dist/journal-entry/index.d.ts +0 -6
  228. package/dist/journal-entry/index.js +0 -10
  229. package/dist/journal-entry/index.js.map +0 -1
  230. package/dist/journal-entry/interfaces/journal-entry.repository.interface.d.ts +0 -10
  231. package/dist/journal-entry/interfaces/journal-entry.repository.interface.js +0 -3
  232. package/dist/journal-entry/interfaces/journal-entry.repository.interface.js.map +0 -1
  233. package/dist/ledger-transaction/entities/ledger-transaction.entity.d.ts +0 -19
  234. package/dist/ledger-transaction/entities/ledger-transaction.entity.js +0 -157
  235. package/dist/ledger-transaction/entities/ledger-transaction.entity.js.map +0 -1
  236. package/dist/ledger-transaction/index.d.ts +0 -6
  237. package/dist/ledger-transaction/index.js +0 -10
  238. package/dist/ledger-transaction/index.js.map +0 -1
  239. package/dist/payment/entities/payment-item.entity.d.ts +0 -10
  240. package/dist/payment/entities/payment-item.entity.js +0 -62
  241. package/dist/payment/entities/payment-item.entity.js.map +0 -1
  242. package/dist/payment/entities/payment.entity.d.ts +0 -25
  243. package/dist/payment/entities/payment.entity.js +0 -152
  244. package/dist/payment/entities/payment.entity.js.map +0 -1
  245. package/dist/payment/index.d.ts +0 -10
  246. package/dist/payment/index.js +0 -18
  247. package/dist/payment/index.js.map +0 -1
  248. package/dist/payment/interfaces/payment-item-attr.interface.d.ts +0 -8
  249. package/dist/payment/interfaces/payment-item-attr.interface.js +0 -7
  250. package/dist/payment/interfaces/payment-item-attr.interface.js.map +0 -1
  251. package/dist/payment/interfaces/payment-item.repository.interface.d.ts +0 -3
  252. package/dist/payment/interfaces/payment-item.repository.interface.js +0 -3
  253. package/dist/payment/interfaces/payment-item.repository.interface.js.map +0 -1
  254. package/dist/payment/interfaces/payment.repository.interface.d.ts +0 -3
  255. package/dist/payment/interfaces/payment.repository.interface.js +0 -3
  256. package/dist/payment/interfaces/payment.repository.interface.js.map +0 -1
  257. package/dist/payment/payment-item.repository.d.ts +0 -5
  258. package/dist/payment/payment-item.repository.js +0 -12
  259. package/dist/payment/payment-item.repository.js.map +0 -1
  260. package/dist/payment-item/interfaces/payment-item.repository.interface.d.ts +0 -3
  261. package/dist/payment-item/interfaces/payment-item.repository.interface.js +0 -3
  262. package/dist/payment-item/interfaces/payment-item.repository.interface.js.map +0 -1
  263. package/dist/quickbook-client/client.d.ts +0 -39
  264. package/dist/quickbook-client/client.js +0 -205
  265. package/dist/quickbook-client/client.js.map +0 -1
  266. package/dist/quickbook-client/constant.d.ts +0 -1
  267. package/dist/quickbook-client/constant.js +0 -5
  268. package/dist/quickbook-client/constant.js.map +0 -1
  269. package/dist/quickbook-client/index.d.ts +0 -5
  270. package/dist/quickbook-client/index.js +0 -6
  271. package/dist/quickbook-client/index.js.map +0 -1
  272. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.d.ts +0 -6
  273. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.js +0 -3
  274. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.js.map +0 -1
  275. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.d.ts +0 -9
  276. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.js +0 -3
  277. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.js.map +0 -1
  278. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.d.ts +0 -7
  279. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.js +0 -3
  280. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.js.map +0 -1
  281. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.d.ts +0 -8
  282. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.js +0 -3
  283. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.js.map +0 -1
  284. package/dist/quickbook-client/quickbook-client.module-definition.d.ts +0 -2
  285. package/dist/quickbook-client/quickbook-client.module-definition.js +0 -9
  286. package/dist/quickbook-client/quickbook-client.module-definition.js.map +0 -1
  287. package/dist/quickbook-client/quickbook-client.module.d.ts +0 -6
  288. package/dist/quickbook-client/quickbook-client.module.js +0 -34
  289. package/dist/quickbook-client/quickbook-client.module.js.map +0 -1
@@ -1,211 +1,211 @@
1
- import { ObjectBase, RecordNotFoundError } from '@tomei/general';
2
- import { PaymentType } from '../enum';
3
- import { IPaymentParams } from './interfaces/payment-params.interface';
4
- import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
5
- import { PaymentStatus } from '../enum/payment-status.enum';
6
- import { PaymentRepository } from './payment.repository';
7
- import { PaymentItemRepository } from '../payment-item/payment-item.repository';
8
- // import PaymentItemModel from '../models/payment-item.entity';
9
- import PaymentItem from '../payment-item/payment-item';
10
- import PaymentPaidWith from '../payment-paid-with/payment-paid-with';
11
- import { PaymentPaidWithRepository } from '../payment-paid-with/payment-paid-with.repository';
12
-
13
- export default class Payment extends AccountSystemEntity {
14
- private _PaymentId = 'New';
15
- PaymentType: PaymentType;
16
- PaymentDate: Date;
17
- MethodTypeId: string;
18
- Description = '';
19
- Currency = 'MYR';
20
- Amount = 0;
21
- Status: PaymentStatus;
22
- TransactionId: string;
23
- TransactionApprovalCode: string;
24
- TransactionAccountName: string;
25
- TransactionAccountNo: string;
26
- ReceivedBy = '';
27
- IssuedBy = '';
28
- UpdatedBy = '';
29
- UpdatedAt: Date;
30
- Remarks = '';
31
- RelatedObjectId = '';
32
- RelatedObjectType = '';
33
-
34
- private static _RepositoryBase = new PaymentRepository();
35
- private static _PaymentItemRepository = new PaymentItemRepository();
36
- private static _PaymentPaidWithRepository = new PaymentPaidWithRepository();
37
-
38
- private _DbTransaction: any;
39
- private _PaymentItems = [];
40
- private _PaymentPaidWith = [];
41
-
42
- paymentItemRepository: PaymentItemRepository;
43
-
44
- public get PaymentId() {
45
- return this._PaymentId;
46
- }
47
-
48
- public set PaymentId(id: string) {
49
- this._PaymentId = id;
50
- }
51
-
52
- /* AccountSystemEntity Implementation */
53
- get RepositoryBase() {
54
- return Payment._RepositoryBase;
55
- }
56
-
57
- /* ObjectBase Implementation */
58
- get ObjectId() {
59
- return this.PaymentId;
60
- }
61
-
62
- get ObjectName() {
63
- return this.PaymentId;
64
- }
65
-
66
- get TableName() {
67
- return 'finance_Payment';
68
- }
69
-
70
- constructor(dbTransaction?: any, paymentId?: string) {
71
- super();
72
- if (dbTransaction) {
73
- this._DbTransaction = dbTransaction;
74
- }
75
- if (paymentId) {
76
- this.PaymentId = paymentId;
77
- }
78
- }
79
-
80
- static async initPayment(
81
- dbTransaction: any,
82
- paymentId: string,
83
- ): Promise<Payment> {
84
- try {
85
- const paymentData = await this._RepositoryBase.findOne({
86
- where: {
87
- PaymentId: paymentId,
88
- },
89
- transaction: dbTransaction,
90
- });
91
- if (paymentData) {
92
- const payment = new Payment(dbTransaction, paymentId);
93
- payment.PaymentType = paymentData.PaymentType;
94
- payment.PaymentDate = paymentData.PaymentDate;
95
- payment.Description = paymentData.Description;
96
- payment.Currency = paymentData.Currency;
97
- payment.Amount = paymentData.Amount;
98
- payment.Status = paymentData.Status;
99
- payment.ReceivedBy = paymentData.ReceivedBy;
100
- payment.IssuedBy = paymentData.IssuedBy;
101
- payment.UpdatedAt = paymentData.UpdatedAt;
102
- payment.UpdatedBy = paymentData.UpdatedBy;
103
- payment.Remarks = paymentData.Remarks;
104
- payment.RelatedObjectId = paymentData.RelatedObjectId;
105
- payment.RelatedObjectType = paymentData.RelatedObjectType;
106
- payment.AccSystemRefId = paymentData.AccSystemRefId;
107
- payment.PostedToAccSystemYN = paymentData.PostedToAccSystemYN;
108
- payment.PostedById = paymentData.PostedById;
109
- payment.PostedDateTime = paymentData.PostedDateTime;
110
- return payment;
111
- } else {
112
- const notFoundError = new RecordNotFoundError('No Record Found.');
113
- throw notFoundError;
114
- }
115
- } catch (error) {
116
- console.log('Payment Class constructor err: ', error);
117
- }
118
- }
119
-
120
- get PaymentItems(): Promise<PaymentItem[]> {
121
- return new Promise((resolve, reject) => {
122
- if (this.PaymentId !== 'New') {
123
- Payment._PaymentItemRepository
124
- .findAll({
125
- where: {
126
- PaymentId: this.PaymentId,
127
- },
128
- transaction: this._DbTransaction,
129
- })
130
- .then((paymentItems) => {
131
- const paymentItemObjects = paymentItems.map((paymentItem) => {
132
- new PaymentItem(
133
- new Payment(this._DbTransaction, paymentItem.PaymentId),
134
- {
135
- ObjectId: this.ObjectId,
136
- ObjectName: this.ObjectName,
137
- TableName: this.TableName,
138
- },
139
- );
140
- });
141
- return Promise.all(paymentItemObjects);
142
- })
143
- .then((paymentItemObjects) => {
144
- this._PaymentItems = paymentItemObjects;
145
- resolve(this._PaymentItems);
146
- })
147
- .catch((err) => {
148
- reject(err);
149
- });
150
- }
151
- resolve(this._PaymentItems);
152
- });
153
- }
154
-
155
- get PaymentPaidWith(): Promise<PaymentPaidWith[]> {
156
- return new Promise((resolve, reject) => {
157
- if (this.PaymentId !== 'New') {
158
- Payment._PaymentPaidWithRepository
159
- .findAll({
160
- where: {
161
- PaymentId: this.PaymentId,
162
- },
163
- transaction: this._DbTransaction,
164
- })
165
- .then((paymentPaidWithItems) => {
166
- const paymentPaidWithObjects = paymentPaidWithItems.map(
167
- (paymentPaidWithItem) => {
168
- new PaymentPaidWith(
169
- new Payment(
170
- this._DbTransaction,
171
- paymentPaidWithItem.PaymentId,
172
- ),
173
- paymentPaidWithItem.MethodTypeId,
174
- );
175
- },
176
- );
177
- return Promise.all(paymentPaidWithObjects);
178
- })
179
- .then((paymentPaidWithObjects) => {
180
- this._PaymentPaidWith = paymentPaidWithObjects;
181
- resolve(this._PaymentPaidWith);
182
- })
183
- .catch((err) => {
184
- reject(err);
185
- });
186
- }
187
- resolve(this._PaymentPaidWith);
188
- });
189
- }
190
-
191
- newPaymentItem(objectBeingPaidFor: ObjectBase): PaymentItem {
192
- const paymentItem = new PaymentItem(this, objectBeingPaidFor);
193
- this._PaymentItems.push(paymentItem);
194
- return paymentItem;
195
- }
196
-
197
- newPaymentPaidWith(paymentMethodTypeId: string) {
198
- const paymentPaidWith = new PaymentPaidWith(
199
- this,
200
- paymentMethodTypeId,
201
- this._DbTransaction,
202
- );
203
- this._PaymentPaidWith.push(paymentPaidWith);
204
- return paymentPaidWith;
205
- }
206
-
207
- init(Params: IPaymentParams): void {
208
- if (Params.Currency) this.Currency = Params.Currency;
209
- if (Params.PaymentType) this.PaymentType = Params.PaymentType;
210
- }
211
- }
1
+ import { ObjectBase, RecordNotFoundError } from '@tomei/general';
2
+ import { PaymentType } from '../enum';
3
+ import { IPaymentParams } from './interfaces/payment-params.interface';
4
+ import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
5
+ import { PaymentStatus } from '../enum/payment-status.enum';
6
+ import { PaymentRepository } from './payment.repository';
7
+ import { PaymentItemRepository } from '../payment-item/payment-item.repository';
8
+ // import PaymentItemModel from '../models/payment-item.entity';
9
+ import PaymentItem from '../payment-item/payment-item';
10
+ import PaymentPaidWith from '../payment-paid-with/payment-paid-with';
11
+ import { PaymentPaidWithRepository } from '../payment-paid-with/payment-paid-with.repository';
12
+
13
+ export default class Payment extends AccountSystemEntity {
14
+ private _PaymentId = 'New';
15
+ PaymentType: PaymentType;
16
+ PaymentDate: Date;
17
+ MethodTypeId: string;
18
+ Description = '';
19
+ Currency = 'MYR';
20
+ Amount = 0;
21
+ Status: PaymentStatus;
22
+ TransactionId: string;
23
+ TransactionApprovalCode: string;
24
+ TransactionAccountName: string;
25
+ TransactionAccountNo: string;
26
+ ReceivedBy = '';
27
+ IssuedBy = '';
28
+ UpdatedBy = '';
29
+ UpdatedAt: Date;
30
+ Remarks = '';
31
+ RelatedObjectId = '';
32
+ RelatedObjectType = '';
33
+
34
+ private static _RepositoryBase = new PaymentRepository();
35
+ private static _PaymentItemRepository = new PaymentItemRepository();
36
+ private static _PaymentPaidWithRepository = new PaymentPaidWithRepository();
37
+
38
+ private _DbTransaction: any;
39
+ private _PaymentItems = [];
40
+ private _PaymentPaidWith = [];
41
+
42
+ paymentItemRepository: PaymentItemRepository;
43
+
44
+ public get PaymentId() {
45
+ return this._PaymentId;
46
+ }
47
+
48
+ public set PaymentId(id: string) {
49
+ this._PaymentId = id;
50
+ }
51
+
52
+ /* AccountSystemEntity Implementation */
53
+ get RepositoryBase() {
54
+ return Payment._RepositoryBase;
55
+ }
56
+
57
+ /* ObjectBase Implementation */
58
+ get ObjectId() {
59
+ return this.PaymentId;
60
+ }
61
+
62
+ get ObjectName() {
63
+ return this.PaymentId;
64
+ }
65
+
66
+ get TableName() {
67
+ return 'finance_Payment';
68
+ }
69
+
70
+ constructor(dbTransaction?: any, paymentId?: string) {
71
+ super();
72
+ if (dbTransaction) {
73
+ this._DbTransaction = dbTransaction;
74
+ }
75
+ if (paymentId) {
76
+ this.PaymentId = paymentId;
77
+ }
78
+ }
79
+
80
+ static async initPayment(
81
+ dbTransaction: any,
82
+ paymentId: string,
83
+ ): Promise<Payment> {
84
+ try {
85
+ const paymentData = await this._RepositoryBase.findOne({
86
+ where: {
87
+ PaymentId: paymentId,
88
+ },
89
+ transaction: dbTransaction,
90
+ });
91
+ if (paymentData) {
92
+ const payment = new Payment(dbTransaction, paymentId);
93
+ payment.PaymentType = paymentData.PaymentType;
94
+ payment.PaymentDate = paymentData.PaymentDate;
95
+ payment.Description = paymentData.Description;
96
+ payment.Currency = paymentData.Currency;
97
+ payment.Amount = paymentData.Amount;
98
+ payment.Status = paymentData.Status;
99
+ payment.ReceivedBy = paymentData.ReceivedBy;
100
+ payment.IssuedBy = paymentData.IssuedBy;
101
+ payment.UpdatedAt = paymentData.UpdatedAt;
102
+ payment.UpdatedBy = paymentData.UpdatedBy;
103
+ payment.Remarks = paymentData.Remarks;
104
+ payment.RelatedObjectId = paymentData.RelatedObjectId;
105
+ payment.RelatedObjectType = paymentData.RelatedObjectType;
106
+ payment.AccSystemRefId = paymentData.AccSystemRefId;
107
+ payment.PostedToAccSystemYN = paymentData.PostedToAccSystemYN;
108
+ payment.PostedById = paymentData.PostedById;
109
+ payment.PostedDateTime = paymentData.PostedDateTime;
110
+ return payment;
111
+ } else {
112
+ const notFoundError = new RecordNotFoundError('No Record Found.');
113
+ throw notFoundError;
114
+ }
115
+ } catch (error) {
116
+ console.log('Payment Class constructor err: ', error);
117
+ }
118
+ }
119
+
120
+ get PaymentItems(): Promise<PaymentItem[]> {
121
+ return new Promise((resolve, reject) => {
122
+ if (this.PaymentId !== 'New') {
123
+ Payment._PaymentItemRepository
124
+ .findAll({
125
+ where: {
126
+ PaymentId: this.PaymentId,
127
+ },
128
+ transaction: this._DbTransaction,
129
+ })
130
+ .then((paymentItems) => {
131
+ const paymentItemObjects = paymentItems.map((paymentItem) => {
132
+ new PaymentItem(
133
+ new Payment(this._DbTransaction, paymentItem.PaymentId),
134
+ {
135
+ ObjectId: this.ObjectId,
136
+ ObjectName: this.ObjectName,
137
+ TableName: this.TableName,
138
+ },
139
+ );
140
+ });
141
+ return Promise.all(paymentItemObjects);
142
+ })
143
+ .then((paymentItemObjects) => {
144
+ this._PaymentItems = paymentItemObjects;
145
+ resolve(this._PaymentItems);
146
+ })
147
+ .catch((err) => {
148
+ reject(err);
149
+ });
150
+ }
151
+ resolve(this._PaymentItems);
152
+ });
153
+ }
154
+
155
+ get PaymentPaidWith(): Promise<PaymentPaidWith[]> {
156
+ return new Promise((resolve, reject) => {
157
+ if (this.PaymentId !== 'New') {
158
+ Payment._PaymentPaidWithRepository
159
+ .findAll({
160
+ where: {
161
+ PaymentId: this.PaymentId,
162
+ },
163
+ transaction: this._DbTransaction,
164
+ })
165
+ .then((paymentPaidWithItems) => {
166
+ const paymentPaidWithObjects = paymentPaidWithItems.map(
167
+ (paymentPaidWithItem) => {
168
+ new PaymentPaidWith(
169
+ new Payment(
170
+ this._DbTransaction,
171
+ paymentPaidWithItem.PaymentId,
172
+ ),
173
+ paymentPaidWithItem.MethodTypeId,
174
+ );
175
+ },
176
+ );
177
+ return Promise.all(paymentPaidWithObjects);
178
+ })
179
+ .then((paymentPaidWithObjects) => {
180
+ this._PaymentPaidWith = paymentPaidWithObjects;
181
+ resolve(this._PaymentPaidWith);
182
+ })
183
+ .catch((err) => {
184
+ reject(err);
185
+ });
186
+ }
187
+ resolve(this._PaymentPaidWith);
188
+ });
189
+ }
190
+
191
+ newPaymentItem(objectBeingPaidFor: ObjectBase): PaymentItem {
192
+ const paymentItem = new PaymentItem(this, objectBeingPaidFor);
193
+ this._PaymentItems.push(paymentItem);
194
+ return paymentItem;
195
+ }
196
+
197
+ newPaymentPaidWith(paymentMethodTypeId: string) {
198
+ const paymentPaidWith = new PaymentPaidWith(
199
+ this,
200
+ paymentMethodTypeId,
201
+ this._DbTransaction,
202
+ );
203
+ this._PaymentPaidWith.push(paymentPaidWith);
204
+ return paymentPaidWith;
205
+ }
206
+
207
+ init(Params: IPaymentParams): void {
208
+ if (Params.Currency) this.Currency = Params.Currency;
209
+ if (Params.PaymentType) this.PaymentType = Params.PaymentType;
210
+ }
211
+ }
@@ -1,10 +1,10 @@
1
- export class IPaymentItemAttr {
2
- PaymentId: string;
3
- PayForObjectId: string;
4
- PayForObjectType: string;
5
- Currency: string;
6
- Amount: number;
7
- Name?: string;
8
- Description: string;
9
- Remarks?: string;
10
- }
1
+ export class IPaymentItemAttr {
2
+ PaymentId: string;
3
+ PayForObjectId: string;
4
+ PayForObjectType: string;
5
+ Currency: string;
6
+ Amount: number;
7
+ Name?: string;
8
+ Description: string;
9
+ Remarks?: string;
10
+ }
@@ -1,11 +1,11 @@
1
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
- import PaymentItemModel from '../models/payment-item.entity';
3
-
4
- export class PaymentItemRepository
5
- extends RepositoryBase<PaymentItemModel>
6
- implements IRepositoryBase<PaymentItemModel>
7
- {
8
- constructor() {
9
- super(PaymentItemModel);
10
- }
11
- }
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
+ import PaymentItemModel from '../models/payment-item.entity';
3
+
4
+ export class PaymentItemRepository
5
+ extends RepositoryBase<PaymentItemModel>
6
+ implements IRepositoryBase<PaymentItemModel>
7
+ {
8
+ constructor() {
9
+ super(PaymentItemModel);
10
+ }
11
+ }
@@ -1,104 +1,104 @@
1
- import { ObjectBase } from '@tomei/general';
2
- import Payment from '../payment/payment';
3
- import type from '../helpers/typeof';
4
- import { QueryTypes } from 'sequelize';
5
- import { FinanceDb } from '../';
6
- import { Next } from '@nestjs/common/decorators';
7
-
8
- export default class PaymentItem extends ObjectBase {
9
- private _PaymentId = '';
10
- private _PayForObjectId = '';
11
- private _PayForObjectType = '';
12
- Currency = 'MYR';
13
- Amount = 0;
14
- Name = '';
15
- Description = '';
16
- Remarks = '';
17
-
18
- get PaymentId() {
19
- return this._PaymentId;
20
- }
21
-
22
- private set PaymentId(id: string) {
23
- this._PaymentId = id;
24
- }
25
-
26
- get PayForObjectId() {
27
- return this._PayForObjectId;
28
- }
29
-
30
- private set PayForObjectId(id: string) {
31
- this._PayForObjectId = id;
32
- }
33
-
34
- get PayForObjectType(): string {
35
- return this._PayForObjectType;
36
- }
37
-
38
- private set PayForObjectType(type: string) {
39
- this._PayForObjectType = type;
40
- }
41
-
42
- /* ObjectBase Implementation */
43
- get ObjectId() {
44
- return '';
45
- }
46
-
47
- get ObjectName() {
48
- return '';
49
- }
50
-
51
- get TableName() {
52
- return 'finance_PaymentItem';
53
- }
54
-
55
- constructor(payment: Payment, objectBeingPaidFor: ObjectBase) {
56
- super();
57
- this.PaymentId = payment.PaymentId;
58
- this.PayForObjectId = objectBeingPaidFor.ObjectId;
59
- this.PayForObjectType = type(objectBeingPaidFor);
60
- }
61
-
62
- async paid(dbTransaction: any) {
63
- const sequelize = FinanceDb.getConnection();
64
- if (this.PayForObjectType === 'Document') {
65
- const selectQuery = `SELECT Amount FROM finance_Document WHERE DocNo = ${this.PayForObjectId}`;
66
- const invoice: any[] = await sequelize.query(selectQuery, {
67
- type: QueryTypes.SELECT,
68
- raw: true,
69
- transaction: dbTransaction,
70
- });
71
-
72
- let paidStatus = '';
73
- if (invoice[0].Amount > this.Amount) {
74
- paidStatus = 'Partial Paid';
75
- } else if (invoice[0].Amount === this.Amount) {
76
- paidStatus = 'Paid';
77
- } else {
78
- throw new Error(
79
- 'Payment Item amount cannot be greater than its PayForObject amount.',
80
- );
81
- }
82
-
83
- const updateQuery = `
84
- UPDATE finance_Document
85
- SET Status = '${paidStatus}'
86
- WHERE DocNo = '${this.PayForObjectId}'
87
- `;
88
- // const replacements = { docNo: this.PayForObjectId };
89
- await sequelize.query(updateQuery, {
90
- type: QueryTypes.UPDATE,
91
- raw: true,
92
- transaction: dbTransaction,
93
- });
94
- } else if (
95
- this.PayForObjectType === 'LoanSchedule' ||
96
- this.PayForObjectType === 'SimpleLoans' ||
97
- this.PayForObjectType === 'Loans'
98
- ) {
99
- Next();
100
- } else {
101
- throw new Error('Unknown type');
102
- }
103
- }
104
- }
1
+ import { ObjectBase } from '@tomei/general';
2
+ import Payment from '../payment/payment';
3
+ import type from '../helpers/typeof';
4
+ import { QueryTypes } from 'sequelize';
5
+ import { FinanceDb } from '../';
6
+ import { Next } from '@nestjs/common/decorators';
7
+
8
+ export default class PaymentItem extends ObjectBase {
9
+ private _PaymentId = '';
10
+ private _PayForObjectId = '';
11
+ private _PayForObjectType = '';
12
+ Currency = 'MYR';
13
+ Amount = 0;
14
+ Name = '';
15
+ Description = '';
16
+ Remarks = '';
17
+
18
+ get PaymentId() {
19
+ return this._PaymentId;
20
+ }
21
+
22
+ private set PaymentId(id: string) {
23
+ this._PaymentId = id;
24
+ }
25
+
26
+ get PayForObjectId() {
27
+ return this._PayForObjectId;
28
+ }
29
+
30
+ private set PayForObjectId(id: string) {
31
+ this._PayForObjectId = id;
32
+ }
33
+
34
+ get PayForObjectType(): string {
35
+ return this._PayForObjectType;
36
+ }
37
+
38
+ private set PayForObjectType(type: string) {
39
+ this._PayForObjectType = type;
40
+ }
41
+
42
+ /* ObjectBase Implementation */
43
+ get ObjectId() {
44
+ return '';
45
+ }
46
+
47
+ get ObjectName() {
48
+ return '';
49
+ }
50
+
51
+ get TableName() {
52
+ return 'finance_PaymentItem';
53
+ }
54
+
55
+ constructor(payment: Payment, objectBeingPaidFor: ObjectBase) {
56
+ super();
57
+ this.PaymentId = payment.PaymentId;
58
+ this.PayForObjectId = objectBeingPaidFor.ObjectId;
59
+ this.PayForObjectType = type(objectBeingPaidFor);
60
+ }
61
+
62
+ async paid(dbTransaction: any) {
63
+ const sequelize = FinanceDb.getConnection();
64
+ if (this.PayForObjectType === 'Document') {
65
+ const selectQuery = `SELECT Amount FROM finance_Document WHERE DocNo = '${this.PayForObjectId}'`;
66
+ const invoice: any[] = await sequelize.query(selectQuery, {
67
+ type: QueryTypes.SELECT,
68
+ raw: true,
69
+ transaction: dbTransaction,
70
+ });
71
+
72
+ let paidStatus = '';
73
+ if (invoice[0].Amount > this.Amount) {
74
+ paidStatus = 'Partial Paid';
75
+ } else if (invoice[0].Amount === this.Amount) {
76
+ paidStatus = 'Paid';
77
+ } else {
78
+ throw new Error(
79
+ 'Payment Item amount cannot be greater than its PayForObject amount.',
80
+ );
81
+ }
82
+
83
+ const updateQuery = `
84
+ UPDATE finance_Document
85
+ SET Status = '${paidStatus}'
86
+ WHERE DocNo = '${this.PayForObjectId}'
87
+ `;
88
+ // const replacements = { docNo: this.PayForObjectId };
89
+ await sequelize.query(updateQuery, {
90
+ type: QueryTypes.UPDATE,
91
+ raw: true,
92
+ transaction: dbTransaction,
93
+ });
94
+ } else if (
95
+ this.PayForObjectType === 'LoanSchedule' ||
96
+ this.PayForObjectType === 'SimpleLoans' ||
97
+ this.PayForObjectType === 'Loans'
98
+ ) {
99
+ Next();
100
+ } else {
101
+ throw new Error('Unknown type');
102
+ }
103
+ }
104
+ }