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

Sign up to get free protection for your applications and to get access to all the features.
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,16 @@
1
+ import { Domain, User } from '@operato/shell';
2
+ export declare class AccountingCategory {
3
+ readonly id?: string;
4
+ domain?: Domain;
5
+ code?: string;
6
+ name?: string;
7
+ description?: string;
8
+ parent?: AccountingCategory;
9
+ children?: AccountingCategory[];
10
+ active?: boolean;
11
+ createdAt?: Date;
12
+ updatedAt?: Date;
13
+ deletedAt?: Date;
14
+ creator?: User;
15
+ updater?: User;
16
+ }
@@ -0,0 +1,3 @@
1
+ export class AccountingCategory {
2
+ }
3
+ //# sourceMappingURL=accounting-category.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounting-category.js","sourceRoot":"","sources":["../../client/types/accounting-category.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;CAoB9B","sourcesContent":["import { Domain, User } from '@operato/shell'\n\nexport class AccountingCategory {\n readonly id?: string\n\n domain?: Domain\n\n code?: string\n name?: string\n description?: string\n\n parent?: AccountingCategory\n children?: AccountingCategory[]\n\n active?: boolean\n\n createdAt?: Date\n updatedAt?: Date\n deletedAt?: Date\n\n creator?: User\n updater?: User\n}\n"]}
@@ -0,0 +1 @@
1
+ export * from './accounting-category';
@@ -0,0 +1,2 @@
1
+ export * from './accounting-category';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../client/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA","sourcesContent":["export * from './accounting-category'\n"]}
@@ -12,15 +12,22 @@ async function callback(activityInstance, addendum, context) {
12
12
  name: 'Book'
13
13
  }));
14
14
  /*
15
- book 액티비티는 한명의 assignee(thread)만 수행하도록 한다. 따라서, output 중에서 샘플 개만을 data로 취한다.
16
- 만약, 여러 assignees(threads)가 수행하는 액티비티인 경우에는 output 전체를 data로 처리한다.
15
+ The Book activity is designed to be performed by a single assignee (thread).
16
+ Therefore, we take a sample from the output as data.
17
+ If it were an activity performed by multiple assignees (threads),
18
+ we would process the entire output as data.
17
19
  */
18
20
  const assignees = Object.keys(output);
19
21
  const data = assignees.length > 0 && output[assignees[0]];
20
22
  if (activity) {
21
23
  /*
22
- custom logic goes here.
23
- 주로,
24
+ Custom logic goes here.
25
+ Typically, this would involve recording the accounting transaction
26
+ or updating related data in the accounting system.
27
+ For example, you might:
28
+ 1. Save the transaction to the database
29
+ 2. Update account balances
30
+ 3. Generate necessary reports or notifications
24
31
  */
25
32
  }
26
33
  else {
@@ -28,11 +35,12 @@ async function callback(activityInstance, addendum, context) {
28
35
  }
29
36
  }
30
37
  else if (state == worklist_1.ActivityInstanceStatus.Aborted) {
38
+ // Implement logic for handling aborted activities here
31
39
  }
32
40
  }
33
41
  exports.ActivityBook = {
34
42
  name: 'Book',
35
- description: 'An activity thate enter a incoming or expense in the ledger',
43
+ description: 'An activity that records income or expenses in the accounting system',
36
44
  release: '1.0.0',
37
45
  provider: 'hatiolab.com',
38
46
  category: 'accounting',
@@ -48,24 +56,28 @@ exports.ActivityBook = {
48
56
  }
49
57
  ],
50
58
  /*
51
- startable 설정된 액티비티는 수동으로 업무를 시작하여, 할당할 있음을 의미한다.
52
- issuer로 정의된 역할을 갖는 사용자가 시작할 있으며, issuer가 정의되지 않았다면 모든 사용자가 시작할 있다.
53
- 업무를 시작하는 과정에서 assignees와 approval-line은 액티비티의 설정을 디폴트로 하지만 수동으로 조정할 수 있다.
59
+ Setting an activity as startable means it can be manually initiated and assigned.
60
+ Users with the defined issuer role can start it, or all users if no issuer is defined.
61
+ The process of starting allows for manual adjustment of assignees and approval-line,
62
+ with activity settings as the default.
54
63
  */
55
64
  startable: true,
56
- /* (미구현 속성)
57
- startingType 설정된 액티비티는 'issue' 또는 'post' 이 될 수 있다. 'post' 타입은 혼자서 start, assign, end 까지 한번에 다하는 특성을 갖는다. 이 액티비티를 수행하는 사용자는 draft(초안)과 post(완료)단계만 인식하게 된다.
58
- 경우의 모델은 모두 'in' 또는 'inout'의 속성을 갖는 것이 좋다. 'out' 속성의 데이타는 입력될 기회를 갖지 못한다.
59
- 경우의 assignees 설정은 의미가 없다.
60
- 경우에도 approval-line이 설정되어 있다면, 승인 프로세스에 의해서 처리된다.
61
- 'issue' 타입인 경우에는 모델의 'in' 또는 'inout' 속성을 채워서 assignee에게 할당하는 방식이므로 assignee가 설정되어야 한다.
65
+ /* (Unimplemented property)
66
+ startingType can be set to 'issue' or 'post'. 'post' type allows for start, assign, and end
67
+ to be done at once by a single user. Users only see draft and post stages for this activity.
68
+ All model properties should be 'in' or 'inout' in this case, as 'out' properties won't have
69
+ a chance for input. Assignees settings are meaningless in this case.
70
+ If an approval-line is set, it will still be processed through the approval process.
71
+ For 'issue' type, 'in' or 'inout' properties of the model are filled and assigned to the assignee,
72
+ so an assignee must be set.
62
73
  */
63
74
  startingType: 'post',
64
- /* (미구현 속성)
65
- multiple 속성은 'parallel', 'sequential' 값을 설정할 수 있다. parallel 설정하면, 다중 인스턴스(여기서는 다중 쓰레드)로 처리하되 병렬처리되며,
66
- sequential 설정하면 순차적으로 다중 인스턴스가 수행된다.
67
- 설정하지 않으면, single 인스턴스로 수행된다는 의미이며, 경우 assignees가 여럿이 설정되어있어도 1명에게만 할당되게 된다.
68
- 경우에는 액티비티 인스턴스의 결과 데이타(output) 단일 쓰레드의 output이 그대로 적용된다.
75
+ /* (Unimplemented property)
76
+ The multiple property can be set to 'parallel' or 'sequential'. 'parallel' processes multiple
77
+ instances (threads) in parallel, while 'sequential' processes them in sequence.
78
+ If not set, it implies single instance execution, where only one assignee is allocated even if
79
+ multiple are set. In this case, the activity instance's result data (output) is directly applied
80
+ from the single thread's output.
69
81
  */
70
82
  multiple: null,
71
83
  model: [
@@ -1 +1 @@
1
- {"version":3,"file":"activity-book.js","sourceRoot":"","sources":["../../server/activities/activity-book.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n ActivityInstance,\n ActivityInstanceStatus,\n ActivityThread,\n UpdateActivityInstanceStateAddendum\n} from '@things-factory/worklist'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, tx } = context.state\n const { input, output, state } = activityInstance\n const { causedBy } = addendum || {}\n\n if (state == ActivityInstanceStatus.Ended) {\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: domain.id },\n name: 'Book'\n })) as Activity\n\n /* \n book 액티비티는 한명의 assignee(thread) 수행하도록 한다. 따라서, output 중에서 샘플 개만을 data로 취한다.\n 만약, 여러 assignees(threads) 수행하는 액티비티인 경우에는 output 전체를 data로 처리한다.\n */\n const assignees = Object.keys(output)\n const data = assignees.length > 0 && output[assignees[0]]\n\n if (activity) {\n /* \n custom logic goes here.\n 주로, \n */\n } else {\n console.error('Book Activity not installed.')\n }\n } else if (state == ActivityInstanceStatus.Aborted) {\n }\n}\n\nexport const ActivityBook = {\n name: 'Book',\n description: 'An activity thate enter a incoming or expense in the ledger',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'accounting',\n activityType: 'user',\n priority: 1,\n searchKeys: [\n // sample search keys\n {\n name: 'category',\n description: 'expense category',\n inputKey: 'category',\n tKey: 'category'\n }\n ],\n /* \n startable 설정된 액티비티는 수동으로 업무를 시작하여, 할당할 있음을 의미한다.\n issuer로 정의된 역할을 갖는 사용자가 시작할 있으며, issuer가 정의되지 않았다면 모든 사용자가 시작할 있다.\n 업무를 시작하는 과정에서 assignees approval-line 액티비티의 설정을 디폴트로 하지만 수동으로 조정할 수 있다.\n */\n startable: true,\n /* (미구현 속성) \n startingType 설정된 액티비티는 'issue' 또는 'post' 이 될 수 있다. 'post' 타입은 혼자서 start, assign, end 까지 한번에 다하는 특성을 갖는다. 액티비티를 수행하는 사용자는 draft(초안)과 post(완료)단계만 인식하게 된다.\n 경우의 모델은 모두 'in' 또는 'inout' 속성을 갖는 것이 좋다. 'out' 속성의 데이타는 입력될 기회를 갖지 못한다.\n 이 경우의 assignees 설정은 의미가 없다.\n 경우에도 approval-line 설정되어 있다면, 승인 프로세스에 의해서 처리된다.\n 'issue' 타입인 경우에는 모델의 'in' 또는 'inout' 속성을 채워서 assignee에게 할당하는 방식이므로 assignee 설정되어야 한다.\n */\n startingType: 'post',\n /* (미구현 속성)\n multiple 속성은 'parallel', 'sequential' 값을 설정할 있다. parallel 설정하면, 다중 인스턴스(여기서는 다중 쓰레드)로 처리하되 병렬처리되며,\n sequential로 설정하면 순차적으로 다중 인스턴스가 수행된다.\n 설정하지 않으면, single 인스턴스로 수행된다는 의미이며, 경우 assignees가 여럿이 설정되어있어도 1명에게만 할당되게 된다.\n 경우에는 액티비티 인스턴스의 결과 데이타(output) 단일 쓰레드의 output이 그대로 적용된다.\n */\n multiple: null,\n model: [\n {\n name: 'name',\n description: 'name',\n tag: 'name',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'select',\n options: {\n options: ['KRW', 'USD', 'CNY']\n },\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'currency',\n description: 'currency',\n tag: 'currency',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'select',\n options: {\n options: ['KRW', 'USD', 'CNY']\n },\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'amount',\n description: 'amount',\n tag: 'amount',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'number',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'category',\n description: 'accounting category',\n tag: 'category',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'date',\n description: 'issuance date',\n tag: 'date',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'generated',\n uiSource: '',\n viewType: 'generated',\n viewSource: '',\n reportType: 'custom-element',\n reportSource: 'activity-book-report',\n thumbnail: '/assets/images/book-activity.jpg',\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
1
+ {"version":3,"file":"activity-book.js","sourceRoot":"","sources":["../../server/activities/activity-book.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n ActivityInstance,\n ActivityInstanceStatus,\n ActivityThread,\n UpdateActivityInstanceStateAddendum\n} from '@things-factory/worklist'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, tx } = context.state\n const { input, output, state } = activityInstance\n const { causedBy } = addendum || {}\n\n if (state == ActivityInstanceStatus.Ended) {\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: domain.id },\n name: 'Book'\n })) as Activity\n\n /* \n The Book activity is designed to be performed by a single assignee (thread).\n Therefore, we take a sample from the output as data.\n If it were an activity performed by multiple assignees (threads),\n we would process the entire output as data.\n */\n const assignees = Object.keys(output)\n const data = assignees.length > 0 && output[assignees[0]]\n\n if (activity) {\n /* \n Custom logic goes here.\n Typically, this would involve recording the accounting transaction\n or updating related data in the accounting system.\n For example, you might:\n 1. Save the transaction to the database\n 2. Update account balances\n 3. Generate necessary reports or notifications\n */\n } else {\n console.error('Book Activity not installed.')\n }\n } else if (state == ActivityInstanceStatus.Aborted) {\n // Implement logic for handling aborted activities here\n }\n}\n\nexport const ActivityBook = {\n name: 'Book',\n description: 'An activity that records income or expenses in the accounting system',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'accounting',\n activityType: 'user',\n priority: 1,\n searchKeys: [\n // sample search keys\n {\n name: 'category',\n description: 'expense category',\n inputKey: 'category',\n tKey: 'category'\n }\n ],\n /* \n Setting an activity as startable means it can be manually initiated and assigned.\n Users with the defined issuer role can start it, or all users if no issuer is defined.\n The process of starting allows for manual adjustment of assignees and approval-line,\n with activity settings as the default.\n */\n startable: true,\n /* (Unimplemented property) \n startingType can be set to 'issue' or 'post'. 'post' type allows for start, assign, and end\n to be done at once by a single user. Users only see draft and post stages for this activity.\n All model properties should be 'in' or 'inout' in this case, as 'out' properties won't have\n a chance for input. Assignees settings are meaningless in this case.\n If an approval-line is set, it will still be processed through the approval process.\n For 'issue' type, 'in' or 'inout' properties of the model are filled and assigned to the assignee,\n so an assignee must be set.\n */\n startingType: 'post',\n /* (Unimplemented property)\n The multiple property can be set to 'parallel' or 'sequential'. 'parallel' processes multiple\n instances (threads) in parallel, while 'sequential' processes them in sequence.\n If not set, it implies single instance execution, where only one assignee is allocated even if\n multiple are set. In this case, the activity instance's result data (output) is directly applied\n from the single thread's output.\n */\n multiple: null,\n model: [\n {\n name: 'name',\n description: 'name',\n tag: 'name',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'select',\n options: {\n options: ['KRW', 'USD', 'CNY']\n },\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'currency',\n description: 'currency',\n tag: 'currency',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'select',\n options: {\n options: ['KRW', 'USD', 'CNY']\n },\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'amount',\n description: 'amount',\n tag: 'amount',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'number',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'category',\n description: 'accounting category',\n tag: 'category',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'date',\n description: 'issuance date',\n tag: 'date',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'generated',\n uiSource: '',\n viewType: 'generated',\n viewSource: '',\n reportType: 'custom-element',\n reportSource: 'activity-book-report',\n thumbnail: '/assets/images/book-activity.jpg',\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
@@ -8,20 +8,24 @@ const shell_1 = require("@things-factory/shell");
8
8
  const financial_statement_1 = require("../service/financial-statement/financial-statement");
9
9
  const income_statement_1 = require("../service/income-statement/income-statement");
10
10
  const transaction_1 = require("../service/transaction/transaction");
11
+ const payment_1 = require("../service/payment/payment");
11
12
  async function calculateMonthlyStatements(year, month) {
12
13
  const transactionRepository = (0, shell_1.getRepository)(transaction_1.Transaction);
14
+ const paymentRepository = (0, shell_1.getRepository)(payment_1.Payment);
13
15
  const financialStatementRepository = (0, shell_1.getRepository)(financial_statement_1.FinancialStatement);
14
16
  const incomeStatementRepository = (0, shell_1.getRepository)(income_statement_1.IncomeStatement);
15
17
  // 재무제표 계산
16
18
  const financialResult = await transactionRepository
17
19
  .createQueryBuilder('transaction')
20
+ .leftJoinAndSelect('transaction.payments', 'payment')
18
21
  .select([
19
- 'SUM(CASE WHEN transaction.type = :asset THEN transaction.amount ELSE 0 END) AS asset',
20
- 'SUM(CASE WHEN transaction.type = :liability THEN transaction.amount ELSE 0 END) AS liability',
21
- 'SUM(CASE WHEN transaction.type = :equity THEN transaction.amount ELSE 0 END) AS equity'
22
+ 'SUM(CASE WHEN transaction.type = :asset THEN payment.amount ELSE 0 END) AS asset',
23
+ 'SUM(CASE WHEN transaction.type = :liability THEN payment.amount ELSE 0 END) AS liability',
24
+ 'SUM(CASE WHEN transaction.type = :equity THEN payment.amount ELSE 0 END) AS equity'
22
25
  ])
23
26
  .where('transaction.year = :year', { year })
24
27
  .andWhere('transaction.month = :month', { month })
28
+ .andWhere('payment.direction = :incoming', { incoming: payment_1.PaymentDirection.Incoming })
25
29
  .setParameters({
26
30
  asset: transaction_1.TransactionType.Asset,
27
31
  liability: transaction_1.TransactionType.Liability,
@@ -38,15 +42,17 @@ async function calculateMonthlyStatements(year, month) {
38
42
  // 손익계산서 계산
39
43
  const incomeResult = await transactionRepository
40
44
  .createQueryBuilder('transaction')
45
+ .leftJoinAndSelect('transaction.payments', 'payment')
41
46
  .select([
42
- 'SUM(CASE WHEN transaction.type = :income THEN transaction.amount ELSE 0 END) AS revenue',
43
- 'SUM(CASE WHEN transaction.type = :expense THEN transaction.amount ELSE 0 END) AS expense'
47
+ 'SUM(CASE WHEN transaction.type = :income THEN payment.amount ELSE 0 END) AS revenue',
48
+ 'SUM(CASE WHEN transaction.type = :expense THEN payment.amount ELSE 0 END) AS expense'
44
49
  ])
45
50
  .where('transaction.year = :year', { year })
46
51
  .andWhere('transaction.month = :month', { month })
52
+ .andWhere('payment.direction = :incoming', { incoming: payment_1.PaymentDirection.Incoming })
47
53
  .setParameters({
48
- income: transaction_1.TransactionType.Income,
49
- expense: transaction_1.TransactionType.Expense
54
+ income: transaction_1.TransactionType.SalesIncome,
55
+ expense: transaction_1.TransactionType.PurchaseExpense
50
56
  })
51
57
  .getRawOne();
52
58
  const incomeStatement = new income_statement_1.IncomeStatement();
@@ -1 +1 @@
1
- {"version":3,"file":"summary-statements.js","sourceRoot":"","sources":["../../server/controllers/summary-statements.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { FinancialStatement } from '../service/financial-statement/financial-statement'\nimport { IncomeStatement } from '../service/income-statement/income-statement'\nimport { Transaction, TransactionType } from '../service/transaction/transaction'\n\nexport async function calculateMonthlyStatements(year: number, month: number): Promise<void> {\n const transactionRepository = getRepository(Transaction)\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 계산\n const financialResult = await transactionRepository\n .createQueryBuilder('transaction')\n .select([\n 'SUM(CASE WHEN transaction.type = :asset THEN transaction.amount ELSE 0 END) AS asset',\n 'SUM(CASE WHEN transaction.type = :liability THEN transaction.amount ELSE 0 END) AS liability',\n 'SUM(CASE WHEN transaction.type = :equity THEN transaction.amount ELSE 0 END) AS equity'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .setParameters({\n asset: TransactionType.Asset,\n liability: TransactionType.Liability,\n equity: TransactionType.Equity\n })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.month = month\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 계산\n const incomeResult = await transactionRepository\n .createQueryBuilder('transaction')\n .select([\n 'SUM(CASE WHEN transaction.type = :income THEN transaction.amount ELSE 0 END) AS revenue',\n 'SUM(CASE WHEN transaction.type = :expense THEN transaction.amount ELSE 0 END) AS expense'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .setParameters({\n income: TransactionType.Income,\n expense: TransactionType.Expense\n })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.month = month\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateQuarterlyStatements(year: number, quarter: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n const months = getMonthsInQuarter(quarter)\n\n // 재무제표 분기 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .andWhere('financialStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.quarter = quarter\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 분기 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .andWhere('incomeStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.quarter = quarter\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateYearlyStatements(year: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 연간 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 연간 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport function getMonthsInQuarter(quarter: number): number[] {\n switch (quarter) {\n case 1:\n return [1, 2, 3]\n case 2:\n return [4, 5, 6]\n case 3:\n return [7, 8, 9]\n case 4:\n return [10, 11, 12]\n default:\n throw new Error('Invalid quarter number')\n }\n}\n"]}
1
+ {"version":3,"file":"summary-statements.js","sourceRoot":"","sources":["../../server/controllers/summary-statements.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { FinancialStatement } from '../service/financial-statement/financial-statement'\nimport { IncomeStatement } from '../service/income-statement/income-statement'\nimport { Transaction, TransactionType } from '../service/transaction/transaction'\nimport { Payment, PaymentDirection } from '../service/payment/payment'\n\nexport async function calculateMonthlyStatements(year: number, month: number): Promise<void> {\n const transactionRepository = getRepository(Transaction)\n const paymentRepository = getRepository(Payment)\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 계산\n const financialResult = await transactionRepository\n .createQueryBuilder('transaction')\n .leftJoinAndSelect('transaction.payments', 'payment')\n .select([\n 'SUM(CASE WHEN transaction.type = :asset THEN payment.amount ELSE 0 END) AS asset',\n 'SUM(CASE WHEN transaction.type = :liability THEN payment.amount ELSE 0 END) AS liability',\n 'SUM(CASE WHEN transaction.type = :equity THEN payment.amount ELSE 0 END) AS equity'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .andWhere('payment.direction = :incoming', { incoming: PaymentDirection.Incoming })\n .setParameters({\n asset: TransactionType.Asset,\n liability: TransactionType.Liability,\n equity: TransactionType.Equity\n })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.month = month\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 계산\n const incomeResult = await transactionRepository\n .createQueryBuilder('transaction')\n .leftJoinAndSelect('transaction.payments', 'payment')\n .select([\n 'SUM(CASE WHEN transaction.type = :income THEN payment.amount ELSE 0 END) AS revenue',\n 'SUM(CASE WHEN transaction.type = :expense THEN payment.amount ELSE 0 END) AS expense'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .andWhere('payment.direction = :incoming', { incoming: PaymentDirection.Incoming })\n .setParameters({\n income: TransactionType.SalesIncome,\n expense: TransactionType.PurchaseExpense\n })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.month = month\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateQuarterlyStatements(year: number, quarter: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n const months = getMonthsInQuarter(quarter)\n\n // 재무제표 분기 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .andWhere('financialStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.quarter = quarter\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 분기 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .andWhere('incomeStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.quarter = quarter\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateYearlyStatements(year: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 연간 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 연간 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport function getMonthsInQuarter(quarter: number): number[] {\n switch (quarter) {\n case 1:\n return [1, 2, 3]\n case 2:\n return [4, 5, 6]\n case 3:\n return [7, 8, 9]\n case 4:\n return [10, 11, 12]\n default:\n throw new Error('Invalid quarter number')\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  export * from './controllers';
2
2
  export * from './migrations';
3
3
  export * from './middlewares';
4
+ export * from './service';
4
5
  import './routes';
@@ -4,5 +4,6 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./controllers"), exports);
5
5
  tslib_1.__exportStar(require("./migrations"), exports);
6
6
  tslib_1.__exportStar(require("./middlewares"), exports);
7
+ tslib_1.__exportStar(require("./service"), exports);
7
8
  require("./routes");
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,uDAA4B;AAC5B,wDAA6B;AAE7B,oBAAiB","sourcesContent":["export * from './controllers'\nexport * from './migrations'\nexport * from './middlewares'\n\nimport './routes'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,uDAA4B;AAC5B,wDAA6B;AAC7B,oDAAyB;AAEzB,oBAAiB","sourcesContent":["export * from './controllers'\nexport * from './migrations'\nexport * from './middlewares'\nexport * from './service'\n\nimport './routes'\n"]}
@@ -86,9 +86,9 @@ class SeedFiscalEntities1725200507196 {
86
86
  }
87
87
  const currentYear = new Date().getFullYear();
88
88
  // FiscalMonth, FiscalQuarter, FiscalYear 삭제
89
- await fiscalMonthRepository.delete({ domain, year: currentYear });
90
- await fiscalQuarterRepository.delete({ domain, year: currentYear });
91
- await fiscalYearRepository.delete({ domain, year: currentYear });
89
+ await fiscalMonthRepository.delete({ domain: { id: domain.id }, year: currentYear });
90
+ await fiscalQuarterRepository.delete({ domain: { id: domain.id }, year: currentYear });
91
+ await fiscalYearRepository.delete({ domain: { id: domain.id }, year: currentYear });
92
92
  }
93
93
  }
94
94
  exports.SeedFiscalEntities1725200507196 = SeedFiscalEntities1725200507196;
@@ -1 +1 @@
1
- {"version":3,"file":"1725200507196-seed-fiscal-entities.js","sourceRoot":"","sources":["../../server/migrations/1725200507196-seed-fiscal-entities.ts"],"names":[],"mappings":"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","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { FiscalYear } from '../service/fiscal-year/fiscal-year'\nimport { FiscalQuarter } from '../service/fiscal-quarter/fiscal-quarter'\nimport { FiscalMonth } from '../service/fiscal-month/fiscal-month'\nimport { FiscalStatus } from '../service/common-type'\n\nexport class SeedFiscalEntities1725200507196 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<void> {\n const domainRepository = getRepository(Domain)\n const userRepository = getRepository(User)\n const fiscalYearRepository = getRepository(FiscalYear)\n const fiscalQuarterRepository = getRepository(FiscalQuarter)\n const fiscalMonthRepository = getRepository(FiscalMonth)\n\n const domain: Domain | null = await domainRepository.findOne({\n where: { name: 'SYSTEM' }\n })\n\n if (!domain) {\n throw new Error('SYSTEM domain not found')\n }\n\n const user = await userRepository.findOne({ where: { id: domain.owner } })\n\n if (!user) {\n throw new Error('Domain owner not found')\n }\n\n const currentYear = new Date().getFullYear()\n\n try {\n // Fiscal Year 생성\n const fiscalYear = await fiscalYearRepository.save({\n domain,\n year: currentYear,\n startDate: `${currentYear}-01-01`, // 문자열로 저장\n endDate: `${currentYear}-12-31`, // 문자열로 저장\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n\n // Fiscal Quarters 생성\n for (let quarter = 1; quarter <= 4; quarter++) {\n const startMonth = (quarter - 1) * 3 + 1\n const endMonth = quarter * 3\n\n const fiscalQuarter = await fiscalQuarterRepository.save({\n domain,\n year: currentYear,\n quarter,\n startDate: `${currentYear}-${String(startMonth).padStart(2, '0')}-01`, // 문자열로 저장\n endDate: `${currentYear}-${String(endMonth).padStart(2, '0')}-31`, // 임시로 월의 마지막 날을 31일로 설정\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n\n // Fiscal Months 생성\n for (let month = startMonth; month <= endMonth; month++) {\n const startDate = `${currentYear}-${String(month).padStart(2, '0')}-01`\n const endDate = `${currentYear}-${String(month).padStart(2, '0')}-${new Date(currentYear, month, 0).getDate()}`\n\n await fiscalMonthRepository.save({\n domain,\n year: currentYear,\n quarter,\n month,\n startDate,\n endDate,\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n }\n }\n } catch (error) {\n console.error('Failed to seed fiscal entities:', error)\n throw error\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n const domainRepository = getRepository(Domain)\n const fiscalYearRepository = getRepository(FiscalYear)\n const fiscalQuarterRepository = getRepository(FiscalQuarter)\n const fiscalMonthRepository = getRepository(FiscalMonth)\n\n const domain: Domain | null = await domainRepository.findOne({\n where: { name: 'SYSTEM' }\n })\n\n if (!domain) {\n throw new Error('SYSTEM domain not found')\n }\n\n const currentYear = new Date().getFullYear()\n\n // FiscalMonth, FiscalQuarter, FiscalYear 삭제\n await fiscalMonthRepository.delete({ domain, year: currentYear })\n await fiscalQuarterRepository.delete({ domain, year: currentYear })\n await fiscalYearRepository.delete({ domain, year: currentYear })\n }\n}\n"]}
1
+ {"version":3,"file":"1725200507196-seed-fiscal-entities.js","sourceRoot":"","sources":["../../server/migrations/1725200507196-seed-fiscal-entities.ts"],"names":[],"mappings":"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","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { FiscalYear } from '../service/fiscal-year/fiscal-year'\nimport { FiscalQuarter } from '../service/fiscal-quarter/fiscal-quarter'\nimport { FiscalMonth } from '../service/fiscal-month/fiscal-month'\nimport { FiscalStatus } from '../service/common-type'\n\nexport class SeedFiscalEntities1725200507196 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<void> {\n const domainRepository = getRepository(Domain)\n const userRepository = getRepository(User)\n const fiscalYearRepository = getRepository(FiscalYear)\n const fiscalQuarterRepository = getRepository(FiscalQuarter)\n const fiscalMonthRepository = getRepository(FiscalMonth)\n\n const domain: Domain | null = await domainRepository.findOne({\n where: { name: 'SYSTEM' }\n })\n\n if (!domain) {\n throw new Error('SYSTEM domain not found')\n }\n\n const user = await userRepository.findOne({ where: { id: domain.owner } })\n\n if (!user) {\n throw new Error('Domain owner not found')\n }\n\n const currentYear = new Date().getFullYear()\n\n try {\n // Fiscal Year 생성\n const fiscalYear = await fiscalYearRepository.save({\n domain,\n year: currentYear,\n startDate: `${currentYear}-01-01`, // 문자열로 저장\n endDate: `${currentYear}-12-31`, // 문자열로 저장\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n\n // Fiscal Quarters 생성\n for (let quarter = 1; quarter <= 4; quarter++) {\n const startMonth = (quarter - 1) * 3 + 1\n const endMonth = quarter * 3\n\n const fiscalQuarter = await fiscalQuarterRepository.save({\n domain,\n year: currentYear,\n quarter,\n startDate: `${currentYear}-${String(startMonth).padStart(2, '0')}-01`, // 문자열로 저장\n endDate: `${currentYear}-${String(endMonth).padStart(2, '0')}-31`, // 임시로 월의 마지막 날을 31일로 설정\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n\n // Fiscal Months 생성\n for (let month = startMonth; month <= endMonth; month++) {\n const startDate = `${currentYear}-${String(month).padStart(2, '0')}-01`\n const endDate = `${currentYear}-${String(month).padStart(2, '0')}-${new Date(currentYear, month, 0).getDate()}`\n\n await fiscalMonthRepository.save({\n domain,\n year: currentYear,\n quarter,\n month,\n startDate,\n endDate,\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n }\n }\n } catch (error) {\n console.error('Failed to seed fiscal entities:', error)\n throw error\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n const domainRepository = getRepository(Domain)\n const fiscalYearRepository = getRepository(FiscalYear)\n const fiscalQuarterRepository = getRepository(FiscalQuarter)\n const fiscalMonthRepository = getRepository(FiscalMonth)\n\n const domain: Domain | null = await domainRepository.findOne({\n where: { name: 'SYSTEM' }\n })\n\n if (!domain) {\n throw new Error('SYSTEM domain not found')\n }\n\n const currentYear = new Date().getFullYear()\n\n // FiscalMonth, FiscalQuarter, FiscalYear 삭제\n await fiscalMonthRepository.delete({ domain: { id: domain.id }, year: currentYear })\n await fiscalQuarterRepository.delete({ domain: { id: domain.id }, year: currentYear })\n await fiscalYearRepository.delete({ domain: { id: domain.id }, year: currentYear })\n }\n}\n"]}
@@ -138,155 +138,155 @@ class SeedAccounts1725201467183 {
138
138
  const accounts = [
139
139
  // 유동자산 계정
140
140
  {
141
- controlNumber: '101',
141
+ code: '101',
142
142
  name: '현금 및 현금성 자산',
143
143
  description: '현금, 예금 및 기타 현금성 자산',
144
144
  category: subCategories.유동자산
145
145
  },
146
146
  {
147
- controlNumber: '102',
147
+ code: '102',
148
148
  name: '매출채권',
149
149
  description: '상품 또는 서비스의 판매로 인해 발생한 채권',
150
150
  category: subCategories.유동자산
151
151
  },
152
152
  {
153
- controlNumber: '103',
153
+ code: '103',
154
154
  name: '재고자산',
155
155
  description: '판매를 목적으로 보유한 상품, 제품, 원재료 등',
156
156
  category: subCategories.유동자산
157
157
  },
158
158
  {
159
- controlNumber: '104',
159
+ code: '104',
160
160
  name: '단기금융상품',
161
161
  description: '단기투자 목적으로 보유한 금융상품',
162
162
  category: subCategories.유동자산
163
163
  },
164
164
  {
165
- controlNumber: '105',
165
+ code: '105',
166
166
  name: '선급금',
167
167
  description: '상품, 서비스 제공을 위해 미리 지급한 금액',
168
168
  category: subCategories.유동자산
169
169
  },
170
170
  // 비유동자산 계정
171
171
  {
172
- controlNumber: '201',
172
+ code: '201',
173
173
  name: '건물',
174
174
  description: '기업이 소유한 건물',
175
175
  category: furtherSubCategories.유형자산
176
176
  },
177
177
  {
178
- controlNumber: '202',
178
+ code: '202',
179
179
  name: '토지',
180
180
  description: '기업이 소유한 토지',
181
181
  category: furtherSubCategories.유형자산
182
182
  },
183
183
  {
184
- controlNumber: '203',
184
+ code: '203',
185
185
  name: '기계장치',
186
186
  description: '생산을 위해 사용되는 기계 및 장치',
187
187
  category: furtherSubCategories.유형자산
188
188
  },
189
189
  {
190
- controlNumber: '204',
190
+ code: '204',
191
191
  name: '무형자산',
192
192
  description: '특허권, 상표권 등의 무형자산',
193
193
  category: furtherSubCategories.무형자산
194
194
  },
195
195
  // 유동부채 계정
196
196
  {
197
- controlNumber: '301',
197
+ code: '301',
198
198
  name: '매입채무',
199
199
  description: '상품 또는 서비스의 구매로 인해 발생한 채무',
200
200
  category: subCategories.유동부채
201
201
  },
202
202
  {
203
- controlNumber: '302',
203
+ code: '302',
204
204
  name: '단기차입금',
205
205
  description: '단기 대출금',
206
206
  category: furtherSubCategories.단기금융부채
207
207
  },
208
208
  {
209
- controlNumber: '303',
209
+ code: '303',
210
210
  name: '미지급금',
211
211
  description: '이미 발생한 비용에 대한 지급할 금액',
212
212
  category: subCategories.유동부채
213
213
  },
214
214
  {
215
- controlNumber: '304',
215
+ code: '304',
216
216
  name: '선수금',
217
217
  description: '고객으로부터 미리 받은 금액',
218
218
  category: subCategories.유동부채
219
219
  },
220
220
  // 비유동부채 계정
221
- { controlNumber: '401', name: '장기차입금', description: '장기 대출금', category: subCategories.비유동부채 },
221
+ { code: '401', name: '장기차입금', description: '장기 대출금', category: subCategories.비유동부채 },
222
222
  {
223
- controlNumber: '402',
223
+ code: '402',
224
224
  name: '퇴직급여충당부채',
225
225
  description: '퇴직급여 지급을 위해 설정한 부채',
226
226
  category: subCategories.비유동부채
227
227
  },
228
228
  // 자본 계정
229
- { controlNumber: '501', name: '자본금', description: '주주가 납입한 자본', category: topLevelCategories.자본 },
230
- { controlNumber: '502', name: '이익잉여금', description: '이익의 축적', category: topLevelCategories.자본 },
229
+ { code: '501', name: '자본금', description: '주주가 납입한 자본', category: topLevelCategories.자본 },
230
+ { code: '502', name: '이익잉여금', description: '이익의 축적', category: topLevelCategories.자본 },
231
231
  // 수익 계정
232
232
  {
233
- controlNumber: '601',
233
+ code: '601',
234
234
  name: '제품매출',
235
235
  description: '제품의 판매로 인한 수익',
236
236
  category: topLevelCategories.수익
237
237
  },
238
238
  {
239
- controlNumber: '602',
239
+ code: '602',
240
240
  name: '상품매출',
241
241
  description: '상품의 판매로 인한 수익',
242
242
  category: topLevelCategories.수익
243
243
  },
244
244
  {
245
- controlNumber: '603',
245
+ code: '603',
246
246
  name: '용역매출',
247
247
  description: '용역 제공으로 인한 수익',
248
248
  category: topLevelCategories.수익
249
249
  },
250
250
  {
251
- controlNumber: '604',
251
+ code: '604',
252
252
  name: '이자수익',
253
253
  description: '금융 자산에서 발생한 이자수익',
254
254
  category: topLevelCategories.수익
255
255
  },
256
256
  {
257
- controlNumber: '605',
257
+ code: '605',
258
258
  name: '배당금수익',
259
259
  description: '주식 투자로 인한 배당금 수익',
260
260
  category: topLevelCategories.수익
261
261
  },
262
262
  // 비용 계정
263
263
  {
264
- controlNumber: '701',
264
+ code: '701',
265
265
  name: '매출원가',
266
266
  description: '제품, 상품, 용역 제공에 대한 원가',
267
267
  category: topLevelCategories.비용
268
268
  },
269
- { controlNumber: '702', name: '급여', description: '직원 급여 비용', category: topLevelCategories.비용 },
270
- { controlNumber: '703', name: '임대료', description: '건물 및 설비 임차료', category: topLevelCategories.비용 },
269
+ { code: '702', name: '급여', description: '직원 급여 비용', category: topLevelCategories.비용 },
270
+ { code: '703', name: '임대료', description: '건물 및 설비 임차료', category: topLevelCategories.비용 },
271
271
  {
272
- controlNumber: '704',
272
+ code: '704',
273
273
  name: '감가상각비',
274
274
  description: '유형자산의 감가상각비용',
275
275
  category: topLevelCategories.비용
276
276
  },
277
277
  {
278
- controlNumber: '705',
278
+ code: '705',
279
279
  name: '이자비용',
280
280
  description: '차입금에 대한 이자비용',
281
281
  category: topLevelCategories.비용
282
282
  },
283
283
  {
284
- controlNumber: '706',
284
+ code: '706',
285
285
  name: '판매비 및 관리비',
286
286
  description: '기업 운영에 필요한 비용',
287
287
  category: topLevelCategories.비용
288
288
  },
289
- { controlNumber: '707', name: '법인세비용', description: '법인세 납부 비용', category: topLevelCategories.비용 }
289
+ { code: '707', name: '법인세비용', description: '법인세 납부 비용', category: topLevelCategories.비용 }
290
290
  ];
291
291
  // 계정 저장
292
292
  for (const account of accounts) {
@@ -309,9 +309,9 @@ class SeedAccounts1725201467183 {
309
309
  throw new Error('SYSTEM domain not found');
310
310
  }
311
311
  // Accounts 삭제
312
- await accountRepository.delete({ domain });
312
+ await accountRepository.softDelete({ domain: { id: domain.id } });
313
313
  // AccountingCategories 삭제
314
- await accountingCategoryRepository.delete({ domain });
314
+ await accountingCategoryRepository.softDelete({ domain: { id: domain.id } });
315
315
  }
316
316
  }
317
317
  exports.SeedAccounts1725201467183 = SeedAccounts1725201467183;