@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,198 @@
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 { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'
6
+ import { FinancialInstitution } from './financial-institution'
7
+ import { NewFinancialInstitution, FinancialInstitutionPatch } from './financial-institution-type'
8
+
9
+ @Resolver(FinancialInstitution)
10
+ export class FinancialInstitutionMutation {
11
+ @Directive('@transaction')
12
+ @Mutation(returns => FinancialInstitution, { description: 'To create new FinancialInstitution' })
13
+ async createFinancialInstitution(@Arg('financialInstitution') financialInstitution: NewFinancialInstitution, @Ctx() context: ResolverContext): Promise<FinancialInstitution> {
14
+ const { domain, user, tx } = context.state
15
+
16
+ const result = await getRepository(FinancialInstitution, tx).save({
17
+ ...financialInstitution,
18
+ domain,
19
+ creator: user,
20
+ updater: user
21
+ })
22
+
23
+ if (financialInstitution.thumbnail) {
24
+ await createAttachment(
25
+ null,
26
+ {
27
+ attachment: {
28
+ file: financialInstitution.thumbnail,
29
+ refType: FinancialInstitution.name,
30
+ refBy: result.id
31
+ }
32
+ },
33
+ context
34
+ )
35
+ }
36
+
37
+ return result
38
+ }
39
+
40
+ @Directive('@transaction')
41
+ @Mutation(returns => FinancialInstitution, { description: 'To modify FinancialInstitution information' })
42
+ async updateFinancialInstitution(
43
+ @Arg('id') id: string,
44
+ @Arg('patch') patch: FinancialInstitutionPatch,
45
+ @Ctx() context: ResolverContext
46
+ ): Promise<FinancialInstitution> {
47
+ const { domain, user, tx } = context.state
48
+
49
+ const repository = getRepository(FinancialInstitution, tx)
50
+ const financialInstitution = await repository.findOne({
51
+ where: { domain: { id: domain.id }, id }
52
+ })
53
+
54
+ const result = await repository.save({
55
+ ...financialInstitution,
56
+ ...patch,
57
+ updater: user
58
+ })
59
+
60
+ if (patch.thumbnail) {
61
+ await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)
62
+ await createAttachment(
63
+ null,
64
+ {
65
+ attachment: {
66
+ file: patch.thumbnail,
67
+ refType: FinancialInstitution.name,
68
+ refBy: result.id
69
+ }
70
+ },
71
+ context
72
+ )
73
+ }
74
+
75
+ return result
76
+ }
77
+
78
+ @Directive('@transaction')
79
+ @Mutation(returns => [FinancialInstitution], { description: "To modify multiple FinancialInstitutions' information" })
80
+ async updateMultipleFinancialInstitution(
81
+ @Arg('patches', type => [FinancialInstitutionPatch]) patches: FinancialInstitutionPatch[],
82
+ @Ctx() context: ResolverContext
83
+ ): Promise<FinancialInstitution[]> {
84
+ const { domain, user, tx } = context.state
85
+
86
+ let results = []
87
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
88
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
89
+ const financialInstitutionRepo = getRepository(FinancialInstitution, tx)
90
+
91
+ if (_createRecords.length > 0) {
92
+ for (let i = 0; i < _createRecords.length; i++) {
93
+ const newRecord = _createRecords[i]
94
+
95
+ const result = await financialInstitutionRepo.save({
96
+ ...newRecord,
97
+ domain,
98
+ creator: user,
99
+ updater: user
100
+ })
101
+
102
+ if (newRecord.thumbnail) {
103
+ await createAttachment(
104
+ null,
105
+ {
106
+ attachment: {
107
+ file: newRecord.thumbnail,
108
+ refType: FinancialInstitution.name,
109
+ refBy: result.id
110
+ }
111
+ },
112
+ context
113
+ )
114
+ }
115
+
116
+ results.push({ ...result, cuFlag: '+' })
117
+ }
118
+ }
119
+
120
+ if (_updateRecords.length > 0) {
121
+ for (let i = 0; i < _updateRecords.length; i++) {
122
+ const updateRecord = _updateRecords[i]
123
+ const financialInstitution = await financialInstitutionRepo.findOneBy({ id: updateRecord.id })
124
+
125
+ const result = await financialInstitutionRepo.save({
126
+ ...financialInstitution,
127
+ ...updateRecord,
128
+ updater: user
129
+ })
130
+
131
+ if (updateRecord.thumbnail) {
132
+ await deleteAttachmentsByRef(null, { refBys: [result.id] }, context)
133
+ await createAttachment(
134
+ null,
135
+ {
136
+ attachment: {
137
+ file: updateRecord.thumbnail,
138
+ refType: FinancialInstitution.name,
139
+ refBy: result.id
140
+ }
141
+ },
142
+ context
143
+ )
144
+ }
145
+
146
+ results.push({ ...result, cuFlag: 'M' })
147
+ }
148
+ }
149
+
150
+ return results
151
+ }
152
+
153
+ @Directive('@transaction')
154
+ @Mutation(returns => Boolean, { description: 'To delete FinancialInstitution' })
155
+ async deleteFinancialInstitution(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
156
+ const { domain, tx } = context.state
157
+
158
+ await getRepository(FinancialInstitution, tx).delete({ domain: { id: domain.id }, id })
159
+ await deleteAttachmentsByRef(null, { refBys: [id] }, context)
160
+
161
+ return true
162
+ }
163
+
164
+ @Directive('@transaction')
165
+ @Mutation(returns => Boolean, { description: 'To delete multiple FinancialInstitutions' })
166
+ async deleteFinancialInstitutions(
167
+ @Arg('ids', type => [String]) ids: string[],
168
+ @Ctx() context: ResolverContext
169
+ ): Promise<boolean> {
170
+ const { domain, tx } = context.state
171
+
172
+ await getRepository(FinancialInstitution, tx).delete({
173
+ domain: { id: domain.id },
174
+ id: In(ids)
175
+ })
176
+
177
+ await deleteAttachmentsByRef(null, { refBys: ids }, context)
178
+
179
+ return true
180
+ }
181
+
182
+ @Directive('@transaction')
183
+ @Mutation(returns => Boolean, { description: 'To import multiple FinancialInstitutions' })
184
+ async importFinancialInstitutions(
185
+ @Arg('financialInstitutions', type => [FinancialInstitutionPatch]) financialInstitutions: FinancialInstitutionPatch[],
186
+ @Ctx() context: ResolverContext
187
+ ): Promise<boolean> {
188
+ const { domain, tx } = context.state
189
+
190
+ await Promise.all(
191
+ financialInstitutions.map(async (financialInstitution: FinancialInstitutionPatch) => {
192
+ const createdFinancialInstitution: FinancialInstitution = await getRepository(FinancialInstitution, tx).save({ domain, ...financialInstitution })
193
+ })
194
+ )
195
+
196
+ return true
197
+ }
198
+ }
@@ -0,0 +1,62 @@
1
+ import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { Attachment } from '@things-factory/attachment-base'
3
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
4
+ import { User } from '@things-factory/auth-base'
5
+ import { FinancialInstitution } from './financial-institution'
6
+ import { FinancialInstitutionList } from './financial-institution-type'
7
+
8
+ @Resolver(FinancialInstitution)
9
+ export class FinancialInstitutionQuery {
10
+ @Query(returns => FinancialInstitution!, { nullable: true, description: 'To fetch a FinancialInstitution' })
11
+ async financialInstitution(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<FinancialInstitution> {
12
+ const { domain } = context.state
13
+
14
+ return await getRepository(FinancialInstitution).findOne({
15
+ where: { domain: { id: domain.id }, id }
16
+ })
17
+ }
18
+
19
+ @Query(returns => FinancialInstitutionList, { description: 'To fetch multiple FinancialInstitutions' })
20
+ async financialInstitutions(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<FinancialInstitutionList> {
21
+ const { domain } = context.state
22
+
23
+ const queryBuilder = getQueryBuilderFromListParams({
24
+ domain,
25
+ params,
26
+ repository: await getRepository(FinancialInstitution),
27
+ searchables: ['name', 'description']
28
+ })
29
+
30
+ const [items, total] = await queryBuilder.getManyAndCount()
31
+
32
+ return { items, total }
33
+ }
34
+
35
+ @FieldResolver(type => String)
36
+ async thumbnail(@Root() financialInstitution: FinancialInstitution): Promise<string | undefined> {
37
+ const attachment: Attachment = await getRepository(Attachment).findOne({
38
+ where: {
39
+ domain: { id: financialInstitution.domainId },
40
+ refType: FinancialInstitution.name,
41
+ refBy: financialInstitution.id
42
+ }
43
+ })
44
+
45
+ return attachment?.fullpath
46
+ }
47
+
48
+ @FieldResolver(type => Domain)
49
+ async domain(@Root() financialInstitution: FinancialInstitution): Promise<Domain> {
50
+ return financialInstitution.domainId && (await getRepository(Domain).findOneBy({ id: financialInstitution.domainId }))
51
+ }
52
+
53
+ @FieldResolver(type => User)
54
+ async updater(@Root() financialInstitution: FinancialInstitution): Promise<User> {
55
+ return financialInstitution.updaterId && (await getRepository(User).findOneBy({ id: financialInstitution.updaterId }))
56
+ }
57
+
58
+ @FieldResolver(type => User)
59
+ async creator(@Root() financialInstitution: FinancialInstitution): Promise<User> {
60
+ return financialInstitution.creatorId && (await getRepository(User).findOneBy({ id: financialInstitution.creatorId }))
61
+ }
62
+ }
@@ -0,0 +1,91 @@
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 { FinancialInstitution, FinancialInstitutionType } from './financial-institution'
8
+
9
+ @InputType()
10
+ export class NewFinancialInstitution {
11
+ @Field()
12
+ name: string
13
+
14
+ @Field({ nullable: true })
15
+ description?: string
16
+
17
+ @Field(type => FinancialInstitutionType, {
18
+ description: 'Type of the financial institution (e.g., Bank, Card Company, Insurance Company, etc.)'
19
+ })
20
+ type: FinancialInstitutionType
21
+
22
+ @Field({ nullable: true, description: 'SWIFT code of the bank (if applicable)' })
23
+ swiftCode?: string
24
+
25
+ @Field({ nullable: true, description: 'Country of the financial institution' })
26
+ country?: string
27
+
28
+ @Field({ nullable: true, description: 'Contact number of the financial institution' })
29
+ contactNumber?: string
30
+
31
+ @Field({ nullable: true, description: 'Website of the financial institution' })
32
+ website?: string
33
+
34
+ @Field({ nullable: true, description: 'Address of the financial institution' })
35
+ address?: string
36
+
37
+ @Field({ nullable: true, description: 'Email of the financial institution' })
38
+ email?: string
39
+
40
+ @Field(type => GraphQLUpload, { nullable: true })
41
+ thumbnail?: FileUpload
42
+ }
43
+
44
+ @InputType()
45
+ export class FinancialInstitutionPatch {
46
+ @Field(type => ID, { nullable: true })
47
+ id?: string
48
+
49
+ @Field({ nullable: true })
50
+ name?: string
51
+
52
+ @Field({ nullable: true })
53
+ description?: string
54
+
55
+ @Field(type => FinancialInstitutionType, {
56
+ description: 'Type of the financial institution (e.g., Bank, Card Company, Insurance Company, etc.)'
57
+ })
58
+ type: FinancialInstitutionType
59
+
60
+ @Field({ nullable: true, description: 'SWIFT code of the bank (if applicable)' })
61
+ swiftCode?: string
62
+
63
+ @Field({ nullable: true, description: 'Country of the financial institution' })
64
+ country?: string
65
+
66
+ @Field({ nullable: true, description: 'Contact number of the financial institution' })
67
+ contactNumber?: string
68
+
69
+ @Field({ nullable: true, description: 'Website of the financial institution' })
70
+ website?: string
71
+
72
+ @Field({ nullable: true, description: 'Address of the financial institution' })
73
+ address?: string
74
+
75
+ @Field({ nullable: true, description: 'Email of the financial institution' })
76
+ email?: string
77
+ @Field(type => GraphQLUpload, { nullable: true })
78
+ thumbnail?: FileUpload
79
+
80
+ @Field({ nullable: true })
81
+ cuFlag?: string
82
+ }
83
+
84
+ @ObjectType()
85
+ export class FinancialInstitutionList {
86
+ @Field(type => [FinancialInstitution])
87
+ items: FinancialInstitution[]
88
+
89
+ @Field(type => Int)
90
+ total: number
91
+ }
@@ -0,0 +1,122 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ PrimaryGeneratedColumn,
11
+ VersionColumn
12
+ } from 'typeorm'
13
+ import { ObjectType, Field, ID, registerEnumType } from 'type-graphql'
14
+ import { Domain } from '@things-factory/shell'
15
+ import { User } from '@things-factory/auth-base'
16
+
17
+ export enum FinancialInstitutionType {
18
+ Bank = 'Bank',
19
+ CardCompany = 'CardCompany',
20
+ InsuranceCompany = 'InsuranceCompany',
21
+ InvestmentCompany = 'InvestmentCompany',
22
+ SavingsBank = 'SavingsBank',
23
+ CreditUnion = 'CreditUnion',
24
+ LoanCompany = 'LoanCompany',
25
+ SecuritiesFirm = 'SecuritiesFirm'
26
+ }
27
+
28
+ registerEnumType(FinancialInstitutionType, {
29
+ name: 'FinancialInstitutionType',
30
+ description: 'Type of the financial institution (e.g., Bank, Card Company, Insurance Company, etc.)'
31
+ })
32
+
33
+ @Entity()
34
+ @Index(
35
+ 'ix_financial_institution_0',
36
+ (financialInstitution: FinancialInstitution) => [financialInstitution.domain, financialInstitution.name],
37
+ {
38
+ where: '"deleted_at" IS NULL',
39
+ unique: true
40
+ }
41
+ )
42
+ @ObjectType({ description: 'Entity for Financial Institution (e.g., Bank, Card Company, Insurance Company, etc.)' })
43
+ export class FinancialInstitution {
44
+ @PrimaryGeneratedColumn('uuid')
45
+ @Field(type => ID)
46
+ readonly id: string
47
+
48
+ @ManyToOne(type => Domain)
49
+ @Field({ nullable: true })
50
+ domain?: Domain
51
+
52
+ @RelationId((financialInstitution: FinancialInstitution) => financialInstitution.domain)
53
+ domainId?: string
54
+
55
+ @Column()
56
+ @Field({ nullable: true })
57
+ name?: string
58
+
59
+ @Column({ nullable: true })
60
+ @Field({ nullable: true })
61
+ description?: string
62
+
63
+ @Column({ type: 'enum', enum: FinancialInstitutionType })
64
+ @Field(type => FinancialInstitutionType, {
65
+ description: 'Type of the financial institution (e.g., Bank, Card Company, Insurance Company, etc.)'
66
+ })
67
+ type?: FinancialInstitutionType
68
+
69
+ @Column({ nullable: true })
70
+ @Field({ nullable: true, description: 'SWIFT code of the bank (if applicable)' })
71
+ swiftCode?: string
72
+
73
+ @Column({ nullable: true })
74
+ @Field({ nullable: true, description: 'Country of the financial institution' })
75
+ country?: string
76
+
77
+ @Column({ nullable: true })
78
+ @Field({ nullable: true, description: 'Contact number of the financial institution' })
79
+ contactNumber?: string
80
+
81
+ @Column({ nullable: true })
82
+ @Field({ nullable: true, description: 'Website of the financial institution' })
83
+ website?: string
84
+
85
+ @Column({ nullable: true })
86
+ @Field({ nullable: true, description: 'Address of the financial institution' })
87
+ address?: string
88
+
89
+ @Column({ nullable: true })
90
+ @Field({ nullable: true, description: 'Email of the financial institution' })
91
+ email?: string
92
+
93
+ @CreateDateColumn()
94
+ @Field({ nullable: true })
95
+ createdAt?: Date
96
+
97
+ @UpdateDateColumn()
98
+ @Field({ nullable: true })
99
+ updatedAt?: Date
100
+
101
+ @DeleteDateColumn()
102
+ @Field({ nullable: true })
103
+ deletedAt?: Date
104
+
105
+ @ManyToOne(type => User, { nullable: true })
106
+ @Field(type => User, { nullable: true })
107
+ creator?: User
108
+
109
+ @RelationId((financialInstitution: FinancialInstitution) => financialInstitution.creator)
110
+ creatorId?: string
111
+
112
+ @ManyToOne(type => User, { nullable: true })
113
+ @Field(type => User, { nullable: true })
114
+ updater?: User
115
+
116
+ @RelationId((financialInstitution: FinancialInstitution) => financialInstitution.updater)
117
+ updaterId?: string
118
+
119
+ @VersionColumn()
120
+ @Field({ nullable: true })
121
+ version?: number = 1
122
+ }
@@ -0,0 +1,7 @@
1
+ import { FinancialInstitution } from './financial-institution'
2
+ import { FinancialInstitutionQuery } from './financial-institution-query'
3
+ import { FinancialInstitutionMutation } from './financial-institution-mutation'
4
+
5
+ export const entities = [FinancialInstitution]
6
+ export const resolvers = [FinancialInstitutionQuery, FinancialInstitutionMutation]
7
+ export const subscribers = []
@@ -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,
@@ -11,7 +11,8 @@ 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 { FinancialStatement, FinancialStatementStatus } from './financial-statement'
14
+ import { FinancialStatement } from './financial-statement'
15
+ import { FinancialStatementLineItem } from './financial-statement-line-item'
15
16
 
16
17
  const ORMCONFIG = config.get('ormconfig', {})
17
18
  const DATABASE_TYPE = ORMCONFIG.type
@@ -48,28 +49,36 @@ export class FinancialStatementHistory implements HistoryEntityInterface<Financi
48
49
  @Field({ nullable: true })
49
50
  domain?: Domain
50
51
 
51
- @RelationId((financialStatement: FinancialStatement) => financialStatement.domain)
52
+ @RelationId((financialStatementHistory: FinancialStatementHistory) => financialStatementHistory.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 financial 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 financial 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 financial statement' })
65
+ month?: number // 회계 월
65
66
 
66
67
  @Column({ nullable: true })
67
- @Field({ nullable: true })
68
- state?: FinancialStatementStatus
68
+ @Field({ nullable: true, description: 'Total assets recorded in the financial statement' })
69
+ asset?: number // 재무제표에 기록된 총자산
69
70
 
70
71
  @Column({ nullable: true })
71
- @Field({ nullable: true })
72
- params?: string
72
+ @Field({ nullable: true, description: 'Total liabilities recorded in the financial statement' })
73
+ liability?: number // 재무제표에 기록된 총부채
74
+
75
+ @Column({ nullable: true })
76
+ @Field({ nullable: true, description: 'Total equity recorded in the financial statement' })
77
+ equity?: number // 재무제표에 기록된 총자본
78
+
79
+ @OneToMany(type => FinancialStatementLineItem, lineItem => lineItem.statement)
80
+ @Field(type => [FinancialStatementLineItem], { nullable: true })
81
+ lineItems?: FinancialStatementLineItem[] // 계정별 브레이크다운
73
82
 
74
83
  @Column({ nullable: true })
75
84
  @Field({ nullable: true })
@@ -87,14 +96,14 @@ export class FinancialStatementHistory implements HistoryEntityInterface<Financi
87
96
  @Field({ nullable: true })
88
97
  creator?: User
89
98
 
90
- @RelationId((financialStatement: FinancialStatement) => financialStatement.creator)
99
+ @RelationId((financialStatementHistory: FinancialStatementHistory) => financialStatementHistory.creator)
91
100
  creatorId?: string
92
101
 
93
102
  @ManyToOne(type => User, { nullable: true })
94
103
  @Field({ nullable: true })
95
104
  updater?: User
96
105
 
97
- @RelationId((financialStatement: FinancialStatement) => financialStatement.updater)
106
+ @RelationId((financialStatementHistory: FinancialStatementHistory) => financialStatementHistory.updater)
98
107
  updaterId?: string
99
108
 
100
109
  @HistoryOriginalIdColumn()
@@ -106,8 +115,8 @@ export class FinancialStatementHistory implements HistoryEntityInterface<Financi
106
115
  DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
107
116
  ? 'enum'
108
117
  : DATABASE_TYPE == 'oracle'
109
- ? 'varchar2'
110
- : 'smallint',
118
+ ? 'varchar2'
119
+ : 'smallint',
111
120
  enum: HistoryActionType
112
121
  })
113
122
  public action!: HistoryActionType
@@ -0,0 +1,82 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ PrimaryGeneratedColumn,
11
+ VersionColumn
12
+ } from 'typeorm'
13
+ import { ObjectType, Field, ID } from 'type-graphql'
14
+
15
+ import { Domain } from '@things-factory/shell'
16
+ import { User } from '@things-factory/auth-base'
17
+ import { Account } from '../account/account'
18
+ import { FinancialStatement } from './financial-statement'
19
+
20
+ @ObjectType({ description: 'Line item for a financial statement, representing the breakdown of financial accounts' })
21
+ @Entity()
22
+ @Index(
23
+ 'ix_financial_statement_line_item_0',
24
+ (lineItem: FinancialStatementLineItem) => [lineItem.statement, lineItem.account],
25
+ {
26
+ unique: false,
27
+ where: '"deleted_at" IS NULL'
28
+ }
29
+ )
30
+ export class FinancialStatementLineItem {
31
+ @PrimaryGeneratedColumn('uuid')
32
+ @Field(type => ID)
33
+ readonly id: string // 고유 식별자 (UUID)
34
+
35
+ @ManyToOne(type => FinancialStatement, statement => statement.lineItems)
36
+ @Field(type => FinancialStatement, { description: 'The financial statement this line item is associated with' })
37
+ statement: FinancialStatement // 연결된 재무제표
38
+
39
+ @RelationId((lineItem: FinancialStatementLineItem) => lineItem.statement)
40
+ statementId: string // 재무제표의 ID
41
+
42
+ @ManyToOne(type => Account)
43
+ @Field(type => Account, { description: 'The financial account associated with this line item' })
44
+ account: Account // 라인 아이템과 연결된 계정
45
+
46
+ @RelationId((lineItem: FinancialStatementLineItem) => lineItem.account)
47
+ accountId: string // 계정의 ID
48
+
49
+ @Column({ nullable: false })
50
+ @Field({ nullable: false, description: 'The monetary amount related to the financial account for this line item' })
51
+ amount: number // 계정에 대한 금액
52
+
53
+ @Column({ nullable: true })
54
+ @Field({ nullable: true, description: 'Optional description or notes for this line item' })
55
+ description?: string // 라인 아이템에 대한 선택적 설명 또는 메모
56
+
57
+ @CreateDateColumn()
58
+ @Field({ nullable: true, description: 'The date and time when this line item was created' })
59
+ createdAt?: Date // 라인 아이템이 생성된 날짜 및 시간
60
+
61
+ @UpdateDateColumn()
62
+ @Field({ nullable: true, description: 'The date and time when this line item was last updated' })
63
+ updatedAt?: Date // 라인 아이템이 마지막으로 업데이트된 날짜 및 시간
64
+
65
+ @DeleteDateColumn()
66
+ @Field({ nullable: true, description: 'The date and time when this line item was deleted' })
67
+ deletedAt?: Date // 라인 아이템이 삭제된 날짜 및 시간
68
+
69
+ @ManyToOne(type => User, { nullable: true })
70
+ @Field(type => User, { nullable: true, description: 'The user who created this line item' })
71
+ creator?: User // 라인 아이템을 생성한 사용자
72
+
73
+ @RelationId((lineItem: FinancialStatementLineItem) => lineItem.creator)
74
+ creatorId?: string // 생성자의 ID
75
+
76
+ @ManyToOne(type => User, { nullable: true })
77
+ @Field(type => User, { nullable: true, description: 'The user who last updated this line item' })
78
+ updater?: User // 라인 아이템을 마지막으로 업데이트한 사용자
79
+
80
+ @RelationId((lineItem: FinancialStatementLineItem) => lineItem.updater)
81
+ updaterId?: string // 업데이트한 사용자의 ID
82
+ }