@tomei/finance 0.6.5 → 0.6.7

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 (290) 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/account/entities/account.entity.d.ts +26 -0
  11. package/dist/account/entities/account.entity.js +199 -0
  12. package/dist/account/entities/account.entity.js.map +1 -0
  13. package/dist/account/entities/fee-associated-object.entity.d.ts +6 -0
  14. package/dist/account/entities/fee-associated-object.entity.js +52 -0
  15. package/dist/account/entities/fee-associated-object.entity.js.map +1 -0
  16. package/dist/account/index.d.ts +6 -0
  17. package/dist/account/index.js +10 -0
  18. package/dist/account/index.js.map +1 -0
  19. package/dist/account/interfaces/account.repository.interface.d.ts +3 -0
  20. package/dist/account/interfaces/account.repository.interface.js +3 -0
  21. package/dist/account/interfaces/account.repository.interface.js.map +1 -0
  22. package/dist/account-system-entity/index.d.ts +2 -0
  23. package/dist/account-system-entity/index.js +6 -0
  24. package/dist/account-system-entity/index.js.map +1 -0
  25. package/dist/account-system-entity/post-history.entity.d.ts +11 -0
  26. package/dist/account-system-entity/post-history.entity.js +65 -0
  27. package/dist/account-system-entity/post-history.entity.js.map +1 -0
  28. package/dist/base/account-system.interface.d.ts +7 -0
  29. package/dist/base/account-system.interface.js +3 -0
  30. package/dist/base/account-system.interface.js.map +1 -0
  31. package/dist/base/address.base.abstract.d.ts +4 -0
  32. package/dist/base/address.base.abstract.js +10 -0
  33. package/dist/base/address.base.abstract.js.map +1 -0
  34. package/dist/base/base.address.d.ts +8 -0
  35. package/dist/base/base.address.js +15 -0
  36. package/dist/base/base.address.js.map +1 -0
  37. package/dist/base/base.object.d.ts +7 -0
  38. package/dist/base/base.object.js +14 -0
  39. package/dist/base/base.object.js.map +1 -0
  40. package/dist/base/base.owner.d.ts +23 -0
  41. package/dist/base/base.owner.js +34 -0
  42. package/dist/base/base.owner.js.map +1 -0
  43. package/dist/base/base.repository.abstract.d.ts +12 -0
  44. package/dist/base/base.repository.abstract.js +22 -0
  45. package/dist/base/base.repository.abstract.js.map +1 -0
  46. package/dist/base/base.repository.interface.d.ts +9 -0
  47. package/dist/base/base.repository.interface.js +3 -0
  48. package/dist/base/base.repository.interface.js.map +1 -0
  49. package/dist/base/index.d.ts +4 -0
  50. package/dist/base/index.js +10 -0
  51. package/dist/base/index.js.map +1 -0
  52. package/dist/base/object/base.object.abstract.d.ts +5 -0
  53. package/dist/base/object/base.object.abstract.js +7 -0
  54. package/dist/base/object/base.object.abstract.js.map +1 -0
  55. package/dist/base/object/base.object.d.ts +7 -0
  56. package/dist/base/object/base.object.js +14 -0
  57. package/dist/base/object/base.object.js.map +1 -0
  58. package/dist/base/object/object.interface.d.ts +4 -0
  59. package/dist/base/object/object.interface.js +3 -0
  60. package/dist/base/object/object.interface.js.map +1 -0
  61. package/dist/base/object.base.abstract.d.ts +5 -0
  62. package/dist/base/object.base.abstract.js +11 -0
  63. package/dist/base/object.base.abstract.js.map +1 -0
  64. package/dist/base/owner/base.owner.abstract.d.ts +20 -0
  65. package/dist/base/owner/base.owner.abstract.js +8 -0
  66. package/dist/base/owner/base.owner.abstract.js.map +1 -0
  67. package/dist/base/owner/base.owner.d.ts +22 -0
  68. package/dist/base/owner/base.owner.js +31 -0
  69. package/dist/base/owner/base.owner.js.map +1 -0
  70. package/dist/base/owner/owner.interface.d.ts +19 -0
  71. package/dist/base/owner/owner.interface.js +3 -0
  72. package/dist/base/owner/owner.interface.js.map +1 -0
  73. package/dist/base/person.base.abstract.d.ts +21 -0
  74. package/dist/base/person.base.abstract.js +17 -0
  75. package/dist/base/person.base.abstract.js.map +1 -0
  76. package/dist/base/repository/base.repository.abstract.d.ts +12 -0
  77. package/dist/base/repository/base.repository.abstract.js +22 -0
  78. package/dist/base/repository/base.repository.abstract.js.map +1 -0
  79. package/dist/base/repository/base.repository.interface.d.ts +9 -0
  80. package/dist/base/repository/base.repository.interface.js +3 -0
  81. package/dist/base/repository/base.repository.interface.js.map +1 -0
  82. package/dist/customer/customer.repository.d.ts +0 -0
  83. package/dist/customer/customer.repository.js +1 -0
  84. package/dist/customer/customer.repository.js.map +1 -0
  85. package/dist/customer/entities/customer.entity.d.ts +13 -0
  86. package/dist/customer/entities/customer.entity.js +111 -0
  87. package/dist/customer/entities/customer.entity.js.map +1 -0
  88. package/dist/customer/index.d.ts +7 -0
  89. package/dist/customer/index.js +10 -0
  90. package/dist/customer/index.js.map +1 -0
  91. package/dist/document/entities/document-item.entity.d.ts +27 -0
  92. package/dist/document/entities/document-item.entity.js +174 -0
  93. package/dist/document/entities/document-item.entity.js.map +1 -0
  94. package/dist/document/entities/document.entity.d.ts +22 -0
  95. package/dist/document/entities/document.entity.js +139 -0
  96. package/dist/document/entities/document.entity.js.map +1 -0
  97. package/dist/document/index.d.ts +11 -0
  98. package/dist/document/index.js +20 -0
  99. package/dist/document/index.js.map +1 -0
  100. package/dist/document/interfaces/document.repository.interface.d.ts +3 -0
  101. package/dist/document/interfaces/document.repository.interface.js +3 -0
  102. package/dist/document/interfaces/document.repository.interface.js.map +1 -0
  103. package/dist/enum/document-type.enum.d.ts +7 -0
  104. package/dist/enum/document-type.enum.js +12 -0
  105. package/dist/enum/document-type.enum.js.map +1 -0
  106. package/dist/enum/intuit-client.enum.d.ts +13 -0
  107. package/dist/enum/intuit-client.enum.js +19 -0
  108. package/dist/enum/intuit-client.enum.js.map +1 -0
  109. package/dist/finance-company/entities/finance-company.entity.d.ts +13 -0
  110. package/dist/finance-company/entities/finance-company.entity.js +113 -0
  111. package/dist/finance-company/entities/finance-company.entity.js.map +1 -0
  112. package/dist/finance-company/finance-company.d.ts +1 -1
  113. package/dist/finance-company/finance-company.entity.d.ts +13 -0
  114. package/dist/finance-company/finance-company.entity.js +66 -0
  115. package/dist/finance-company/finance-company.entity.js.map +1 -0
  116. package/dist/finance-company/finance-company.js +16 -6
  117. package/dist/finance-company/finance-company.js.map +1 -1
  118. package/dist/finance-company/index.d.ts +3 -0
  119. package/dist/finance-company/index.js +8 -0
  120. package/dist/finance-company/index.js.map +1 -0
  121. package/dist/finance-company/interfaces/finance-company-attr.interface.d.ts +10 -0
  122. package/dist/finance-company/interfaces/finance-company-attr.interface.js +3 -0
  123. package/dist/finance-company/interfaces/finance-company-attr.interface.js.map +1 -0
  124. package/dist/finance-company/interfaces/finance-company.repository.interface.d.ts +3 -0
  125. package/dist/finance-company/interfaces/finance-company.repository.interface.js +3 -0
  126. package/dist/finance-company/interfaces/finance-company.repository.interface.js.map +1 -0
  127. package/dist/interfaces/account-system-entity.interface.d.ts +7 -0
  128. package/dist/interfaces/account-system-entity.interface.js +3 -0
  129. package/dist/interfaces/account-system-entity.interface.js.map +1 -0
  130. package/dist/interfaces/customer.repository.interface.d.ts +3 -0
  131. package/dist/interfaces/customer.repository.interface.js +3 -0
  132. package/dist/interfaces/customer.repository.interface.js.map +1 -0
  133. package/dist/interfaces/finance-customer.repository.interface.d.ts +3 -0
  134. package/dist/interfaces/finance-customer.repository.interface.js +3 -0
  135. package/dist/interfaces/finance-customer.repository.interface.js.map +1 -0
  136. package/dist/interfaces/systemConfig.interface.d.ts +0 -0
  137. package/dist/interfaces/systemConfig.interface.js +1 -0
  138. package/dist/interfaces/systemConfig.interface.js.map +1 -0
  139. package/dist/intuit-client/client.d.ts +14 -0
  140. package/dist/intuit-client/client.js +44 -0
  141. package/dist/intuit-client/client.js.map +1 -0
  142. package/dist/journal-entry/entities/journal-entry.entity.d.ts +16 -0
  143. package/dist/journal-entry/entities/journal-entry.entity.js +129 -0
  144. package/dist/journal-entry/entities/journal-entry.entity.js.map +1 -0
  145. package/dist/journal-entry/index.d.ts +6 -0
  146. package/dist/journal-entry/index.js +10 -0
  147. package/dist/journal-entry/index.js.map +1 -0
  148. package/dist/journal-entry/interfaces/journal-entry.repository.interface.d.ts +10 -0
  149. package/dist/journal-entry/interfaces/journal-entry.repository.interface.js +3 -0
  150. package/dist/journal-entry/interfaces/journal-entry.repository.interface.js.map +1 -0
  151. package/dist/ledger-transaction/entities/ledger-transaction.entity.d.ts +19 -0
  152. package/dist/ledger-transaction/entities/ledger-transaction.entity.js +157 -0
  153. package/dist/ledger-transaction/entities/ledger-transaction.entity.js.map +1 -0
  154. package/dist/ledger-transaction/index.d.ts +6 -0
  155. package/dist/ledger-transaction/index.js +10 -0
  156. package/dist/ledger-transaction/index.js.map +1 -0
  157. package/dist/payment/entities/payment-item.entity.d.ts +10 -0
  158. package/dist/payment/entities/payment-item.entity.js +62 -0
  159. package/dist/payment/entities/payment-item.entity.js.map +1 -0
  160. package/dist/payment/entities/payment.entity.d.ts +25 -0
  161. package/dist/payment/entities/payment.entity.js +152 -0
  162. package/dist/payment/entities/payment.entity.js.map +1 -0
  163. package/dist/payment/index.d.ts +10 -0
  164. package/dist/payment/index.js +18 -0
  165. package/dist/payment/index.js.map +1 -0
  166. package/dist/payment/interfaces/payment-item-attr.interface.d.ts +8 -0
  167. package/dist/payment/interfaces/payment-item-attr.interface.js +7 -0
  168. package/dist/payment/interfaces/payment-item-attr.interface.js.map +1 -0
  169. package/dist/payment/interfaces/payment-item.repository.interface.d.ts +3 -0
  170. package/dist/payment/interfaces/payment-item.repository.interface.js +3 -0
  171. package/dist/payment/interfaces/payment-item.repository.interface.js.map +1 -0
  172. package/dist/payment/interfaces/payment.repository.interface.d.ts +3 -0
  173. package/dist/payment/interfaces/payment.repository.interface.js +3 -0
  174. package/dist/payment/interfaces/payment.repository.interface.js.map +1 -0
  175. package/dist/payment/payment-item.repository.d.ts +5 -0
  176. package/dist/payment/payment-item.repository.js +12 -0
  177. package/dist/payment/payment-item.repository.js.map +1 -0
  178. package/dist/payment-item/interfaces/payment-item.repository.interface.d.ts +3 -0
  179. package/dist/payment-item/interfaces/payment-item.repository.interface.js +3 -0
  180. package/dist/payment-item/interfaces/payment-item.repository.interface.js.map +1 -0
  181. package/dist/payment-item/payment-item.js +4 -4
  182. package/dist/payment-method/payment-method.d.ts +3 -2
  183. package/dist/payment-method/payment-method.js +25 -17
  184. package/dist/payment-method/payment-method.js.map +1 -1
  185. package/dist/quickbook-client/client.d.ts +39 -0
  186. package/dist/quickbook-client/client.js +205 -0
  187. package/dist/quickbook-client/client.js.map +1 -0
  188. package/dist/quickbook-client/constant.d.ts +1 -0
  189. package/dist/quickbook-client/constant.js +5 -0
  190. package/dist/quickbook-client/constant.js.map +1 -0
  191. package/dist/quickbook-client/index.d.ts +5 -0
  192. package/dist/quickbook-client/index.js +6 -0
  193. package/dist/quickbook-client/index.js.map +1 -0
  194. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.d.ts +6 -0
  195. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.js +3 -0
  196. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.js.map +1 -0
  197. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.d.ts +9 -0
  198. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.js +3 -0
  199. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.js.map +1 -0
  200. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.d.ts +7 -0
  201. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.js +3 -0
  202. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.js.map +1 -0
  203. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.d.ts +8 -0
  204. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.js +3 -0
  205. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.js.map +1 -0
  206. package/dist/quickbook-client/quickbook-client.module-definition.d.ts +2 -0
  207. package/dist/quickbook-client/quickbook-client.module-definition.js +9 -0
  208. package/dist/quickbook-client/quickbook-client.module-definition.js.map +1 -0
  209. package/dist/quickbook-client/quickbook-client.module.d.ts +6 -0
  210. package/dist/quickbook-client/quickbook-client.module.js +34 -0
  211. package/dist/quickbook-client/quickbook-client.module.js.map +1 -0
  212. package/dist/tsconfig.tsbuildinfo +1 -1
  213. package/invoice-template/assets/css/style.css.map +12 -12
  214. package/invoice-template/assets/css/style.min.css +1 -1
  215. package/invoice-template/assets/img/arrow_bg.svg +11 -11
  216. package/invoice-template/assets/img/coffy_shop_img.svg +18 -18
  217. package/invoice-template/assets/img/logo_accent.svg +3 -3
  218. package/invoice-template/assets/img/logo_white.svg +4 -4
  219. package/invoice-template/assets/img/sign.svg +12 -12
  220. package/invoice-template/assets/img/tomei-logo.svg +9 -9
  221. package/invoice-template/assets/js/html2canvas.min.js +10379 -10379
  222. package/invoice-template/assets/js/jquery.min.js +1 -1
  223. package/invoice-template/assets/sass/common/_color_variable.scss +12 -12
  224. package/invoice-template/assets/sass/common/_typography.scss +178 -178
  225. package/invoice-template/assets/sass/style.scss +12 -12
  226. package/migrations/finance-account-migration.js +97 -97
  227. package/migrations/finance-company-migration.js +29 -29
  228. package/migrations/finance-customer-migration.js +51 -51
  229. package/migrations/finance-document-item-migration.js +111 -111
  230. package/migrations/finance-document-migration.js +116 -116
  231. package/migrations/finance-payment-item-migration.js +52 -52
  232. package/migrations/finance-payment-method-migration.js +31 -31
  233. package/migrations/finance-payment-method-type-migration.js +55 -55
  234. package/migrations/finance-payment-migration.js +96 -96
  235. package/migrations/finance-post-history-migration.js +45 -45
  236. package/nest-cli.json +19 -19
  237. package/package.json +82 -82
  238. package/src/account/account.repository.ts +11 -11
  239. package/src/account/account.ts +271 -271
  240. package/src/account/interfaces/account-attr.interface.ts +31 -31
  241. package/src/account-system-entity/account-system-entity.ts +65 -65
  242. package/src/account-system-entity/post-history.repository.ts +11 -11
  243. package/src/config.ts +382 -382
  244. package/src/customer/customer.ts +299 -299
  245. package/src/customer/finance-customer.repository.ts +13 -13
  246. package/src/customer/interfaces/customer.repository.interface.ts +3 -3
  247. package/src/customer/interfaces/finance-customer-attr.interface.ts +10 -10
  248. package/src/customer/interfaces/finance-customer.repository.interface.ts +4 -4
  249. package/src/database.ts +15 -15
  250. package/src/document/document-item.repository.ts +11 -11
  251. package/src/document/document.repository.ts +11 -11
  252. package/src/document/interfaces/document-attr.interface.ts +28 -28
  253. package/src/document/interfaces/document-item-attr.interface.ts +22 -22
  254. package/src/document/interfaces/document-item.repository.interface.ts +4 -4
  255. package/src/enum/doc-type.enum.ts +8 -8
  256. package/src/enum/index.ts +17 -17
  257. package/src/enum/payment-method.enum.ts +3 -3
  258. package/src/enum/payment-type.enum.ts +4 -4
  259. package/src/finance-company/finance-company.repository.ts +11 -11
  260. package/src/finance-company/finance-company.ts +1777 -1754
  261. package/src/helpers/typeof.ts +29 -29
  262. package/src/index.ts +32 -32
  263. package/src/interfaces/account-system.interface.ts +20 -20
  264. package/src/interfaces/index.ts +3 -3
  265. package/src/models/account.entity.ts +206 -206
  266. package/src/models/customer.entity.ts +93 -93
  267. package/src/models/document-item.entity.ts +143 -143
  268. package/src/models/document.entity.ts +211 -211
  269. package/src/models/finance-company.entity.ts +25 -25
  270. package/src/models/journal-entry.entity.ts +110 -110
  271. package/src/models/ledger-transaction.entity.ts +148 -148
  272. package/src/models/payment-item.entity.ts +60 -60
  273. package/src/models/payment-method-type.entity.ts +70 -70
  274. package/src/models/payment-method.entity.ts +51 -51
  275. package/src/models/payment.entity.ts +161 -161
  276. package/src/models/post-history.entity.ts +41 -41
  277. package/src/payment/interfaces/payment-attr.interface.ts +23 -23
  278. package/src/payment/interfaces/payment-params.interface.ts +8 -8
  279. package/src/payment/payment.repository.ts +11 -11
  280. package/src/payment/payment.ts +217 -217
  281. package/src/payment-item/interfaces/payment-item-attr.interface.ts +10 -10
  282. package/src/payment-item/payment-item.repository.ts +11 -11
  283. package/src/payment-item/payment-item.ts +125 -125
  284. package/src/payment-method/payment-method.repository.ts +11 -11
  285. package/src/payment-method/payment-method.ts +44 -23
  286. package/src/payment-method-type/payment-method-type.repository.ts +11 -11
  287. package/src/test-document.ts +25 -25
  288. package/tsconfig.build.json +4 -4
  289. package/tsconfig.json +22 -22
  290. package/tslint.json +18 -18
@@ -1,125 +1,125 @@
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
- const selectPaymentItem = `SELECT * FROM finance_PaymentItem WHERE PayForObjectId = '${this.PayForObjectId}' AND PayForObjectType = 'Document'`;
75
- const documentPaymentItems: any[] = await sequelize.query(
76
- selectPaymentItem,
77
- {
78
- type: QueryTypes.SELECT,
79
- raw: true,
80
- transaction: dbTransaction,
81
- },
82
- );
83
- let amountPreviouslyPaid = 0;
84
- documentPaymentItems.forEach((paymentItem) => {
85
- const amount =
86
- typeof paymentItem.Amount === 'string'
87
- ? parseFloat(paymentItem.Amount).toFixed(2)
88
- : paymentItem.Amount;
89
- amountPreviouslyPaid += amount;
90
- });
91
- if (invoice[0].Amount === amountPreviouslyPaid) {
92
- paidStatus = 'Paid';
93
- } else {
94
- paidStatus = 'Partial Paid';
95
- }
96
- } else if (invoice[0].Amount === this.Amount) {
97
- paidStatus = 'Paid';
98
- } else {
99
- throw new Error(
100
- 'Payment Item amount cannot be greater than its PayForObject amount.',
101
- );
102
- }
103
-
104
- const updateQuery = `
105
- UPDATE finance_Document
106
- SET Status = '${paidStatus}'
107
- WHERE DocNo = '${this.PayForObjectId}'
108
- `;
109
- // const replacements = { docNo: this.PayForObjectId };
110
- await sequelize.query(updateQuery, {
111
- type: QueryTypes.UPDATE,
112
- raw: true,
113
- transaction: dbTransaction,
114
- });
115
- } else if (
116
- this.PayForObjectType === 'LoanSchedule' ||
117
- this.PayForObjectType === 'SimpleLoans' ||
118
- this.PayForObjectType === 'Loans'
119
- ) {
120
- Next();
121
- } else {
122
- throw new Error('Unknown type');
123
- }
124
- }
125
- }
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
+ const selectPaymentItem = `SELECT * FROM finance_PaymentItem WHERE PayForObjectId = '${this.PayForObjectId}' AND PayForObjectType = 'Document'`;
75
+ const documentPaymentItems: any[] = await sequelize.query(
76
+ selectPaymentItem,
77
+ {
78
+ type: QueryTypes.SELECT,
79
+ raw: true,
80
+ transaction: dbTransaction,
81
+ },
82
+ );
83
+ let amountPreviouslyPaid = 0;
84
+ documentPaymentItems.forEach((paymentItem) => {
85
+ const amount =
86
+ typeof paymentItem.Amount === 'string'
87
+ ? parseFloat(paymentItem.Amount).toFixed(2)
88
+ : paymentItem.Amount;
89
+ amountPreviouslyPaid += amount;
90
+ });
91
+ if (invoice[0].Amount === amountPreviouslyPaid) {
92
+ paidStatus = 'Paid';
93
+ } else {
94
+ paidStatus = 'Partial Paid';
95
+ }
96
+ } else if (invoice[0].Amount === this.Amount) {
97
+ paidStatus = 'Paid';
98
+ } else {
99
+ throw new Error(
100
+ 'Payment Item amount cannot be greater than its PayForObject amount.',
101
+ );
102
+ }
103
+
104
+ const updateQuery = `
105
+ UPDATE finance_Document
106
+ SET Status = '${paidStatus}'
107
+ WHERE DocNo = '${this.PayForObjectId}'
108
+ `;
109
+ // const replacements = { docNo: this.PayForObjectId };
110
+ await sequelize.query(updateQuery, {
111
+ type: QueryTypes.UPDATE,
112
+ raw: true,
113
+ transaction: dbTransaction,
114
+ });
115
+ } else if (
116
+ this.PayForObjectType === 'LoanSchedule' ||
117
+ this.PayForObjectType === 'SimpleLoans' ||
118
+ this.PayForObjectType === 'Loans'
119
+ ) {
120
+ Next();
121
+ } else {
122
+ throw new Error('Unknown type');
123
+ }
124
+ }
125
+ }
@@ -1,11 +1,11 @@
1
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
- import PaymentMethodModel from '../models/payment-method.entity';
3
-
4
- export class PaymentMethodRepository
5
- extends RepositoryBase<PaymentMethodModel>
6
- implements IRepositoryBase<PaymentMethodModel>
7
- {
8
- constructor() {
9
- super(PaymentMethodModel);
10
- }
11
- }
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
+ import PaymentMethodModel from '../models/payment-method.entity';
3
+
4
+ export class PaymentMethodRepository
5
+ extends RepositoryBase<PaymentMethodModel>
6
+ implements IRepositoryBase<PaymentMethodModel>
7
+ {
8
+ constructor() {
9
+ super(PaymentMethodModel);
10
+ }
11
+ }
@@ -17,33 +17,49 @@ export default class PaymentMethod extends ObjectBase {
17
17
  private _DbTransaction: any;
18
18
  private _PaymentMethodTypes = [];
19
19
 
20
- constructor(dbTransaction?: any, methodId?: string) {
20
+ constructor(
21
+ dbTransaction?: any,
22
+ methodId?: string,
23
+ companyId?: string,
24
+ name?: string,
25
+ ) {
21
26
  super();
22
27
  if (dbTransaction) {
23
28
  this._DbTransaction = dbTransaction;
24
29
  }
25
30
  if (methodId) {
26
31
  this.MethodId = methodId;
27
- PaymentMethod._RepositoryBase
28
- .findOne({
29
- where: {
30
- MethodId: methodId,
31
- },
32
- transaction: dbTransaction,
33
- })
34
- .then((methodData) => {
35
- if (methodData) {
36
- this.Name = methodData.Name;
37
- } else {
38
- throw new RecordNotFoundError(
39
- 'PaymentMethodErrMsg',
40
- 'No record found.',
41
- );
42
- }
43
- })
44
- .catch((err) => {
45
- console.log('Payment method constructor err: ', err);
46
- });
32
+ }
33
+ if (companyId) {
34
+ this.CompanyId = companyId;
35
+ }
36
+ if (name) {
37
+ this.Name = name;
38
+ }
39
+ }
40
+
41
+ static async initPaymentMethod(dbTransaction?: any, methodId?: string) {
42
+ if (methodId) {
43
+ const methodData = await PaymentMethod._RepositoryBase.findOne({
44
+ where: {
45
+ MethodId: methodId,
46
+ },
47
+ transaction: dbTransaction,
48
+ });
49
+
50
+ if (methodData) {
51
+ new PaymentMethod(
52
+ dbTransaction,
53
+ methodData.MethodId,
54
+ methodData.CompanyId,
55
+ methodData.Name,
56
+ );
57
+ } else {
58
+ throw new RecordNotFoundError(
59
+ 'PaymentMethodErrMsg',
60
+ 'No record found.',
61
+ );
62
+ }
47
63
  }
48
64
  }
49
65
 
@@ -102,10 +118,15 @@ export default class PaymentMethod extends ObjectBase {
102
118
  *
103
119
  * @returns {void}
104
120
  */
105
- async newPaymentMethodType(payload: IPaymentMethodTypeAttr): Promise<any> {
121
+ async newPaymentMethodType(
122
+ payload: IPaymentMethodTypeAttr,
123
+ transaction?: any,
124
+ ): Promise<any> {
106
125
  try {
107
126
  const newPaymentMethodType =
108
- await PaymentMethod._PaymentMethodTypeRepository.create(payload);
127
+ await PaymentMethod._PaymentMethodTypeRepository.create(payload, {
128
+ transaction: transaction,
129
+ });
109
130
 
110
131
  this._PaymentMethodTypes.push(newPaymentMethodType);
111
132
  } catch (err) {
@@ -1,11 +1,11 @@
1
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
- import PaymentMethodType from '../models/payment-method-type.entity';
3
-
4
- export class PaymentMethodTypeRepository
5
- extends RepositoryBase<PaymentMethodType>
6
- implements IRepositoryBase<PaymentMethodType>
7
- {
8
- constructor() {
9
- super(PaymentMethodType);
10
- }
11
- }
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
+ import PaymentMethodType from '../models/payment-method-type.entity';
3
+
4
+ export class PaymentMethodTypeRepository
5
+ extends RepositoryBase<PaymentMethodType>
6
+ implements IRepositoryBase<PaymentMethodType>
7
+ {
8
+ constructor() {
9
+ super(PaymentMethodType);
10
+ }
11
+ }
@@ -1,25 +1,25 @@
1
- export class TestDocument {
2
- static test(classPath, className) {
3
- // tslint:disable-next-line:no-console
4
- console.log('inside test() #1');
5
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
- // @ts-ignore
7
- // eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unused-vars,
8
- const module = require(classPath);
9
- // tslint:disable-next-line:no-console
10
- console.log('inside test() #1: %o', module);
11
- console.log(`module.${className}`);
12
- // tslint:disable-next-line:no-eval
13
- const classConstructor = eval(`module.${className}`);
14
- // tslint:disable-next-line:no-console
15
- console.log('inside test() #2: %o', classConstructor);
16
-
17
- const docGen = new classConstructor('RECEIPT001');
18
- // tslint:disable-next-line:no-console
19
- console.log('inside test() #3');
20
-
21
- docGen.generateReceipt();
22
- // tslint:disable-next-line:no-console
23
- console.log('inside test() #4');
24
- }
25
- }
1
+ export class TestDocument {
2
+ static test(classPath, className) {
3
+ // tslint:disable-next-line:no-console
4
+ console.log('inside test() #1');
5
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
+ // @ts-ignore
7
+ // eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unused-vars,
8
+ const module = require(classPath);
9
+ // tslint:disable-next-line:no-console
10
+ console.log('inside test() #1: %o', module);
11
+ console.log(`module.${className}`);
12
+ // tslint:disable-next-line:no-eval
13
+ const classConstructor = eval(`module.${className}`);
14
+ // tslint:disable-next-line:no-console
15
+ console.log('inside test() #2: %o', classConstructor);
16
+
17
+ const docGen = new classConstructor('RECEIPT001');
18
+ // tslint:disable-next-line:no-console
19
+ console.log('inside test() #3');
20
+
21
+ docGen.generateReceipt();
22
+ // tslint:disable-next-line:no-console
23
+ console.log('inside test() #4');
24
+ }
25
+ }
@@ -1,4 +1,4 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4
- }
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]
4
+ }
package/tsconfig.json CHANGED
@@ -1,22 +1,22 @@
1
- {
2
- "compilerOptions": {
3
- "module": "commonjs",
4
- "declaration": true,
5
- "removeComments": true,
6
- "emitDecoratorMetadata": true,
7
- "experimentalDecorators": true,
8
- "allowSyntheticDefaultImports": true,
9
- "moduleResolution": "node",
10
- "target": "es6",
11
- "sourceMap": true,
12
- "outDir": "./dist",
13
- "baseUrl": "./",
14
- "incremental": true,
15
- "skipLibCheck": true,
16
- "strictNullChecks": false,
17
- "noImplicitAny": false,
18
- "strictBindCallApply": false,
19
- "forceConsistentCasingInFileNames": false,
20
- "noFallthroughCasesInSwitch": false,
21
- }
22
- }
1
+ {
2
+ "compilerOptions": {
3
+ "module": "commonjs",
4
+ "declaration": true,
5
+ "removeComments": true,
6
+ "emitDecoratorMetadata": true,
7
+ "experimentalDecorators": true,
8
+ "allowSyntheticDefaultImports": true,
9
+ "moduleResolution": "node",
10
+ "target": "es6",
11
+ "sourceMap": true,
12
+ "outDir": "./dist",
13
+ "baseUrl": "./",
14
+ "incremental": true,
15
+ "skipLibCheck": true,
16
+ "strictNullChecks": false,
17
+ "noImplicitAny": false,
18
+ "strictBindCallApply": false,
19
+ "forceConsistentCasingInFileNames": false,
20
+ "noFallthroughCasesInSwitch": false,
21
+ }
22
+ }
package/tslint.json CHANGED
@@ -1,18 +1,18 @@
1
- {
2
- "defaultSeverity": "error",
3
- "extends": ["tslint:recommended"],
4
- "jsRules": {
5
- "no-unused-expression": true
6
- },
7
- "rules": {
8
- "quotemark": [true, "single"],
9
- "member-access": [false],
10
- "ordered-imports": [false],
11
- "max-line-length": [true, 150],
12
- "member-ordering": [false],
13
- "interface-name": [false],
14
- "arrow-parens": false,
15
- "object-literal-sort-keys": false
16
- },
17
- "rulesDirectory": []
18
- }
1
+ {
2
+ "defaultSeverity": "error",
3
+ "extends": ["tslint:recommended"],
4
+ "jsRules": {
5
+ "no-unused-expression": true
6
+ },
7
+ "rules": {
8
+ "quotemark": [true, "single"],
9
+ "member-access": [false],
10
+ "ordered-imports": [false],
11
+ "max-line-length": [true, 150],
12
+ "member-ordering": [false],
13
+ "interface-name": [false],
14
+ "arrow-parens": false,
15
+ "object-literal-sort-keys": false
16
+ },
17
+ "rulesDirectory": []
18
+ }