@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
@@ -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 { FinancialStatement } from './financial-statement'
7
7
  import { NewFinancialStatement, FinancialStatementPatch } from './financial-statement-type'
@@ -9,6 +9,7 @@ import { NewFinancialStatement, FinancialStatementPatch } from './financial-stat
9
9
  @Resolver(FinancialStatement)
10
10
  export class FinancialStatementMutation {
11
11
  @Directive('@transaction')
12
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
12
13
  @Mutation(returns => FinancialStatement, { description: 'To create new FinancialStatement' })
13
14
  async createFinancialStatement(
14
15
  @Arg('financialStatement') financialStatement: NewFinancialStatement,
@@ -16,7 +17,7 @@ export class FinancialStatementMutation {
16
17
  ): Promise<FinancialStatement> {
17
18
  const { domain, user, tx } = context.state
18
19
 
19
- const result = await tx.getRepository(FinancialStatement).save({
20
+ const result = await getRepository(FinancialStatement, tx).save({
20
21
  ...financialStatement,
21
22
  domain,
22
23
  creator: user,
@@ -27,6 +28,7 @@ export class FinancialStatementMutation {
27
28
  }
28
29
 
29
30
  @Directive('@transaction')
31
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
30
32
  @Mutation(returns => FinancialStatement, { description: 'To modify FinancialStatement information' })
31
33
  async updateFinancialStatement(
32
34
  @Arg('id') id: string,
@@ -35,7 +37,7 @@ export class FinancialStatementMutation {
35
37
  ): Promise<FinancialStatement> {
36
38
  const { domain, user, tx } = context.state
37
39
 
38
- const repository = tx.getRepository(FinancialStatement)
40
+ const repository = getRepository(FinancialStatement, tx)
39
41
  const financialStatement = await repository.findOne({
40
42
  where: { domain: { id: domain.id }, id }
41
43
  })
@@ -50,6 +52,7 @@ export class FinancialStatementMutation {
50
52
  }
51
53
 
52
54
  @Directive('@transaction')
55
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
53
56
  @Mutation(returns => [FinancialStatement], { description: "To modify multiple FinancialStatements' information" })
54
57
  async updateMultipleFinancialStatement(
55
58
  @Arg('patches', type => [FinancialStatementPatch]) patches: FinancialStatementPatch[],
@@ -60,7 +63,7 @@ export class FinancialStatementMutation {
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 financialStatementRepo = tx.getRepository(FinancialStatement)
66
+ const financialStatementRepo = getRepository(FinancialStatement, 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 FinancialStatementMutation {
96
99
  }
97
100
 
98
101
  @Directive('@transaction')
102
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
99
103
  @Mutation(returns => Boolean, { description: 'To delete FinancialStatement' })
100
104
  async deleteFinancialStatement(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
101
105
  const { domain, tx } = context.state
102
106
 
103
- await tx.getRepository(FinancialStatement).delete({ domain: { id: domain.id }, id })
104
- await deleteAttachmentsByRef(null, { refBys: [id] }, context)
107
+ await getRepository(FinancialStatement, 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 FinancialStatements' })
111
115
  async deleteFinancialStatements(
112
116
  @Arg('ids', type => [String]) ids: string[],
@@ -114,17 +118,16 @@ export class FinancialStatementMutation {
114
118
  ): Promise<boolean> {
115
119
  const { domain, tx } = context.state
116
120
 
117
- await tx.getRepository(FinancialStatement).delete({
121
+ await getRepository(FinancialStatement, 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 FinancialStatements' })
129
132
  async importFinancialStatements(
130
133
  @Arg('financialStatements', type => [FinancialStatementPatch]) financialStatements: FinancialStatementPatch[],
@@ -6,6 +6,7 @@ import { FinancialStatementList } from './financial-statement-type'
6
6
 
7
7
  @Resolver(FinancialStatement)
8
8
  export class FinancialStatementQuery {
9
+ @Directive('@privilege(category: "accounting", privilege: "query")')
9
10
  @Query(returns => FinancialStatement!, { nullable: true, description: 'To fetch a FinancialStatement' })
10
11
  async financialStatement(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<FinancialStatement> {
11
12
  const { domain } = context.state
@@ -15,6 +16,7 @@ export class FinancialStatementQuery {
15
16
  })
16
17
  }
17
18
 
19
+ @Directive('@privilege(category: "accounting", privilege: "query")')
18
20
  @Query(returns => FinancialStatementList, { description: 'To fetch multiple FinancialStatements' })
19
21
  async financialStatements(
20
22
  @Args() params: ListParam,
@@ -7,14 +7,17 @@ import {
7
7
  Column,
8
8
  RelationId,
9
9
  ManyToOne,
10
+ OneToMany,
10
11
  PrimaryGeneratedColumn,
11
12
  VersionColumn
12
13
  } from 'typeorm'
13
- import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
14
+ import { ObjectType, Field, ID, registerEnumType } from 'type-graphql'
14
15
 
15
16
  import { Domain } from '@things-factory/shell'
16
17
  import { User } from '@things-factory/auth-base'
17
18
 
19
+ import { FinancialStatementLineItem } from './financial-statement-line-item'
20
+
18
21
  export enum FinancialStatementStatus {
19
22
  STATUS_A = 'STATUS_A',
20
23
  STATUS_B = 'STATUS_B'
@@ -22,79 +25,92 @@ export enum FinancialStatementStatus {
22
25
 
23
26
  registerEnumType(FinancialStatementStatus, {
24
27
  name: 'FinancialStatementStatus',
25
- description: 'state enumeration of a financialStatement'
28
+ description: 'State enumeration of a financial statement' // 재무제표 상태 열거형
26
29
  })
27
30
 
31
+ // 재무제표 (Financial Statement)
28
32
  @Entity()
29
33
  @Index(
30
34
  'ix_financial_statement_0',
31
- (financialStatement: FinancialStatement) => [financialStatement.domain, financialStatement.deletedAt],
32
- { unique: true }
35
+ (financialStatement: FinancialStatement) => [
36
+ financialStatement.domain,
37
+ financialStatement.year,
38
+ financialStatement.quarter,
39
+ financialStatement.month
40
+ ],
41
+ {
42
+ unique: true,
43
+ where: '"deleted_at" IS NULL' // 삭제되지 않은 경우에만 유니크
44
+ }
33
45
  )
34
- @ObjectType({ description: 'Entity for FinancialStatement' })
46
+ @ObjectType({ description: 'Entity for FinancialStatement, representing the financial position of an entity' }) // 엔티티 설명 추가
35
47
  export class FinancialStatement {
36
48
  @PrimaryGeneratedColumn('uuid')
37
- @Field(type => ID)
38
- readonly id: string
49
+ @Field(type => ID, { description: 'Unique identifier for the financial statement' })
50
+ readonly id: string // 고유 식별자 (UUID)
39
51
 
40
52
  @VersionColumn()
41
- @Field({ nullable: true })
42
- version?: number = 1
53
+ @Field({ nullable: true, description: 'Version number for optimistic locking' })
54
+ version?: number = 1 // 낙관적 잠금을 위한 버전 관리 필드
43
55
 
44
56
  @ManyToOne(type => Domain)
45
- @Field({ nullable: true })
46
- domain?: Domain
57
+ @Field({ nullable: true, description: 'The domain to which this financial statement belongs' })
58
+ domain?: Domain // 이 재무제표가 속한 도메인
47
59
 
48
60
  @RelationId((financialStatement: FinancialStatement) => financialStatement.domain)
49
- domainId?: string
61
+ domainId?: string // 도메인의 ID
50
62
 
51
63
  @Column({ nullable: true })
52
- @Field({ nullable: true, description: 'fiscal year' })
53
- year?: number
64
+ @Field({ nullable: true, description: 'Fiscal year of the financial statement' })
65
+ year?: number // 회계 연도
54
66
 
55
67
  @Column({ nullable: true })
56
- @Field({ nullable: true, description: 'fiscal quarter' })
57
- quarter?: number
68
+ @Field({ nullable: true, description: 'Fiscal quarter of the financial statement' })
69
+ quarter?: number // 회계 분기
58
70
 
59
71
  @Column({ nullable: true })
60
- @Field({ nullable: true })
61
- month?: number
72
+ @Field({ nullable: true, description: 'Fiscal month of the financial statement' })
73
+ month?: number // 회계 월
62
74
 
63
75
  @Column({ nullable: true })
64
- @Field({ nullable: true })
65
- asset?: number
76
+ @Field({ nullable: true, description: 'Total assets recorded in the financial statement' })
77
+ asset?: number // 재무제표에 기록된 총자산
66
78
 
67
79
  @Column({ nullable: true })
68
- @Field({ nullable: true })
69
- liability?: number
80
+ @Field({ nullable: true, description: 'Total liabilities recorded in the financial statement' })
81
+ liability?: number // 재무제표에 기록된 총부채
70
82
 
71
83
  @Column({ nullable: true })
72
- @Field({ nullable: true })
73
- equity?: number
84
+ @Field({ nullable: true, description: 'Total equity recorded in the financial statement' })
85
+ equity?: number // 재무제표에 기록된 총자본
86
+
87
+ @OneToMany(type => FinancialStatementLineItem, lineItem => lineItem.statement)
88
+ @Field(type => [FinancialStatementLineItem], { nullable: true })
89
+ lineItems?: FinancialStatementLineItem[] // 계정별 브레이크다운
74
90
 
75
91
  @CreateDateColumn()
76
- @Field({ nullable: true })
77
- createdAt?: Date
92
+ @Field({ nullable: true, description: 'The date and time when the financial statement was created' })
93
+ createdAt?: Date // 재무제표가 생성된 날짜 및 시간
78
94
 
79
95
  @UpdateDateColumn()
80
- @Field({ nullable: true })
81
- updatedAt?: Date
96
+ @Field({ nullable: true, description: 'The date and time when the financial statement was last updated' })
97
+ updatedAt?: Date // 재무제표가 마지막으로 업데이트된 날짜 및 시간
82
98
 
83
99
  @DeleteDateColumn()
84
- @Field({ nullable: true })
85
- deletedAt?: Date
100
+ @Field({ nullable: true, description: 'The date and time when the financial statement was deleted' })
101
+ deletedAt?: Date // 재무제표가 삭제된 날짜 및 시간
86
102
 
87
103
  @ManyToOne(type => User, { nullable: true })
88
- @Field(type => User, { nullable: true })
89
- creator?: User
104
+ @Field(type => User, { nullable: true, description: 'The user who created the financial statement' })
105
+ creator?: User // 재무제표를 생성한 사용자
90
106
 
91
107
  @RelationId((financialStatement: FinancialStatement) => financialStatement.creator)
92
- creatorId?: string
108
+ creatorId?: string // 재무제표를 생성한 사용자의 ID
93
109
 
94
110
  @ManyToOne(type => User, { nullable: true })
95
- @Field(type => User, { nullable: true })
96
- updater?: User
111
+ @Field(type => User, { nullable: true, description: 'The user who last updated the financial statement' })
112
+ updater?: User // 재무제표를 마지막으로 업데이트한 사용자
97
113
 
98
114
  @RelationId((financialStatement: FinancialStatement) => financialStatement.updater)
99
- updaterId?: string
115
+ updaterId?: string // 재무제표를 업데이트한 사용자의 ID
100
116
  }
@@ -1,9 +1,10 @@
1
1
  import { FinancialStatement } from './financial-statement'
2
+ import { FinancialStatementLineItem } from './financial-statement-line-item'
2
3
  import { FinancialStatementHistory } from './financial-statement-history'
3
4
  import { FinancialStatementQuery } from './financial-statement-query'
4
5
  import { FinancialStatementMutation } from './financial-statement-mutation'
5
6
  import { FinancialStatementHistoryEntitySubscriber } from './event-subscriber'
6
7
 
7
- export const entities = [FinancialStatement, FinancialStatementHistory]
8
+ export const entities = [FinancialStatement, FinancialStatementLineItem, FinancialStatementHistory]
8
9
  export const resolvers = [FinancialStatementQuery, FinancialStatementMutation]
9
10
  export const subscribers = [FinancialStatementHistoryEntitySubscriber]
@@ -8,8 +8,12 @@ import { NewFiscalMonth, FiscalMonthPatch } from './fiscal-month-type'
8
8
  @Resolver(FiscalMonth)
9
9
  export class FiscalMonthMutation {
10
10
  @Directive('@transaction')
11
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
11
12
  @Mutation(returns => FiscalMonth, { description: 'To create new FiscalMonth' })
12
- async createFiscalMonth(@Arg('fiscalMonth') fiscalMonth: NewFiscalMonth, @Ctx() context: ResolverContext): Promise<FiscalMonth> {
13
+ async createFiscalMonth(
14
+ @Arg('fiscalMonth') fiscalMonth: NewFiscalMonth,
15
+ @Ctx() context: ResolverContext
16
+ ): Promise<FiscalMonth> {
13
17
  const { domain, user, tx } = context.state
14
18
 
15
19
  const result = await getRepository(FiscalMonth, tx).save({
@@ -23,6 +27,7 @@ export class FiscalMonthMutation {
23
27
  }
24
28
 
25
29
  @Directive('@transaction')
30
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
26
31
  @Mutation(returns => FiscalMonth, { description: 'To modify FiscalMonth information' })
27
32
  async updateFiscalMonth(
28
33
  @Arg('id') id: string,
@@ -46,6 +51,7 @@ export class FiscalMonthMutation {
46
51
  }
47
52
 
48
53
  @Directive('@transaction')
54
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
49
55
  @Mutation(returns => [FiscalMonth], { description: "To modify multiple FiscalMonths' information" })
50
56
  async updateMultipleFiscalMonth(
51
57
  @Arg('patches', type => [FiscalMonthPatch]) patches: FiscalMonthPatch[],
@@ -92,6 +98,7 @@ export class FiscalMonthMutation {
92
98
  }
93
99
 
94
100
  @Directive('@transaction')
101
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
95
102
  @Mutation(returns => Boolean, { description: 'To delete FiscalMonth' })
96
103
  async deleteFiscalMonth(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
97
104
  const { domain, tx } = context.state
@@ -102,6 +109,7 @@ export class FiscalMonthMutation {
102
109
  }
103
110
 
104
111
  @Directive('@transaction')
112
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
105
113
  @Mutation(returns => Boolean, { description: 'To delete multiple FiscalMonths' })
106
114
  async deleteFiscalMonths(
107
115
  @Arg('ids', type => [String]) ids: string[],
@@ -114,11 +122,11 @@ export class FiscalMonthMutation {
114
122
  id: In(ids)
115
123
  })
116
124
 
117
-
118
125
  return true
119
126
  }
120
127
 
121
128
  @Directive('@transaction')
129
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
122
130
  @Mutation(returns => Boolean, { description: 'To import multiple FiscalMonths' })
123
131
  async importFiscalMonths(
124
132
  @Arg('fiscalMonths', type => [FiscalMonthPatch]) fiscalMonths: FiscalMonthPatch[],
@@ -1,4 +1,4 @@
1
- import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx } from 'type-graphql'
1
+ import { Directive, Resolver, Query, FieldResolver, Root, Args, Arg, Ctx } from 'type-graphql'
2
2
  import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
3
3
  import { User } from '@things-factory/auth-base'
4
4
  import { FiscalMonth } from './fiscal-month'
@@ -6,6 +6,7 @@ import { FiscalMonthList } from './fiscal-month-type'
6
6
 
7
7
  @Resolver(FiscalMonth)
8
8
  export class FiscalMonthQuery {
9
+ @Directive('@privilege(category: "accounting", privilege: "query")')
9
10
  @Query(returns => FiscalMonth!, { nullable: true, description: 'To fetch a FiscalMonth by year, quarter, and month' })
10
11
  async fiscalMonth(
11
12
  @Arg('year') year: number,
@@ -20,6 +21,7 @@ export class FiscalMonthQuery {
20
21
  })
21
22
  }
22
23
 
24
+ @Directive('@privilege(category: "accounting", privilege: "query")')
23
25
  @Query(returns => FiscalMonthList, { description: 'To fetch multiple FiscalMonths' })
24
26
  async fiscalMonths(
25
27
  @Args(type => ListParam) params: ListParam,
@@ -48,7 +48,7 @@ export class FiscalMonth {
48
48
  @Field(type => String, { description: 'The end date of the fiscal month in YYYY-MM-DD format' })
49
49
  endDate: string // 월의 종료일
50
50
 
51
- @Column({ type: 'enum', enum: FiscalStatus, default: FiscalStatus.OPEN })
51
+ @Column({ default: FiscalStatus.OPEN })
52
52
  @Field(type => FiscalStatus, { description: 'The status of the fiscal month (OPEN, CLOSED, FINALIZED)' })
53
53
  status: FiscalStatus // 월의 상태 (OPEN, CLOSED, FINALIZED)
54
54
 
@@ -8,8 +8,12 @@ import { NewFiscalQuarter, FiscalQuarterPatch } from './fiscal-quarter-type'
8
8
  @Resolver(FiscalQuarter)
9
9
  export class FiscalQuarterMutation {
10
10
  @Directive('@transaction')
11
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
11
12
  @Mutation(returns => FiscalQuarter, { description: 'To create new FiscalQuarter' })
12
- async createFiscalQuarter(@Arg('fiscalQuarter') fiscalQuarter: NewFiscalQuarter, @Ctx() context: ResolverContext): Promise<FiscalQuarter> {
13
+ async createFiscalQuarter(
14
+ @Arg('fiscalQuarter') fiscalQuarter: NewFiscalQuarter,
15
+ @Ctx() context: ResolverContext
16
+ ): Promise<FiscalQuarter> {
13
17
  const { domain, user, tx } = context.state
14
18
 
15
19
  const result = await getRepository(FiscalQuarter, tx).save({
@@ -23,6 +27,7 @@ export class FiscalQuarterMutation {
23
27
  }
24
28
 
25
29
  @Directive('@transaction')
30
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
26
31
  @Mutation(returns => FiscalQuarter, { description: 'To modify FiscalQuarter information' })
27
32
  async updateFiscalQuarter(
28
33
  @Arg('id') id: string,
@@ -46,6 +51,7 @@ export class FiscalQuarterMutation {
46
51
  }
47
52
 
48
53
  @Directive('@transaction')
54
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
49
55
  @Mutation(returns => [FiscalQuarter], { description: "To modify multiple FiscalQuarters' information" })
50
56
  async updateMultipleFiscalQuarter(
51
57
  @Arg('patches', type => [FiscalQuarterPatch]) patches: FiscalQuarterPatch[],
@@ -92,6 +98,7 @@ export class FiscalQuarterMutation {
92
98
  }
93
99
 
94
100
  @Directive('@transaction')
101
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
95
102
  @Mutation(returns => Boolean, { description: 'To delete FiscalQuarter' })
96
103
  async deleteFiscalQuarter(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
97
104
  const { domain, tx } = context.state
@@ -102,6 +109,7 @@ export class FiscalQuarterMutation {
102
109
  }
103
110
 
104
111
  @Directive('@transaction')
112
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
105
113
  @Mutation(returns => Boolean, { description: 'To delete multiple FiscalQuarters' })
106
114
  async deleteFiscalQuarters(
107
115
  @Arg('ids', type => [String]) ids: string[],
@@ -114,11 +122,11 @@ export class FiscalQuarterMutation {
114
122
  id: In(ids)
115
123
  })
116
124
 
117
-
118
125
  return true
119
126
  }
120
127
 
121
128
  @Directive('@transaction')
129
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
122
130
  @Mutation(returns => Boolean, { description: 'To import multiple FiscalQuarters' })
123
131
  async importFiscalQuarters(
124
132
  @Arg('fiscalQuarters', type => [FiscalQuarterPatch]) fiscalQuarters: FiscalQuarterPatch[],
@@ -128,7 +136,10 @@ export class FiscalQuarterMutation {
128
136
 
129
137
  await Promise.all(
130
138
  fiscalQuarters.map(async (fiscalQuarter: FiscalQuarterPatch) => {
131
- const createdFiscalQuarter: FiscalQuarter = await getRepository(FiscalQuarter, tx).save({ domain, ...fiscalQuarter })
139
+ const createdFiscalQuarter: FiscalQuarter = await getRepository(FiscalQuarter, tx).save({
140
+ domain,
141
+ ...fiscalQuarter
142
+ })
132
143
  })
133
144
  )
134
145
 
@@ -6,6 +6,7 @@ import { FiscalQuarterList } from './fiscal-quarter-type'
6
6
 
7
7
  @Resolver(FiscalQuarter)
8
8
  export class FiscalQuarterQuery {
9
+ @Directive('@privilege(category: "accounting", privilege: "query")')
9
10
  @Query(returns => FiscalQuarter!, {
10
11
  nullable: true,
11
12
  description: 'To fetch a FiscalQuarter by year and quarter number'
@@ -22,6 +23,7 @@ export class FiscalQuarterQuery {
22
23
  })
23
24
  }
24
25
 
26
+ @Directive('@privilege(category: "accounting", privilege: "query")')
25
27
  @Query(returns => FiscalQuarterList, { description: 'To fetch multiple FiscalQuarters' })
26
28
  async fiscalQuarters(
27
29
  @Args(type => ListParam) params: ListParam,
@@ -44,7 +44,7 @@ export class FiscalQuarter {
44
44
  @Field(type => String, { description: 'The end date of the fiscal quarter in YYYY-MM-DD format' })
45
45
  endDate: string // 분기 종료일
46
46
 
47
- @Column({ type: 'enum', enum: FiscalStatus, default: FiscalStatus.OPEN })
47
+ @Column({ default: FiscalStatus.OPEN })
48
48
  @Field(type => FiscalStatus, { description: 'The status of the fiscal quarter (OPEN, CLOSED, FINALIZED)' })
49
49
  status: FiscalStatus // 분기의 상태 (OPEN, CLOSED, FINALIZED)
50
50
 
@@ -8,8 +8,12 @@ import { NewFiscalYear, FiscalYearPatch } from './fiscal-year-type'
8
8
  @Resolver(FiscalYear)
9
9
  export class FiscalYearMutation {
10
10
  @Directive('@transaction')
11
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
11
12
  @Mutation(returns => FiscalYear, { description: 'To create new FiscalYear' })
12
- async createFiscalYear(@Arg('fiscalYear') fiscalYear: NewFiscalYear, @Ctx() context: ResolverContext): Promise<FiscalYear> {
13
+ async createFiscalYear(
14
+ @Arg('fiscalYear') fiscalYear: NewFiscalYear,
15
+ @Ctx() context: ResolverContext
16
+ ): Promise<FiscalYear> {
13
17
  const { domain, user, tx } = context.state
14
18
 
15
19
  const result = await getRepository(FiscalYear, tx).save({
@@ -23,6 +27,7 @@ export class FiscalYearMutation {
23
27
  }
24
28
 
25
29
  @Directive('@transaction')
30
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
26
31
  @Mutation(returns => FiscalYear, { description: 'To modify FiscalYear information' })
27
32
  async updateFiscalYear(
28
33
  @Arg('id') id: string,
@@ -46,6 +51,7 @@ export class FiscalYearMutation {
46
51
  }
47
52
 
48
53
  @Directive('@transaction')
54
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
49
55
  @Mutation(returns => [FiscalYear], { description: "To modify multiple FiscalYears' information" })
50
56
  async updateMultipleFiscalYear(
51
57
  @Arg('patches', type => [FiscalYearPatch]) patches: FiscalYearPatch[],
@@ -92,6 +98,7 @@ export class FiscalYearMutation {
92
98
  }
93
99
 
94
100
  @Directive('@transaction')
101
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
95
102
  @Mutation(returns => Boolean, { description: 'To delete FiscalYear' })
96
103
  async deleteFiscalYear(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
97
104
  const { domain, tx } = context.state
@@ -102,6 +109,7 @@ export class FiscalYearMutation {
102
109
  }
103
110
 
104
111
  @Directive('@transaction')
112
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
105
113
  @Mutation(returns => Boolean, { description: 'To delete multiple FiscalYears' })
106
114
  async deleteFiscalYears(
107
115
  @Arg('ids', type => [String]) ids: string[],
@@ -114,11 +122,11 @@ export class FiscalYearMutation {
114
122
  id: In(ids)
115
123
  })
116
124
 
117
-
118
125
  return true
119
126
  }
120
127
 
121
128
  @Directive('@transaction')
129
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
122
130
  @Mutation(returns => Boolean, { description: 'To import multiple FiscalYears' })
123
131
  async importFiscalYears(
124
132
  @Arg('fiscalYears', type => [FiscalYearPatch]) fiscalYears: FiscalYearPatch[],
@@ -6,6 +6,7 @@ import { FiscalYearList } from './fiscal-year-type'
6
6
 
7
7
  @Resolver(FiscalYear)
8
8
  export class FiscalYearQuery {
9
+ @Directive('@privilege(category: "accounting", privilege: "query")')
9
10
  @Query(returns => FiscalYear!, { nullable: true, description: 'To fetch a FiscalYear by year' })
10
11
  async fiscalYear(@Arg('year') year: number, @Ctx() context: ResolverContext): Promise<FiscalYear | undefined> {
11
12
  const { domain } = context.state
@@ -15,6 +16,7 @@ export class FiscalYearQuery {
15
16
  })
16
17
  }
17
18
 
19
+ @Directive('@privilege(category: "accounting", privilege: "query")')
18
20
  @Query(returns => FiscalYearList, { description: 'To fetch multiple FiscalYears' })
19
21
  async fiscalYears(
20
22
  @Args(type => ListParam) params: ListParam,
@@ -40,7 +40,7 @@ export class FiscalYear {
40
40
  @Field(type => String, { description: 'The end date of the fiscal year in YYYY-MM-DD format' })
41
41
  endDate: string // 회계연도 종료일
42
42
 
43
- @Column({ type: 'enum', enum: FiscalStatus, default: FiscalStatus.OPEN })
43
+ @Column({ default: FiscalStatus.OPEN })
44
44
  @Field(type => FiscalStatus, { description: 'The status of the fiscal year (OPEN, CLOSED, FINALIZED)' })
45
45
  status: FiscalStatus // 회계연도의 상태 (OPEN, CLOSED, FINALIZED)
46
46
 
@@ -1,5 +1,5 @@
1
1
  import { Field, ID, ObjectType } from 'type-graphql'
2
- import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'
2
+ import { Column, Entity, Index, ManyToOne, OneToMany, PrimaryGeneratedColumn, RelationId } from 'typeorm'
3
3
 
4
4
  import {
5
5
  HistoryActionColumn,
@@ -12,6 +12,7 @@ import { config } from '@things-factory/env'
12
12
  import { Domain } from '@things-factory/shell'
13
13
 
14
14
  import { IncomeStatement, IncomeStatementStatus } from './income-statement'
15
+ import { IncomeStatementLineItem } from './income-statement-line-item'
15
16
 
16
17
  const ORMCONFIG = config.get('ormconfig', {})
17
18
  const DATABASE_TYPE = ORMCONFIG.type
@@ -48,28 +49,40 @@ export class IncomeStatementHistory implements HistoryEntityInterface<IncomeStat
48
49
  @Field({ nullable: true })
49
50
  domain?: Domain
50
51
 
51
- @RelationId((incomeStatement: IncomeStatement) => incomeStatement.domain)
52
+ @RelationId((incomeStatementHistory: IncomeStatementHistory) => incomeStatementHistory.domain)
52
53
  domainId?: string
53
54
 
54
- @Column()
55
- @Field()
56
- name: string
55
+ @Column({ nullable: true })
56
+ @Field({ nullable: true, description: 'Fiscal year of the income statement' })
57
+ year?: number // 회계 연도
57
58
 
58
59
  @Column({ nullable: true })
59
- @Field({ nullable: true })
60
- description?: string
60
+ @Field({ nullable: true, description: 'Fiscal quarter of the income statement' })
61
+ quarter?: number // 회계 분기
61
62
 
62
63
  @Column({ nullable: true })
63
- @Field({ nullable: true })
64
- active?: boolean
64
+ @Field({ nullable: true, description: 'Fiscal month of the income statement' })
65
+ month?: number // 회계 월
65
66
 
66
67
  @Column({ nullable: true })
67
- @Field({ nullable: true })
68
- state?: IncomeStatementStatus
68
+ @Field({ nullable: true, description: 'Total revenue recorded in the income statement' })
69
+ revenue?: number // 손익계산서에 기록된 총수익
69
70
 
70
71
  @Column({ nullable: true })
71
- @Field({ nullable: true })
72
- params?: string
72
+ @Field({ nullable: true, description: 'Total expenses recorded in the income statement' })
73
+ expense?: number // 손익계산서에 기록된 총비용
74
+
75
+ @Column({ nullable: true })
76
+ @Field({ nullable: true, description: 'Net income calculated as revenue minus expenses' })
77
+ netIncome?: number // 총수익에서 총비용을 뺀 순이익
78
+
79
+ @Column({ nullable: true })
80
+ @Field({ nullable: true, description: 'Indicates whether this income statement is active' })
81
+ active?: boolean // 이 손익계산서가 활성 상태인지 여부
82
+
83
+ @OneToMany(type => IncomeStatementLineItem, lineItem => lineItem.statement)
84
+ @Field(type => [IncomeStatementLineItem], { nullable: true })
85
+ lineItems?: IncomeStatementLineItem[] // 계정별 브레이크다운
73
86
 
74
87
  @Column({ nullable: true })
75
88
  @Field({ nullable: true })
@@ -87,14 +100,14 @@ export class IncomeStatementHistory implements HistoryEntityInterface<IncomeStat
87
100
  @Field({ nullable: true })
88
101
  creator?: User
89
102
 
90
- @RelationId((incomeStatement: IncomeStatement) => incomeStatement.creator)
103
+ @RelationId((incomeStatementHistory: IncomeStatementHistory) => incomeStatementHistory.creator)
91
104
  creatorId?: string
92
105
 
93
106
  @ManyToOne(type => User, { nullable: true })
94
107
  @Field({ nullable: true })
95
108
  updater?: User
96
109
 
97
- @RelationId((incomeStatement: IncomeStatement) => incomeStatement.updater)
110
+ @RelationId((incomeStatementHistory: IncomeStatementHistory) => incomeStatementHistory.updater)
98
111
  updaterId?: string
99
112
 
100
113
  @HistoryOriginalIdColumn()
@@ -106,8 +119,8 @@ export class IncomeStatementHistory implements HistoryEntityInterface<IncomeStat
106
119
  DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
107
120
  ? 'enum'
108
121
  : DATABASE_TYPE == 'oracle'
109
- ? 'varchar2'
110
- : 'smallint',
122
+ ? 'varchar2'
123
+ : 'smallint',
111
124
  enum: HistoryActionType
112
125
  })
113
126
  public action!: HistoryActionType