@tomei/finance 0.6.3 → 0.6.5

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 (294) 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-item.d.ts +3 -1
  11. package/dist/document/document-item.js +58 -21
  12. package/dist/document/document-item.js.map +1 -1
  13. package/dist/document/document.d.ts +8 -2
  14. package/dist/document/document.js +126 -80
  15. package/dist/document/document.js.map +1 -1
  16. package/dist/document/interfaces/document-find-all.interface.d.ts +10 -0
  17. package/dist/{base/owner/owner.interface.js → document/interfaces/document-find-all.interface.js} +1 -1
  18. package/dist/document/interfaces/document-find-all.interface.js.map +1 -0
  19. package/dist/payment-item/payment-item.js +4 -4
  20. package/dist/tsconfig.tsbuildinfo +1 -1
  21. package/invoice-template/assets/css/style.css.map +12 -12
  22. package/invoice-template/assets/css/style.min.css +1 -1
  23. package/invoice-template/assets/img/arrow_bg.svg +11 -11
  24. package/invoice-template/assets/img/coffy_shop_img.svg +18 -18
  25. package/invoice-template/assets/img/logo_accent.svg +3 -3
  26. package/invoice-template/assets/img/logo_white.svg +4 -4
  27. package/invoice-template/assets/img/sign.svg +12 -12
  28. package/invoice-template/assets/img/tomei-logo.svg +9 -9
  29. package/invoice-template/assets/js/html2canvas.min.js +10379 -10379
  30. package/invoice-template/assets/js/jquery.min.js +1 -1
  31. package/invoice-template/assets/sass/common/_color_variable.scss +12 -12
  32. package/invoice-template/assets/sass/common/_typography.scss +178 -178
  33. package/invoice-template/assets/sass/style.scss +12 -12
  34. package/migrations/finance-account-migration.js +97 -97
  35. package/migrations/finance-company-migration.js +29 -29
  36. package/migrations/finance-customer-migration.js +51 -51
  37. package/migrations/finance-document-item-migration.js +111 -111
  38. package/migrations/finance-document-migration.js +116 -116
  39. package/migrations/finance-payment-item-migration.js +52 -52
  40. package/migrations/finance-payment-method-migration.js +31 -31
  41. package/migrations/finance-payment-method-type-migration.js +55 -55
  42. package/migrations/finance-payment-migration.js +96 -96
  43. package/migrations/finance-post-history-migration.js +45 -45
  44. package/nest-cli.json +19 -19
  45. package/package.json +82 -83
  46. package/src/account/account.repository.ts +11 -11
  47. package/src/account/account.ts +271 -271
  48. package/src/account/interfaces/account-attr.interface.ts +31 -31
  49. package/src/account-system-entity/account-system-entity.ts +65 -65
  50. package/src/account-system-entity/post-history.repository.ts +11 -11
  51. package/src/config.ts +382 -382
  52. package/src/customer/customer.ts +299 -299
  53. package/src/customer/finance-customer.repository.ts +13 -13
  54. package/src/customer/interfaces/customer.repository.interface.ts +3 -3
  55. package/src/customer/interfaces/finance-customer-attr.interface.ts +10 -10
  56. package/src/customer/interfaces/finance-customer.repository.interface.ts +4 -4
  57. package/src/database.ts +15 -15
  58. package/src/document/document-item.repository.ts +11 -11
  59. package/src/document/document-item.ts +57 -21
  60. package/src/document/document.repository.ts +11 -11
  61. package/src/document/document.ts +190 -84
  62. package/src/document/interfaces/document-attr.interface.ts +28 -28
  63. package/src/document/interfaces/document-find-all.interface.ts +11 -0
  64. package/src/document/interfaces/document-item-attr.interface.ts +22 -22
  65. package/src/document/interfaces/document-item.repository.interface.ts +4 -4
  66. package/src/enum/doc-type.enum.ts +8 -8
  67. package/src/enum/index.ts +17 -17
  68. package/src/enum/payment-method.enum.ts +3 -3
  69. package/src/enum/payment-type.enum.ts +4 -4
  70. package/src/finance-company/finance-company.repository.ts +11 -11
  71. package/src/finance-company/finance-company.ts +1754 -1754
  72. package/src/helpers/typeof.ts +29 -29
  73. package/src/index.ts +32 -32
  74. package/src/interfaces/account-system.interface.ts +20 -20
  75. package/src/interfaces/index.ts +3 -3
  76. package/src/models/account.entity.ts +206 -206
  77. package/src/models/customer.entity.ts +93 -93
  78. package/src/models/document-item.entity.ts +143 -143
  79. package/src/models/document.entity.ts +211 -211
  80. package/src/models/finance-company.entity.ts +25 -25
  81. package/src/models/journal-entry.entity.ts +110 -110
  82. package/src/models/ledger-transaction.entity.ts +148 -148
  83. package/src/models/payment-item.entity.ts +60 -60
  84. package/src/models/payment-method-type.entity.ts +70 -70
  85. package/src/models/payment-method.entity.ts +51 -51
  86. package/src/models/payment.entity.ts +161 -161
  87. package/src/models/post-history.entity.ts +41 -41
  88. package/src/payment/interfaces/payment-attr.interface.ts +23 -23
  89. package/src/payment/interfaces/payment-params.interface.ts +8 -8
  90. package/src/payment/payment.repository.ts +11 -11
  91. package/src/payment/payment.ts +217 -217
  92. package/src/payment-item/interfaces/payment-item-attr.interface.ts +10 -10
  93. package/src/payment-item/payment-item.repository.ts +11 -11
  94. package/src/payment-item/payment-item.ts +125 -125
  95. package/src/payment-method/payment-method.repository.ts +11 -11
  96. package/src/payment-method-type/payment-method-type.repository.ts +11 -11
  97. package/src/test-document.ts +25 -25
  98. package/tsconfig.build.json +4 -4
  99. package/tsconfig.json +22 -22
  100. package/tslint.json +18 -18
  101. package/dist/account/entities/account.entity.d.ts +0 -26
  102. package/dist/account/entities/account.entity.js +0 -199
  103. package/dist/account/entities/account.entity.js.map +0 -1
  104. package/dist/account/entities/fee-associated-object.entity.d.ts +0 -6
  105. package/dist/account/entities/fee-associated-object.entity.js +0 -52
  106. package/dist/account/entities/fee-associated-object.entity.js.map +0 -1
  107. package/dist/account/index.d.ts +0 -6
  108. package/dist/account/index.js +0 -10
  109. package/dist/account/index.js.map +0 -1
  110. package/dist/account/interfaces/account.repository.interface.d.ts +0 -3
  111. package/dist/account/interfaces/account.repository.interface.js +0 -3
  112. package/dist/account/interfaces/account.repository.interface.js.map +0 -1
  113. package/dist/account-system-entity/index.d.ts +0 -2
  114. package/dist/account-system-entity/index.js +0 -6
  115. package/dist/account-system-entity/index.js.map +0 -1
  116. package/dist/account-system-entity/post-history.entity.d.ts +0 -11
  117. package/dist/account-system-entity/post-history.entity.js +0 -65
  118. package/dist/account-system-entity/post-history.entity.js.map +0 -1
  119. package/dist/base/account-system.interface.d.ts +0 -7
  120. package/dist/base/account-system.interface.js +0 -3
  121. package/dist/base/account-system.interface.js.map +0 -1
  122. package/dist/base/address.base.abstract.d.ts +0 -4
  123. package/dist/base/address.base.abstract.js +0 -10
  124. package/dist/base/address.base.abstract.js.map +0 -1
  125. package/dist/base/base.address.d.ts +0 -8
  126. package/dist/base/base.address.js +0 -15
  127. package/dist/base/base.address.js.map +0 -1
  128. package/dist/base/base.object.d.ts +0 -7
  129. package/dist/base/base.object.js +0 -14
  130. package/dist/base/base.object.js.map +0 -1
  131. package/dist/base/base.owner.d.ts +0 -23
  132. package/dist/base/base.owner.js +0 -34
  133. package/dist/base/base.owner.js.map +0 -1
  134. package/dist/base/base.repository.abstract.d.ts +0 -12
  135. package/dist/base/base.repository.abstract.js +0 -22
  136. package/dist/base/base.repository.abstract.js.map +0 -1
  137. package/dist/base/base.repository.interface.d.ts +0 -9
  138. package/dist/base/base.repository.interface.js +0 -3
  139. package/dist/base/base.repository.interface.js.map +0 -1
  140. package/dist/base/index.d.ts +0 -4
  141. package/dist/base/index.js +0 -10
  142. package/dist/base/index.js.map +0 -1
  143. package/dist/base/object/base.object.abstract.d.ts +0 -5
  144. package/dist/base/object/base.object.abstract.js +0 -7
  145. package/dist/base/object/base.object.abstract.js.map +0 -1
  146. package/dist/base/object/base.object.d.ts +0 -7
  147. package/dist/base/object/base.object.js +0 -14
  148. package/dist/base/object/base.object.js.map +0 -1
  149. package/dist/base/object/object.interface.d.ts +0 -4
  150. package/dist/base/object/object.interface.js +0 -3
  151. package/dist/base/object/object.interface.js.map +0 -1
  152. package/dist/base/object.base.abstract.d.ts +0 -5
  153. package/dist/base/object.base.abstract.js +0 -11
  154. package/dist/base/object.base.abstract.js.map +0 -1
  155. package/dist/base/owner/base.owner.abstract.d.ts +0 -20
  156. package/dist/base/owner/base.owner.abstract.js +0 -8
  157. package/dist/base/owner/base.owner.abstract.js.map +0 -1
  158. package/dist/base/owner/base.owner.d.ts +0 -22
  159. package/dist/base/owner/base.owner.js +0 -31
  160. package/dist/base/owner/base.owner.js.map +0 -1
  161. package/dist/base/owner/owner.interface.d.ts +0 -19
  162. package/dist/base/owner/owner.interface.js.map +0 -1
  163. package/dist/base/person.base.abstract.d.ts +0 -21
  164. package/dist/base/person.base.abstract.js +0 -17
  165. package/dist/base/person.base.abstract.js.map +0 -1
  166. package/dist/base/repository/base.repository.abstract.d.ts +0 -12
  167. package/dist/base/repository/base.repository.abstract.js +0 -22
  168. package/dist/base/repository/base.repository.abstract.js.map +0 -1
  169. package/dist/base/repository/base.repository.interface.d.ts +0 -9
  170. package/dist/base/repository/base.repository.interface.js +0 -3
  171. package/dist/base/repository/base.repository.interface.js.map +0 -1
  172. package/dist/customer/customer.repository.d.ts +0 -0
  173. package/dist/customer/customer.repository.js +0 -1
  174. package/dist/customer/customer.repository.js.map +0 -1
  175. package/dist/customer/entities/customer.entity.d.ts +0 -13
  176. package/dist/customer/entities/customer.entity.js +0 -111
  177. package/dist/customer/entities/customer.entity.js.map +0 -1
  178. package/dist/customer/index.d.ts +0 -7
  179. package/dist/customer/index.js +0 -10
  180. package/dist/customer/index.js.map +0 -1
  181. package/dist/document/entities/document-item.entity.d.ts +0 -27
  182. package/dist/document/entities/document-item.entity.js +0 -174
  183. package/dist/document/entities/document-item.entity.js.map +0 -1
  184. package/dist/document/entities/document.entity.d.ts +0 -22
  185. package/dist/document/entities/document.entity.js +0 -139
  186. package/dist/document/entities/document.entity.js.map +0 -1
  187. package/dist/document/index.d.ts +0 -11
  188. package/dist/document/index.js +0 -20
  189. package/dist/document/index.js.map +0 -1
  190. package/dist/document/interfaces/document.repository.interface.d.ts +0 -3
  191. package/dist/document/interfaces/document.repository.interface.js +0 -3
  192. package/dist/document/interfaces/document.repository.interface.js.map +0 -1
  193. package/dist/enum/document-type.enum.d.ts +0 -7
  194. package/dist/enum/document-type.enum.js +0 -12
  195. package/dist/enum/document-type.enum.js.map +0 -1
  196. package/dist/enum/intuit-client.enum.d.ts +0 -13
  197. package/dist/enum/intuit-client.enum.js +0 -19
  198. package/dist/enum/intuit-client.enum.js.map +0 -1
  199. package/dist/finance-company/entities/finance-company.entity.d.ts +0 -13
  200. package/dist/finance-company/entities/finance-company.entity.js +0 -113
  201. package/dist/finance-company/entities/finance-company.entity.js.map +0 -1
  202. package/dist/finance-company/finance-company.entity.d.ts +0 -13
  203. package/dist/finance-company/finance-company.entity.js +0 -66
  204. package/dist/finance-company/finance-company.entity.js.map +0 -1
  205. package/dist/finance-company/index.d.ts +0 -3
  206. package/dist/finance-company/index.js +0 -8
  207. package/dist/finance-company/index.js.map +0 -1
  208. package/dist/finance-company/interfaces/finance-company-attr.interface.d.ts +0 -10
  209. package/dist/finance-company/interfaces/finance-company-attr.interface.js +0 -3
  210. package/dist/finance-company/interfaces/finance-company-attr.interface.js.map +0 -1
  211. package/dist/finance-company/interfaces/finance-company.repository.interface.d.ts +0 -3
  212. package/dist/finance-company/interfaces/finance-company.repository.interface.js +0 -3
  213. package/dist/finance-company/interfaces/finance-company.repository.interface.js.map +0 -1
  214. package/dist/interfaces/account-system-entity.interface.d.ts +0 -7
  215. package/dist/interfaces/account-system-entity.interface.js +0 -3
  216. package/dist/interfaces/account-system-entity.interface.js.map +0 -1
  217. package/dist/interfaces/customer.repository.interface.d.ts +0 -3
  218. package/dist/interfaces/customer.repository.interface.js +0 -3
  219. package/dist/interfaces/customer.repository.interface.js.map +0 -1
  220. package/dist/interfaces/finance-customer.repository.interface.d.ts +0 -3
  221. package/dist/interfaces/finance-customer.repository.interface.js +0 -3
  222. package/dist/interfaces/finance-customer.repository.interface.js.map +0 -1
  223. package/dist/interfaces/systemConfig.interface.d.ts +0 -0
  224. package/dist/interfaces/systemConfig.interface.js +0 -1
  225. package/dist/interfaces/systemConfig.interface.js.map +0 -1
  226. package/dist/intuit-client/client.d.ts +0 -14
  227. package/dist/intuit-client/client.js +0 -44
  228. package/dist/intuit-client/client.js.map +0 -1
  229. package/dist/journal-entry/entities/journal-entry.entity.d.ts +0 -16
  230. package/dist/journal-entry/entities/journal-entry.entity.js +0 -129
  231. package/dist/journal-entry/entities/journal-entry.entity.js.map +0 -1
  232. package/dist/journal-entry/index.d.ts +0 -6
  233. package/dist/journal-entry/index.js +0 -10
  234. package/dist/journal-entry/index.js.map +0 -1
  235. package/dist/journal-entry/interfaces/journal-entry.repository.interface.d.ts +0 -10
  236. package/dist/journal-entry/interfaces/journal-entry.repository.interface.js +0 -3
  237. package/dist/journal-entry/interfaces/journal-entry.repository.interface.js.map +0 -1
  238. package/dist/ledger-transaction/entities/ledger-transaction.entity.d.ts +0 -19
  239. package/dist/ledger-transaction/entities/ledger-transaction.entity.js +0 -157
  240. package/dist/ledger-transaction/entities/ledger-transaction.entity.js.map +0 -1
  241. package/dist/ledger-transaction/index.d.ts +0 -6
  242. package/dist/ledger-transaction/index.js +0 -10
  243. package/dist/ledger-transaction/index.js.map +0 -1
  244. package/dist/payment/entities/payment-item.entity.d.ts +0 -10
  245. package/dist/payment/entities/payment-item.entity.js +0 -62
  246. package/dist/payment/entities/payment-item.entity.js.map +0 -1
  247. package/dist/payment/entities/payment.entity.d.ts +0 -25
  248. package/dist/payment/entities/payment.entity.js +0 -152
  249. package/dist/payment/entities/payment.entity.js.map +0 -1
  250. package/dist/payment/index.d.ts +0 -10
  251. package/dist/payment/index.js +0 -18
  252. package/dist/payment/index.js.map +0 -1
  253. package/dist/payment/interfaces/payment-item-attr.interface.d.ts +0 -8
  254. package/dist/payment/interfaces/payment-item-attr.interface.js +0 -7
  255. package/dist/payment/interfaces/payment-item-attr.interface.js.map +0 -1
  256. package/dist/payment/interfaces/payment-item.repository.interface.d.ts +0 -3
  257. package/dist/payment/interfaces/payment-item.repository.interface.js +0 -3
  258. package/dist/payment/interfaces/payment-item.repository.interface.js.map +0 -1
  259. package/dist/payment/interfaces/payment.repository.interface.d.ts +0 -3
  260. package/dist/payment/interfaces/payment.repository.interface.js +0 -3
  261. package/dist/payment/interfaces/payment.repository.interface.js.map +0 -1
  262. package/dist/payment/payment-item.repository.d.ts +0 -5
  263. package/dist/payment/payment-item.repository.js +0 -12
  264. package/dist/payment/payment-item.repository.js.map +0 -1
  265. package/dist/payment-item/interfaces/payment-item.repository.interface.d.ts +0 -3
  266. package/dist/payment-item/interfaces/payment-item.repository.interface.js +0 -3
  267. package/dist/payment-item/interfaces/payment-item.repository.interface.js.map +0 -1
  268. package/dist/quickbook-client/client.d.ts +0 -39
  269. package/dist/quickbook-client/client.js +0 -205
  270. package/dist/quickbook-client/client.js.map +0 -1
  271. package/dist/quickbook-client/constant.d.ts +0 -1
  272. package/dist/quickbook-client/constant.js +0 -5
  273. package/dist/quickbook-client/constant.js.map +0 -1
  274. package/dist/quickbook-client/index.d.ts +0 -5
  275. package/dist/quickbook-client/index.js +0 -6
  276. package/dist/quickbook-client/index.js.map +0 -1
  277. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.d.ts +0 -6
  278. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.js +0 -3
  279. package/dist/quickbook-client/interfaces/quickbook-client-call-options.interface.js.map +0 -1
  280. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.d.ts +0 -9
  281. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.js +0 -3
  282. package/dist/quickbook-client/interfaces/quickbook-client-create-account-options.interface.js.map +0 -1
  283. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.d.ts +0 -7
  284. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.js +0 -3
  285. package/dist/quickbook-client/interfaces/quickbook-client-create-customer-options.interface.js.map +0 -1
  286. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.d.ts +0 -8
  287. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.js +0 -3
  288. package/dist/quickbook-client/interfaces/quickbook-client-options.interface.js.map +0 -1
  289. package/dist/quickbook-client/quickbook-client.module-definition.d.ts +0 -2
  290. package/dist/quickbook-client/quickbook-client.module-definition.js +0 -9
  291. package/dist/quickbook-client/quickbook-client.module-definition.js.map +0 -1
  292. package/dist/quickbook-client/quickbook-client.module.d.ts +0 -6
  293. package/dist/quickbook-client/quickbook-client.module.js +0 -34
  294. package/dist/quickbook-client/quickbook-client.module.js.map +0 -1
@@ -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
+ }
@@ -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
+ }
@@ -1,26 +0,0 @@
1
- import { Model } from 'sequelize-typescript';
2
- import { LedgerTransactionModel } from '../../ledger-transaction/entities/ledger-transaction.entity';
3
- import { PaymentModel } from '../../payment/entities/payment.entity';
4
- import { DocumentItemModel } from '../../document/entities/document-item.entity';
5
- export declare class AccountModel extends Model {
6
- AccountNo: string;
7
- ParentAccountNo: string;
8
- SystemCode: string;
9
- AccSystemCode: string;
10
- AccSystemRefId: string;
11
- Name: string;
12
- Description: string;
13
- AccountType: string;
14
- AccountSubType: string;
15
- OwnerId: string;
16
- OwnerType: string;
17
- RelatedObjectId: string;
18
- RelatedObjectType: string;
19
- CreatedAt: Date;
20
- CreatedById: string;
21
- UpdatedAt: Date;
22
- UpdatedById: string;
23
- Payments: PaymentModel[];
24
- DocumentItems: DocumentItemModel[];
25
- LedgerTransactions: LedgerTransactionModel[];
26
- }
@@ -1,199 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.AccountModel = void 0;
13
- const swagger_1 = require("@nestjs/swagger");
14
- const sequelize_typescript_1 = require("sequelize-typescript");
15
- const ledger_transaction_entity_1 = require("../../ledger-transaction/entities/ledger-transaction.entity");
16
- const payment_entity_1 = require("../../payment/entities/payment.entity");
17
- const document_item_entity_1 = require("../../document/entities/document-item.entity");
18
- let AccountModel = class AccountModel extends sequelize_typescript_1.Model {
19
- };
20
- __decorate([
21
- (0, swagger_1.ApiProperty)({ type: String, description: 'AccountNo' }),
22
- (0, sequelize_typescript_1.Column)({
23
- primaryKey: true,
24
- allowNull: false,
25
- type: sequelize_typescript_1.DataType.STRING(30),
26
- }),
27
- __metadata("design:type", String)
28
- ], AccountModel.prototype, "AccountNo", void 0);
29
- __decorate([
30
- (0, swagger_1.ApiProperty)({ type: String, description: 'Parent account of this object' }),
31
- (0, sequelize_typescript_1.Column)({
32
- type: sequelize_typescript_1.DataType.STRING(30),
33
- }),
34
- __metadata("design:type", String)
35
- ], AccountModel.prototype, "ParentAccountNo", void 0);
36
- __decorate([
37
- (0, swagger_1.ApiProperty)({
38
- type: String,
39
- description: 'System Code eg. "EZC", "CRM"',
40
- }),
41
- (0, sequelize_typescript_1.Column)({
42
- allowNull: false,
43
- type: sequelize_typescript_1.DataType.STRING(10),
44
- }),
45
- __metadata("design:type", String)
46
- ], AccountModel.prototype, "SystemCode", void 0);
47
- __decorate([
48
- (0, swagger_1.ApiProperty)({
49
- type: String,
50
- description: 'Finance account system code eg. "quickbook"',
51
- }),
52
- (0, sequelize_typescript_1.Column)({
53
- allowNull: false,
54
- type: sequelize_typescript_1.DataType.STRING(10),
55
- }),
56
- __metadata("design:type", String)
57
- ], AccountModel.prototype, "AccSystemCode", void 0);
58
- __decorate([
59
- (0, swagger_1.ApiProperty)({
60
- type: String,
61
- description: 'Account id in finance system',
62
- }),
63
- (0, sequelize_typescript_1.Column)({
64
- allowNull: false,
65
- type: sequelize_typescript_1.DataType.STRING(10),
66
- }),
67
- __metadata("design:type", String)
68
- ], AccountModel.prototype, "AccSystemRefId", void 0);
69
- __decorate([
70
- (0, swagger_1.ApiProperty)({
71
- type: String,
72
- description: 'Name of the account',
73
- }),
74
- (0, sequelize_typescript_1.Column)({
75
- allowNull: true,
76
- type: sequelize_typescript_1.DataType.STRING(200),
77
- }),
78
- __metadata("design:type", String)
79
- ], AccountModel.prototype, "Name", void 0);
80
- __decorate([
81
- (0, swagger_1.ApiProperty)({
82
- type: String,
83
- description: 'Account description',
84
- }),
85
- (0, sequelize_typescript_1.Column)({
86
- allowNull: true,
87
- type: sequelize_typescript_1.DataType.TEXT,
88
- }),
89
- __metadata("design:type", String)
90
- ], AccountModel.prototype, "Description", void 0);
91
- __decorate([
92
- (0, swagger_1.ApiProperty)({
93
- type: String,
94
- description: 'Account Type',
95
- }),
96
- (0, sequelize_typescript_1.Column)({
97
- allowNull: true,
98
- type: sequelize_typescript_1.DataType.STRING(100),
99
- }),
100
- __metadata("design:type", String)
101
- ], AccountModel.prototype, "AccountType", void 0);
102
- __decorate([
103
- (0, swagger_1.ApiProperty)({
104
- type: String,
105
- description: 'Account Sub Type',
106
- }),
107
- (0, sequelize_typescript_1.Column)({
108
- allowNull: true,
109
- type: sequelize_typescript_1.DataType.STRING(100),
110
- }),
111
- __metadata("design:type", String)
112
- ], AccountModel.prototype, "AccountSubType", void 0);
113
- __decorate([
114
- (0, swagger_1.ApiProperty)({
115
- type: String,
116
- description: 'Owner id of the account',
117
- }),
118
- (0, sequelize_typescript_1.Column)({
119
- allowNull: true,
120
- type: sequelize_typescript_1.DataType.STRING(30),
121
- }),
122
- __metadata("design:type", String)
123
- ], AccountModel.prototype, "OwnerId", void 0);
124
- __decorate([
125
- (0, swagger_1.ApiProperty)({
126
- type: String,
127
- description: 'Owner type',
128
- }),
129
- (0, sequelize_typescript_1.Column)({
130
- allowNull: true,
131
- type: sequelize_typescript_1.DataType.STRING(200),
132
- }),
133
- __metadata("design:type", String)
134
- ], AccountModel.prototype, "OwnerType", void 0);
135
- __decorate([
136
- (0, swagger_1.ApiProperty)({ type: String, description: 'Associated Object id' }),
137
- (0, sequelize_typescript_1.Column)({
138
- allowNull: true,
139
- type: sequelize_typescript_1.DataType.STRING(30),
140
- }),
141
- __metadata("design:type", String)
142
- ], AccountModel.prototype, "RelatedObjectId", void 0);
143
- __decorate([
144
- (0, swagger_1.ApiProperty)({ type: String, description: 'Associated Object type' }),
145
- (0, sequelize_typescript_1.Column)({
146
- allowNull: true,
147
- type: sequelize_typescript_1.DataType.STRING(200),
148
- }),
149
- __metadata("design:type", String)
150
- ], AccountModel.prototype, "RelatedObjectType", void 0);
151
- __decorate([
152
- (0, swagger_1.ApiProperty)({
153
- example: new Date(),
154
- description: 'Timestamp for data creation.',
155
- }),
156
- sequelize_typescript_1.CreatedAt,
157
- __metadata("design:type", Date)
158
- ], AccountModel.prototype, "CreatedAt", void 0);
159
- __decorate([
160
- (0, swagger_1.ApiProperty)({
161
- example: '138140891dd211b288d34bc7b4312a49',
162
- description: 'The CreatedById for Media.',
163
- }),
164
- (0, sequelize_typescript_1.Column)({ allowNull: false, type: sequelize_typescript_1.DataType.STRING(30) }),
165
- __metadata("design:type", String)
166
- ], AccountModel.prototype, "CreatedById", void 0);
167
- __decorate([
168
- (0, swagger_1.ApiProperty)({
169
- example: new Date(),
170
- description: 'Timestamp for latest data modification',
171
- }),
172
- sequelize_typescript_1.UpdatedAt,
173
- __metadata("design:type", Date)
174
- ], AccountModel.prototype, "UpdatedAt", void 0);
175
- __decorate([
176
- (0, swagger_1.ApiProperty)({
177
- example: '138140891dd211b288d34bc7b4312a49',
178
- description: 'The UpdatedById for Media.',
179
- }),
180
- (0, sequelize_typescript_1.Column)({ allowNull: false, type: sequelize_typescript_1.DataType.STRING(30) }),
181
- __metadata("design:type", String)
182
- ], AccountModel.prototype, "UpdatedById", void 0);
183
- __decorate([
184
- (0, sequelize_typescript_1.HasMany)(() => payment_entity_1.PaymentModel),
185
- __metadata("design:type", Array)
186
- ], AccountModel.prototype, "Payments", void 0);
187
- __decorate([
188
- (0, sequelize_typescript_1.HasMany)(() => document_item_entity_1.DocumentItemModel),
189
- __metadata("design:type", Array)
190
- ], AccountModel.prototype, "DocumentItems", void 0);
191
- __decorate([
192
- (0, sequelize_typescript_1.HasMany)(() => ledger_transaction_entity_1.LedgerTransactionModel),
193
- __metadata("design:type", Array)
194
- ], AccountModel.prototype, "LedgerTransactions", void 0);
195
- AccountModel = __decorate([
196
- (0, sequelize_typescript_1.Table)({ tableName: 'finance_Account', createdAt: false, updatedAt: false })
197
- ], AccountModel);
198
- exports.AccountModel = AccountModel;
199
- //# sourceMappingURL=account.entity.js.map