@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
package/src/database.ts CHANGED
@@ -1,15 +1,15 @@
1
- import { Sequelize, SequelizeOptions } from 'sequelize-typescript';
2
-
3
- let sequelize: Sequelize;
4
-
5
- function init(sequelizeOptions: SequelizeOptions) {
6
- sequelize = new Sequelize(sequelizeOptions);
7
-
8
- sequelize.addModels([__dirname + '/models']);
9
- }
10
-
11
- function getConnection() {
12
- return sequelize;
13
- }
14
-
15
- export { init, getConnection };
1
+ import { Sequelize, SequelizeOptions } from 'sequelize-typescript';
2
+
3
+ let sequelize: Sequelize;
4
+
5
+ function init(sequelizeOptions: SequelizeOptions) {
6
+ sequelize = new Sequelize(sequelizeOptions);
7
+
8
+ sequelize.addModels([__dirname + '/models']);
9
+ }
10
+
11
+ function getConnection() {
12
+ return sequelize;
13
+ }
14
+
15
+ export { init, getConnection };
@@ -1,11 +1,11 @@
1
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
- import DocumentItemModel from '../models/document-item.entity';
3
-
4
- export class DocumentItemRepository
5
- extends RepositoryBase<DocumentItemModel>
6
- implements IRepositoryBase<DocumentItemModel>
7
- {
8
- constructor() {
9
- super(DocumentItemModel);
10
- }
11
- }
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
+ import DocumentItemModel from '../models/document-item.entity';
3
+
4
+ export class DocumentItemRepository
5
+ extends RepositoryBase<DocumentItemModel>
6
+ implements IRepositoryBase<DocumentItemModel>
7
+ {
8
+ constructor() {
9
+ super(DocumentItemModel);
10
+ }
11
+ }
@@ -1,6 +1,8 @@
1
1
  import Document from './document';
2
2
  import { ObjectBase } from '@tomei/general';
3
3
  import { DocumentItemRepository } from './document-item.repository';
4
+ import { ClassError } from '@tomei/general';
5
+ import { IDocumentItemAttr } from './interfaces/document-item-attr.interface';
4
6
 
5
7
  export default class DocumentItem extends ObjectBase {
6
8
  DocumentItemId = 'New';
@@ -72,26 +74,60 @@ export default class DocumentItem extends ObjectBase {
72
74
  this._Document = document;
73
75
  }
74
76
 
75
- init(data: any) {
76
- this.DocumentItemId = data.DocumentItemId || this.DocumentItemId;
77
- this.DocNo = data.DocNo || this.DocNo;
78
- this.Name = data.Name || this.Name;
79
- this.NameBM = data.NameBM || this.NameBM;
80
- this.Description = data.Description || this.Description;
81
- this.ItemId = data.ItemId || this.ItemId;
82
- this.ItemType = data.ItemType || this.ItemType;
83
- this.ItemSKU = data.ItemSKU || this.ItemSKU;
84
- this.ItemSerialNo = data.ItemSerialNo || this.ItemSerialNo;
85
- this.Currency = data.Currency || this.Currency;
86
- this.UnitPrice = data.UnitPrice || this.UnitPrice;
87
- this.Quantity = data.Quantity || this.Quantity;
88
- this.QuantityUOM = data.QuantityUOM || this.QuantityUOM;
89
- this._Amount = data.Amount || this._Amount;
90
- this.TaxCode = data.TaxCode || this.TaxCode;
91
- this.TaxAmount = data.TaxAmount || this.TaxAmount;
92
- this.TaxRate = data.TaxRate || this.TaxRate;
93
- this.TaxInclusiveYN = data.TaxInclusiveYN || this.TaxInclusiveYN;
94
- this.DtAccountNo = data.DtAccountNo || this.DtAccountNo;
95
- this.CtAccountNo = data.CtAccountNo || this.CtAccountNo;
77
+ init(params: IDocumentItemAttr) {
78
+ this.DocumentItemId = params.DocumentItemId || this.DocumentItemId;
79
+ this.DocNo = params.DocNo || this.DocNo;
80
+ this.Name = params.Name || this.Name;
81
+ this.NameBM = params.NameBM || this.NameBM;
82
+ this.Description = params.Description || this.Description;
83
+ this.ItemId = params.ItemId || this.ItemId;
84
+ this.ItemType = params.ItemType || this.ItemType;
85
+ this.ItemSKU = params.ItemSKU || this.ItemSKU;
86
+ this.ItemSerialNo = params.ItemSerialNo || this.ItemSerialNo;
87
+ this.Currency = params.Currency || this.Currency;
88
+ this.UnitPrice = params.UnitPrice || this.UnitPrice;
89
+ this.Quantity = params.Quantity || this.Quantity;
90
+ this.QuantityUOM = params.QuantityUOM || this.QuantityUOM;
91
+ this._Amount = params.Amount || this._Amount;
92
+ this.TaxCode = params.TaxCode || this.TaxCode;
93
+ this.TaxAmount = params.TaxAmount || this.TaxAmount;
94
+ this.TaxRate = params.TaxRate || this.TaxRate;
95
+ this.TaxInclusiveYN = params.TaxInclusiveYN || this.TaxInclusiveYN;
96
+ this.DtAccountNo = params.DtAccountNo || this.DtAccountNo;
97
+ this.CtAccountNo = params.CtAccountNo || this.CtAccountNo;
98
+ }
99
+
100
+ public static async initDocumentItems(
101
+ dbTransaction: any,
102
+ document: Document,
103
+ ) {
104
+ try {
105
+ const documentItems = await this._RepositoryBase.findAll({
106
+ where: {
107
+ DocNo: document.DocNo,
108
+ },
109
+ transaction: dbTransaction,
110
+ });
111
+
112
+ if (documentItems) {
113
+ const documentItemObjects = documentItems.map((documentItem) => {
114
+ const di = new DocumentItem(dbTransaction, document);
115
+ di.init({ ...documentItem.get({ plain: true }) });
116
+ return di;
117
+ });
118
+
119
+ return documentItemObjects;
120
+ } else {
121
+ const notFoundError = new ClassError(
122
+ 'Document',
123
+ 'InitDocumentItemErrMsg00',
124
+ `No Document Item record found.`,
125
+ );
126
+
127
+ throw notFoundError;
128
+ }
129
+ } catch (error) {
130
+ throw error;
131
+ }
96
132
  }
97
133
  }
@@ -1,11 +1,11 @@
1
- import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
- import DocumentModel from '../models/document.entity';
3
-
4
- export class DocumentRepository
5
- extends RepositoryBase<DocumentModel>
6
- implements IRepositoryBase<DocumentModel>
7
- {
8
- constructor() {
9
- super(DocumentModel);
10
- }
11
- }
1
+ import { RepositoryBase, IRepositoryBase } from '@tomei/general';
2
+ import DocumentModel from '../models/document.entity';
3
+
4
+ export class DocumentRepository
5
+ extends RepositoryBase<DocumentModel>
6
+ implements IRepositoryBase<DocumentModel>
7
+ {
8
+ constructor() {
9
+ super(DocumentModel);
10
+ }
11
+ }
@@ -1,4 +1,5 @@
1
1
  import * as util from 'util';
2
+ import * as path from 'path';
2
3
  import * as fs from 'fs';
3
4
  import * as puppeteer from 'puppeteer';
4
5
  import { RecordNotFoundError } from '@tomei/general/dist/class/exceptions/record-not-found.error';
@@ -12,13 +13,17 @@ import {
12
13
  } from '@tomei/media';
13
14
  import { DocumentStatus, DocType } from '../enum';
14
15
  import { IDocumentAttr } from './interfaces/document-attr.interface';
16
+ import { IDocumentFindAll } from './interfaces/document-find-all.interface';
15
17
  import { DocumentItemRepository } from './document-item.repository';
16
18
  import DocumentItem from './document-item';
17
19
  import { AccountSystemEntity } from '../account-system-entity/account-system-entity';
18
20
  import { DocumentRepository } from './document.repository';
19
21
  import FinanceCustomerBase from '../customer/customer';
20
22
  import DocumentModel from '../models/document.entity';
21
- import * as path from 'path';
23
+ import DocumentItemModel from '../models/document-item.entity';
24
+ import { ClassError, LoginUserBase } from '@tomei/general';
25
+ import { ApplicationConfig } from '@tomei/config';
26
+ import { Op } from 'sequelize';
22
27
 
23
28
  export default class Document extends AccountSystemEntity {
24
29
  DocNo = 'New';
@@ -141,7 +146,6 @@ export default class Document extends AccountSystemEntity {
141
146
  })
142
147
  .then((documentData) => {
143
148
  if (documentData) {
144
- this.IsNewRecord = false;
145
149
  this.DocType = documentData.DocType;
146
150
  this.DocDate = documentData.DocDate;
147
151
  this.CompanyId = documentData.CompanyId;
@@ -181,47 +185,85 @@ export default class Document extends AccountSystemEntity {
181
185
  }
182
186
  }
183
187
 
188
+ init(params: IDocumentAttr) {
189
+ this.DocNo = params.DocNo;
190
+ this.DocType = params.DocType;
191
+ this.DocDate = params.DocDate;
192
+ this.CompanyId = params.CompanyId;
193
+ this.Currency = params.Currency;
194
+ this.Amount = params.Amount;
195
+ this.Description = params.Description;
196
+ this.Status = params.Status;
197
+ this.IssuedById = params.IssuedById;
198
+ this.IssuedToId = params.IssuedToId;
199
+ this.IssuedToType = params.IssuedToType;
200
+ this.RelatedObjectId = params.RelatedObjectId;
201
+ this.RelatedObjectType = params.RelatedObjectType;
202
+ this.CreatedById = params.CreatedById;
203
+ this.CreatedAt = params.CreatedAt;
204
+ this.UpdatedById = params.UpdatedById;
205
+ this.UpdatedAt = params.UpdatedAt;
206
+ this.DocPDFFileMediaId = params.DocPDFFileMediaId;
207
+ this.DocHTMLFileMediaId = params.DocHTMLFileMediaId;
208
+ this.AccSystemRefId = params.AccSystemRefId;
209
+ this.PostedToAccSystemYN = params.PostedToAccSystemYN;
210
+ this.PostedById = params.PostedById;
211
+ this.PostedDateTime = params.PostedDateTime;
212
+ this.UseAccSystemDocYN = params.UseAccSystemDocYN;
213
+ }
214
+
184
215
  public static async initDocument(dbTransaction: any, docNo: string) {
185
- const document = new Document(dbTransaction);
186
- const documentData = await this._RepositoryBase.findOne({
187
- where: {
188
- DocNo: docNo,
189
- },
190
- });
191
- if (documentData) {
192
- document.IsNewRecord = false;
193
- document.DocType = documentData.DocType;
194
- document.DocDate = documentData.DocDate;
195
- document.CompanyId = documentData.CompanyId;
196
- document.Currency = documentData.Currency;
197
- document.Amount = documentData.Amount;
198
- document.Description = documentData.Description;
199
- document.Status = documentData.Status;
200
- document.IssuedById = documentData.IssuedById;
201
- document.IssuedToId = documentData.IssuedToId;
202
- document.IssuedToType = documentData.IssuedToType;
203
- document.RelatedObjectId = documentData.RelatedObjectId;
204
- document.RelatedObjectType = documentData.RelatedObjectType;
205
- document.CreatedById = documentData.CreatedById;
206
- document.CreatedAt = documentData.CreatedAt;
207
- document.UpdatedById = documentData.UpdatedById;
208
- document.UpdatedAt = documentData.UpdatedAt;
209
- document.DocPDFFileMediaId = documentData.DocPDFFileMediaId;
210
- document.DocHTMLFileMediaId = documentData.DocHTMLFileMediaId;
211
- document.AccSystemRefId = documentData.AccSystemRefId;
212
- document.PostedToAccSystemYN = documentData.PostedToAccSystemYN;
213
- document.PostedById = documentData.PostedById;
214
- document.PostedDateTime = documentData.PostedDateTime;
215
- document.UseAccSystemDocYN = documentData.UseAccSystemDocYN;
216
- document.IsNewRecord = false;
217
- } else {
218
- const notFoundError = new RecordNotFoundError(
219
- 'FinanceDocumentErrMsg',
220
- 'No Record Found.',
221
- );
222
- throw notFoundError;
216
+ try {
217
+ const document = new Document(dbTransaction);
218
+ const documentData = await this._RepositoryBase.findOne({
219
+ where: {
220
+ DocNo: docNo,
221
+ },
222
+ include: [
223
+ {
224
+ model: DocumentItemModel,
225
+ },
226
+ ],
227
+ });
228
+ if (documentData) {
229
+ document.DocNo = documentData.DocNo;
230
+ document.DocType = documentData.DocType;
231
+ document.DocDate = documentData.DocDate;
232
+ document.CompanyId = documentData.CompanyId;
233
+ document.Currency = documentData.Currency;
234
+ document.Amount = documentData.Amount;
235
+ document.Description = documentData.Description;
236
+ document.Status = documentData.Status;
237
+ document.IssuedById = documentData.IssuedById;
238
+ document.IssuedToId = documentData.IssuedToId;
239
+ document.IssuedToType = documentData.IssuedToType;
240
+ document.RelatedObjectId = documentData.RelatedObjectId;
241
+ document.RelatedObjectType = documentData.RelatedObjectType;
242
+ document.CreatedById = documentData.CreatedById;
243
+ document.CreatedAt = documentData.CreatedAt;
244
+ document.UpdatedById = documentData.UpdatedById;
245
+ document.UpdatedAt = documentData.UpdatedAt;
246
+ document.DocPDFFileMediaId = documentData.DocPDFFileMediaId;
247
+ document.DocHTMLFileMediaId = documentData.DocHTMLFileMediaId;
248
+ document.AccSystemRefId = documentData.AccSystemRefId;
249
+ document.PostedToAccSystemYN = documentData.PostedToAccSystemYN;
250
+ document.PostedById = documentData.PostedById;
251
+ document.PostedDateTime = documentData.PostedDateTime;
252
+ document.UseAccSystemDocYN = documentData.UseAccSystemDocYN;
253
+ document.IsNewRecord = false;
254
+ } else {
255
+ const notFoundError = new ClassError(
256
+ 'Document',
257
+ 'InitDocumentErrMsg00',
258
+ `No Document record found.`,
259
+ );
260
+
261
+ throw notFoundError;
262
+ }
263
+ return documentData;
264
+ } catch (error) {
265
+ throw error;
223
266
  }
224
- return document;
225
267
  }
226
268
 
227
269
  /**
@@ -239,23 +281,9 @@ export default class Document extends AccountSystemEntity {
239
281
  get DocumentItems(): Promise<DocumentItem[]> {
240
282
  return new Promise((resolve, reject) => {
241
283
  if (!this.IsNewRecord) {
242
- Document._DocumentItemRepository
243
- .findAll({
244
- where: {
245
- DocNo: this.DocNo,
246
- },
247
- transaction: this._DbTransaction,
248
- })
284
+ DocumentItem.initDocumentItems(this._DbTransaction, this)
249
285
  .then((documentItems) => {
250
- const documentItemObjects = documentItems.map((documentItem) => {
251
- const di = new DocumentItem(this._DbTransaction, this);
252
- di.init({ ...documentItem.get({ plain: true }) });
253
- });
254
- return Promise.all(documentItemObjects);
255
- })
256
- .then((documentItemObjects) => {
257
- this._DocumentItems = documentItemObjects;
258
- resolve(this._DocumentItems);
286
+ return Promise.all(documentItems);
259
287
  })
260
288
  .catch((err) => {
261
289
  reject(err);
@@ -783,33 +811,6 @@ export default class Document extends AccountSystemEntity {
783
811
  })();
784
812
  }
785
813
 
786
- init(params: IDocumentAttr) {
787
- this.DocNo = params.DocNo;
788
- this.DocType = params.DocType;
789
- this.DocDate = params.DocDate;
790
- this.CompanyId = params.CompanyId;
791
- this.Currency = params.Currency;
792
- this.Amount = params.Amount;
793
- this.Description = params.Description;
794
- this.Status = params.Status;
795
- this.IssuedById = params.IssuedById;
796
- this.IssuedToId = params.IssuedToId;
797
- this.IssuedToType = params.IssuedToType;
798
- this.RelatedObjectId = params.RelatedObjectId;
799
- this.RelatedObjectType = params.RelatedObjectType;
800
- this.CreatedById = params.CreatedById;
801
- this.CreatedAt = params.CreatedAt;
802
- this.UpdatedById = params.UpdatedById;
803
- this.UpdatedAt = params.UpdatedAt;
804
- this.DocPDFFileMediaId = params.DocPDFFileMediaId;
805
- this.DocHTMLFileMediaId = params.DocHTMLFileMediaId;
806
- this.AccSystemRefId = params.AccSystemRefId;
807
- this.PostedToAccSystemYN = params.PostedToAccSystemYN;
808
- this.PostedById = params.PostedById;
809
- this.PostedDateTime = params.PostedDateTime;
810
- this.UseAccSystemDocYN = params.UseAccSystemDocYN;
811
- }
812
-
813
814
  /**
814
815
  * Returns generated HTML & PDF Invoice Media
815
816
  *
@@ -1007,4 +1008,109 @@ export default class Document extends AccountSystemEntity {
1007
1008
  order: [['CreatedAt', 'DESC']],
1008
1009
  });
1009
1010
  }
1011
+
1012
+ /**
1013
+ * Retrieve a list of documents from the database.
1014
+ *
1015
+ * @param loginUser - The user who is issuing the request.
1016
+ * @param dbTransaction - The database transaction to be used, if any.
1017
+ * @param page - Optional. The page number for paginated results.
1018
+ * @param row - Optional. The number of rows to retrieve per page.
1019
+ * @param search - Optional. An object containing search criteria.
1020
+ *
1021
+ * @returns {count: number, rows: DocumentModel[]} - An object containing the count of matching documents and an array of DocumentModel objects.
1022
+ * @throws {Error} - If the user does not have the required privilege or if an error occurs during the operation.
1023
+ */
1024
+ async findAll(
1025
+ loginUser: LoginUserBase,
1026
+ dbTransaction: any,
1027
+ page?: number,
1028
+ row?: number,
1029
+ search?: IDocumentFindAll,
1030
+ ): Promise<{ count: number; rows: DocumentModel[] }> {
1031
+ try {
1032
+ const systemCode =
1033
+ ApplicationConfig.getComponentConfigValue('system-code');
1034
+
1035
+ const isPrivileged = await loginUser.checkPrivileges(
1036
+ systemCode,
1037
+ 'Invoice - View',
1038
+ );
1039
+ if (!isPrivileged) {
1040
+ throw new ClassError(
1041
+ 'Document',
1042
+ 'DocumentFindAllErrMsg00',
1043
+ `You do not have 'Invoice - View' privilege.`,
1044
+ );
1045
+ }
1046
+
1047
+ let options: any = {
1048
+ transaction: dbTransaction,
1049
+ };
1050
+
1051
+ /*Create an object to store search criteria*/
1052
+ const searchObj: IDocumentFindAll | any = {};
1053
+
1054
+ /*Apply search filters if they are provided*/
1055
+ if (search.DocNo) {
1056
+ searchObj.DocNo = search.DocNo;
1057
+ }
1058
+
1059
+ if (search.DocType) {
1060
+ searchObj.DocType = search.DocType;
1061
+ }
1062
+
1063
+ if (search.StartDate) {
1064
+ searchObj.DocDate = {
1065
+ ...searchObj.DocDate,
1066
+ [Op.gte]: new Date(search.StartDate).toISOString(),
1067
+ };
1068
+ }
1069
+
1070
+ if (search.EndDate) {
1071
+ searchObj.DocDate = {
1072
+ ...searchObj.DocDate,
1073
+ [Op.lte]: new Date(search.EndDate).toISOString(),
1074
+ };
1075
+ }
1076
+
1077
+ if (search.IssuedToId) {
1078
+ searchObj.IssuedToId = search.IssuedToId;
1079
+ }
1080
+
1081
+ if (search.IssuedToType) {
1082
+ searchObj.IssuedToType = search.IssuedToType;
1083
+ }
1084
+
1085
+ if (search.Status) {
1086
+ searchObj.Status = search.Status;
1087
+ }
1088
+
1089
+ /*If pagination is requested, update query options*/
1090
+ if (page && row) {
1091
+ options = {
1092
+ ...options,
1093
+ limit: row,
1094
+ offset: row * (page - 1),
1095
+ order: [['CreatedAt', 'DESC']],
1096
+ };
1097
+ }
1098
+
1099
+ /*If search criteria exist, add them to the query options*/
1100
+ if (Object.keys(searchObj).length) {
1101
+ options = {
1102
+ ...options,
1103
+ where: searchObj,
1104
+ };
1105
+ }
1106
+
1107
+ /*Retrieve documents from the database with pagination and search filters applied*/
1108
+ const documents = await this.RepositoryBase.findAllWithPagination(
1109
+ options,
1110
+ );
1111
+ return documents;
1112
+ } catch (error) {
1113
+ throw error;
1114
+ }
1115
+ }
1010
1116
  }
@@ -1,28 +1,28 @@
1
- import { DocType, DocumentStatus } from '../../enum';
2
-
3
- export class IDocumentAttr {
4
- DocNo: string;
5
- DocType: DocType;
6
- DocDate: Date;
7
- CompanyId: string;
8
- Currency: string;
9
- Amount: number;
10
- Description: string;
11
- Status: DocumentStatus;
12
- IssuedById: string;
13
- IssuedToId: string;
14
- IssuedToType: string;
15
- RelatedObjectId?: string;
16
- RelatedObjectType?: string;
17
- CreatedById: string;
18
- CreatedAt: Date;
19
- UpdatedById?: string;
20
- UpdatedAt?: Date;
21
- DocPDFFileMediaId?: string;
22
- DocHTMLFileMediaId?: string;
23
- AccSystemRefId?: string;
24
- PostedToAccSystemYN: string;
25
- PostedById?: string;
26
- PostedDateTime?: Date;
27
- UseAccSystemDocYN: string;
28
- }
1
+ import { DocType, DocumentStatus } from '../../enum';
2
+
3
+ export class IDocumentAttr {
4
+ DocNo: string;
5
+ DocType: DocType;
6
+ DocDate: Date;
7
+ CompanyId: string;
8
+ Currency: string;
9
+ Amount: number;
10
+ Description: string;
11
+ Status: DocumentStatus;
12
+ IssuedById: string;
13
+ IssuedToId: string;
14
+ IssuedToType: string;
15
+ RelatedObjectId?: string;
16
+ RelatedObjectType?: string;
17
+ CreatedById: string;
18
+ CreatedAt: Date;
19
+ UpdatedById?: string;
20
+ UpdatedAt?: Date;
21
+ DocPDFFileMediaId?: string;
22
+ DocHTMLFileMediaId?: string;
23
+ AccSystemRefId?: string;
24
+ PostedToAccSystemYN: string;
25
+ PostedById?: string;
26
+ PostedDateTime?: Date;
27
+ UseAccSystemDocYN: string;
28
+ }
@@ -0,0 +1,11 @@
1
+ import { DocType, DocumentStatus } from '../../enum';
2
+
3
+ export interface IDocumentFindAll {
4
+ DocNo?: string;
5
+ DocType?: DocType;
6
+ StartDate?: Date;
7
+ EndDate?: Date;
8
+ IssuedToId?: string;
9
+ IssuedToType?: string;
10
+ Status?: DocumentStatus;
11
+ }
@@ -1,22 +1,22 @@
1
- export class IDocumentItemAttr {
2
- DocumentItemId: string;
3
- DocNo: string;
4
- Name: string;
5
- NameBM: string;
6
- Description?: string;
7
- ItemId?: string;
8
- ItemType?: string;
9
- ItemSKU?: string;
10
- ItemSerialNo?: string;
11
- Currency: string;
12
- UnitPrice?: number;
13
- Quantity?: number;
14
- QuantityUOM?: string;
15
- Amount: number;
16
- TaxCode?: string;
17
- TaxAmount?: number;
18
- TaxRate?: number;
19
- TaxInclusiveYN?: string;
20
- DtAccountNo?: string;
21
- CtAccountNo?: string;
22
- }
1
+ export class IDocumentItemAttr {
2
+ DocumentItemId: string;
3
+ DocNo: string;
4
+ Name: string;
5
+ NameBM: string;
6
+ Description?: string;
7
+ ItemId?: string;
8
+ ItemType?: string;
9
+ ItemSKU?: string;
10
+ ItemSerialNo?: string;
11
+ Currency: string;
12
+ UnitPrice?: number;
13
+ Quantity?: number;
14
+ QuantityUOM?: string;
15
+ Amount: number;
16
+ TaxCode?: string;
17
+ TaxAmount?: number;
18
+ TaxRate?: number;
19
+ TaxInclusiveYN?: string;
20
+ DtAccountNo?: string;
21
+ CtAccountNo?: string;
22
+ }
@@ -1,4 +1,4 @@
1
- import { IRepositoryBase } from '@tomei/general';
2
- import DocumentItemModel from '../../models/document-item.entity';
3
-
4
- export type IDocumentItemRepository = IRepositoryBase<DocumentItemModel>;
1
+ import { IRepositoryBase } from '@tomei/general';
2
+ import DocumentItemModel from '../../models/document-item.entity';
3
+
4
+ export type IDocumentItemRepository = IRepositoryBase<DocumentItemModel>;
@@ -1,8 +1,8 @@
1
- export enum DocType {
2
- INVOICE = 'Invoice',
3
- DEBIT_NOTE = 'Debit Note',
4
- CREDIT_NOTE = 'Credit Note',
5
- QUOTATION = 'Quotation',
6
- PURCHASEORDER = 'Purchase Order',
7
- RECEIPT = 'Receipt',
8
- }
1
+ export enum DocType {
2
+ INVOICE = 'Invoice',
3
+ DEBIT_NOTE = 'Debit Note',
4
+ CREDIT_NOTE = 'Credit Note',
5
+ QUOTATION = 'Quotation',
6
+ PURCHASEORDER = 'Purchase Order',
7
+ RECEIPT = 'Receipt',
8
+ }
package/src/enum/index.ts CHANGED
@@ -1,17 +1,17 @@
1
- import { ClientScopes } from './quick-book-client-scopes.enum';
2
- import { PaymentType } from './payment-type.enum';
3
- import { PaymentMethod } from './payment-method.enum';
4
- import { TransactionTypeOptions } from './transaction-type.enum';
5
- import { DocType } from './doc-type.enum';
6
- import { DocumentStatus } from './document-status.enum';
7
- import { PaymentStatus } from './payment-status.enum';
8
-
9
- export {
10
- ClientScopes,
11
- PaymentType,
12
- PaymentMethod,
13
- TransactionTypeOptions,
14
- DocType,
15
- DocumentStatus,
16
- PaymentStatus,
17
- };
1
+ import { ClientScopes } from './quick-book-client-scopes.enum';
2
+ import { PaymentType } from './payment-type.enum';
3
+ import { PaymentMethod } from './payment-method.enum';
4
+ import { TransactionTypeOptions } from './transaction-type.enum';
5
+ import { DocType } from './doc-type.enum';
6
+ import { DocumentStatus } from './document-status.enum';
7
+ import { PaymentStatus } from './payment-status.enum';
8
+
9
+ export {
10
+ ClientScopes,
11
+ PaymentType,
12
+ PaymentMethod,
13
+ TransactionTypeOptions,
14
+ DocType,
15
+ DocumentStatus,
16
+ PaymentStatus,
17
+ };