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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/client/bootstrap.ts +10 -1
  2. package/client/components/accounting-category-selector.ts +136 -0
  3. package/client/components/accounting-category-view.ts +75 -0
  4. package/client/grist-editors/grist-editor-accounting-category-object.ts +83 -0
  5. package/client/grist-editors/grist-renderer-accounting-category-object.ts +13 -0
  6. package/client/pages/account/account-list-page.ts +33 -2
  7. package/client/pages/accounting-category/accounting-category-list-page.ts +31 -1
  8. package/client/pages/accounting-category/accounting-category-tree-page.ts +338 -0
  9. package/client/pages/accounting-document/accounting-document-importer.ts +90 -0
  10. package/client/pages/accounting-document/accounting-document-list-page.ts +398 -0
  11. package/client/pages/bank/bank-importer.ts +90 -0
  12. package/client/pages/{ledger/ledger-list-page.ts → bank/bank-list-page.ts} +118 -57
  13. package/client/pages/{ledger/ledger-importer.ts → bank-account/bank-account-importer.ts} +10 -17
  14. package/client/pages/bank-account/bank-account-list-page.ts +398 -0
  15. package/client/pages/financial-institution/financial-institution-importer.ts +90 -0
  16. package/client/pages/financial-institution/financial-institution-list-page.ts +398 -0
  17. package/client/pages/payment/payment-importer.ts +90 -0
  18. package/client/pages/payment/payment-list-page.ts +398 -0
  19. package/client/route.ts +0 -4
  20. package/client/types/accounting-category.ts +23 -0
  21. package/client/types/index.ts +1 -0
  22. package/dist-client/bootstrap.js +7 -1
  23. package/dist-client/bootstrap.js.map +1 -1
  24. package/dist-client/components/accounting-category-selector.d.ts +16 -0
  25. package/dist-client/components/accounting-category-selector.js +134 -0
  26. package/dist-client/components/accounting-category-selector.js.map +1 -0
  27. package/dist-client/components/accounting-category-view.d.ts +14 -0
  28. package/dist-client/components/accounting-category-view.js +81 -0
  29. package/dist-client/components/accounting-category-view.js.map +1 -0
  30. package/dist-client/grist-editors/grist-editor-accounting-category-object.d.ts +11 -0
  31. package/dist-client/grist-editors/grist-editor-accounting-category-object.js +71 -0
  32. package/dist-client/grist-editors/grist-editor-accounting-category-object.js.map +1 -0
  33. package/dist-client/grist-editors/grist-renderer-accounting-category-object.d.ts +2 -0
  34. package/dist-client/grist-editors/grist-renderer-accounting-category-object.js +9 -0
  35. package/dist-client/grist-editors/grist-renderer-accounting-category-object.js.map +1 -0
  36. package/dist-client/pages/account/account-list-page.js +33 -2
  37. package/dist-client/pages/account/account-list-page.js.map +1 -1
  38. package/dist-client/pages/accounting-category/accounting-category-list-page.js +31 -1
  39. package/dist-client/pages/accounting-category/accounting-category-list-page.js.map +1 -1
  40. package/dist-client/pages/accounting-category/accounting-category-tree-page.d.ts +46 -0
  41. package/dist-client/pages/accounting-category/accounting-category-tree-page.js +329 -0
  42. package/dist-client/pages/accounting-category/accounting-category-tree-page.js.map +1 -0
  43. package/dist-client/pages/accounting-document/accounting-document-importer.d.ts +23 -0
  44. package/dist-client/pages/accounting-document/accounting-document-importer.js +93 -0
  45. package/dist-client/pages/accounting-document/accounting-document-importer.js.map +1 -0
  46. package/dist-client/pages/accounting-document/accounting-document-list-page.d.ts +66 -0
  47. package/dist-client/pages/accounting-document/accounting-document-list-page.js +370 -0
  48. package/dist-client/pages/accounting-document/accounting-document-list-page.js.map +1 -0
  49. package/dist-client/pages/{ledger/ledger-importer.d.ts → bank/bank-importer.d.ts} +3 -2
  50. package/dist-client/pages/{ledger/ledger-importer.js → bank/bank-importer.js} +14 -21
  51. package/dist-client/pages/bank/bank-importer.js.map +1 -0
  52. package/dist-client/pages/{ledger/ledger-list-page.d.ts → bank/bank-list-page.d.ts} +12 -8
  53. package/dist-client/pages/{ledger/ledger-list-page.js → bank/bank-list-page.js} +114 -67
  54. package/dist-client/pages/bank/bank-list-page.js.map +1 -0
  55. package/dist-client/pages/bank-account/bank-account-importer.d.ts +23 -0
  56. package/dist-client/pages/bank-account/bank-account-importer.js +93 -0
  57. package/dist-client/pages/bank-account/bank-account-importer.js.map +1 -0
  58. package/dist-client/pages/bank-account/bank-account-list-page.d.ts +66 -0
  59. package/dist-client/pages/bank-account/bank-account-list-page.js +370 -0
  60. package/dist-client/pages/bank-account/bank-account-list-page.js.map +1 -0
  61. package/dist-client/pages/financial-institution/financial-institution-importer.d.ts +23 -0
  62. package/dist-client/pages/financial-institution/financial-institution-importer.js +93 -0
  63. package/dist-client/pages/financial-institution/financial-institution-importer.js.map +1 -0
  64. package/dist-client/pages/financial-institution/financial-institution-list-page.d.ts +66 -0
  65. package/dist-client/pages/financial-institution/financial-institution-list-page.js +370 -0
  66. package/dist-client/pages/financial-institution/financial-institution-list-page.js.map +1 -0
  67. package/dist-client/pages/payment/payment-importer.d.ts +23 -0
  68. package/dist-client/pages/payment/payment-importer.js +93 -0
  69. package/dist-client/pages/payment/payment-importer.js.map +1 -0
  70. package/dist-client/pages/payment/payment-list-page.d.ts +66 -0
  71. package/dist-client/pages/payment/payment-list-page.js +370 -0
  72. package/dist-client/pages/payment/payment-list-page.js.map +1 -0
  73. package/dist-client/route.d.ts +1 -1
  74. package/dist-client/route.js +0 -3
  75. package/dist-client/route.js.map +1 -1
  76. package/dist-client/tsconfig.tsbuildinfo +1 -1
  77. package/dist-client/types/accounting-category.d.ts +16 -0
  78. package/dist-client/types/accounting-category.js +3 -0
  79. package/dist-client/types/accounting-category.js.map +1 -0
  80. package/dist-client/types/index.d.ts +1 -0
  81. package/dist-client/types/index.js +2 -0
  82. package/dist-client/types/index.js.map +1 -0
  83. package/dist-server/activities/activity-book.js +31 -19
  84. package/dist-server/activities/activity-book.js.map +1 -1
  85. package/dist-server/controllers/summary-statements.js +13 -7
  86. package/dist-server/controllers/summary-statements.js.map +1 -1
  87. package/dist-server/index.d.ts +1 -0
  88. package/dist-server/index.js +1 -0
  89. package/dist-server/index.js.map +1 -1
  90. package/dist-server/migrations/1725200507196-seed-fiscal-entities.js +3 -3
  91. package/dist-server/migrations/1725200507196-seed-fiscal-entities.js.map +1 -1
  92. package/dist-server/migrations/1725201467183-seed-accounts.js +31 -31
  93. package/dist-server/migrations/1725201467183-seed-accounts.js.map +1 -1
  94. package/dist-server/migrations/1725201567284-seed-country-codes.d.ts +5 -0
  95. package/dist-server/migrations/1725201567284-seed-country-codes.js +248 -0
  96. package/dist-server/migrations/1725201567284-seed-country-codes.js.map +1 -0
  97. package/dist-server/migrations/1725201667385-seed-financial-institutions.d.ts +5 -0
  98. package/dist-server/migrations/1725201667385-seed-financial-institutions.js +348 -0
  99. package/dist-server/migrations/1725201667385-seed-financial-institutions.js.map +1 -0
  100. package/dist-server/routes.d.ts +0 -1
  101. package/dist-server/routes.js +0 -1
  102. package/dist-server/routes.js.map +1 -1
  103. package/dist-server/service/account/account-history.d.ts +4 -1
  104. package/dist-server/service/account/account-history.js +14 -4
  105. package/dist-server/service/account/account-history.js.map +1 -1
  106. package/dist-server/service/account/account-mutation.js +13 -9
  107. package/dist-server/service/account/account-mutation.js.map +1 -1
  108. package/dist-server/service/account/account-query.js +2 -0
  109. package/dist-server/service/account/account-query.js.map +1 -1
  110. package/dist-server/service/account/account.d.ts +1 -1
  111. package/dist-server/service/account/account.js +15 -4
  112. package/dist-server/service/account/account.js.map +1 -1
  113. package/dist-server/service/account/index.d.ts +1 -2
  114. package/dist-server/service/accounting-category/accounting-category-history.d.ts +26 -0
  115. package/dist-server/service/accounting-category/accounting-category-history.js +136 -0
  116. package/dist-server/service/accounting-category/accounting-category-history.js.map +1 -0
  117. package/dist-server/service/accounting-category/accounting-category-mutation.js +12 -8
  118. package/dist-server/service/accounting-category/accounting-category-mutation.js.map +1 -1
  119. package/dist-server/service/accounting-category/accounting-category-query.d.ts +1 -0
  120. package/dist-server/service/accounting-category/accounting-category-query.js +23 -0
  121. package/dist-server/service/accounting-category/accounting-category-query.js.map +1 -1
  122. package/dist-server/service/accounting-category/accounting-category.d.ts +1 -0
  123. package/dist-server/service/accounting-category/accounting-category.js +14 -3
  124. package/dist-server/service/accounting-category/accounting-category.js.map +1 -1
  125. package/dist-server/service/accounting-category/event-subscriber.d.ts +7 -0
  126. package/dist-server/service/accounting-category/event-subscriber.js +21 -0
  127. package/dist-server/service/accounting-category/event-subscriber.js.map +1 -0
  128. package/dist-server/service/accounting-category/index.d.ts +2 -1
  129. package/dist-server/service/accounting-category/index.js +4 -2
  130. package/dist-server/service/accounting-category/index.js.map +1 -1
  131. package/dist-server/service/accounting-document/accounting-document-history.d.ts +26 -0
  132. package/dist-server/service/accounting-document/accounting-document-history.js +129 -0
  133. package/dist-server/service/accounting-document/accounting-document-history.js.map +1 -0
  134. package/dist-server/service/accounting-document/accounting-document-mutation.d.ts +10 -0
  135. package/dist-server/service/accounting-document/accounting-document-mutation.js +128 -0
  136. package/dist-server/service/accounting-document/accounting-document-mutation.js.map +1 -0
  137. package/dist-server/service/accounting-document/accounting-document-query.d.ts +11 -0
  138. package/dist-server/service/accounting-document/accounting-document-query.js +79 -0
  139. package/dist-server/service/accounting-document/accounting-document-query.js.map +1 -0
  140. package/dist-server/service/accounting-document/accounting-document-type.d.ts +20 -0
  141. package/dist-server/service/accounting-document/accounting-document-type.js +74 -0
  142. package/dist-server/service/accounting-document/accounting-document-type.js.map +1 -0
  143. package/dist-server/service/accounting-document/accounting-document.d.ts +21 -0
  144. package/dist-server/service/accounting-document/accounting-document.js +104 -0
  145. package/dist-server/service/accounting-document/accounting-document.js.map +1 -0
  146. package/dist-server/service/accounting-document/event-subscriber.d.ts +7 -0
  147. package/dist-server/service/accounting-document/event-subscriber.js +21 -0
  148. package/dist-server/service/accounting-document/event-subscriber.js.map +1 -0
  149. package/dist-server/service/accounting-document/index.d.ts +7 -0
  150. package/dist-server/service/accounting-document/index.js +12 -0
  151. package/dist-server/service/accounting-document/index.js.map +1 -0
  152. package/dist-server/service/bank-account/bank-account-history.d.ts +34 -0
  153. package/dist-server/service/bank-account/bank-account-history.js +172 -0
  154. package/dist-server/service/bank-account/bank-account-history.js.map +1 -0
  155. package/dist-server/service/bank-account/bank-account-mutation.d.ts +10 -0
  156. package/dist-server/service/bank-account/bank-account-mutation.js +128 -0
  157. package/dist-server/service/bank-account/bank-account-mutation.js.map +1 -0
  158. package/dist-server/service/bank-account/bank-account-query.d.ts +11 -0
  159. package/dist-server/service/bank-account/bank-account-query.js +79 -0
  160. package/dist-server/service/bank-account/bank-account-query.js.map +1 -0
  161. package/dist-server/service/bank-account/bank-account-type.d.ts +39 -0
  162. package/dist-server/service/bank-account/bank-account-type.js +153 -0
  163. package/dist-server/service/bank-account/bank-account-type.js.map +1 -0
  164. package/dist-server/service/bank-account/bank-account.d.ts +38 -0
  165. package/dist-server/service/bank-account/bank-account.js +164 -0
  166. package/dist-server/service/bank-account/bank-account.js.map +1 -0
  167. package/dist-server/service/bank-account/event-subscriber.d.ts +7 -0
  168. package/dist-server/service/bank-account/event-subscriber.js +21 -0
  169. package/dist-server/service/bank-account/event-subscriber.js.map +1 -0
  170. package/dist-server/service/bank-account/index.d.ts +7 -0
  171. package/dist-server/service/bank-account/index.js +12 -0
  172. package/dist-server/service/bank-account/index.js.map +1 -0
  173. package/dist-server/service/financial-institution/financial-institution-mutation.d.ts +10 -0
  174. package/dist-server/service/financial-institution/financial-institution-mutation.js +169 -0
  175. package/dist-server/service/financial-institution/financial-institution-mutation.js.map +1 -0
  176. package/dist-server/service/financial-institution/financial-institution-query.d.ts +12 -0
  177. package/dist-server/service/financial-institution/financial-institution-query.js +97 -0
  178. package/dist-server/service/financial-institution/financial-institution-query.js.map +1 -0
  179. package/dist-server/service/financial-institution/financial-institution-type.d.ts +32 -0
  180. package/dist-server/service/financial-institution/financial-institution-type.js +126 -0
  181. package/dist-server/service/financial-institution/financial-institution-type.js.map +1 -0
  182. package/dist-server/service/financial-institution/financial-institution.d.ts +34 -0
  183. package/dist-server/service/financial-institution/financial-institution.js +137 -0
  184. package/dist-server/service/financial-institution/financial-institution.js.map +1 -0
  185. package/dist-server/service/financial-institution/index.d.ts +6 -0
  186. package/dist-server/service/financial-institution/index.js +10 -0
  187. package/dist-server/service/financial-institution/index.js.map +1 -0
  188. package/dist-server/service/financial-statement/financial-statement-history.d.ts +9 -6
  189. package/dist-server/service/financial-statement/financial-statement-history.js +30 -20
  190. package/dist-server/service/financial-statement/financial-statement-history.js.map +1 -1
  191. package/dist-server/service/financial-statement/financial-statement-line-item.d.ts +19 -0
  192. package/dist-server/service/financial-statement/financial-statement-line-item.js +94 -0
  193. package/dist-server/service/financial-statement/financial-statement-line-item.js.map +1 -0
  194. package/dist-server/service/financial-statement/financial-statement-mutation.js +12 -8
  195. package/dist-server/service/financial-statement/financial-statement-mutation.js.map +1 -1
  196. package/dist-server/service/financial-statement/financial-statement-query.js +2 -0
  197. package/dist-server/service/financial-statement/financial-statement-query.js.map +1 -1
  198. package/dist-server/service/financial-statement/financial-statement.d.ts +2 -0
  199. package/dist-server/service/financial-statement/financial-statement.js +45 -24
  200. package/dist-server/service/financial-statement/financial-statement.js.map +1 -1
  201. package/dist-server/service/financial-statement/index.d.ts +2 -2
  202. package/dist-server/service/financial-statement/index.js +2 -1
  203. package/dist-server/service/financial-statement/index.js.map +1 -1
  204. package/dist-server/service/fiscal-month/fiscal-month-mutation.js +6 -0
  205. package/dist-server/service/fiscal-month/fiscal-month-mutation.js.map +1 -1
  206. package/dist-server/service/fiscal-month/fiscal-month-query.js +2 -0
  207. package/dist-server/service/fiscal-month/fiscal-month-query.js.map +1 -1
  208. package/dist-server/service/fiscal-month/fiscal-month.js +1 -1
  209. package/dist-server/service/fiscal-month/fiscal-month.js.map +1 -1
  210. package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js +6 -0
  211. package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js.map +1 -1
  212. package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js +2 -0
  213. package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js.map +1 -1
  214. package/dist-server/service/fiscal-quarter/fiscal-quarter.js +1 -1
  215. package/dist-server/service/fiscal-quarter/fiscal-quarter.js.map +1 -1
  216. package/dist-server/service/fiscal-year/fiscal-year-mutation.js +6 -0
  217. package/dist-server/service/fiscal-year/fiscal-year-mutation.js.map +1 -1
  218. package/dist-server/service/fiscal-year/fiscal-year-query.js +2 -0
  219. package/dist-server/service/fiscal-year/fiscal-year-query.js.map +1 -1
  220. package/dist-server/service/fiscal-year/fiscal-year.js +1 -1
  221. package/dist-server/service/fiscal-year/fiscal-year.js.map +1 -1
  222. package/dist-server/service/income-statement/income-statement-history.d.ts +9 -5
  223. package/dist-server/service/income-statement/income-statement-history.js +35 -20
  224. package/dist-server/service/income-statement/income-statement-history.js.map +1 -1
  225. package/dist-server/service/income-statement/income-statement-line-item.d.ts +19 -0
  226. package/dist-server/service/income-statement/income-statement-line-item.js +96 -0
  227. package/dist-server/service/income-statement/income-statement-line-item.js.map +1 -0
  228. package/dist-server/service/income-statement/income-statement-mutation.js +12 -8
  229. package/dist-server/service/income-statement/income-statement-mutation.js.map +1 -1
  230. package/dist-server/service/income-statement/income-statement-query.js +2 -0
  231. package/dist-server/service/income-statement/income-statement-query.js.map +1 -1
  232. package/dist-server/service/income-statement/income-statement.d.ts +2 -0
  233. package/dist-server/service/income-statement/income-statement.js +46 -26
  234. package/dist-server/service/income-statement/income-statement.js.map +1 -1
  235. package/dist-server/service/income-statement/index.d.ts +2 -2
  236. package/dist-server/service/income-statement/index.js +2 -1
  237. package/dist-server/service/income-statement/index.js.map +1 -1
  238. package/dist-server/service/index.d.ts +4 -2
  239. package/dist-server/service/index.js +10 -0
  240. package/dist-server/service/index.js.map +1 -1
  241. package/dist-server/service/payment/event-subscriber.d.ts +7 -0
  242. package/dist-server/service/payment/event-subscriber.js +21 -0
  243. package/dist-server/service/payment/event-subscriber.js.map +1 -0
  244. package/dist-server/service/payment/index.d.ts +7 -0
  245. package/dist-server/service/payment/index.js +12 -0
  246. package/dist-server/service/payment/index.js.map +1 -0
  247. package/dist-server/service/payment/payment-history.d.ts +37 -0
  248. package/dist-server/service/payment/payment-history.js +174 -0
  249. package/dist-server/service/payment/payment-history.js.map +1 -0
  250. package/dist-server/service/payment/payment-mutation.d.ts +10 -0
  251. package/dist-server/service/payment/payment-mutation.js +134 -0
  252. package/dist-server/service/payment/payment-mutation.js.map +1 -0
  253. package/dist-server/service/payment/payment-query.d.ts +11 -0
  254. package/dist-server/service/payment/payment-query.js +81 -0
  255. package/dist-server/service/payment/payment-query.js.map +1 -0
  256. package/dist-server/service/payment/payment-type.d.ts +30 -0
  257. package/dist-server/service/payment/payment-type.js +114 -0
  258. package/dist-server/service/payment/payment-type.js.map +1 -0
  259. package/dist-server/service/payment/payment.d.ts +42 -0
  260. package/dist-server/service/payment/payment.js +181 -0
  261. package/dist-server/service/payment/payment.js.map +1 -0
  262. package/dist-server/service/transaction/index.d.ts +2 -1
  263. package/dist-server/service/transaction/transaction-history.d.ts +6 -2
  264. package/dist-server/service/transaction/transaction-history.js +28 -9
  265. package/dist-server/service/transaction/transaction-history.js.map +1 -1
  266. package/dist-server/service/transaction/transaction-mutation.js +13 -9
  267. package/dist-server/service/transaction/transaction-mutation.js.map +1 -1
  268. package/dist-server/service/transaction/transaction-query.js +2 -0
  269. package/dist-server/service/transaction/transaction-query.js.map +1 -1
  270. package/dist-server/service/transaction/transaction.d.ts +28 -6
  271. package/dist-server/service/transaction/transaction.js +119 -31
  272. package/dist-server/service/transaction/transaction.js.map +1 -1
  273. package/dist-server/tsconfig.tsbuildinfo +1 -1
  274. package/helps/accounting/accounting-document.md +160 -0
  275. package/helps/accounting/bank-account.md +160 -0
  276. package/helps/accounting/bank.md +160 -0
  277. package/helps/accounting/contract.md +160 -0
  278. package/helps/accounting/financial-institution.md +160 -0
  279. package/helps/accounting/payment.md +160 -0
  280. package/package.json +5 -5
  281. package/server/activities/activity-book.ts +31 -19
  282. package/server/controllers/summary-statements.ts +13 -7
  283. package/server/index.ts +1 -0
  284. package/server/migrations/1725200507196-seed-fiscal-entities.ts +3 -3
  285. package/server/migrations/1725201467183-seed-accounts.ts +31 -31
  286. package/server/migrations/1725201567284-seed-country-codes.ts +261 -0
  287. package/server/migrations/1725201667385-seed-financial-institutions.ts +348 -0
  288. package/server/routes.ts +0 -2
  289. package/server/service/account/account-history.ts +14 -6
  290. package/server/service/account/account-mutation.ts +13 -10
  291. package/server/service/account/account-query.ts +2 -0
  292. package/server/service/account/account.ts +15 -4
  293. package/server/service/accounting-category/accounting-category-history.ts +123 -0
  294. package/server/service/accounting-category/accounting-category-mutation.ts +12 -9
  295. package/server/service/accounting-category/accounting-category-query.ts +23 -0
  296. package/server/service/accounting-category/accounting-category.ts +14 -3
  297. package/server/service/accounting-category/event-subscriber.ts +20 -0
  298. package/server/service/accounting-category/index.ts +4 -2
  299. package/server/service/accounting-document/accounting-document-history.ts +117 -0
  300. package/server/service/accounting-document/accounting-document-mutation.ts +137 -0
  301. package/server/service/accounting-document/accounting-document-query.ts +48 -0
  302. package/server/service/accounting-document/accounting-document-type.ts +52 -0
  303. package/server/service/accounting-document/accounting-document.ts +93 -0
  304. package/server/service/accounting-document/event-subscriber.ts +17 -0
  305. package/server/service/accounting-document/index.ts +9 -0
  306. package/server/service/bank-account/bank-account-history.ts +149 -0
  307. package/server/service/bank-account/bank-account-mutation.ts +137 -0
  308. package/server/service/bank-account/bank-account-query.ts +48 -0
  309. package/server/service/bank-account/bank-account-type.ts +112 -0
  310. package/server/service/bank-account/bank-account.ts +142 -0
  311. package/server/service/bank-account/event-subscriber.ts +17 -0
  312. package/server/service/bank-account/index.ts +9 -0
  313. package/server/service/financial-institution/financial-institution-mutation.ts +198 -0
  314. package/server/service/financial-institution/financial-institution-query.ts +62 -0
  315. package/server/service/financial-institution/financial-institution-type.ts +91 -0
  316. package/server/service/financial-institution/financial-institution.ts +122 -0
  317. package/server/service/financial-institution/index.ts +7 -0
  318. package/server/service/financial-statement/financial-statement-history.ts +27 -18
  319. package/server/service/financial-statement/financial-statement-line-item.ts +82 -0
  320. package/server/service/financial-statement/financial-statement-mutation.ts +12 -9
  321. package/server/service/financial-statement/financial-statement-query.ts +2 -0
  322. package/server/service/financial-statement/financial-statement.ts +52 -36
  323. package/server/service/financial-statement/index.ts +2 -1
  324. package/server/service/fiscal-month/fiscal-month-mutation.ts +10 -2
  325. package/server/service/fiscal-month/fiscal-month-query.ts +3 -1
  326. package/server/service/fiscal-month/fiscal-month.ts +1 -1
  327. package/server/service/fiscal-quarter/fiscal-quarter-mutation.ts +14 -3
  328. package/server/service/fiscal-quarter/fiscal-quarter-query.ts +2 -0
  329. package/server/service/fiscal-quarter/fiscal-quarter.ts +1 -1
  330. package/server/service/fiscal-year/fiscal-year-mutation.ts +10 -2
  331. package/server/service/fiscal-year/fiscal-year-query.ts +2 -0
  332. package/server/service/fiscal-year/fiscal-year.ts +1 -1
  333. package/server/service/income-statement/income-statement-history.ts +30 -17
  334. package/server/service/income-statement/income-statement-line-item.ts +84 -0
  335. package/server/service/income-statement/income-statement-mutation.ts +12 -10
  336. package/server/service/income-statement/income-statement-query.ts +2 -0
  337. package/server/service/income-statement/income-statement.ts +54 -39
  338. package/server/service/income-statement/index.ts +2 -1
  339. package/server/service/index.ts +18 -0
  340. package/server/service/payment/event-subscriber.ts +17 -0
  341. package/server/service/payment/index.ts +9 -0
  342. package/server/service/payment/payment-history.ts +149 -0
  343. package/server/service/payment/payment-mutation.ts +139 -0
  344. package/server/service/payment/payment-query.ts +50 -0
  345. package/server/service/payment/payment-type.ts +82 -0
  346. package/server/service/payment/payment.ts +154 -0
  347. package/server/service/transaction/transaction-history.ts +24 -8
  348. package/server/service/transaction/transaction-mutation.ts +13 -10
  349. package/server/service/transaction/transaction-query.ts +2 -0
  350. package/server/service/transaction/transaction.ts +130 -34
  351. package/things-factory.config.js +0 -1
  352. package/translations/en.json +9 -1
  353. package/translations/ja.json +9 -1
  354. package/translations/ko.json +9 -1
  355. package/translations/ms.json +9 -1
  356. package/translations/zh.json +9 -1
  357. package/client/pages/main.ts +0 -24
  358. package/dist-client/pages/ledger/ledger-importer.js.map +0 -1
  359. package/dist-client/pages/ledger/ledger-list-page.js.map +0 -1
  360. package/dist-client/pages/main.d.ts +0 -1
  361. package/dist-client/pages/main.js +0 -27
  362. package/dist-client/pages/main.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'
2
2
  import { In } from 'typeorm'
3
3
 
4
- import { createAttachment, deleteAttachmentsByRef } from '@things-factory/attachment-base'
4
+ import { getRepository } from '@things-factory/shell'
5
5
 
6
6
  import { AccountingCategory } from './accounting-category'
7
7
  import { NewAccountingCategory, AccountingCategoryPatch } from './accounting-category-type'
@@ -9,6 +9,7 @@ import { NewAccountingCategory, AccountingCategoryPatch } from './accounting-cat
9
9
  @Resolver(AccountingCategory)
10
10
  export class AccountingCategoryMutation {
11
11
  @Directive('@transaction')
12
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
12
13
  @Mutation(returns => AccountingCategory, { description: 'To create new AccountingCategory' })
13
14
  async createAccountingCategory(
14
15
  @Arg('accountingCategory') accountingCategory: NewAccountingCategory,
@@ -16,7 +17,7 @@ export class AccountingCategoryMutation {
16
17
  ): Promise<AccountingCategory> {
17
18
  const { domain, user, tx } = context.state
18
19
 
19
- const result = await tx.getRepository(AccountingCategory).save({
20
+ const result = await getRepository(AccountingCategory, tx).save({
20
21
  ...accountingCategory,
21
22
  domain,
22
23
  creator: user,
@@ -27,6 +28,7 @@ export class AccountingCategoryMutation {
27
28
  }
28
29
 
29
30
  @Directive('@transaction')
31
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
30
32
  @Mutation(returns => AccountingCategory, { description: 'To modify AccountingCategory information' })
31
33
  async updateAccountingCategory(
32
34
  @Arg('id') id: string,
@@ -35,7 +37,7 @@ export class AccountingCategoryMutation {
35
37
  ): Promise<AccountingCategory> {
36
38
  const { domain, user, tx } = context.state
37
39
 
38
- const repository = tx.getRepository(AccountingCategory)
40
+ const repository = getRepository(AccountingCategory, tx)
39
41
  const accountingCategory = await repository.findOne({
40
42
  where: { domain: { id: domain.id }, id }
41
43
  })
@@ -50,6 +52,7 @@ export class AccountingCategoryMutation {
50
52
  }
51
53
 
52
54
  @Directive('@transaction')
55
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
53
56
  @Mutation(returns => [AccountingCategory], { description: "To modify multiple AccountingCategories' information" })
54
57
  async updateMultipleAccountingCategory(
55
58
  @Arg('patches', type => [AccountingCategoryPatch]) patches: AccountingCategoryPatch[],
@@ -60,7 +63,7 @@ export class AccountingCategoryMutation {
60
63
  let results = []
61
64
  const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
62
65
  const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
63
- const accountingCategoryRepo = tx.getRepository(AccountingCategory)
66
+ const accountingCategoryRepo = getRepository(AccountingCategory, tx)
64
67
 
65
68
  if (_createRecords.length > 0) {
66
69
  for (let i = 0; i < _createRecords.length; i++) {
@@ -96,17 +99,18 @@ export class AccountingCategoryMutation {
96
99
  }
97
100
 
98
101
  @Directive('@transaction')
102
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
99
103
  @Mutation(returns => Boolean, { description: 'To delete AccountingCategory' })
100
104
  async deleteAccountingCategory(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
101
105
  const { domain, tx } = context.state
102
106
 
103
- await tx.getRepository(AccountingCategory).delete({ domain: { id: domain.id }, id })
104
- await deleteAttachmentsByRef(null, { refBys: [id] }, context)
107
+ await getRepository(AccountingCategory, tx).delete({ domain: { id: domain.id }, id })
105
108
 
106
109
  return true
107
110
  }
108
111
 
109
112
  @Directive('@transaction')
113
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
110
114
  @Mutation(returns => Boolean, { description: 'To delete multiple AccountingCategories' })
111
115
  async deleteAccountingCategories(
112
116
  @Arg('ids', type => [String]) ids: string[],
@@ -114,17 +118,16 @@ export class AccountingCategoryMutation {
114
118
  ): Promise<boolean> {
115
119
  const { domain, tx } = context.state
116
120
 
117
- await tx.getRepository(AccountingCategory).delete({
121
+ await getRepository(AccountingCategory, tx).delete({
118
122
  domain: { id: domain.id },
119
123
  id: In(ids)
120
124
  })
121
125
 
122
- await deleteAttachmentsByRef(null, { refBys: ids }, context)
123
-
124
126
  return true
125
127
  }
126
128
 
127
129
  @Directive('@transaction')
130
+ @Directive('@privilege(category: "accounting", privilege: "mutation")')
128
131
  @Mutation(returns => Boolean, { description: 'To import multiple AccountingCategories' })
129
132
  async importAccountingCategories(
130
133
  @Arg('accountingCategories', type => [AccountingCategoryPatch]) accountingCategories: AccountingCategoryPatch[],
@@ -1,4 +1,5 @@
1
1
  import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { IsNull } from 'typeorm'
2
3
  import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
3
4
  import { User } from '@things-factory/auth-base'
4
5
  import { AccountingCategory } from './accounting-category'
@@ -6,6 +7,27 @@ import { AccountingCategoryList } from './accounting-category-type'
6
7
 
7
8
  @Resolver(AccountingCategory)
8
9
  export class AccountingCategoryQuery {
10
+ @Directive('@privilege(category: "accounting", privilege: "query", domainOwnerGranted: true)')
11
+ @Query(returns => AccountingCategoryList, { nullable: true, description: 'To fetch a Root AccountingCategorys' })
12
+ async accountingCategoryRoots(
13
+ @Args(type => ListParam) params: ListParam,
14
+ @Ctx() context: ResolverContext
15
+ ): Promise<AccountingCategoryList> {
16
+ const { domain } = context.state
17
+
18
+ const queryBuilder = getQueryBuilderFromListParams({
19
+ domain,
20
+ params,
21
+ repository: await getRepository(AccountingCategory),
22
+ searchables: ['name', 'description', 'code']
23
+ }).andWhere({ domain: { id: domain.id }, parent: { id: IsNull() } })
24
+
25
+ const [items, total] = await queryBuilder.getManyAndCount()
26
+
27
+ return { items, total }
28
+ }
29
+
30
+ @Directive('@privilege(category: "accounting", privilege: "query")')
9
31
  @Query(returns => AccountingCategory!, { nullable: true, description: 'To fetch a AccountingCategory' })
10
32
  async accountingCategory(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<AccountingCategory> {
11
33
  const { domain } = context.state
@@ -15,6 +37,7 @@ export class AccountingCategoryQuery {
15
37
  })
16
38
  }
17
39
 
40
+ @Directive('@privilege(category: "accounting", privilege: "query")')
18
41
  @Query(returns => AccountingCategoryList, { description: 'To fetch multiple AccountingCategories' })
19
42
  async accountingCategories(
20
43
  @Args() params: ListParam,
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  CreateDateColumn,
3
3
  UpdateDateColumn,
4
+ DeleteDateColumn,
4
5
  Entity,
5
6
  Index,
6
7
  Column,
@@ -18,12 +19,18 @@ import { User } from '@things-factory/auth-base'
18
19
  @Index(
19
20
  'ix_accounting_category_0',
20
21
  (accountingCategory: AccountingCategory) => [accountingCategory.domain, accountingCategory.name],
21
- { unique: true }
22
+ {
23
+ unique: true,
24
+ where: '"deleted_at" IS NULL'
25
+ }
22
26
  )
23
27
  @Index(
24
28
  'ix_accounting_category_1',
25
29
  (accountingCategory: AccountingCategory) => [accountingCategory.domain, accountingCategory.code],
26
- { unique: true }
30
+ {
31
+ unique: true,
32
+ where: '"deleted_at" IS NULL'
33
+ }
27
34
  )
28
35
  @ObjectType({ description: 'Entity for AccountingCategory' })
29
36
  export class AccountingCategory {
@@ -62,7 +69,7 @@ export class AccountingCategory {
62
69
  parentId?: string
63
70
 
64
71
  @OneToMany(type => AccountingCategory, accountingCategory => accountingCategory.parent)
65
- @Field(type => [AccountingCategory])
72
+ @Field(type => [AccountingCategory], { nullable: true })
66
73
  children?: AccountingCategory[]
67
74
 
68
75
  @CreateDateColumn()
@@ -86,4 +93,8 @@ export class AccountingCategory {
86
93
 
87
94
  @RelationId((accountingCategory: AccountingCategory) => accountingCategory.updater)
88
95
  updaterId?: string
96
+
97
+ @DeleteDateColumn()
98
+ @Field({ nullable: true })
99
+ deletedAt?: Date
89
100
  }
@@ -0,0 +1,20 @@
1
+ import { EventSubscriber } from 'typeorm'
2
+
3
+ import { HistoryEntitySubscriber } from '@operato/typeorm-history'
4
+
5
+ import { AccountingCategory } from './accounting-category'
6
+ import { AccountingCategoryHistory } from './accounting-category-history'
7
+
8
+ @EventSubscriber()
9
+ export class AccountingCategoryHistoryEntitySubscriber extends HistoryEntitySubscriber<
10
+ AccountingCategory,
11
+ AccountingCategoryHistory
12
+ > {
13
+ public get entity() {
14
+ return AccountingCategory
15
+ }
16
+
17
+ public get historyEntity() {
18
+ return AccountingCategoryHistory
19
+ }
20
+ }
@@ -1,7 +1,9 @@
1
1
  import { AccountingCategory } from './accounting-category'
2
2
  import { AccountingCategoryQuery } from './accounting-category-query'
3
3
  import { AccountingCategoryMutation } from './accounting-category-mutation'
4
+ import { AccountingCategoryHistory } from './accounting-category-history'
5
+ import { AccountingCategoryHistoryEntitySubscriber } from './event-subscriber'
4
6
 
5
- export const entities = [AccountingCategory]
7
+ export const entities = [AccountingCategory, AccountingCategoryHistory]
6
8
  export const resolvers = [AccountingCategoryQuery, AccountingCategoryMutation]
7
- export const subscribers = []
9
+ export const subscribers = [AccountingCategoryHistoryEntitySubscriber]
@@ -0,0 +1,117 @@
1
+ import { Field, ID, ObjectType } from 'type-graphql'
2
+ import { Column, Entity, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'
3
+
4
+ import {
5
+ HistoryActionColumn,
6
+ HistoryActionType,
7
+ HistoryEntityInterface,
8
+ HistoryOriginalIdColumn
9
+ } from '@operato/typeorm-history'
10
+ import { Role, User } from '@things-factory/auth-base'
11
+ import { config } from '@things-factory/env'
12
+ import { Domain } from '@things-factory/shell'
13
+
14
+ import { Transaction } from '../transaction/transaction'
15
+ import { AccountingDocument } from './accounting-document'
16
+
17
+ const ORMCONFIG = config.get('ormconfig', {})
18
+ const DATABASE_TYPE = ORMCONFIG.type
19
+
20
+ @Entity()
21
+ @Index(
22
+ 'ix_accounting-document_history_0',
23
+ (accountingDocumentHistory: AccountingDocumentHistory) => [
24
+ accountingDocumentHistory.originalId,
25
+ accountingDocumentHistory.version
26
+ ],
27
+ { unique: true }
28
+ )
29
+ @Index(
30
+ 'ix_accounting-document_history_1',
31
+ (accountingDocumentHistory: AccountingDocumentHistory) => [
32
+ accountingDocumentHistory.domain,
33
+ accountingDocumentHistory.originalId,
34
+ accountingDocumentHistory.version
35
+ ],
36
+ { unique: true }
37
+ )
38
+ @ObjectType({ description: 'History Entity of AccountingDocument' })
39
+ export class AccountingDocumentHistory implements HistoryEntityInterface<AccountingDocument> {
40
+ @PrimaryGeneratedColumn('uuid')
41
+ @Field(type => ID)
42
+ readonly id: string
43
+
44
+ @Column({ nullable: true, default: 1 })
45
+ @Field({ nullable: true })
46
+ version?: number = 1
47
+
48
+ @ManyToOne(type => Domain)
49
+ @Field({ nullable: true })
50
+ domain?: Domain
51
+
52
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.domain)
53
+ domainId?: string
54
+
55
+ @ManyToOne(type => Transaction, transaction => transaction.documents)
56
+ @Field(type => Transaction)
57
+ transaction: Transaction
58
+
59
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.transaction)
60
+ transactionId: string
61
+
62
+ @Column()
63
+ @Field({ nullable: false })
64
+ documentType: string // 문서의 유형 (예: 계약서, 인보이스 등)
65
+
66
+ @Column()
67
+ @Field({ nullable: false })
68
+ documentUrl: string // 문서의 URL 또는 파일 경로
69
+
70
+ @Column({ nullable: true })
71
+ @Field({ nullable: true })
72
+ description?: string // 문서에 대한 설명
73
+
74
+ @Column({ nullable: true })
75
+ @Field({ nullable: true })
76
+ createdAt?: Date
77
+
78
+ @Column({ nullable: true })
79
+ @Field({ nullable: true })
80
+ updatedAt?: Date
81
+
82
+ @Column({ nullable: true })
83
+ @Field({ nullable: true })
84
+ deletedAt?: Date
85
+
86
+ @ManyToOne(type => User, { nullable: true })
87
+ @Field(type => User, { nullable: true })
88
+ creator?: User
89
+
90
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.creator)
91
+ creatorId?: string
92
+
93
+ @ManyToOne(type => User, { nullable: true })
94
+ @Field(type => User, { nullable: true })
95
+ updater?: User
96
+
97
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.updater)
98
+ updaterId?: string
99
+
100
+ @Field(type => String, { nullable: true })
101
+ thumbnail?: string
102
+
103
+ @HistoryOriginalIdColumn()
104
+ public originalId!: string
105
+
106
+ @HistoryActionColumn({
107
+ nullable: false,
108
+ type:
109
+ DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
110
+ ? 'enum'
111
+ : DATABASE_TYPE == 'oracle'
112
+ ? 'varchar2'
113
+ : 'smallint',
114
+ enum: HistoryActionType
115
+ })
116
+ public action!: HistoryActionType
117
+ }
@@ -0,0 +1,137 @@
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 { AccountingDocument } from './accounting-document'
6
+ import { NewAccountingDocument, AccountingDocumentPatch } from './accounting-document-type'
7
+
8
+ @Resolver(AccountingDocument)
9
+ export class AccountingDocumentMutation {
10
+ @Directive('@transaction')
11
+ @Mutation(returns => AccountingDocument, { description: 'To create new AccountingDocument' })
12
+ async createAccountingDocument(@Arg('accountingDocument') accountingDocument: NewAccountingDocument, @Ctx() context: ResolverContext): Promise<AccountingDocument> {
13
+ const { domain, user, tx } = context.state
14
+
15
+ const result = await getRepository(AccountingDocument, tx).save({
16
+ ...accountingDocument,
17
+ domain,
18
+ creator: user,
19
+ updater: user
20
+ })
21
+
22
+ return result
23
+ }
24
+
25
+ @Directive('@transaction')
26
+ @Mutation(returns => AccountingDocument, { description: 'To modify AccountingDocument information' })
27
+ async updateAccountingDocument(
28
+ @Arg('id') id: string,
29
+ @Arg('patch') patch: AccountingDocumentPatch,
30
+ @Ctx() context: ResolverContext
31
+ ): Promise<AccountingDocument> {
32
+ const { domain, user, tx } = context.state
33
+
34
+ const repository = getRepository(AccountingDocument, tx)
35
+ const accountingDocument = await repository.findOne({
36
+ where: { domain: { id: domain.id }, id }
37
+ })
38
+
39
+ const result = await repository.save({
40
+ ...accountingDocument,
41
+ ...patch,
42
+ updater: user
43
+ })
44
+
45
+ return result
46
+ }
47
+
48
+ @Directive('@transaction')
49
+ @Mutation(returns => [AccountingDocument], { description: "To modify multiple AccountingDocuments' information" })
50
+ async updateMultipleAccountingDocument(
51
+ @Arg('patches', type => [AccountingDocumentPatch]) patches: AccountingDocumentPatch[],
52
+ @Ctx() context: ResolverContext
53
+ ): Promise<AccountingDocument[]> {
54
+ const { domain, user, tx } = context.state
55
+
56
+ let results = []
57
+ const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')
58
+ const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')
59
+ const accountingDocumentRepo = getRepository(AccountingDocument, tx)
60
+
61
+ if (_createRecords.length > 0) {
62
+ for (let i = 0; i < _createRecords.length; i++) {
63
+ const newRecord = _createRecords[i]
64
+
65
+ const result = await accountingDocumentRepo.save({
66
+ ...newRecord,
67
+ domain,
68
+ creator: user,
69
+ updater: user
70
+ })
71
+
72
+ results.push({ ...result, cuFlag: '+' })
73
+ }
74
+ }
75
+
76
+ if (_updateRecords.length > 0) {
77
+ for (let i = 0; i < _updateRecords.length; i++) {
78
+ const updateRecord = _updateRecords[i]
79
+ const accountingDocument = await accountingDocumentRepo.findOneBy({ id: updateRecord.id })
80
+
81
+ const result = await accountingDocumentRepo.save({
82
+ ...accountingDocument,
83
+ ...updateRecord,
84
+ updater: user
85
+ })
86
+
87
+ results.push({ ...result, cuFlag: 'M' })
88
+ }
89
+ }
90
+
91
+ return results
92
+ }
93
+
94
+ @Directive('@transaction')
95
+ @Mutation(returns => Boolean, { description: 'To delete AccountingDocument' })
96
+ async deleteAccountingDocument(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {
97
+ const { domain, tx } = context.state
98
+
99
+ await getRepository(AccountingDocument, tx).delete({ domain: { id: domain.id }, id })
100
+
101
+ return true
102
+ }
103
+
104
+ @Directive('@transaction')
105
+ @Mutation(returns => Boolean, { description: 'To delete multiple AccountingDocuments' })
106
+ async deleteAccountingDocuments(
107
+ @Arg('ids', type => [String]) ids: string[],
108
+ @Ctx() context: ResolverContext
109
+ ): Promise<boolean> {
110
+ const { domain, tx } = context.state
111
+
112
+ await getRepository(AccountingDocument, tx).delete({
113
+ domain: { id: domain.id },
114
+ id: In(ids)
115
+ })
116
+
117
+
118
+ return true
119
+ }
120
+
121
+ @Directive('@transaction')
122
+ @Mutation(returns => Boolean, { description: 'To import multiple AccountingDocuments' })
123
+ async importAccountingDocuments(
124
+ @Arg('accountingDocuments', type => [AccountingDocumentPatch]) accountingDocuments: AccountingDocumentPatch[],
125
+ @Ctx() context: ResolverContext
126
+ ): Promise<boolean> {
127
+ const { domain, tx } = context.state
128
+
129
+ await Promise.all(
130
+ accountingDocuments.map(async (accountingDocument: AccountingDocumentPatch) => {
131
+ const createdAccountingDocument: AccountingDocument = await getRepository(AccountingDocument, tx).save({ domain, ...accountingDocument })
132
+ })
133
+ )
134
+
135
+ return true
136
+ }
137
+ }
@@ -0,0 +1,48 @@
1
+ import { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'
2
+ import { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'
3
+ import { User } from '@things-factory/auth-base'
4
+ import { AccountingDocument } from './accounting-document'
5
+ import { AccountingDocumentList } from './accounting-document-type'
6
+
7
+ @Resolver(AccountingDocument)
8
+ export class AccountingDocumentQuery {
9
+ @Query(returns => AccountingDocument!, { nullable: true, description: 'To fetch a AccountingDocument' })
10
+ async accountingDocument(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<AccountingDocument> {
11
+ const { domain } = context.state
12
+
13
+ return await getRepository(AccountingDocument).findOne({
14
+ where: { domain: { id: domain.id }, id }
15
+ })
16
+ }
17
+
18
+ @Query(returns => AccountingDocumentList, { description: 'To fetch multiple AccountingDocuments' })
19
+ async accountingDocuments(@Args(type => ListParam) params: ListParam, @Ctx() context: ResolverContext): Promise<AccountingDocumentList> {
20
+ const { domain } = context.state
21
+
22
+ const queryBuilder = getQueryBuilderFromListParams({
23
+ domain,
24
+ params,
25
+ repository: await getRepository(AccountingDocument),
26
+ searchables: ['name', 'description']
27
+ })
28
+
29
+ const [items, total] = await queryBuilder.getManyAndCount()
30
+
31
+ return { items, total }
32
+ }
33
+
34
+ @FieldResolver(type => Domain)
35
+ async domain(@Root() accountingDocument: AccountingDocument): Promise<Domain> {
36
+ return accountingDocument.domainId && (await getRepository(Domain).findOneBy({ id: accountingDocument.domainId }))
37
+ }
38
+
39
+ @FieldResolver(type => User)
40
+ async updater(@Root() accountingDocument: AccountingDocument): Promise<User> {
41
+ return accountingDocument.updaterId && (await getRepository(User).findOneBy({ id: accountingDocument.updaterId }))
42
+ }
43
+
44
+ @FieldResolver(type => User)
45
+ async creator(@Root() accountingDocument: AccountingDocument): Promise<User> {
46
+ return accountingDocument.creatorId && (await getRepository(User).findOneBy({ id: accountingDocument.creatorId }))
47
+ }
48
+ }
@@ -0,0 +1,52 @@
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 { AccountingDocument } from './accounting-document'
8
+
9
+ @InputType()
10
+ export class NewAccountingDocument {
11
+ @Field(type => ObjectRef)
12
+ transaction: ObjectRef
13
+
14
+ @Field({ nullable: false })
15
+ documentType: string // 문서의 유형 (예: 계약서, 인보이스 등)
16
+
17
+ @Field({ nullable: false })
18
+ documentUrl: string // 문서의 URL 또는 파일 경로
19
+
20
+ @Field({ nullable: true })
21
+ description?: string // 문서에 대한 설명
22
+ }
23
+
24
+ @InputType()
25
+ export class AccountingDocumentPatch {
26
+ @Field(type => ID, { nullable: true })
27
+ id?: string
28
+
29
+ @Field(type => ObjectRef)
30
+ transaction: ObjectRef
31
+
32
+ @Field({ nullable: false })
33
+ documentType: string // 문서의 유형 (예: 계약서, 인보이스 등)
34
+
35
+ @Field({ nullable: false })
36
+ documentUrl: string // 문서의 URL 또는 파일 경로
37
+
38
+ @Field({ nullable: true })
39
+ description?: string // 문서에 대한 설명
40
+
41
+ @Field({ nullable: true })
42
+ cuFlag?: string
43
+ }
44
+
45
+ @ObjectType()
46
+ export class AccountingDocumentList {
47
+ @Field(type => [AccountingDocument])
48
+ items: AccountingDocument[]
49
+
50
+ @Field(type => Int)
51
+ total: number
52
+ }
@@ -0,0 +1,93 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ ManyToOne,
9
+ PrimaryGeneratedColumn,
10
+ RelationId,
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 { Transaction } from '../transaction/transaction'
18
+
19
+ @ObjectType({ description: 'Entity for AccountingDocument' })
20
+ @Entity()
21
+ @Index(
22
+ 'ix_accounting_document_0',
23
+ (accountingDocument: AccountingDocument) => [
24
+ accountingDocument.domain,
25
+ accountingDocument.transaction,
26
+ accountingDocument.createdAt
27
+ ],
28
+ {
29
+ unique: false,
30
+ where: '"deleted_at" IS NULL'
31
+ }
32
+ )
33
+ export class AccountingDocument {
34
+ @PrimaryGeneratedColumn('uuid')
35
+ @Field(type => ID)
36
+ readonly id: string
37
+
38
+ @VersionColumn()
39
+ @Field({ nullable: true })
40
+ version?: number = 1
41
+
42
+ @ManyToOne(type => Domain)
43
+ @Field({ nullable: true })
44
+ domain?: Domain
45
+
46
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.domain)
47
+ domainId?: string
48
+
49
+ @ManyToOne(type => Transaction, transaction => transaction.documents)
50
+ @Field(type => Transaction)
51
+ transaction: Transaction
52
+
53
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.transaction)
54
+ transactionId: string
55
+
56
+ @Column()
57
+ @Field({ nullable: false })
58
+ documentType: string // 문서의 유형 (예: 계약서, 인보이스 등)
59
+
60
+ @Column()
61
+ @Field({ nullable: false })
62
+ documentUrl: string // 문서의 URL 또는 파일 경로
63
+
64
+ @Column({ nullable: true })
65
+ @Field({ nullable: true })
66
+ description?: string // 문서에 대한 설명
67
+
68
+ @CreateDateColumn()
69
+ @Field({ nullable: true })
70
+ createdAt?: Date
71
+
72
+ @UpdateDateColumn()
73
+ @Field({ nullable: true })
74
+ updatedAt?: Date
75
+
76
+ @DeleteDateColumn()
77
+ @Field({ nullable: true })
78
+ deletedAt?: Date
79
+
80
+ @ManyToOne(type => User, { nullable: true })
81
+ @Field(type => User, { nullable: true })
82
+ creator?: User
83
+
84
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.creator)
85
+ creatorId?: string
86
+
87
+ @ManyToOne(type => User, { nullable: true })
88
+ @Field(type => User, { nullable: true })
89
+ updater?: User
90
+
91
+ @RelationId((accountingDocument: AccountingDocument) => accountingDocument.updater)
92
+ updaterId?: string
93
+ }
@@ -0,0 +1,17 @@
1
+ import { EventSubscriber } from 'typeorm'
2
+
3
+ import { HistoryEntitySubscriber } from '@operato/typeorm-history'
4
+
5
+ import { AccountingDocument } from './accounting-document'
6
+ import { AccountingDocumentHistory } from './accounting-document-history'
7
+
8
+ @EventSubscriber()
9
+ export class AccountingDocumentHistoryEntitySubscriber extends HistoryEntitySubscriber<AccountingDocument, AccountingDocumentHistory> {
10
+ public get entity() {
11
+ return AccountingDocument
12
+ }
13
+
14
+ public get historyEntity() {
15
+ return AccountingDocumentHistory
16
+ }
17
+ }