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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (231) hide show
  1. package/client/activities/activity-book-edit.ts +1 -1
  2. package/client/activities/activity-book-view.ts +1 -1
  3. package/client/activities/activity-expense-edit.ts +1 -1
  4. package/client/activities/activity-expense-view.ts +1 -1
  5. package/client/pages/account/account-importer.ts +19 -8
  6. package/client/pages/account/account-list-page.ts +5 -6
  7. package/client/pages/accounting-category/accounting-category-importer.ts +19 -8
  8. package/client/pages/accounting-category/accounting-category-list-page.ts +5 -5
  9. package/client/pages/financial-statement/financial-statement-importer.ts +19 -8
  10. package/client/pages/financial-statement/financial-statement-list-page.ts +5 -6
  11. package/client/pages/fiscal-month/fiscal-month-importer.ts +90 -0
  12. package/client/pages/fiscal-month/fiscal-month-list-page.ts +398 -0
  13. package/client/pages/fiscal-quarter/fiscal-quarter-importer.ts +90 -0
  14. package/client/pages/fiscal-quarter/fiscal-quarter-list-page.ts +398 -0
  15. package/client/pages/fiscal-year/fiscal-year-importer.ts +90 -0
  16. package/client/pages/fiscal-year/fiscal-year-list-page.ts +398 -0
  17. package/client/pages/income-statement/income-statement-importer.ts +19 -8
  18. package/client/pages/income-statement/income-statement-list-page.ts +5 -6
  19. package/client/pages/ledger/ledger-importer.ts +19 -8
  20. package/client/pages/ledger/ledger-list-page.ts +5 -6
  21. package/client/pages/transaction/transaction-importer.ts +19 -8
  22. package/client/pages/transaction/transaction-list-page.ts +5 -6
  23. package/client/route.ts +17 -5
  24. package/dist-client/activities/activity-book-edit.js +1 -1
  25. package/dist-client/activities/activity-book-edit.js.map +1 -1
  26. package/dist-client/activities/activity-book-view.js +1 -1
  27. package/dist-client/activities/activity-book-view.js.map +1 -1
  28. package/dist-client/activities/activity-expense-edit.js +1 -1
  29. package/dist-client/activities/activity-expense-edit.js.map +1 -1
  30. package/dist-client/activities/activity-expense-view.js +1 -1
  31. package/dist-client/activities/activity-expense-view.js.map +1 -1
  32. package/dist-client/pages/account/account-importer.d.ts +0 -1
  33. package/dist-client/pages/account/account-importer.js +12 -5
  34. package/dist-client/pages/account/account-importer.js.map +1 -1
  35. package/dist-client/pages/account/account-list-page.js +5 -6
  36. package/dist-client/pages/account/account-list-page.js.map +1 -1
  37. package/dist-client/pages/accounting-category/accounting-category-importer.d.ts +0 -1
  38. package/dist-client/pages/accounting-category/accounting-category-importer.js +12 -5
  39. package/dist-client/pages/accounting-category/accounting-category-importer.js.map +1 -1
  40. package/dist-client/pages/accounting-category/accounting-category-list-page.js +5 -5
  41. package/dist-client/pages/accounting-category/accounting-category-list-page.js.map +1 -1
  42. package/dist-client/pages/financial-statement/financial-statement-importer.d.ts +0 -1
  43. package/dist-client/pages/financial-statement/financial-statement-importer.js +12 -5
  44. package/dist-client/pages/financial-statement/financial-statement-importer.js.map +1 -1
  45. package/dist-client/pages/financial-statement/financial-statement-list-page.js +5 -6
  46. package/dist-client/pages/financial-statement/financial-statement-list-page.js.map +1 -1
  47. package/dist-client/pages/fiscal-month/fiscal-month-importer.d.ts +23 -0
  48. package/dist-client/pages/fiscal-month/fiscal-month-importer.js +93 -0
  49. package/dist-client/pages/fiscal-month/fiscal-month-importer.js.map +1 -0
  50. package/dist-client/pages/fiscal-month/fiscal-month-list-page.d.ts +66 -0
  51. package/dist-client/pages/fiscal-month/fiscal-month-list-page.js +370 -0
  52. package/dist-client/pages/fiscal-month/fiscal-month-list-page.js.map +1 -0
  53. package/dist-client/pages/fiscal-quarter/fiscal-quarter-importer.d.ts +23 -0
  54. package/dist-client/pages/fiscal-quarter/fiscal-quarter-importer.js +93 -0
  55. package/dist-client/pages/fiscal-quarter/fiscal-quarter-importer.js.map +1 -0
  56. package/dist-client/pages/fiscal-quarter/fiscal-quarter-list-page.d.ts +66 -0
  57. package/dist-client/pages/fiscal-quarter/fiscal-quarter-list-page.js +370 -0
  58. package/dist-client/pages/fiscal-quarter/fiscal-quarter-list-page.js.map +1 -0
  59. package/dist-client/pages/fiscal-year/fiscal-year-importer.d.ts +23 -0
  60. package/dist-client/pages/fiscal-year/fiscal-year-importer.js +93 -0
  61. package/dist-client/pages/fiscal-year/fiscal-year-importer.js.map +1 -0
  62. package/dist-client/pages/fiscal-year/fiscal-year-list-page.d.ts +66 -0
  63. package/dist-client/pages/fiscal-year/fiscal-year-list-page.js +370 -0
  64. package/dist-client/pages/fiscal-year/fiscal-year-list-page.js.map +1 -0
  65. package/dist-client/pages/income-statement/income-statement-importer.d.ts +0 -1
  66. package/dist-client/pages/income-statement/income-statement-importer.js +12 -5
  67. package/dist-client/pages/income-statement/income-statement-importer.js.map +1 -1
  68. package/dist-client/pages/income-statement/income-statement-list-page.js +5 -6
  69. package/dist-client/pages/income-statement/income-statement-list-page.js.map +1 -1
  70. package/dist-client/pages/ledger/ledger-importer.d.ts +0 -1
  71. package/dist-client/pages/ledger/ledger-importer.js +12 -5
  72. package/dist-client/pages/ledger/ledger-importer.js.map +1 -1
  73. package/dist-client/pages/ledger/ledger-list-page.js +5 -6
  74. package/dist-client/pages/ledger/ledger-list-page.js.map +1 -1
  75. package/dist-client/pages/transaction/transaction-importer.d.ts +0 -1
  76. package/dist-client/pages/transaction/transaction-importer.js +12 -5
  77. package/dist-client/pages/transaction/transaction-importer.js.map +1 -1
  78. package/dist-client/pages/transaction/transaction-list-page.js +5 -6
  79. package/dist-client/pages/transaction/transaction-list-page.js.map +1 -1
  80. package/dist-client/route.d.ts +1 -1
  81. package/dist-client/route.js +9 -0
  82. package/dist-client/route.js.map +1 -1
  83. package/dist-client/tsconfig.tsbuildinfo +1 -1
  84. package/dist-server/controllers/index.d.ts +1 -0
  85. package/dist-server/controllers/index.js +4 -0
  86. package/dist-server/controllers/index.js.map +1 -1
  87. package/dist-server/controllers/summary-statements.d.ts +4 -0
  88. package/dist-server/controllers/summary-statements.js +143 -0
  89. package/dist-server/controllers/summary-statements.js.map +1 -0
  90. package/dist-server/index.d.ts +1 -0
  91. package/dist-server/index.js +1 -0
  92. package/dist-server/index.js.map +1 -1
  93. package/dist-server/migrations/1725200507196-seed-fiscal-entities.d.ts +5 -0
  94. package/dist-server/migrations/1725200507196-seed-fiscal-entities.js +95 -0
  95. package/dist-server/migrations/1725200507196-seed-fiscal-entities.js.map +1 -0
  96. package/dist-server/migrations/1725201467183-seed-accounts.d.ts +5 -0
  97. package/dist-server/migrations/1725201467183-seed-accounts.js +318 -0
  98. package/dist-server/migrations/1725201467183-seed-accounts.js.map +1 -0
  99. package/dist-server/routes.d.ts +1 -0
  100. package/dist-server/routes.js +1 -0
  101. package/dist-server/routes.js.map +1 -1
  102. package/dist-server/service/account/account-history.js +3 -3
  103. package/dist-server/service/account/account-history.js.map +1 -1
  104. package/dist-server/service/account/account-query.js +1 -1
  105. package/dist-server/service/account/account-query.js.map +1 -1
  106. package/dist-server/service/account/account.js +1 -1
  107. package/dist-server/service/account/account.js.map +1 -1
  108. package/dist-server/service/accounting-category/accounting-category-query.js +1 -1
  109. package/dist-server/service/accounting-category/accounting-category-query.js.map +1 -1
  110. package/dist-server/service/accounting-category/accounting-category-type.d.ts +2 -0
  111. package/dist-server/service/accounting-category/accounting-category-type.js +8 -0
  112. package/dist-server/service/accounting-category/accounting-category-type.js.map +1 -1
  113. package/dist-server/service/accounting-category/accounting-category.d.ts +1 -0
  114. package/dist-server/service/accounting-category/accounting-category.js +7 -1
  115. package/dist-server/service/accounting-category/accounting-category.js.map +1 -1
  116. package/dist-server/service/common-type.d.ts +5 -0
  117. package/dist-server/service/common-type.js +15 -0
  118. package/dist-server/service/common-type.js.map +1 -0
  119. package/dist-server/service/financial-statement/financial-statement-history.js +3 -3
  120. package/dist-server/service/financial-statement/financial-statement-history.js.map +1 -1
  121. package/dist-server/service/financial-statement/financial-statement-query.js +1 -1
  122. package/dist-server/service/financial-statement/financial-statement-query.js.map +1 -1
  123. package/dist-server/service/financial-statement/financial-statement.js +1 -1
  124. package/dist-server/service/financial-statement/financial-statement.js.map +1 -1
  125. package/dist-server/service/fiscal-month/fiscal-month-mutation.d.ts +10 -0
  126. package/dist-server/service/fiscal-month/fiscal-month-mutation.js +128 -0
  127. package/dist-server/service/fiscal-month/fiscal-month-mutation.js.map +1 -0
  128. package/dist-server/service/fiscal-month/fiscal-month-query.d.ts +11 -0
  129. package/dist-server/service/fiscal-month/fiscal-month-query.js +81 -0
  130. package/dist-server/service/fiscal-month/fiscal-month-query.js.map +1 -0
  131. package/dist-server/service/fiscal-month/fiscal-month-type.d.ts +26 -0
  132. package/dist-server/service/fiscal-month/fiscal-month-type.js +98 -0
  133. package/dist-server/service/fiscal-month/fiscal-month-type.js.map +1 -0
  134. package/dist-server/service/fiscal-month/fiscal-month.d.ts +22 -0
  135. package/dist-server/service/fiscal-month/fiscal-month.js +99 -0
  136. package/dist-server/service/fiscal-month/fiscal-month.js.map +1 -0
  137. package/dist-server/service/fiscal-month/index.d.ts +6 -0
  138. package/dist-server/service/fiscal-month/index.js +10 -0
  139. package/dist-server/service/fiscal-month/index.js.map +1 -0
  140. package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.d.ts +10 -0
  141. package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js +128 -0
  142. package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js.map +1 -0
  143. package/dist-server/service/fiscal-quarter/fiscal-quarter-query.d.ts +11 -0
  144. package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js +83 -0
  145. package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js.map +1 -0
  146. package/dist-server/service/fiscal-quarter/fiscal-quarter-type.d.ts +24 -0
  147. package/dist-server/service/fiscal-quarter/fiscal-quarter-type.js +90 -0
  148. package/dist-server/service/fiscal-quarter/fiscal-quarter-type.js.map +1 -0
  149. package/dist-server/service/fiscal-quarter/fiscal-quarter.d.ts +21 -0
  150. package/dist-server/service/fiscal-quarter/fiscal-quarter.js +94 -0
  151. package/dist-server/service/fiscal-quarter/fiscal-quarter.js.map +1 -0
  152. package/dist-server/service/fiscal-quarter/index.d.ts +6 -0
  153. package/dist-server/service/fiscal-quarter/index.js +10 -0
  154. package/dist-server/service/fiscal-quarter/index.js.map +1 -0
  155. package/dist-server/service/fiscal-year/fiscal-year-mutation.d.ts +10 -0
  156. package/dist-server/service/fiscal-year/fiscal-year-mutation.js +128 -0
  157. package/dist-server/service/fiscal-year/fiscal-year-mutation.js.map +1 -0
  158. package/dist-server/service/fiscal-year/fiscal-year-query.d.ts +11 -0
  159. package/dist-server/service/fiscal-year/fiscal-year-query.js +79 -0
  160. package/dist-server/service/fiscal-year/fiscal-year-query.js.map +1 -0
  161. package/dist-server/service/fiscal-year/fiscal-year-type.d.ts +22 -0
  162. package/dist-server/service/fiscal-year/fiscal-year-type.js +82 -0
  163. package/dist-server/service/fiscal-year/fiscal-year-type.js.map +1 -0
  164. package/dist-server/service/fiscal-year/fiscal-year.d.ts +20 -0
  165. package/dist-server/service/fiscal-year/fiscal-year.js +89 -0
  166. package/dist-server/service/fiscal-year/fiscal-year.js.map +1 -0
  167. package/dist-server/service/fiscal-year/index.d.ts +6 -0
  168. package/dist-server/service/fiscal-year/index.js +10 -0
  169. package/dist-server/service/fiscal-year/index.js.map +1 -0
  170. package/dist-server/service/income-statement/income-statement-history.js +3 -3
  171. package/dist-server/service/income-statement/income-statement-history.js.map +1 -1
  172. package/dist-server/service/income-statement/income-statement-query.js +1 -1
  173. package/dist-server/service/income-statement/income-statement-query.js.map +1 -1
  174. package/dist-server/service/income-statement/income-statement.js +3 -3
  175. package/dist-server/service/income-statement/income-statement.js.map +1 -1
  176. package/dist-server/service/index.d.ts +5 -2
  177. package/dist-server/service/index.js +19 -3
  178. package/dist-server/service/index.js.map +1 -1
  179. package/dist-server/service/transaction/index.d.ts +1 -2
  180. package/dist-server/service/transaction/transaction-history.d.ts +10 -2
  181. package/dist-server/service/transaction/transaction-history.js +43 -6
  182. package/dist-server/service/transaction/transaction-history.js.map +1 -1
  183. package/dist-server/service/transaction/transaction-query.js +1 -1
  184. package/dist-server/service/transaction/transaction-query.js.map +1 -1
  185. package/dist-server/service/transaction/transaction.d.ts +8 -5
  186. package/dist-server/service/transaction/transaction.js +33 -10
  187. package/dist-server/service/transaction/transaction.js.map +1 -1
  188. package/dist-server/tsconfig.tsbuildinfo +1 -1
  189. package/helps/accounting/fiscal-month.md +160 -0
  190. package/helps/accounting/fiscal-quarter.md +160 -0
  191. package/helps/accounting/fiscal-year.md +160 -0
  192. package/package.json +9 -8
  193. package/server/controllers/index.ts +1 -0
  194. package/server/controllers/summary-statements.ts +160 -0
  195. package/server/index.ts +1 -0
  196. package/server/migrations/1725200507196-seed-fiscal-entities.ts +106 -0
  197. package/server/migrations/1725201467183-seed-accounts.ts +339 -0
  198. package/server/routes.ts +2 -0
  199. package/server/service/account/account-history.ts +5 -5
  200. package/server/service/account/account-query.ts +1 -1
  201. package/server/service/account/account.ts +1 -1
  202. package/server/service/accounting-category/accounting-category-query.ts +1 -1
  203. package/server/service/accounting-category/accounting-category-type.ts +6 -0
  204. package/server/service/accounting-category/accounting-category.ts +10 -1
  205. package/server/service/common-type.ts +12 -0
  206. package/server/service/financial-statement/financial-statement-history.ts +5 -5
  207. package/server/service/financial-statement/financial-statement-query.ts +1 -1
  208. package/server/service/financial-statement/financial-statement.ts +1 -1
  209. package/server/service/fiscal-month/fiscal-month-mutation.ts +137 -0
  210. package/server/service/fiscal-month/fiscal-month-query.ts +56 -0
  211. package/server/service/fiscal-month/fiscal-month-type.ts +66 -0
  212. package/server/service/fiscal-month/fiscal-month.ts +84 -0
  213. package/server/service/fiscal-month/index.ts +7 -0
  214. package/server/service/fiscal-quarter/fiscal-quarter-mutation.ts +137 -0
  215. package/server/service/fiscal-quarter/fiscal-quarter-query.ts +58 -0
  216. package/server/service/fiscal-quarter/fiscal-quarter-type.ts +60 -0
  217. package/server/service/fiscal-quarter/fiscal-quarter.ts +80 -0
  218. package/server/service/fiscal-quarter/index.ts +7 -0
  219. package/server/service/fiscal-year/fiscal-year-mutation.ts +137 -0
  220. package/server/service/fiscal-year/fiscal-year-query.ts +51 -0
  221. package/server/service/fiscal-year/fiscal-year-type.ts +54 -0
  222. package/server/service/fiscal-year/fiscal-year.ts +76 -0
  223. package/server/service/fiscal-year/index.ts +7 -0
  224. package/server/service/income-statement/income-statement-history.ts +5 -5
  225. package/server/service/income-statement/income-statement-query.ts +1 -4
  226. package/server/service/income-statement/income-statement.ts +3 -3
  227. package/server/service/index.ts +31 -3
  228. package/server/service/transaction/transaction-history.ts +35 -7
  229. package/server/service/transaction/transaction-query.ts +1 -4
  230. package/server/service/transaction/transaction.ts +34 -15
  231. package/things-factory.config.js +3 -1
@@ -0,0 +1 @@
1
+ export * from './summary-statements';
@@ -1 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./summary-statements"), exports);
1
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":"","sourcesContent":[""]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;AAAA,+DAAoC","sourcesContent":["export * from './summary-statements'\n"]}
@@ -0,0 +1,4 @@
1
+ export declare function calculateMonthlyStatements(year: number, month: number): Promise<void>;
2
+ export declare function calculateQuarterlyStatements(year: number, quarter: number): Promise<void>;
3
+ export declare function calculateYearlyStatements(year: number): Promise<void>;
4
+ export declare function getMonthsInQuarter(quarter: number): number[];
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateMonthlyStatements = calculateMonthlyStatements;
4
+ exports.calculateQuarterlyStatements = calculateQuarterlyStatements;
5
+ exports.calculateYearlyStatements = calculateYearlyStatements;
6
+ exports.getMonthsInQuarter = getMonthsInQuarter;
7
+ const shell_1 = require("@things-factory/shell");
8
+ const financial_statement_1 = require("../service/financial-statement/financial-statement");
9
+ const income_statement_1 = require("../service/income-statement/income-statement");
10
+ const transaction_1 = require("../service/transaction/transaction");
11
+ async function calculateMonthlyStatements(year, month) {
12
+ const transactionRepository = (0, shell_1.getRepository)(transaction_1.Transaction);
13
+ const financialStatementRepository = (0, shell_1.getRepository)(financial_statement_1.FinancialStatement);
14
+ const incomeStatementRepository = (0, shell_1.getRepository)(income_statement_1.IncomeStatement);
15
+ // 재무제표 계산
16
+ const financialResult = await transactionRepository
17
+ .createQueryBuilder('transaction')
18
+ .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
+ ])
23
+ .where('transaction.year = :year', { year })
24
+ .andWhere('transaction.month = :month', { month })
25
+ .setParameters({
26
+ asset: transaction_1.TransactionType.Asset,
27
+ liability: transaction_1.TransactionType.Liability,
28
+ equity: transaction_1.TransactionType.Equity
29
+ })
30
+ .getRawOne();
31
+ const financialStatement = new financial_statement_1.FinancialStatement();
32
+ financialStatement.year = year;
33
+ financialStatement.month = month;
34
+ financialStatement.asset = financialResult.asset || 0;
35
+ financialStatement.liability = financialResult.liability || 0;
36
+ financialStatement.equity = financialResult.equity || 0;
37
+ await financialStatementRepository.save(financialStatement);
38
+ // 손익계산서 계산
39
+ const incomeResult = await transactionRepository
40
+ .createQueryBuilder('transaction')
41
+ .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'
44
+ ])
45
+ .where('transaction.year = :year', { year })
46
+ .andWhere('transaction.month = :month', { month })
47
+ .setParameters({
48
+ income: transaction_1.TransactionType.Income,
49
+ expense: transaction_1.TransactionType.Expense
50
+ })
51
+ .getRawOne();
52
+ const incomeStatement = new income_statement_1.IncomeStatement();
53
+ incomeStatement.year = year;
54
+ incomeStatement.month = month;
55
+ incomeStatement.revenue = incomeResult.revenue || 0;
56
+ incomeStatement.expense = incomeResult.expense || 0;
57
+ incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0);
58
+ await incomeStatementRepository.save(incomeStatement);
59
+ }
60
+ async function calculateQuarterlyStatements(year, quarter) {
61
+ const financialStatementRepository = (0, shell_1.getRepository)(financial_statement_1.FinancialStatement);
62
+ const incomeStatementRepository = (0, shell_1.getRepository)(income_statement_1.IncomeStatement);
63
+ const months = getMonthsInQuarter(quarter);
64
+ // 재무제표 분기 합계 계산
65
+ const financialResult = await financialStatementRepository
66
+ .createQueryBuilder('financialStatement')
67
+ .select([
68
+ 'SUM(financialStatement.asset) AS asset',
69
+ 'SUM(financialStatement.liability) AS liability',
70
+ 'SUM(financialStatement.equity) AS equity'
71
+ ])
72
+ .where('financialStatement.year = :year', { year })
73
+ .andWhere('financialStatement.month IN (:...months)', { months })
74
+ .getRawOne();
75
+ const financialStatement = new financial_statement_1.FinancialStatement();
76
+ financialStatement.year = year;
77
+ financialStatement.quarter = quarter;
78
+ financialStatement.asset = financialResult.asset || 0;
79
+ financialStatement.liability = financialResult.liability || 0;
80
+ financialStatement.equity = financialResult.equity || 0;
81
+ await financialStatementRepository.save(financialStatement);
82
+ // 손익계산서 분기 합계 계산
83
+ const incomeResult = await incomeStatementRepository
84
+ .createQueryBuilder('incomeStatement')
85
+ .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])
86
+ .where('incomeStatement.year = :year', { year })
87
+ .andWhere('incomeStatement.month IN (:...months)', { months })
88
+ .getRawOne();
89
+ const incomeStatement = new income_statement_1.IncomeStatement();
90
+ incomeStatement.year = year;
91
+ incomeStatement.quarter = quarter;
92
+ incomeStatement.revenue = incomeResult.revenue || 0;
93
+ incomeStatement.expense = incomeResult.expense || 0;
94
+ incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0);
95
+ await incomeStatementRepository.save(incomeStatement);
96
+ }
97
+ async function calculateYearlyStatements(year) {
98
+ const financialStatementRepository = (0, shell_1.getRepository)(financial_statement_1.FinancialStatement);
99
+ const incomeStatementRepository = (0, shell_1.getRepository)(income_statement_1.IncomeStatement);
100
+ // 재무제표 연간 합계 계산
101
+ const financialResult = await financialStatementRepository
102
+ .createQueryBuilder('financialStatement')
103
+ .select([
104
+ 'SUM(financialStatement.asset) AS asset',
105
+ 'SUM(financialStatement.liability) AS liability',
106
+ 'SUM(financialStatement.equity) AS equity'
107
+ ])
108
+ .where('financialStatement.year = :year', { year })
109
+ .getRawOne();
110
+ const financialStatement = new financial_statement_1.FinancialStatement();
111
+ financialStatement.year = year;
112
+ financialStatement.asset = financialResult.asset || 0;
113
+ financialStatement.liability = financialResult.liability || 0;
114
+ financialStatement.equity = financialResult.equity || 0;
115
+ await financialStatementRepository.save(financialStatement);
116
+ // 손익계산서 연간 합계 계산
117
+ const incomeResult = await incomeStatementRepository
118
+ .createQueryBuilder('incomeStatement')
119
+ .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])
120
+ .where('incomeStatement.year = :year', { year })
121
+ .getRawOne();
122
+ const incomeStatement = new income_statement_1.IncomeStatement();
123
+ incomeStatement.year = year;
124
+ incomeStatement.revenue = incomeResult.revenue || 0;
125
+ incomeStatement.expense = incomeResult.expense || 0;
126
+ incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0);
127
+ await incomeStatementRepository.save(incomeStatement);
128
+ }
129
+ function getMonthsInQuarter(quarter) {
130
+ switch (quarter) {
131
+ case 1:
132
+ return [1, 2, 3];
133
+ case 2:
134
+ return [4, 5, 6];
135
+ case 3:
136
+ return [7, 8, 9];
137
+ case 4:
138
+ return [10, 11, 12];
139
+ default:
140
+ throw new Error('Invalid quarter number');
141
+ }
142
+ }
143
+ //# sourceMappingURL=summary-statements.js.map
@@ -0,0 +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,3 +1,4 @@
1
+ export * from './controllers';
1
2
  export * from './migrations';
2
3
  export * from './middlewares';
3
4
  import './routes';
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./controllers"), exports);
4
5
  tslib_1.__exportStar(require("./migrations"), exports);
5
6
  tslib_1.__exportStar(require("./middlewares"), exports);
6
7
  require("./routes");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,wDAA6B;AAE7B,oBAAiB","sourcesContent":["export * 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;AAE7B,oBAAiB","sourcesContent":["export * from './controllers'\nexport * from './migrations'\nexport * from './middlewares'\n\nimport './routes'\n"]}
@@ -0,0 +1,5 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class SeedFiscalEntities1725200507196 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<void>;
4
+ down(queryRunner: QueryRunner): Promise<void>;
5
+ }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SeedFiscalEntities1725200507196 = void 0;
4
+ const shell_1 = require("@things-factory/shell");
5
+ const auth_base_1 = require("@things-factory/auth-base");
6
+ const fiscal_year_1 = require("../service/fiscal-year/fiscal-year");
7
+ const fiscal_quarter_1 = require("../service/fiscal-quarter/fiscal-quarter");
8
+ const fiscal_month_1 = require("../service/fiscal-month/fiscal-month");
9
+ const common_type_1 = require("../service/common-type");
10
+ class SeedFiscalEntities1725200507196 {
11
+ async up(queryRunner) {
12
+ const domainRepository = (0, shell_1.getRepository)(shell_1.Domain);
13
+ const userRepository = (0, shell_1.getRepository)(auth_base_1.User);
14
+ const fiscalYearRepository = (0, shell_1.getRepository)(fiscal_year_1.FiscalYear);
15
+ const fiscalQuarterRepository = (0, shell_1.getRepository)(fiscal_quarter_1.FiscalQuarter);
16
+ const fiscalMonthRepository = (0, shell_1.getRepository)(fiscal_month_1.FiscalMonth);
17
+ const domain = await domainRepository.findOne({
18
+ where: { name: 'SYSTEM' }
19
+ });
20
+ if (!domain) {
21
+ throw new Error('SYSTEM domain not found');
22
+ }
23
+ const user = await userRepository.findOne({ where: { id: domain.owner } });
24
+ if (!user) {
25
+ throw new Error('Domain owner not found');
26
+ }
27
+ const currentYear = new Date().getFullYear();
28
+ try {
29
+ // Fiscal Year 생성
30
+ const fiscalYear = await fiscalYearRepository.save({
31
+ domain,
32
+ year: currentYear,
33
+ startDate: `${currentYear}-01-01`, // 문자열로 저장
34
+ endDate: `${currentYear}-12-31`, // 문자열로 저장
35
+ status: common_type_1.FiscalStatus.OPEN,
36
+ creator: user,
37
+ updater: user
38
+ });
39
+ // Fiscal Quarters 생성
40
+ for (let quarter = 1; quarter <= 4; quarter++) {
41
+ const startMonth = (quarter - 1) * 3 + 1;
42
+ const endMonth = quarter * 3;
43
+ const fiscalQuarter = await fiscalQuarterRepository.save({
44
+ domain,
45
+ year: currentYear,
46
+ quarter,
47
+ startDate: `${currentYear}-${String(startMonth).padStart(2, '0')}-01`, // 문자열로 저장
48
+ endDate: `${currentYear}-${String(endMonth).padStart(2, '0')}-31`, // 임시로 월의 마지막 날을 31일로 설정
49
+ status: common_type_1.FiscalStatus.OPEN,
50
+ creator: user,
51
+ updater: user
52
+ });
53
+ // Fiscal Months 생성
54
+ for (let month = startMonth; month <= endMonth; month++) {
55
+ const startDate = `${currentYear}-${String(month).padStart(2, '0')}-01`;
56
+ const endDate = `${currentYear}-${String(month).padStart(2, '0')}-${new Date(currentYear, month, 0).getDate()}`;
57
+ await fiscalMonthRepository.save({
58
+ domain,
59
+ year: currentYear,
60
+ quarter,
61
+ month,
62
+ startDate,
63
+ endDate,
64
+ status: common_type_1.FiscalStatus.OPEN,
65
+ creator: user,
66
+ updater: user
67
+ });
68
+ }
69
+ }
70
+ }
71
+ catch (error) {
72
+ console.error('Failed to seed fiscal entities:', error);
73
+ throw error;
74
+ }
75
+ }
76
+ async down(queryRunner) {
77
+ const domainRepository = (0, shell_1.getRepository)(shell_1.Domain);
78
+ const fiscalYearRepository = (0, shell_1.getRepository)(fiscal_year_1.FiscalYear);
79
+ const fiscalQuarterRepository = (0, shell_1.getRepository)(fiscal_quarter_1.FiscalQuarter);
80
+ const fiscalMonthRepository = (0, shell_1.getRepository)(fiscal_month_1.FiscalMonth);
81
+ const domain = await domainRepository.findOne({
82
+ where: { name: 'SYSTEM' }
83
+ });
84
+ if (!domain) {
85
+ throw new Error('SYSTEM domain not found');
86
+ }
87
+ const currentYear = new Date().getFullYear();
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 });
92
+ }
93
+ }
94
+ exports.SeedFiscalEntities1725200507196 = SeedFiscalEntities1725200507196;
95
+ //# sourceMappingURL=1725200507196-seed-fiscal-entities.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,5 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ export declare class SeedAccounts1725201467183 implements MigrationInterface {
3
+ up(queryRunner: QueryRunner): Promise<void>;
4
+ down(queryRunner: QueryRunner): Promise<void>;
5
+ }
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SeedAccounts1725201467183 = void 0;
4
+ const shell_1 = require("@things-factory/shell");
5
+ const auth_base_1 = require("@things-factory/auth-base");
6
+ const account_1 = require("../service/account/account");
7
+ const accounting_category_1 = require("../service/accounting-category/accounting-category");
8
+ class SeedAccounts1725201467183 {
9
+ async up(queryRunner) {
10
+ const domainRepository = (0, shell_1.getRepository)(shell_1.Domain);
11
+ const userRepository = (0, shell_1.getRepository)(auth_base_1.User);
12
+ const accountingCategoryRepository = (0, shell_1.getRepository)(accounting_category_1.AccountingCategory);
13
+ const accountRepository = (0, shell_1.getRepository)(account_1.Account);
14
+ const domain = await domainRepository.findOne({
15
+ where: { name: 'SYSTEM' }
16
+ });
17
+ if (!domain) {
18
+ throw new Error('SYSTEM domain not found');
19
+ }
20
+ const user = await userRepository.findOne({ where: { id: domain.owner } });
21
+ if (!user) {
22
+ throw new Error('Domain owner not found');
23
+ }
24
+ try {
25
+ // 최상위 카테고리 생성
26
+ const topLevelCategories = {
27
+ 자산: await accountingCategoryRepository.save({
28
+ domain,
29
+ code: 'ASSET',
30
+ name: '자산',
31
+ description: '기업이 소유하고 있는 자산',
32
+ creator: user,
33
+ updater: user
34
+ }),
35
+ 부채: await accountingCategoryRepository.save({
36
+ domain,
37
+ code: 'LIABILITY',
38
+ name: '부채',
39
+ description: '기업이 갚아야 할 빚',
40
+ creator: user,
41
+ updater: user
42
+ }),
43
+ 자본: await accountingCategoryRepository.save({
44
+ domain,
45
+ code: 'EQUITY',
46
+ name: '자본',
47
+ description: '기업 소유주의 자산',
48
+ creator: user,
49
+ updater: user
50
+ }),
51
+ 수익: await accountingCategoryRepository.save({
52
+ domain,
53
+ code: 'REVENUE',
54
+ name: '수익',
55
+ description: '기업이 벌어들인 돈',
56
+ creator: user,
57
+ updater: user
58
+ }),
59
+ 비용: await accountingCategoryRepository.save({
60
+ domain,
61
+ code: 'EXPENSE',
62
+ name: '비용',
63
+ description: '기업 운영에 사용된 돈',
64
+ creator: user,
65
+ updater: user
66
+ })
67
+ };
68
+ // 유동자산 및 비유동자산과 같은 하위 카테고리 생성
69
+ const subCategories = {
70
+ 유동자산: await accountingCategoryRepository.save({
71
+ domain,
72
+ code: 'CURRENT_ASSET',
73
+ name: '유동자산',
74
+ description: '쉽게 현금화할 수 있는 자산',
75
+ parent: topLevelCategories.자산,
76
+ creator: user,
77
+ updater: user
78
+ }),
79
+ 비유동자산: await accountingCategoryRepository.save({
80
+ domain,
81
+ code: 'NON_CURRENT_ASSET',
82
+ name: '비유동자산',
83
+ description: '장기 보유 자산',
84
+ parent: topLevelCategories.자산,
85
+ creator: user,
86
+ updater: user
87
+ }),
88
+ 유동부채: await accountingCategoryRepository.save({
89
+ domain,
90
+ code: 'CURRENT_LIABILITY',
91
+ name: '유동부채',
92
+ description: '단기간에 상환해야 하는 부채',
93
+ parent: topLevelCategories.부채,
94
+ creator: user,
95
+ updater: user
96
+ }),
97
+ 비유동부채: await accountingCategoryRepository.save({
98
+ domain,
99
+ code: 'NON_CURRENT_LIABILITY',
100
+ name: '비유동부채',
101
+ description: '장기 부채',
102
+ parent: topLevelCategories.부채,
103
+ creator: user,
104
+ updater: user
105
+ })
106
+ };
107
+ // 이제 유형자산, 무형자산, 단기금융부채 같은 하위 카테고리를 subCategories 객체를 사용하여 생성합니다.
108
+ const furtherSubCategories = {
109
+ 유형자산: await accountingCategoryRepository.save({
110
+ domain,
111
+ code: 'TANGIBLE_ASSET',
112
+ name: '유형자산',
113
+ description: '물리적 형태가 있는 자산',
114
+ parent: subCategories.비유동자산,
115
+ creator: user,
116
+ updater: user
117
+ }),
118
+ 무형자산: await accountingCategoryRepository.save({
119
+ domain,
120
+ code: 'INTANGIBLE_ASSET',
121
+ name: '무형자산',
122
+ description: '물리적 형태가 없는 자산',
123
+ parent: subCategories.비유동자산,
124
+ creator: user,
125
+ updater: user
126
+ }),
127
+ 단기금융부채: await accountingCategoryRepository.save({
128
+ domain,
129
+ code: 'SHORT_TERM_FINANCIAL_LIABILITY',
130
+ name: '단기금융부채',
131
+ description: '단기적으로 갚아야 할 금융부채',
132
+ parent: subCategories.유동부채,
133
+ creator: user,
134
+ updater: user
135
+ })
136
+ };
137
+ // 계정 생성 및 하위 카테고리 연결
138
+ const accounts = [
139
+ // 유동자산 계정
140
+ {
141
+ controlNumber: '101',
142
+ name: '현금 및 현금성 자산',
143
+ description: '현금, 예금 및 기타 현금성 자산',
144
+ category: subCategories.유동자산
145
+ },
146
+ {
147
+ controlNumber: '102',
148
+ name: '매출채권',
149
+ description: '상품 또는 서비스의 판매로 인해 발생한 채권',
150
+ category: subCategories.유동자산
151
+ },
152
+ {
153
+ controlNumber: '103',
154
+ name: '재고자산',
155
+ description: '판매를 목적으로 보유한 상품, 제품, 원재료 등',
156
+ category: subCategories.유동자산
157
+ },
158
+ {
159
+ controlNumber: '104',
160
+ name: '단기금융상품',
161
+ description: '단기투자 목적으로 보유한 금융상품',
162
+ category: subCategories.유동자산
163
+ },
164
+ {
165
+ controlNumber: '105',
166
+ name: '선급금',
167
+ description: '상품, 서비스 제공을 위해 미리 지급한 금액',
168
+ category: subCategories.유동자산
169
+ },
170
+ // 비유동자산 계정
171
+ {
172
+ controlNumber: '201',
173
+ name: '건물',
174
+ description: '기업이 소유한 건물',
175
+ category: furtherSubCategories.유형자산
176
+ },
177
+ {
178
+ controlNumber: '202',
179
+ name: '토지',
180
+ description: '기업이 소유한 토지',
181
+ category: furtherSubCategories.유형자산
182
+ },
183
+ {
184
+ controlNumber: '203',
185
+ name: '기계장치',
186
+ description: '생산을 위해 사용되는 기계 및 장치',
187
+ category: furtherSubCategories.유형자산
188
+ },
189
+ {
190
+ controlNumber: '204',
191
+ name: '무형자산',
192
+ description: '특허권, 상표권 등의 무형자산',
193
+ category: furtherSubCategories.무형자산
194
+ },
195
+ // 유동부채 계정
196
+ {
197
+ controlNumber: '301',
198
+ name: '매입채무',
199
+ description: '상품 또는 서비스의 구매로 인해 발생한 채무',
200
+ category: subCategories.유동부채
201
+ },
202
+ {
203
+ controlNumber: '302',
204
+ name: '단기차입금',
205
+ description: '단기 대출금',
206
+ category: furtherSubCategories.단기금융부채
207
+ },
208
+ {
209
+ controlNumber: '303',
210
+ name: '미지급금',
211
+ description: '이미 발생한 비용에 대한 지급할 금액',
212
+ category: subCategories.유동부채
213
+ },
214
+ {
215
+ controlNumber: '304',
216
+ name: '선수금',
217
+ description: '고객으로부터 미리 받은 금액',
218
+ category: subCategories.유동부채
219
+ },
220
+ // 비유동부채 계정
221
+ { controlNumber: '401', name: '장기차입금', description: '장기 대출금', category: subCategories.비유동부채 },
222
+ {
223
+ controlNumber: '402',
224
+ name: '퇴직급여충당부채',
225
+ description: '퇴직급여 지급을 위해 설정한 부채',
226
+ category: subCategories.비유동부채
227
+ },
228
+ // 자본 계정
229
+ { controlNumber: '501', name: '자본금', description: '주주가 납입한 자본', category: topLevelCategories.자본 },
230
+ { controlNumber: '502', name: '이익잉여금', description: '이익의 축적', category: topLevelCategories.자본 },
231
+ // 수익 계정
232
+ {
233
+ controlNumber: '601',
234
+ name: '제품매출',
235
+ description: '제품의 판매로 인한 수익',
236
+ category: topLevelCategories.수익
237
+ },
238
+ {
239
+ controlNumber: '602',
240
+ name: '상품매출',
241
+ description: '상품의 판매로 인한 수익',
242
+ category: topLevelCategories.수익
243
+ },
244
+ {
245
+ controlNumber: '603',
246
+ name: '용역매출',
247
+ description: '용역 제공으로 인한 수익',
248
+ category: topLevelCategories.수익
249
+ },
250
+ {
251
+ controlNumber: '604',
252
+ name: '이자수익',
253
+ description: '금융 자산에서 발생한 이자수익',
254
+ category: topLevelCategories.수익
255
+ },
256
+ {
257
+ controlNumber: '605',
258
+ name: '배당금수익',
259
+ description: '주식 투자로 인한 배당금 수익',
260
+ category: topLevelCategories.수익
261
+ },
262
+ // 비용 계정
263
+ {
264
+ controlNumber: '701',
265
+ name: '매출원가',
266
+ description: '제품, 상품, 용역 제공에 대한 원가',
267
+ category: topLevelCategories.비용
268
+ },
269
+ { controlNumber: '702', name: '급여', description: '직원 급여 비용', category: topLevelCategories.비용 },
270
+ { controlNumber: '703', name: '임대료', description: '건물 및 설비 임차료', category: topLevelCategories.비용 },
271
+ {
272
+ controlNumber: '704',
273
+ name: '감가상각비',
274
+ description: '유형자산의 감가상각비용',
275
+ category: topLevelCategories.비용
276
+ },
277
+ {
278
+ controlNumber: '705',
279
+ name: '이자비용',
280
+ description: '차입금에 대한 이자비용',
281
+ category: topLevelCategories.비용
282
+ },
283
+ {
284
+ controlNumber: '706',
285
+ name: '판매비 및 관리비',
286
+ description: '기업 운영에 필요한 비용',
287
+ category: topLevelCategories.비용
288
+ },
289
+ { controlNumber: '707', name: '법인세비용', description: '법인세 납부 비용', category: topLevelCategories.비용 }
290
+ ];
291
+ // 계정 저장
292
+ for (const account of accounts) {
293
+ await accountRepository.save(Object.assign(Object.assign({ domain }, account), { creator: user, updater: user }));
294
+ }
295
+ }
296
+ catch (error) {
297
+ console.error('Failed to seed accounting categories and accounts:', error);
298
+ throw error;
299
+ }
300
+ }
301
+ async down(queryRunner) {
302
+ const domainRepository = (0, shell_1.getRepository)(shell_1.Domain);
303
+ const accountingCategoryRepository = (0, shell_1.getRepository)(accounting_category_1.AccountingCategory);
304
+ const accountRepository = (0, shell_1.getRepository)(account_1.Account);
305
+ const domain = await domainRepository.findOne({
306
+ where: { name: 'SYSTEM' }
307
+ });
308
+ if (!domain) {
309
+ throw new Error('SYSTEM domain not found');
310
+ }
311
+ // Accounts 삭제
312
+ await accountRepository.delete({ domain });
313
+ // AccountingCategories 삭제
314
+ await accountingCategoryRepository.delete({ domain });
315
+ }
316
+ }
317
+ exports.SeedAccounts1725201467183 = SeedAccounts1725201467183;
318
+ //# sourceMappingURL=1725201467183-seed-accounts.js.map