@things-factory/accounting 7.0.2 → 8.0.0-alpha.1
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.
- package/client/activities/activity-book-edit.ts +1 -1
- package/client/activities/activity-book-view.ts +1 -1
- package/client/activities/activity-expense-edit.ts +1 -1
- package/client/activities/activity-expense-view.ts +1 -1
- package/client/pages/account/account-importer.ts +19 -8
- package/client/pages/account/account-list-page.ts +5 -6
- package/client/pages/accounting-category/accounting-category-importer.ts +19 -8
- package/client/pages/accounting-category/accounting-category-list-page.ts +5 -5
- package/client/pages/financial-statement/financial-statement-importer.ts +19 -8
- package/client/pages/financial-statement/financial-statement-list-page.ts +5 -6
- package/client/pages/fiscal-month/fiscal-month-importer.ts +90 -0
- package/client/pages/fiscal-month/fiscal-month-list-page.ts +398 -0
- package/client/pages/fiscal-quarter/fiscal-quarter-importer.ts +90 -0
- package/client/pages/fiscal-quarter/fiscal-quarter-list-page.ts +398 -0
- package/client/pages/fiscal-year/fiscal-year-importer.ts +90 -0
- package/client/pages/fiscal-year/fiscal-year-list-page.ts +398 -0
- package/client/pages/income-statement/income-statement-importer.ts +19 -8
- package/client/pages/income-statement/income-statement-list-page.ts +5 -6
- package/client/pages/ledger/ledger-importer.ts +19 -8
- package/client/pages/ledger/ledger-list-page.ts +5 -6
- package/client/pages/transaction/transaction-importer.ts +19 -8
- package/client/pages/transaction/transaction-list-page.ts +5 -6
- package/client/route.ts +17 -5
- package/dist-client/activities/activity-book-edit.js +1 -1
- package/dist-client/activities/activity-book-edit.js.map +1 -1
- package/dist-client/activities/activity-book-view.js +1 -1
- package/dist-client/activities/activity-book-view.js.map +1 -1
- package/dist-client/activities/activity-expense-edit.js +1 -1
- package/dist-client/activities/activity-expense-edit.js.map +1 -1
- package/dist-client/activities/activity-expense-view.js +1 -1
- package/dist-client/activities/activity-expense-view.js.map +1 -1
- package/dist-client/pages/account/account-importer.d.ts +0 -1
- package/dist-client/pages/account/account-importer.js +12 -5
- package/dist-client/pages/account/account-importer.js.map +1 -1
- package/dist-client/pages/account/account-list-page.js +5 -6
- package/dist-client/pages/account/account-list-page.js.map +1 -1
- package/dist-client/pages/accounting-category/accounting-category-importer.d.ts +0 -1
- package/dist-client/pages/accounting-category/accounting-category-importer.js +12 -5
- package/dist-client/pages/accounting-category/accounting-category-importer.js.map +1 -1
- package/dist-client/pages/accounting-category/accounting-category-list-page.js +5 -5
- package/dist-client/pages/accounting-category/accounting-category-list-page.js.map +1 -1
- package/dist-client/pages/financial-statement/financial-statement-importer.d.ts +0 -1
- package/dist-client/pages/financial-statement/financial-statement-importer.js +12 -5
- package/dist-client/pages/financial-statement/financial-statement-importer.js.map +1 -1
- package/dist-client/pages/financial-statement/financial-statement-list-page.js +5 -6
- package/dist-client/pages/financial-statement/financial-statement-list-page.js.map +1 -1
- package/dist-client/pages/fiscal-month/fiscal-month-importer.d.ts +23 -0
- package/dist-client/pages/fiscal-month/fiscal-month-importer.js +93 -0
- package/dist-client/pages/fiscal-month/fiscal-month-importer.js.map +1 -0
- package/dist-client/pages/fiscal-month/fiscal-month-list-page.d.ts +66 -0
- package/dist-client/pages/fiscal-month/fiscal-month-list-page.js +370 -0
- package/dist-client/pages/fiscal-month/fiscal-month-list-page.js.map +1 -0
- package/dist-client/pages/fiscal-quarter/fiscal-quarter-importer.d.ts +23 -0
- package/dist-client/pages/fiscal-quarter/fiscal-quarter-importer.js +93 -0
- package/dist-client/pages/fiscal-quarter/fiscal-quarter-importer.js.map +1 -0
- package/dist-client/pages/fiscal-quarter/fiscal-quarter-list-page.d.ts +66 -0
- package/dist-client/pages/fiscal-quarter/fiscal-quarter-list-page.js +370 -0
- package/dist-client/pages/fiscal-quarter/fiscal-quarter-list-page.js.map +1 -0
- package/dist-client/pages/fiscal-year/fiscal-year-importer.d.ts +23 -0
- package/dist-client/pages/fiscal-year/fiscal-year-importer.js +93 -0
- package/dist-client/pages/fiscal-year/fiscal-year-importer.js.map +1 -0
- package/dist-client/pages/fiscal-year/fiscal-year-list-page.d.ts +66 -0
- package/dist-client/pages/fiscal-year/fiscal-year-list-page.js +370 -0
- package/dist-client/pages/fiscal-year/fiscal-year-list-page.js.map +1 -0
- package/dist-client/pages/income-statement/income-statement-importer.d.ts +0 -1
- package/dist-client/pages/income-statement/income-statement-importer.js +12 -5
- package/dist-client/pages/income-statement/income-statement-importer.js.map +1 -1
- package/dist-client/pages/income-statement/income-statement-list-page.js +5 -6
- package/dist-client/pages/income-statement/income-statement-list-page.js.map +1 -1
- package/dist-client/pages/ledger/ledger-importer.d.ts +0 -1
- package/dist-client/pages/ledger/ledger-importer.js +12 -5
- package/dist-client/pages/ledger/ledger-importer.js.map +1 -1
- package/dist-client/pages/ledger/ledger-list-page.js +5 -6
- package/dist-client/pages/ledger/ledger-list-page.js.map +1 -1
- package/dist-client/pages/transaction/transaction-importer.d.ts +0 -1
- package/dist-client/pages/transaction/transaction-importer.js +12 -5
- package/dist-client/pages/transaction/transaction-importer.js.map +1 -1
- package/dist-client/pages/transaction/transaction-list-page.js +5 -6
- package/dist-client/pages/transaction/transaction-list-page.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +9 -0
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/index.d.ts +1 -0
- package/dist-server/controllers/index.js +4 -0
- package/dist-server/controllers/index.js.map +1 -1
- package/dist-server/controllers/summary-statements.d.ts +4 -0
- package/dist-server/controllers/summary-statements.js +143 -0
- package/dist-server/controllers/summary-statements.js.map +1 -0
- package/dist-server/index.d.ts +1 -0
- package/dist-server/index.js +1 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/migrations/1725200507196-seed-fiscal-entities.d.ts +5 -0
- package/dist-server/migrations/1725200507196-seed-fiscal-entities.js +95 -0
- package/dist-server/migrations/1725200507196-seed-fiscal-entities.js.map +1 -0
- package/dist-server/migrations/1725201467183-seed-accounts.d.ts +5 -0
- package/dist-server/migrations/1725201467183-seed-accounts.js +318 -0
- package/dist-server/migrations/1725201467183-seed-accounts.js.map +1 -0
- package/dist-server/routes.d.ts +1 -0
- package/dist-server/routes.js +1 -0
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/account/account-history.js +3 -3
- package/dist-server/service/account/account-history.js.map +1 -1
- package/dist-server/service/account/account-query.js +1 -1
- package/dist-server/service/account/account-query.js.map +1 -1
- package/dist-server/service/account/account.js +1 -1
- package/dist-server/service/account/account.js.map +1 -1
- package/dist-server/service/accounting-category/accounting-category-query.js +1 -1
- package/dist-server/service/accounting-category/accounting-category-query.js.map +1 -1
- package/dist-server/service/accounting-category/accounting-category-type.d.ts +2 -0
- package/dist-server/service/accounting-category/accounting-category-type.js +8 -0
- package/dist-server/service/accounting-category/accounting-category-type.js.map +1 -1
- package/dist-server/service/accounting-category/accounting-category.d.ts +1 -0
- package/dist-server/service/accounting-category/accounting-category.js +7 -1
- package/dist-server/service/accounting-category/accounting-category.js.map +1 -1
- package/dist-server/service/common-type.d.ts +5 -0
- package/dist-server/service/common-type.js +15 -0
- package/dist-server/service/common-type.js.map +1 -0
- package/dist-server/service/financial-statement/financial-statement-history.js +3 -3
- package/dist-server/service/financial-statement/financial-statement-history.js.map +1 -1
- package/dist-server/service/financial-statement/financial-statement-query.js +1 -1
- package/dist-server/service/financial-statement/financial-statement-query.js.map +1 -1
- package/dist-server/service/financial-statement/financial-statement.js +1 -1
- package/dist-server/service/financial-statement/financial-statement.js.map +1 -1
- package/dist-server/service/fiscal-month/fiscal-month-mutation.d.ts +10 -0
- package/dist-server/service/fiscal-month/fiscal-month-mutation.js +128 -0
- package/dist-server/service/fiscal-month/fiscal-month-mutation.js.map +1 -0
- package/dist-server/service/fiscal-month/fiscal-month-query.d.ts +11 -0
- package/dist-server/service/fiscal-month/fiscal-month-query.js +81 -0
- package/dist-server/service/fiscal-month/fiscal-month-query.js.map +1 -0
- package/dist-server/service/fiscal-month/fiscal-month-type.d.ts +26 -0
- package/dist-server/service/fiscal-month/fiscal-month-type.js +98 -0
- package/dist-server/service/fiscal-month/fiscal-month-type.js.map +1 -0
- package/dist-server/service/fiscal-month/fiscal-month.d.ts +22 -0
- package/dist-server/service/fiscal-month/fiscal-month.js +99 -0
- package/dist-server/service/fiscal-month/fiscal-month.js.map +1 -0
- package/dist-server/service/fiscal-month/index.d.ts +6 -0
- package/dist-server/service/fiscal-month/index.js +10 -0
- package/dist-server/service/fiscal-month/index.js.map +1 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.d.ts +10 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js +128 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js.map +1 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-query.d.ts +11 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js +83 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js.map +1 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-type.d.ts +24 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-type.js +90 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-type.js.map +1 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter.d.ts +21 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter.js +94 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter.js.map +1 -0
- package/dist-server/service/fiscal-quarter/index.d.ts +6 -0
- package/dist-server/service/fiscal-quarter/index.js +10 -0
- package/dist-server/service/fiscal-quarter/index.js.map +1 -0
- package/dist-server/service/fiscal-year/fiscal-year-mutation.d.ts +10 -0
- package/dist-server/service/fiscal-year/fiscal-year-mutation.js +128 -0
- package/dist-server/service/fiscal-year/fiscal-year-mutation.js.map +1 -0
- package/dist-server/service/fiscal-year/fiscal-year-query.d.ts +11 -0
- package/dist-server/service/fiscal-year/fiscal-year-query.js +79 -0
- package/dist-server/service/fiscal-year/fiscal-year-query.js.map +1 -0
- package/dist-server/service/fiscal-year/fiscal-year-type.d.ts +22 -0
- package/dist-server/service/fiscal-year/fiscal-year-type.js +82 -0
- package/dist-server/service/fiscal-year/fiscal-year-type.js.map +1 -0
- package/dist-server/service/fiscal-year/fiscal-year.d.ts +20 -0
- package/dist-server/service/fiscal-year/fiscal-year.js +89 -0
- package/dist-server/service/fiscal-year/fiscal-year.js.map +1 -0
- package/dist-server/service/fiscal-year/index.d.ts +6 -0
- package/dist-server/service/fiscal-year/index.js +10 -0
- package/dist-server/service/fiscal-year/index.js.map +1 -0
- package/dist-server/service/income-statement/income-statement-history.js +3 -3
- package/dist-server/service/income-statement/income-statement-history.js.map +1 -1
- package/dist-server/service/income-statement/income-statement-query.js +1 -1
- package/dist-server/service/income-statement/income-statement-query.js.map +1 -1
- package/dist-server/service/income-statement/income-statement.js +3 -3
- package/dist-server/service/income-statement/income-statement.js.map +1 -1
- package/dist-server/service/index.d.ts +5 -2
- package/dist-server/service/index.js +19 -3
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/transaction/index.d.ts +1 -2
- package/dist-server/service/transaction/transaction-history.d.ts +10 -2
- package/dist-server/service/transaction/transaction-history.js +43 -6
- package/dist-server/service/transaction/transaction-history.js.map +1 -1
- package/dist-server/service/transaction/transaction-query.js +1 -1
- package/dist-server/service/transaction/transaction-query.js.map +1 -1
- package/dist-server/service/transaction/transaction.d.ts +8 -5
- package/dist-server/service/transaction/transaction.js +33 -10
- package/dist-server/service/transaction/transaction.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/accounting/fiscal-month.md +160 -0
- package/helps/accounting/fiscal-quarter.md +160 -0
- package/helps/accounting/fiscal-year.md +160 -0
- package/package.json +9 -8
- package/server/controllers/index.ts +1 -0
- package/server/controllers/summary-statements.ts +160 -0
- package/server/index.ts +1 -0
- package/server/migrations/1725200507196-seed-fiscal-entities.ts +106 -0
- package/server/migrations/1725201467183-seed-accounts.ts +339 -0
- package/server/routes.ts +2 -0
- package/server/service/account/account-history.ts +5 -5
- package/server/service/account/account-query.ts +1 -1
- package/server/service/account/account.ts +1 -1
- package/server/service/accounting-category/accounting-category-query.ts +1 -1
- package/server/service/accounting-category/accounting-category-type.ts +6 -0
- package/server/service/accounting-category/accounting-category.ts +10 -1
- package/server/service/common-type.ts +12 -0
- package/server/service/financial-statement/financial-statement-history.ts +5 -5
- package/server/service/financial-statement/financial-statement-query.ts +1 -1
- package/server/service/financial-statement/financial-statement.ts +1 -1
- package/server/service/fiscal-month/fiscal-month-mutation.ts +137 -0
- package/server/service/fiscal-month/fiscal-month-query.ts +56 -0
- package/server/service/fiscal-month/fiscal-month-type.ts +66 -0
- package/server/service/fiscal-month/fiscal-month.ts +84 -0
- package/server/service/fiscal-month/index.ts +7 -0
- package/server/service/fiscal-quarter/fiscal-quarter-mutation.ts +137 -0
- package/server/service/fiscal-quarter/fiscal-quarter-query.ts +58 -0
- package/server/service/fiscal-quarter/fiscal-quarter-type.ts +60 -0
- package/server/service/fiscal-quarter/fiscal-quarter.ts +80 -0
- package/server/service/fiscal-quarter/index.ts +7 -0
- package/server/service/fiscal-year/fiscal-year-mutation.ts +137 -0
- package/server/service/fiscal-year/fiscal-year-query.ts +51 -0
- package/server/service/fiscal-year/fiscal-year-type.ts +54 -0
- package/server/service/fiscal-year/fiscal-year.ts +76 -0
- package/server/service/fiscal-year/index.ts +7 -0
- package/server/service/income-statement/income-statement-history.ts +5 -5
- package/server/service/income-statement/income-statement-query.ts +1 -4
- package/server/service/income-statement/income-statement.ts +3 -3
- package/server/service/index.ts +31 -3
- package/server/service/transaction/transaction-history.ts +35 -7
- package/server/service/transaction/transaction-query.ts +1 -4
- package/server/service/transaction/transaction.ts +34 -15
- package/things-factory.config.js +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './summary-statements';
|
|
@@ -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"]}
|
package/dist-server/index.d.ts
CHANGED
package/dist-server/index.js
CHANGED
|
@@ -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");
|
package/dist-server/index.js.map
CHANGED
|
@@ -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,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,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
|