@things-factory/accounting 8.0.0-alpha.1 → 8.0.0-alpha.12

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 (362) hide show
  1. package/client/bootstrap.ts +10 -1
  2. package/client/components/accounting-category-selector.ts +136 -0
  3. package/client/components/accounting-category-view.ts +75 -0
  4. package/client/grist-editors/grist-editor-accounting-category-object.ts +83 -0
  5. package/client/grist-editors/grist-renderer-accounting-category-object.ts +13 -0
  6. package/client/pages/account/account-list-page.ts +33 -2
  7. package/client/pages/accounting-category/accounting-category-list-page.ts +31 -1
  8. package/client/pages/accounting-category/accounting-category-tree-page.ts +338 -0
  9. package/client/pages/accounting-document/accounting-document-importer.ts +90 -0
  10. package/client/pages/accounting-document/accounting-document-list-page.ts +398 -0
  11. package/client/pages/bank/bank-importer.ts +90 -0
  12. package/client/pages/{ledger/ledger-list-page.ts → bank/bank-list-page.ts} +118 -57
  13. package/client/pages/{ledger/ledger-importer.ts → bank-account/bank-account-importer.ts} +10 -17
  14. package/client/pages/bank-account/bank-account-list-page.ts +398 -0
  15. package/client/pages/financial-institution/financial-institution-importer.ts +90 -0
  16. package/client/pages/financial-institution/financial-institution-list-page.ts +398 -0
  17. package/client/pages/payment/payment-importer.ts +90 -0
  18. package/client/pages/payment/payment-list-page.ts +398 -0
  19. package/client/route.ts +0 -4
  20. package/client/types/accounting-category.ts +23 -0
  21. package/client/types/index.ts +1 -0
  22. package/dist-client/bootstrap.js +7 -1
  23. package/dist-client/bootstrap.js.map +1 -1
  24. package/dist-client/components/accounting-category-selector.d.ts +16 -0
  25. package/dist-client/components/accounting-category-selector.js +134 -0
  26. package/dist-client/components/accounting-category-selector.js.map +1 -0
  27. package/dist-client/components/accounting-category-view.d.ts +14 -0
  28. package/dist-client/components/accounting-category-view.js +81 -0
  29. package/dist-client/components/accounting-category-view.js.map +1 -0
  30. package/dist-client/grist-editors/grist-editor-accounting-category-object.d.ts +11 -0
  31. package/dist-client/grist-editors/grist-editor-accounting-category-object.js +71 -0
  32. package/dist-client/grist-editors/grist-editor-accounting-category-object.js.map +1 -0
  33. package/dist-client/grist-editors/grist-renderer-accounting-category-object.d.ts +2 -0
  34. package/dist-client/grist-editors/grist-renderer-accounting-category-object.js +9 -0
  35. package/dist-client/grist-editors/grist-renderer-accounting-category-object.js.map +1 -0
  36. package/dist-client/pages/account/account-list-page.js +33 -2
  37. package/dist-client/pages/account/account-list-page.js.map +1 -1
  38. package/dist-client/pages/accounting-category/accounting-category-list-page.js +31 -1
  39. package/dist-client/pages/accounting-category/accounting-category-list-page.js.map +1 -1
  40. package/dist-client/pages/accounting-category/accounting-category-tree-page.d.ts +46 -0
  41. package/dist-client/pages/accounting-category/accounting-category-tree-page.js +329 -0
  42. package/dist-client/pages/accounting-category/accounting-category-tree-page.js.map +1 -0
  43. package/dist-client/pages/accounting-document/accounting-document-importer.d.ts +23 -0
  44. package/dist-client/pages/accounting-document/accounting-document-importer.js +93 -0
  45. package/dist-client/pages/accounting-document/accounting-document-importer.js.map +1 -0
  46. package/dist-client/pages/accounting-document/accounting-document-list-page.d.ts +66 -0
  47. package/dist-client/pages/accounting-document/accounting-document-list-page.js +370 -0
  48. package/dist-client/pages/accounting-document/accounting-document-list-page.js.map +1 -0
  49. package/dist-client/pages/{ledger/ledger-importer.d.ts → bank/bank-importer.d.ts} +3 -2
  50. package/dist-client/pages/{ledger/ledger-importer.js → bank/bank-importer.js} +14 -21
  51. package/dist-client/pages/bank/bank-importer.js.map +1 -0
  52. package/dist-client/pages/{ledger/ledger-list-page.d.ts → bank/bank-list-page.d.ts} +12 -8
  53. package/dist-client/pages/{ledger/ledger-list-page.js → bank/bank-list-page.js} +114 -67
  54. package/dist-client/pages/bank/bank-list-page.js.map +1 -0
  55. package/dist-client/pages/bank-account/bank-account-importer.d.ts +23 -0
  56. package/dist-client/pages/bank-account/bank-account-importer.js +93 -0
  57. package/dist-client/pages/bank-account/bank-account-importer.js.map +1 -0
  58. package/dist-client/pages/bank-account/bank-account-list-page.d.ts +66 -0
  59. package/dist-client/pages/bank-account/bank-account-list-page.js +370 -0
  60. package/dist-client/pages/bank-account/bank-account-list-page.js.map +1 -0
  61. package/dist-client/pages/financial-institution/financial-institution-importer.d.ts +23 -0
  62. package/dist-client/pages/financial-institution/financial-institution-importer.js +93 -0
  63. package/dist-client/pages/financial-institution/financial-institution-importer.js.map +1 -0
  64. package/dist-client/pages/financial-institution/financial-institution-list-page.d.ts +66 -0
  65. package/dist-client/pages/financial-institution/financial-institution-list-page.js +370 -0
  66. package/dist-client/pages/financial-institution/financial-institution-list-page.js.map +1 -0
  67. package/dist-client/pages/payment/payment-importer.d.ts +23 -0
  68. package/dist-client/pages/payment/payment-importer.js +93 -0
  69. package/dist-client/pages/payment/payment-importer.js.map +1 -0
  70. package/dist-client/pages/payment/payment-list-page.d.ts +66 -0
  71. package/dist-client/pages/payment/payment-list-page.js +370 -0
  72. package/dist-client/pages/payment/payment-list-page.js.map +1 -0
  73. package/dist-client/route.d.ts +1 -1
  74. package/dist-client/route.js +0 -3
  75. package/dist-client/route.js.map +1 -1
  76. package/dist-client/tsconfig.tsbuildinfo +1 -1
  77. package/dist-client/types/accounting-category.d.ts +16 -0
  78. package/dist-client/types/accounting-category.js +3 -0
  79. package/dist-client/types/accounting-category.js.map +1 -0
  80. package/dist-client/types/index.d.ts +1 -0
  81. package/dist-client/types/index.js +2 -0
  82. package/dist-client/types/index.js.map +1 -0
  83. package/dist-server/activities/activity-book.js +31 -19
  84. package/dist-server/activities/activity-book.js.map +1 -1
  85. package/dist-server/controllers/summary-statements.js +13 -7
  86. package/dist-server/controllers/summary-statements.js.map +1 -1
  87. package/dist-server/index.d.ts +1 -0
  88. package/dist-server/index.js +1 -0
  89. package/dist-server/index.js.map +1 -1
  90. package/dist-server/migrations/1725200507196-seed-fiscal-entities.js +3 -3
  91. package/dist-server/migrations/1725200507196-seed-fiscal-entities.js.map +1 -1
  92. package/dist-server/migrations/1725201467183-seed-accounts.js +31 -31
  93. package/dist-server/migrations/1725201467183-seed-accounts.js.map +1 -1
  94. package/dist-server/migrations/1725201567284-seed-country-codes.d.ts +5 -0
  95. package/dist-server/migrations/1725201567284-seed-country-codes.js +248 -0
  96. package/dist-server/migrations/1725201567284-seed-country-codes.js.map +1 -0
  97. package/dist-server/migrations/1725201667385-seed-financial-institutions.d.ts +5 -0
  98. package/dist-server/migrations/1725201667385-seed-financial-institutions.js +348 -0
  99. package/dist-server/migrations/1725201667385-seed-financial-institutions.js.map +1 -0
  100. package/dist-server/routes.d.ts +0 -1
  101. package/dist-server/routes.js +0 -1
  102. package/dist-server/routes.js.map +1 -1
  103. package/dist-server/service/account/account-history.d.ts +4 -1
  104. package/dist-server/service/account/account-history.js +14 -4
  105. package/dist-server/service/account/account-history.js.map +1 -1
  106. package/dist-server/service/account/account-mutation.js +13 -9
  107. package/dist-server/service/account/account-mutation.js.map +1 -1
  108. package/dist-server/service/account/account-query.js +2 -0
  109. package/dist-server/service/account/account-query.js.map +1 -1
  110. package/dist-server/service/account/account.d.ts +1 -1
  111. package/dist-server/service/account/account.js +15 -4
  112. package/dist-server/service/account/account.js.map +1 -1
  113. package/dist-server/service/account/index.d.ts +1 -2
  114. package/dist-server/service/accounting-category/accounting-category-history.d.ts +26 -0
  115. package/dist-server/service/accounting-category/accounting-category-history.js +136 -0
  116. package/dist-server/service/accounting-category/accounting-category-history.js.map +1 -0
  117. package/dist-server/service/accounting-category/accounting-category-mutation.js +12 -8
  118. package/dist-server/service/accounting-category/accounting-category-mutation.js.map +1 -1
  119. package/dist-server/service/accounting-category/accounting-category-query.d.ts +1 -0
  120. package/dist-server/service/accounting-category/accounting-category-query.js +23 -0
  121. package/dist-server/service/accounting-category/accounting-category-query.js.map +1 -1
  122. package/dist-server/service/accounting-category/accounting-category.d.ts +1 -0
  123. package/dist-server/service/accounting-category/accounting-category.js +14 -3
  124. package/dist-server/service/accounting-category/accounting-category.js.map +1 -1
  125. package/dist-server/service/accounting-category/event-subscriber.d.ts +7 -0
  126. package/dist-server/service/accounting-category/event-subscriber.js +21 -0
  127. package/dist-server/service/accounting-category/event-subscriber.js.map +1 -0
  128. package/dist-server/service/accounting-category/index.d.ts +2 -1
  129. package/dist-server/service/accounting-category/index.js +4 -2
  130. package/dist-server/service/accounting-category/index.js.map +1 -1
  131. package/dist-server/service/accounting-document/accounting-document-history.d.ts +26 -0
  132. package/dist-server/service/accounting-document/accounting-document-history.js +129 -0
  133. package/dist-server/service/accounting-document/accounting-document-history.js.map +1 -0
  134. package/dist-server/service/accounting-document/accounting-document-mutation.d.ts +10 -0
  135. package/dist-server/service/accounting-document/accounting-document-mutation.js +128 -0
  136. package/dist-server/service/accounting-document/accounting-document-mutation.js.map +1 -0
  137. package/dist-server/service/accounting-document/accounting-document-query.d.ts +11 -0
  138. package/dist-server/service/accounting-document/accounting-document-query.js +79 -0
  139. package/dist-server/service/accounting-document/accounting-document-query.js.map +1 -0
  140. package/dist-server/service/accounting-document/accounting-document-type.d.ts +20 -0
  141. package/dist-server/service/accounting-document/accounting-document-type.js +74 -0
  142. package/dist-server/service/accounting-document/accounting-document-type.js.map +1 -0
  143. package/dist-server/service/accounting-document/accounting-document.d.ts +21 -0
  144. package/dist-server/service/accounting-document/accounting-document.js +104 -0
  145. package/dist-server/service/accounting-document/accounting-document.js.map +1 -0
  146. package/dist-server/service/accounting-document/event-subscriber.d.ts +7 -0
  147. package/dist-server/service/accounting-document/event-subscriber.js +21 -0
  148. package/dist-server/service/accounting-document/event-subscriber.js.map +1 -0
  149. package/dist-server/service/accounting-document/index.d.ts +7 -0
  150. package/dist-server/service/accounting-document/index.js +12 -0
  151. package/dist-server/service/accounting-document/index.js.map +1 -0
  152. package/dist-server/service/bank-account/bank-account-history.d.ts +34 -0
  153. package/dist-server/service/bank-account/bank-account-history.js +172 -0
  154. package/dist-server/service/bank-account/bank-account-history.js.map +1 -0
  155. package/dist-server/service/bank-account/bank-account-mutation.d.ts +10 -0
  156. package/dist-server/service/bank-account/bank-account-mutation.js +128 -0
  157. package/dist-server/service/bank-account/bank-account-mutation.js.map +1 -0
  158. package/dist-server/service/bank-account/bank-account-query.d.ts +11 -0
  159. package/dist-server/service/bank-account/bank-account-query.js +79 -0
  160. package/dist-server/service/bank-account/bank-account-query.js.map +1 -0
  161. package/dist-server/service/bank-account/bank-account-type.d.ts +39 -0
  162. package/dist-server/service/bank-account/bank-account-type.js +153 -0
  163. package/dist-server/service/bank-account/bank-account-type.js.map +1 -0
  164. package/dist-server/service/bank-account/bank-account.d.ts +38 -0
  165. package/dist-server/service/bank-account/bank-account.js +164 -0
  166. package/dist-server/service/bank-account/bank-account.js.map +1 -0
  167. package/dist-server/service/bank-account/event-subscriber.d.ts +7 -0
  168. package/dist-server/service/bank-account/event-subscriber.js +21 -0
  169. package/dist-server/service/bank-account/event-subscriber.js.map +1 -0
  170. package/dist-server/service/bank-account/index.d.ts +7 -0
  171. package/dist-server/service/bank-account/index.js +12 -0
  172. package/dist-server/service/bank-account/index.js.map +1 -0
  173. package/dist-server/service/financial-institution/financial-institution-mutation.d.ts +10 -0
  174. package/dist-server/service/financial-institution/financial-institution-mutation.js +169 -0
  175. package/dist-server/service/financial-institution/financial-institution-mutation.js.map +1 -0
  176. package/dist-server/service/financial-institution/financial-institution-query.d.ts +12 -0
  177. package/dist-server/service/financial-institution/financial-institution-query.js +97 -0
  178. package/dist-server/service/financial-institution/financial-institution-query.js.map +1 -0
  179. package/dist-server/service/financial-institution/financial-institution-type.d.ts +32 -0
  180. package/dist-server/service/financial-institution/financial-institution-type.js +126 -0
  181. package/dist-server/service/financial-institution/financial-institution-type.js.map +1 -0
  182. package/dist-server/service/financial-institution/financial-institution.d.ts +34 -0
  183. package/dist-server/service/financial-institution/financial-institution.js +137 -0
  184. package/dist-server/service/financial-institution/financial-institution.js.map +1 -0
  185. package/dist-server/service/financial-institution/index.d.ts +6 -0
  186. package/dist-server/service/financial-institution/index.js +10 -0
  187. package/dist-server/service/financial-institution/index.js.map +1 -0
  188. package/dist-server/service/financial-statement/financial-statement-history.d.ts +9 -6
  189. package/dist-server/service/financial-statement/financial-statement-history.js +30 -20
  190. package/dist-server/service/financial-statement/financial-statement-history.js.map +1 -1
  191. package/dist-server/service/financial-statement/financial-statement-line-item.d.ts +19 -0
  192. package/dist-server/service/financial-statement/financial-statement-line-item.js +94 -0
  193. package/dist-server/service/financial-statement/financial-statement-line-item.js.map +1 -0
  194. package/dist-server/service/financial-statement/financial-statement-mutation.js +12 -8
  195. package/dist-server/service/financial-statement/financial-statement-mutation.js.map +1 -1
  196. package/dist-server/service/financial-statement/financial-statement-query.js +2 -0
  197. package/dist-server/service/financial-statement/financial-statement-query.js.map +1 -1
  198. package/dist-server/service/financial-statement/financial-statement.d.ts +2 -0
  199. package/dist-server/service/financial-statement/financial-statement.js +45 -24
  200. package/dist-server/service/financial-statement/financial-statement.js.map +1 -1
  201. package/dist-server/service/financial-statement/index.d.ts +2 -2
  202. package/dist-server/service/financial-statement/index.js +2 -1
  203. package/dist-server/service/financial-statement/index.js.map +1 -1
  204. package/dist-server/service/fiscal-month/fiscal-month-mutation.js +6 -0
  205. package/dist-server/service/fiscal-month/fiscal-month-mutation.js.map +1 -1
  206. package/dist-server/service/fiscal-month/fiscal-month-query.js +2 -0
  207. package/dist-server/service/fiscal-month/fiscal-month-query.js.map +1 -1
  208. package/dist-server/service/fiscal-month/fiscal-month.js +1 -1
  209. package/dist-server/service/fiscal-month/fiscal-month.js.map +1 -1
  210. package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js +6 -0
  211. package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js.map +1 -1
  212. package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js +2 -0
  213. package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js.map +1 -1
  214. package/dist-server/service/fiscal-quarter/fiscal-quarter.js +1 -1
  215. package/dist-server/service/fiscal-quarter/fiscal-quarter.js.map +1 -1
  216. package/dist-server/service/fiscal-year/fiscal-year-mutation.js +6 -0
  217. package/dist-server/service/fiscal-year/fiscal-year-mutation.js.map +1 -1
  218. package/dist-server/service/fiscal-year/fiscal-year-query.js +2 -0
  219. package/dist-server/service/fiscal-year/fiscal-year-query.js.map +1 -1
  220. package/dist-server/service/fiscal-year/fiscal-year.js +1 -1
  221. package/dist-server/service/fiscal-year/fiscal-year.js.map +1 -1
  222. package/dist-server/service/income-statement/income-statement-history.d.ts +9 -5
  223. package/dist-server/service/income-statement/income-statement-history.js +35 -20
  224. package/dist-server/service/income-statement/income-statement-history.js.map +1 -1
  225. package/dist-server/service/income-statement/income-statement-line-item.d.ts +19 -0
  226. package/dist-server/service/income-statement/income-statement-line-item.js +96 -0
  227. package/dist-server/service/income-statement/income-statement-line-item.js.map +1 -0
  228. package/dist-server/service/income-statement/income-statement-mutation.js +12 -8
  229. package/dist-server/service/income-statement/income-statement-mutation.js.map +1 -1
  230. package/dist-server/service/income-statement/income-statement-query.js +2 -0
  231. package/dist-server/service/income-statement/income-statement-query.js.map +1 -1
  232. package/dist-server/service/income-statement/income-statement.d.ts +2 -0
  233. package/dist-server/service/income-statement/income-statement.js +46 -26
  234. package/dist-server/service/income-statement/income-statement.js.map +1 -1
  235. package/dist-server/service/income-statement/index.d.ts +2 -2
  236. package/dist-server/service/income-statement/index.js +2 -1
  237. package/dist-server/service/income-statement/index.js.map +1 -1
  238. package/dist-server/service/index.d.ts +4 -2
  239. package/dist-server/service/index.js +10 -0
  240. package/dist-server/service/index.js.map +1 -1
  241. package/dist-server/service/payment/event-subscriber.d.ts +7 -0
  242. package/dist-server/service/payment/event-subscriber.js +21 -0
  243. package/dist-server/service/payment/event-subscriber.js.map +1 -0
  244. package/dist-server/service/payment/index.d.ts +7 -0
  245. package/dist-server/service/payment/index.js +12 -0
  246. package/dist-server/service/payment/index.js.map +1 -0
  247. package/dist-server/service/payment/payment-history.d.ts +37 -0
  248. package/dist-server/service/payment/payment-history.js +174 -0
  249. package/dist-server/service/payment/payment-history.js.map +1 -0
  250. package/dist-server/service/payment/payment-mutation.d.ts +10 -0
  251. package/dist-server/service/payment/payment-mutation.js +134 -0
  252. package/dist-server/service/payment/payment-mutation.js.map +1 -0
  253. package/dist-server/service/payment/payment-query.d.ts +11 -0
  254. package/dist-server/service/payment/payment-query.js +81 -0
  255. package/dist-server/service/payment/payment-query.js.map +1 -0
  256. package/dist-server/service/payment/payment-type.d.ts +30 -0
  257. package/dist-server/service/payment/payment-type.js +114 -0
  258. package/dist-server/service/payment/payment-type.js.map +1 -0
  259. package/dist-server/service/payment/payment.d.ts +42 -0
  260. package/dist-server/service/payment/payment.js +181 -0
  261. package/dist-server/service/payment/payment.js.map +1 -0
  262. package/dist-server/service/transaction/index.d.ts +2 -1
  263. package/dist-server/service/transaction/transaction-history.d.ts +6 -2
  264. package/dist-server/service/transaction/transaction-history.js +28 -9
  265. package/dist-server/service/transaction/transaction-history.js.map +1 -1
  266. package/dist-server/service/transaction/transaction-mutation.js +13 -9
  267. package/dist-server/service/transaction/transaction-mutation.js.map +1 -1
  268. package/dist-server/service/transaction/transaction-query.js +2 -0
  269. package/dist-server/service/transaction/transaction-query.js.map +1 -1
  270. package/dist-server/service/transaction/transaction.d.ts +28 -6
  271. package/dist-server/service/transaction/transaction.js +119 -31
  272. package/dist-server/service/transaction/transaction.js.map +1 -1
  273. package/dist-server/tsconfig.tsbuildinfo +1 -1
  274. package/helps/accounting/accounting-document.md +160 -0
  275. package/helps/accounting/bank-account.md +160 -0
  276. package/helps/accounting/bank.md +160 -0
  277. package/helps/accounting/contract.md +160 -0
  278. package/helps/accounting/financial-institution.md +160 -0
  279. package/helps/accounting/payment.md +160 -0
  280. package/package.json +5 -5
  281. package/server/activities/activity-book.ts +31 -19
  282. package/server/controllers/summary-statements.ts +13 -7
  283. package/server/index.ts +1 -0
  284. package/server/migrations/1725200507196-seed-fiscal-entities.ts +3 -3
  285. package/server/migrations/1725201467183-seed-accounts.ts +31 -31
  286. package/server/migrations/1725201567284-seed-country-codes.ts +261 -0
  287. package/server/migrations/1725201667385-seed-financial-institutions.ts +348 -0
  288. package/server/routes.ts +0 -2
  289. package/server/service/account/account-history.ts +14 -6
  290. package/server/service/account/account-mutation.ts +13 -10
  291. package/server/service/account/account-query.ts +2 -0
  292. package/server/service/account/account.ts +15 -4
  293. package/server/service/accounting-category/accounting-category-history.ts +123 -0
  294. package/server/service/accounting-category/accounting-category-mutation.ts +12 -9
  295. package/server/service/accounting-category/accounting-category-query.ts +23 -0
  296. package/server/service/accounting-category/accounting-category.ts +14 -3
  297. package/server/service/accounting-category/event-subscriber.ts +20 -0
  298. package/server/service/accounting-category/index.ts +4 -2
  299. package/server/service/accounting-document/accounting-document-history.ts +117 -0
  300. package/server/service/accounting-document/accounting-document-mutation.ts +137 -0
  301. package/server/service/accounting-document/accounting-document-query.ts +48 -0
  302. package/server/service/accounting-document/accounting-document-type.ts +52 -0
  303. package/server/service/accounting-document/accounting-document.ts +93 -0
  304. package/server/service/accounting-document/event-subscriber.ts +17 -0
  305. package/server/service/accounting-document/index.ts +9 -0
  306. package/server/service/bank-account/bank-account-history.ts +149 -0
  307. package/server/service/bank-account/bank-account-mutation.ts +137 -0
  308. package/server/service/bank-account/bank-account-query.ts +48 -0
  309. package/server/service/bank-account/bank-account-type.ts +112 -0
  310. package/server/service/bank-account/bank-account.ts +142 -0
  311. package/server/service/bank-account/event-subscriber.ts +17 -0
  312. package/server/service/bank-account/index.ts +9 -0
  313. package/server/service/financial-institution/financial-institution-mutation.ts +198 -0
  314. package/server/service/financial-institution/financial-institution-query.ts +62 -0
  315. package/server/service/financial-institution/financial-institution-type.ts +91 -0
  316. package/server/service/financial-institution/financial-institution.ts +122 -0
  317. package/server/service/financial-institution/index.ts +7 -0
  318. package/server/service/financial-statement/financial-statement-history.ts +27 -18
  319. package/server/service/financial-statement/financial-statement-line-item.ts +82 -0
  320. package/server/service/financial-statement/financial-statement-mutation.ts +12 -9
  321. package/server/service/financial-statement/financial-statement-query.ts +2 -0
  322. package/server/service/financial-statement/financial-statement.ts +52 -36
  323. package/server/service/financial-statement/index.ts +2 -1
  324. package/server/service/fiscal-month/fiscal-month-mutation.ts +10 -2
  325. package/server/service/fiscal-month/fiscal-month-query.ts +3 -1
  326. package/server/service/fiscal-month/fiscal-month.ts +1 -1
  327. package/server/service/fiscal-quarter/fiscal-quarter-mutation.ts +14 -3
  328. package/server/service/fiscal-quarter/fiscal-quarter-query.ts +2 -0
  329. package/server/service/fiscal-quarter/fiscal-quarter.ts +1 -1
  330. package/server/service/fiscal-year/fiscal-year-mutation.ts +10 -2
  331. package/server/service/fiscal-year/fiscal-year-query.ts +2 -0
  332. package/server/service/fiscal-year/fiscal-year.ts +1 -1
  333. package/server/service/income-statement/income-statement-history.ts +30 -17
  334. package/server/service/income-statement/income-statement-line-item.ts +84 -0
  335. package/server/service/income-statement/income-statement-mutation.ts +12 -10
  336. package/server/service/income-statement/income-statement-query.ts +2 -0
  337. package/server/service/income-statement/income-statement.ts +54 -39
  338. package/server/service/income-statement/index.ts +2 -1
  339. package/server/service/index.ts +18 -0
  340. package/server/service/payment/event-subscriber.ts +17 -0
  341. package/server/service/payment/index.ts +9 -0
  342. package/server/service/payment/payment-history.ts +149 -0
  343. package/server/service/payment/payment-mutation.ts +139 -0
  344. package/server/service/payment/payment-query.ts +50 -0
  345. package/server/service/payment/payment-type.ts +82 -0
  346. package/server/service/payment/payment.ts +154 -0
  347. package/server/service/transaction/transaction-history.ts +24 -8
  348. package/server/service/transaction/transaction-mutation.ts +13 -10
  349. package/server/service/transaction/transaction-query.ts +2 -0
  350. package/server/service/transaction/transaction.ts +130 -34
  351. package/things-factory.config.js +0 -1
  352. package/translations/en.json +9 -1
  353. package/translations/ja.json +9 -1
  354. package/translations/ko.json +9 -1
  355. package/translations/ms.json +9 -1
  356. package/translations/zh.json +9 -1
  357. package/client/pages/main.ts +0 -24
  358. package/dist-client/pages/ledger/ledger-importer.js.map +0 -1
  359. package/dist-client/pages/ledger/ledger-list-page.js.map +0 -1
  360. package/dist-client/pages/main.d.ts +0 -1
  361. package/dist-client/pages/main.js +0 -27
  362. package/dist-client/pages/main.js.map +0 -1
@@ -0,0 +1,139 @@
1
+ import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { In } from 'typeorm'
3
+ import { getRepository } from '@things-factory/shell'
4
+
5
+ import { Payment } from './payment'
6
+ import { NewPayment, PaymentPatch } from './payment-type'
7
+
8
+ @Resolver(Payment)
9
+ export class PaymentMutation {
10
+ @Directive('@transaction')
11
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
12
+ @Mutation(returns => Payment, { description: 'To create new Payment' })
13
+ async createPayment(@Arg('payment') payment: NewPayment, @Ctx() context: ResolverContext): Promise<Payment> {
14
+ const { domain, user, tx } = context.state
15
+
16
+ const result = await getRepository(Payment, tx).save({
17
+ ...payment,
18
+ domain,
19
+ creator: user,
20
+ updater: user
21
+ })
22
+
23
+ return result
24
+ }
25
+
26
+ @Directive('@transaction')
27
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
28
+ @Mutation(returns => Payment, { description: 'To modify Payment information' })
29
+ async updatePayment(
30
+ @Arg('id') id: string,
31
+ @Arg('patch') patch: PaymentPatch,
32
+ @Ctx() context: ResolverContext
33
+ ): Promise<Payment> {
34
+ const { domain, user, tx } = context.state
35
+
36
+ const repository = getRepository(Payment, tx)
37
+ const payment = await repository.findOne({
38
+ where: { domain: { id: domain.id }, id }
39
+ })
40
+
41
+ const result = await repository.save({
42
+ ...payment,
43
+ ...patch,
44
+ updater: user
45
+ })
46
+
47
+ return result
48
+ }
49
+
50
+ @Directive('@transaction')
51
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
52
+ @Mutation(returns => [Payment], { description: "To modify multiple Payments' information" })
53
+ async updateMultiplePayment(
54
+ @Arg('patches', type => [PaymentPatch]) patches: PaymentPatch[],
55
+ @Ctx() context: ResolverContext
56
+ ): Promise<Payment[]> {
57
+ const { domain, user, tx } = context.state
58
+
59
+ let results = []
60
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
61
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
62
+ const paymentRepo = getRepository(Payment, tx)
63
+
64
+ if (_createRecords.length > 0) {
65
+ for (let i = 0; i < _createRecords.length; i++) {
66
+ const newRecord = _createRecords[i]
67
+
68
+ const result = await paymentRepo.save({
69
+ ...newRecord,
70
+ domain,
71
+ creator: user,
72
+ updater: user
73
+ })
74
+
75
+ results.push({ ...result, cuFlag: '+' })
76
+ }
77
+ }
78
+
79
+ if (_updateRecords.length > 0) {
80
+ for (let i = 0; i < _updateRecords.length; i++) {
81
+ const updateRecord = _updateRecords[i]
82
+ const payment = await paymentRepo.findOneBy({ id: updateRecord.id })
83
+
84
+ const result = await paymentRepo.save({
85
+ ...payment,
86
+ ...updateRecord,
87
+ updater: user
88
+ })
89
+
90
+ results.push({ ...result, cuFlag: 'M' })
91
+ }
92
+ }
93
+
94
+ return results
95
+ }
96
+
97
+ @Directive('@transaction')
98
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
99
+ @Mutation(returns => Boolean, { description: 'To delete Payment' })
100
+ async deletePayment(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
101
+ const { domain, tx } = context.state
102
+
103
+ await getRepository(Payment, tx).delete({ domain: { id: domain.id }, id })
104
+
105
+ return true
106
+ }
107
+
108
+ @Directive('@transaction')
109
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
110
+ @Mutation(returns => Boolean, { description: 'To delete multiple Payments' })
111
+ async deletePayments(@Arg('ids', type => [String]) ids: string[], @Ctx() context: ResolverContext): Promise<boolean> {
112
+ const { domain, tx } = context.state
113
+
114
+ await getRepository(Payment, tx).delete({
115
+ domain: { id: domain.id },
116
+ id: In(ids)
117
+ })
118
+
119
+ return true
120
+ }
121
+
122
+ @Directive('@transaction')
123
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
124
+ @Mutation(returns => Boolean, { description: 'To import multiple Payments' })
125
+ async importPayments(
126
+ @Arg('payments', type => [PaymentPatch]) payments: PaymentPatch[],
127
+ @Ctx() context: ResolverContext
128
+ ): Promise<boolean> {
129
+ const { domain, tx } = context.state
130
+
131
+ await Promise.all(
132
+ payments.map(async (payment: PaymentPatch) => {
133
+ const createdPayment: Payment = await getRepository(Payment, tx).save({ domain, ...payment })
134
+ })
135
+ )
136
+
137
+ return true
138
+ }
139
+ }
@@ -0,0 +1,50 @@
1
+ import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
3
+ import { User } from '@things-factory/auth-base'
4
+ import { Payment } from './payment'
5
+ import { PaymentList } from './payment-type'
6
+
7
+ @Resolver(Payment)
8
+ export class PaymentQuery {
9
+ @Directive('@privilege(category: "accounting", privilege: "query")')
10
+ @Query(returns => Payment!, { nullable: true, description: 'To fetch a Payment' })
11
+ async payment(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Payment> {
12
+ const { domain } = context.state
13
+
14
+ return await getRepository(Payment).findOne({
15
+ where: { domain: { id: domain.id }, id }
16
+ })
17
+ }
18
+
19
+ @Directive('@privilege(category: "accounting", privilege: "query")')
20
+ @Query(returns => PaymentList, { description: 'To fetch multiple Payments' })
21
+ async payments(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<PaymentList> {
22
+ const { domain } = context.state
23
+
24
+ const queryBuilder = getQueryBuilderFromListParams({
25
+ domain,
26
+ params,
27
+ repository: await getRepository(Payment),
28
+ searchables: []
29
+ })
30
+
31
+ const [items, total] = await queryBuilder.getManyAndCount()
32
+
33
+ return { items, total }
34
+ }
35
+
36
+ @FieldResolver(type => Domain)
37
+ async domain(@Root() payment: Payment): Promise<Domain> {
38
+ return payment.domainId && (await getRepository(Domain).findOneBy({ id: payment.domainId }))
39
+ }
40
+
41
+ @FieldResolver(type => User)
42
+ async updater(@Root() payment: Payment): Promise<User> {
43
+ return payment.updaterId && (await getRepository(User).findOneBy({ id: payment.updaterId }))
44
+ }
45
+
46
+ @FieldResolver(type => User)
47
+ async creator(@Root() payment: Payment): Promise<User> {
48
+ return payment.creatorId && (await getRepository(User).findOneBy({ id: payment.creatorId }))
49
+ }
50
+ }
@@ -0,0 +1,82 @@
1
+ import type { FileUpload } from 'graphql-upload/GraphQLUpload.js'
2
+ import GraphQLUpload from 'graphql-upload/GraphQLUpload.js'
3
+ import { ObjectType, Field, InputType, Int, ID, registerEnumType } from 'type-graphql'
4
+
5
+ import { ObjectRef, ScalarObject } from '@things-factory/shell'
6
+
7
+ import { Payment, PaymentDirection, PaymentType } from './payment'
8
+
9
+ @InputType()
10
+ export class NewPayment {
11
+ @Field(type => ObjectRef)
12
+ transaction: ObjectRef
13
+
14
+ @Field({ nullable: true })
15
+ currency?: string
16
+
17
+ @Field({ nullable: false })
18
+ amount: number
19
+
20
+ @Field({ nullable: false })
21
+ paidAt: Date
22
+
23
+ @Field(type => PaymentDirection)
24
+ direction: PaymentDirection
25
+
26
+ @Field(type => PaymentType, { description: 'Type of the payment' })
27
+ paymentType: PaymentType // 결제 유형
28
+
29
+ @Field(type => ObjectRef, { nullable: true, description: 'Source bank account for the payment' })
30
+ sourceBankAccount?: ObjectRef
31
+
32
+ @Field(type => ObjectRef, { nullable: true, description: 'Destination bank account for the payment' })
33
+ destinationBankAccount?: ObjectRef
34
+
35
+ @Field({ nullable: true })
36
+ note?: string
37
+ }
38
+
39
+ @InputType()
40
+ export class PaymentPatch {
41
+ @Field(type => ID, { nullable: true })
42
+ id?: string
43
+
44
+ @Field(type => ObjectRef)
45
+ transaction: ObjectRef
46
+
47
+ @Field({ nullable: true })
48
+ currency?: string
49
+
50
+ @Field({ nullable: false })
51
+ amount: number
52
+
53
+ @Field({ nullable: false })
54
+ paidAt: Date
55
+
56
+ @Field(type => PaymentDirection)
57
+ direction: PaymentDirection
58
+
59
+ @Field(type => PaymentType, { description: 'Type of the payment' })
60
+ paymentType: PaymentType // 결제 유형
61
+
62
+ @Field(type => ObjectRef, { nullable: true, description: 'Source bank account for the payment' })
63
+ sourceBankAccount?: ObjectRef
64
+
65
+ @Field(type => ObjectRef, { nullable: true, description: 'Destination bank account for the payment' })
66
+ destinationBankAccount?: ObjectRef
67
+
68
+ @Field({ nullable: true })
69
+ note?: string
70
+
71
+ @Field({ nullable: true })
72
+ cuFlag?: string
73
+ }
74
+
75
+ @ObjectType()
76
+ export class PaymentList {
77
+ @Field(type => [Payment])
78
+ items: Payment[]
79
+
80
+ @Field(type => Int)
81
+ total: number
82
+ }
@@ -0,0 +1,154 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ VersionColumn,
11
+ PrimaryGeneratedColumn
12
+ } from 'typeorm'
13
+ import { ObjectType, Field, ID, registerEnumType } from 'type-graphql'
14
+
15
+ import { Domain } from '@things-factory/shell'
16
+ import { User } from '@things-factory/auth-base'
17
+ import { Transaction } from '../transaction/transaction'
18
+ import { BankAccount } from 'service/bank-account/bank-account'
19
+
20
+ export enum PaymentDirection {
21
+ Incoming = 'Incoming', // 수금
22
+ Outgoing = 'Outgoing' // 지출
23
+ }
24
+
25
+ registerEnumType(PaymentDirection, {
26
+ name: 'PaymentDirection',
27
+ description: 'Indicates whether the payment is incoming (received) or outgoing (paid)' // 결제 방향을 나타냅니다 (수금 또는 지출)
28
+ })
29
+
30
+ export enum PaymentType {
31
+ Transfer = 'Transfer', // 계좌 이체
32
+ Cash = 'Cash', // 현금
33
+ CreditCard = 'CreditCard', // 신용카드
34
+ DebitCard = 'DebitCard' // 직불카드
35
+ }
36
+
37
+ registerEnumType(PaymentType, {
38
+ name: 'PaymentType',
39
+ description: 'Type of the payment (e.g., Transfer, Cash, CreditCard, DebitCard)' // 결제 유형을 나타냅니다
40
+ })
41
+
42
+ @Entity()
43
+ @Index('ix_payment_0', (payment: Payment) => [payment.domain, payment.transaction, payment.paidAt], {
44
+ where: '"deleted_at" IS NULL',
45
+ unique: true
46
+ })
47
+ @Index(
48
+ 'ix_payment_1',
49
+ (payment: Payment) => [payment.domain, payment.year, payment.quarter, payment.month, payment.paidAt],
50
+ {
51
+ unique: true,
52
+ where: '"deleted_at" IS NULL'
53
+ }
54
+ )
55
+ @ObjectType({ description: 'Entity representing a Payment record in the system' }) // 시스템 내에서 결제 기록을 나타내는 엔티티
56
+ export class Payment {
57
+ @PrimaryGeneratedColumn('uuid')
58
+ @Field(type => ID, { description: 'Unique identifier for the payment record' })
59
+ readonly id: string // 고유 식별자 (UUID)
60
+
61
+ @VersionColumn()
62
+ @Field({ nullable: true, description: 'Version number used for optimistic locking' })
63
+ version?: number = 1 // 낙관적 잠금을 위한 버전 관리 필드
64
+
65
+ @ManyToOne(type => Domain)
66
+ @Field({ nullable: true, description: 'The domain to which this payment belongs' })
67
+ domain?: Domain // 결제가 속한 도메인
68
+
69
+ @RelationId((payment: Payment) => payment.domain)
70
+ domainId?: string // 도메인의 ID
71
+
72
+ @ManyToOne(type => Transaction, transaction => transaction.payments)
73
+ @Field(type => Transaction, { description: 'The transaction associated with this payment' })
74
+ transaction: Transaction // 결제와 연결된 트랜잭션
75
+
76
+ @RelationId((payment: Payment) => payment.transaction)
77
+ transactionId: string // 연결된 트랜잭션의 ID
78
+
79
+ @Column({ nullable: true })
80
+ @Field({ nullable: true, description: 'The currency used in the payment' })
81
+ currency?: string // 결제에 사용된 통화
82
+
83
+ @Column({ nullable: false })
84
+ @Field({ nullable: false, description: 'The amount of money involved in the payment' })
85
+ amount: number // 결제된 금액
86
+
87
+ @Column({ type: 'enum', enum: PaymentType, nullable: false })
88
+ @Field(type => PaymentType, { description: 'Type of the payment' })
89
+ paymentType: PaymentType // 결제 유형
90
+
91
+ @ManyToOne(type => BankAccount, { nullable: true })
92
+ @Field(type => BankAccount, { nullable: true, description: 'Source bank account for the payment' })
93
+ sourceBankAccount?: BankAccount
94
+
95
+ @RelationId((payment: Payment) => payment.sourceBankAccount)
96
+ sourceBankAccountId?: string
97
+
98
+ @ManyToOne(type => BankAccount, { nullable: true })
99
+ @Field(type => BankAccount, { nullable: true, description: 'Destination bank account for the payment' })
100
+ destinationBankAccount?: BankAccount
101
+
102
+ @RelationId((payment: Payment) => payment.destinationBankAccount)
103
+ destinationBankAccountId?: string
104
+
105
+ @Column({ nullable: true })
106
+ @Field({ nullable: true, description: 'Fiscal year in which the payment was made' })
107
+ year?: number // 결제가 발생한 회계 연도
108
+
109
+ @Column({ nullable: true })
110
+ @Field({ nullable: true, description: 'Fiscal quarter in which the payment was made' })
111
+ quarter?: number // 결제가 발생한 회계 분기
112
+
113
+ @Column({ nullable: true })
114
+ @Field({ nullable: true, description: 'Fiscal month in which the payment was made' })
115
+ month?: number // 결제가 발생한 회계 월
116
+
117
+ @Column({ nullable: false })
118
+ @Field({ nullable: false, description: 'The date and time when the payment was made' })
119
+ paidAt: Date // 결제가 이루어진 날짜 및 시간
120
+
121
+ @Column({ nullable: false })
122
+ @Field(type => PaymentDirection, { description: 'Direction of the payment (Incoming or Outgoing)' })
123
+ direction: PaymentDirection // 결제 방향 (수금 또는 지출)
124
+
125
+ @Column({ nullable: true })
126
+ @Field({ nullable: true, description: 'Additional notes or comments about the payment' })
127
+ note?: string // 결제에 대한 추가 설명 또는 메모
128
+
129
+ @CreateDateColumn()
130
+ @Field({ nullable: true, description: 'The date and time when the payment record was created' })
131
+ createdAt?: Date // 결제 레코드가 생성된 날짜 및 시간
132
+
133
+ @UpdateDateColumn()
134
+ @Field({ nullable: true, description: 'The date and time when the payment record was last updated' })
135
+ updatedAt?: Date // 결제 레코드가 마지막으로 업데이트된 날짜 및 시간
136
+
137
+ @DeleteDateColumn()
138
+ @Field({ nullable: true, description: 'The date and time when the payment record was deleted' })
139
+ deletedAt?: Date // 결제 레코드가 삭제된 날짜 및 시간
140
+
141
+ @ManyToOne(type => User, { nullable: true })
142
+ @Field(type => User, { nullable: true, description: 'The user who created the payment record' })
143
+ creator?: User // 결제 레코드를 생성한 사용자
144
+
145
+ @RelationId((payment: Payment) => payment.creator)
146
+ creatorId?: string // 결제 레코드를 생성한 사용자의 ID
147
+
148
+ @ManyToOne(type => User, { nullable: true })
149
+ @Field(type => User, { nullable: true, description: 'The user who last updated the payment record' })
150
+ updater?: User // 결제 레코드를 마지막으로 업데이트한 사용자
151
+
152
+ @RelationId((payment: Payment) => payment.updater)
153
+ updaterId?: string // 결제 레코드를 업데이트한 사용자의 ID
154
+ }
@@ -11,7 +11,7 @@ import { Role, User } from '@things-factory/auth-base'
11
11
  import { config } from '@things-factory/env'
12
12
  import { Domain } from '@things-factory/shell'
13
13
 
14
- import { Transaction, TransactionType } from './transaction'
14
+ import { Transaction, TransactionCategory, TransactionStatus, TransactionType } from './transaction'
15
15
  import { Account } from '../account/account'
16
16
 
17
17
  const ORMCONFIG = config.get('ormconfig', {})
@@ -46,7 +46,7 @@ export class TransactionHistory implements HistoryEntityInterface<Transaction> {
46
46
  @Field({ nullable: true })
47
47
  domain?: Domain
48
48
 
49
- @RelationId((transaction: Transaction) => transaction.domain)
49
+ @RelationId((transactionHistory: TransactionHistory) => transactionHistory.domain)
50
50
  domainId?: string
51
51
 
52
52
  @Column()
@@ -73,11 +73,27 @@ export class TransactionHistory implements HistoryEntityInterface<Transaction> {
73
73
  @Field({ nullable: true })
74
74
  type?: TransactionType
75
75
 
76
+ @Column({ nullable: false })
77
+ @Field(type => TransactionCategory, { nullable: false })
78
+ category: TransactionCategory // 트랜잭션의 카테고리 (확정, 전망)
79
+
80
+ @Column({ nullable: false })
81
+ @Field(type => TransactionStatus, { nullable: false })
82
+ status: TransactionStatus // 트랜잭션의 상태 (예: Paid, Delayed 등)
83
+
84
+ @Column({ nullable: true })
85
+ @Field({ nullable: true, description: 'The probability of the forecast being realized (0 to 100)' })
86
+ probability?: number // 예측이 실현될 확률 (0 ~ 100)
87
+
88
+ @Column({ nullable: true })
89
+ @Field({ nullable: true, description: 'Additional notes or comments about the forecast' })
90
+ forecastNotes?: string // 전망에 대한 추가 설명이나 메모
91
+
76
92
  @ManyToOne(type => Account)
77
93
  @Field({ nullable: true })
78
94
  account?: Account
79
95
 
80
- @RelationId((transaction: Transaction) => transaction.account)
96
+ @RelationId((transactionHistory: TransactionHistory) => transactionHistory.account)
81
97
  accountId?: string
82
98
 
83
99
  @Column({ nullable: true })
@@ -92,9 +108,9 @@ export class TransactionHistory implements HistoryEntityInterface<Transaction> {
92
108
  @Field({ nullable: true, description: 'fiscal month' })
93
109
  month?: number
94
110
 
95
- @Column({ type: 'timestamp', nullable: false })
96
- @Field({ nullable: false, description: 'The exact date and time the transaction occurred' })
97
- occurredAt: Date // 트랜잭션이 발생한 실제 시점(날짜와 시간)
111
+ @Column({ nullable: false })
112
+ @Field({ nullable: false, description: 'The date the transaction occurs or is scheduled (in string format)' })
113
+ transactionDate: string // 트랜잭션이 발생하거나 발생할 날짜
98
114
 
99
115
  @Column()
100
116
  @Field({ nullable: true })
@@ -112,14 +128,14 @@ export class TransactionHistory implements HistoryEntityInterface<Transaction> {
112
128
  @Field(type => User, { nullable: true })
113
129
  creator?: User
114
130
 
115
- @RelationId((transaction: Transaction) => transaction.creator)
131
+ @RelationId((transactionHistory: TransactionHistory) => transactionHistory.creator)
116
132
  creatorId?: string
117
133
 
118
134
  @ManyToOne(type => User, { nullable: true })
119
135
  @Field(type => User, { nullable: true })
120
136
  updater?: User
121
137
 
122
- @RelationId((transaction: Transaction) => transaction.updater)
138
+ @RelationId((transactionHistory: TransactionHistory) => transactionHistory.updater)
123
139
  updaterId?: string
124
140
 
125
141
  @HistoryOriginalIdColumn()
@@ -1,7 +1,7 @@
1
1
  import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
2
  import { In } from 'typeorm'
3
3
 
4
- import { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'
4
+ import { getRepository } from '@things-factory/shell'
5
5
 
6
6
  import { Transaction } from './transaction'
7
7
  import { NewTransaction, TransactionPatch } from './transaction-type'
@@ -9,6 +9,7 @@ import { NewTransaction, TransactionPatch } from './transaction-type'
9
9
  @Resolver(Transaction)
10
10
  export class TransactionMutation {
11
11
  @Directive('@transaction')
12
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
12
13
  @Mutation(returns => Transaction, { description: 'To create new Transaction' })
13
14
  async createTransaction(
14
15
  @Arg('transaction') transaction: NewTransaction,
@@ -16,7 +17,7 @@ export class TransactionMutation {
16
17
  ): Promise<Transaction> {
17
18
  const { domain, user, tx } = context.state
18
19
 
19
- const result = await tx.getRepository(Transaction).save({
20
+ const result = await getRepository(Transaction, tx).save({
20
21
  ...transaction,
21
22
  domain,
22
23
  creator: user,
@@ -27,6 +28,7 @@ export class TransactionMutation {
27
28
  }
28
29
 
29
30
  @Directive('@transaction')
31
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
30
32
  @Mutation(returns => Transaction, { description: 'To modify Transaction information' })
31
33
  async updateTransaction(
32
34
  @Arg('id') id: string,
@@ -35,7 +37,7 @@ export class TransactionMutation {
35
37
  ): Promise<Transaction> {
36
38
  const { domain, user, tx } = context.state
37
39
 
38
- const repository = tx.getRepository(Transaction)
40
+ const repository = getRepository(Transaction, tx)
39
41
  const transaction = await repository.findOne({
40
42
  where: { domain: { id: domain.id }, id }
41
43
  })
@@ -50,6 +52,7 @@ export class TransactionMutation {
50
52
  }
51
53
 
52
54
  @Directive('@transaction')
55
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
53
56
  @Mutation(returns => [Transaction], { description: "To modify multiple Transactions' information" })
54
57
  async updateMultipleTransaction(
55
58
  @Arg('patches', type => [TransactionPatch]) patches: TransactionPatch[],
@@ -60,7 +63,7 @@ export class TransactionMutation {
60
63
  let results = []
61
64
  const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
62
65
  const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
63
- const transactionRepo = tx.getRepository(Transaction)
66
+ const transactionRepo = getRepository(Transaction, tx)
64
67
 
65
68
  if (_createRecords.length > 0) {
66
69
  for (let i = 0; i < _createRecords.length; i++) {
@@ -96,17 +99,18 @@ export class TransactionMutation {
96
99
  }
97
100
 
98
101
  @Directive('@transaction')
102
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
99
103
  @Mutation(returns => Boolean, { description: 'To delete Transaction' })
100
104
  async deleteTransaction(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
101
105
  const { domain, tx } = context.state
102
106
 
103
- await tx.getRepository(Transaction).delete({ domain: { id: domain.id }, id })
104
- await deleteAttachmentsByRef(null, { refBys: [id] }, context)
107
+ await getRepository(Transaction, tx).delete({ domain: { id: domain.id }, id })
105
108
 
106
109
  return true
107
110
  }
108
111
 
109
112
  @Directive('@transaction')
113
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
110
114
  @Mutation(returns => Boolean, { description: 'To delete multiple Transactions' })
111
115
  async deleteTransactions(
112
116
  @Arg('ids', type => [String]) ids: string[],
@@ -114,17 +118,16 @@ export class TransactionMutation {
114
118
  ): Promise<boolean> {
115
119
  const { domain, tx } = context.state
116
120
 
117
- await tx.getRepository(Transaction).delete({
121
+ await getRepository(Transaction, tx).delete({
118
122
  domain: { id: domain.id },
119
123
  id: In(ids)
120
124
  })
121
125
 
122
- await deleteAttachmentsByRef(null, { refBys: ids }, context)
123
-
124
126
  return true
125
127
  }
126
128
 
127
129
  @Directive('@transaction')
130
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
128
131
  @Mutation(returns => Boolean, { description: 'To import multiple Transactions' })
129
132
  async importTransactions(
130
133
  @Arg('transactions', type => [TransactionPatch]) transactions: TransactionPatch[],
@@ -134,7 +137,7 @@ export class TransactionMutation {
134
137
 
135
138
  await Promise.all(
136
139
  transactions.map(async (transaction: TransactionPatch) => {
137
- const createdTransaction: Transaction = await tx.getRepository(Transaction).save({ domain, ...transaction })
140
+ const createdTransaction: Transaction = await getRepository(Transaction, tx).save({ domain, ...transaction })
138
141
  })
139
142
  )
140
143
 
@@ -6,6 +6,7 @@ import { TransactionList } from './transaction-type'
6
6
 
7
7
  @Resolver(Transaction)
8
8
  export class TransactionQuery {
9
+ @Directive('@privilege(category: "accounting", privilege: "query")')
9
10
  @Query(returns => Transaction!, { nullable: true, description: 'To fetch a Transaction' })
10
11
  async transaction(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Transaction> {
11
12
  const { domain } = context.state
@@ -15,6 +16,7 @@ export class TransactionQuery {
15
16
  })
16
17
  }
17
18
 
19
+ @Directive('@privilege(category: "accounting", privilege: "query")')
18
20
  @Query(returns => TransactionList, { description: 'To fetch multiple Transactions' })
19
21
  async transactions(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<TransactionList> {
20
22
  const { domain } = context.state