@things-factory/accounting 8.0.0-alpha.1 → 8.0.0-alpha.11
Sign up to get free protection for your applications and to get access to all the features.
- package/client/bootstrap.ts +10 -1
- package/client/components/accounting-category-selector.ts +136 -0
- package/client/components/accounting-category-view.ts +75 -0
- package/client/grist-editors/grist-editor-accounting-category-object.ts +83 -0
- package/client/grist-editors/grist-renderer-accounting-category-object.ts +13 -0
- package/client/pages/account/account-list-page.ts +33 -2
- package/client/pages/accounting-category/accounting-category-list-page.ts +31 -1
- package/client/pages/accounting-category/accounting-category-tree-page.ts +338 -0
- package/client/pages/accounting-document/accounting-document-importer.ts +90 -0
- package/client/pages/accounting-document/accounting-document-list-page.ts +398 -0
- package/client/pages/bank/bank-importer.ts +90 -0
- package/client/pages/{ledger/ledger-list-page.ts → bank/bank-list-page.ts} +118 -57
- package/client/pages/{ledger/ledger-importer.ts → bank-account/bank-account-importer.ts} +10 -17
- package/client/pages/bank-account/bank-account-list-page.ts +398 -0
- package/client/pages/financial-institution/financial-institution-importer.ts +90 -0
- package/client/pages/financial-institution/financial-institution-list-page.ts +398 -0
- package/client/pages/payment/payment-importer.ts +90 -0
- package/client/pages/payment/payment-list-page.ts +398 -0
- package/client/route.ts +0 -4
- package/client/types/accounting-category.ts +23 -0
- package/client/types/index.ts +1 -0
- package/dist-client/bootstrap.js +7 -1
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/accounting-category-selector.d.ts +16 -0
- package/dist-client/components/accounting-category-selector.js +134 -0
- package/dist-client/components/accounting-category-selector.js.map +1 -0
- package/dist-client/components/accounting-category-view.d.ts +14 -0
- package/dist-client/components/accounting-category-view.js +81 -0
- package/dist-client/components/accounting-category-view.js.map +1 -0
- package/dist-client/grist-editors/grist-editor-accounting-category-object.d.ts +11 -0
- package/dist-client/grist-editors/grist-editor-accounting-category-object.js +71 -0
- package/dist-client/grist-editors/grist-editor-accounting-category-object.js.map +1 -0
- package/dist-client/grist-editors/grist-renderer-accounting-category-object.d.ts +2 -0
- package/dist-client/grist-editors/grist-renderer-accounting-category-object.js +9 -0
- package/dist-client/grist-editors/grist-renderer-accounting-category-object.js.map +1 -0
- package/dist-client/pages/account/account-list-page.js +33 -2
- package/dist-client/pages/account/account-list-page.js.map +1 -1
- package/dist-client/pages/accounting-category/accounting-category-list-page.js +31 -1
- package/dist-client/pages/accounting-category/accounting-category-list-page.js.map +1 -1
- package/dist-client/pages/accounting-category/accounting-category-tree-page.d.ts +46 -0
- package/dist-client/pages/accounting-category/accounting-category-tree-page.js +329 -0
- package/dist-client/pages/accounting-category/accounting-category-tree-page.js.map +1 -0
- package/dist-client/pages/accounting-document/accounting-document-importer.d.ts +23 -0
- package/dist-client/pages/accounting-document/accounting-document-importer.js +93 -0
- package/dist-client/pages/accounting-document/accounting-document-importer.js.map +1 -0
- package/dist-client/pages/accounting-document/accounting-document-list-page.d.ts +66 -0
- package/dist-client/pages/accounting-document/accounting-document-list-page.js +370 -0
- package/dist-client/pages/accounting-document/accounting-document-list-page.js.map +1 -0
- package/dist-client/pages/{ledger/ledger-importer.d.ts → bank/bank-importer.d.ts} +3 -2
- package/dist-client/pages/{ledger/ledger-importer.js → bank/bank-importer.js} +14 -21
- package/dist-client/pages/bank/bank-importer.js.map +1 -0
- package/dist-client/pages/{ledger/ledger-list-page.d.ts → bank/bank-list-page.d.ts} +12 -8
- package/dist-client/pages/{ledger/ledger-list-page.js → bank/bank-list-page.js} +114 -67
- package/dist-client/pages/bank/bank-list-page.js.map +1 -0
- package/dist-client/pages/bank-account/bank-account-importer.d.ts +23 -0
- package/dist-client/pages/bank-account/bank-account-importer.js +93 -0
- package/dist-client/pages/bank-account/bank-account-importer.js.map +1 -0
- package/dist-client/pages/bank-account/bank-account-list-page.d.ts +66 -0
- package/dist-client/pages/bank-account/bank-account-list-page.js +370 -0
- package/dist-client/pages/bank-account/bank-account-list-page.js.map +1 -0
- package/dist-client/pages/financial-institution/financial-institution-importer.d.ts +23 -0
- package/dist-client/pages/financial-institution/financial-institution-importer.js +93 -0
- package/dist-client/pages/financial-institution/financial-institution-importer.js.map +1 -0
- package/dist-client/pages/financial-institution/financial-institution-list-page.d.ts +66 -0
- package/dist-client/pages/financial-institution/financial-institution-list-page.js +370 -0
- package/dist-client/pages/financial-institution/financial-institution-list-page.js.map +1 -0
- package/dist-client/pages/payment/payment-importer.d.ts +23 -0
- package/dist-client/pages/payment/payment-importer.js +93 -0
- package/dist-client/pages/payment/payment-importer.js.map +1 -0
- package/dist-client/pages/payment/payment-list-page.d.ts +66 -0
- package/dist-client/pages/payment/payment-list-page.js +370 -0
- package/dist-client/pages/payment/payment-list-page.js.map +1 -0
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +0 -3
- package/dist-client/route.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/types/accounting-category.d.ts +16 -0
- package/dist-client/types/accounting-category.js +3 -0
- package/dist-client/types/accounting-category.js.map +1 -0
- package/dist-client/types/index.d.ts +1 -0
- package/dist-client/types/index.js +2 -0
- package/dist-client/types/index.js.map +1 -0
- package/dist-server/activities/activity-book.js +31 -19
- package/dist-server/activities/activity-book.js.map +1 -1
- package/dist-server/controllers/summary-statements.js +13 -7
- package/dist-server/controllers/summary-statements.js.map +1 -1
- 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.js +3 -3
- package/dist-server/migrations/1725200507196-seed-fiscal-entities.js.map +1 -1
- package/dist-server/migrations/1725201467183-seed-accounts.js +31 -31
- package/dist-server/migrations/1725201467183-seed-accounts.js.map +1 -1
- package/dist-server/migrations/1725201567284-seed-country-codes.d.ts +5 -0
- package/dist-server/migrations/1725201567284-seed-country-codes.js +248 -0
- package/dist-server/migrations/1725201567284-seed-country-codes.js.map +1 -0
- package/dist-server/migrations/1725201667385-seed-financial-institutions.d.ts +5 -0
- package/dist-server/migrations/1725201667385-seed-financial-institutions.js +348 -0
- package/dist-server/migrations/1725201667385-seed-financial-institutions.js.map +1 -0
- package/dist-server/routes.d.ts +0 -1
- package/dist-server/routes.js +0 -1
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/account/account-history.d.ts +4 -1
- package/dist-server/service/account/account-history.js +14 -4
- package/dist-server/service/account/account-history.js.map +1 -1
- package/dist-server/service/account/account-mutation.js +13 -9
- package/dist-server/service/account/account-mutation.js.map +1 -1
- package/dist-server/service/account/account-query.js +2 -0
- package/dist-server/service/account/account-query.js.map +1 -1
- package/dist-server/service/account/account.d.ts +1 -1
- package/dist-server/service/account/account.js +15 -4
- package/dist-server/service/account/account.js.map +1 -1
- package/dist-server/service/account/index.d.ts +1 -2
- package/dist-server/service/accounting-category/accounting-category-history.d.ts +26 -0
- package/dist-server/service/accounting-category/accounting-category-history.js +136 -0
- package/dist-server/service/accounting-category/accounting-category-history.js.map +1 -0
- package/dist-server/service/accounting-category/accounting-category-mutation.js +12 -8
- package/dist-server/service/accounting-category/accounting-category-mutation.js.map +1 -1
- package/dist-server/service/accounting-category/accounting-category-query.d.ts +1 -0
- package/dist-server/service/accounting-category/accounting-category-query.js +23 -0
- package/dist-server/service/accounting-category/accounting-category-query.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 +14 -3
- package/dist-server/service/accounting-category/accounting-category.js.map +1 -1
- package/dist-server/service/accounting-category/event-subscriber.d.ts +7 -0
- package/dist-server/service/accounting-category/event-subscriber.js +21 -0
- package/dist-server/service/accounting-category/event-subscriber.js.map +1 -0
- package/dist-server/service/accounting-category/index.d.ts +2 -1
- package/dist-server/service/accounting-category/index.js +4 -2
- package/dist-server/service/accounting-category/index.js.map +1 -1
- package/dist-server/service/accounting-document/accounting-document-history.d.ts +26 -0
- package/dist-server/service/accounting-document/accounting-document-history.js +129 -0
- package/dist-server/service/accounting-document/accounting-document-history.js.map +1 -0
- package/dist-server/service/accounting-document/accounting-document-mutation.d.ts +10 -0
- package/dist-server/service/accounting-document/accounting-document-mutation.js +128 -0
- package/dist-server/service/accounting-document/accounting-document-mutation.js.map +1 -0
- package/dist-server/service/accounting-document/accounting-document-query.d.ts +11 -0
- package/dist-server/service/accounting-document/accounting-document-query.js +79 -0
- package/dist-server/service/accounting-document/accounting-document-query.js.map +1 -0
- package/dist-server/service/accounting-document/accounting-document-type.d.ts +20 -0
- package/dist-server/service/accounting-document/accounting-document-type.js +74 -0
- package/dist-server/service/accounting-document/accounting-document-type.js.map +1 -0
- package/dist-server/service/accounting-document/accounting-document.d.ts +21 -0
- package/dist-server/service/accounting-document/accounting-document.js +104 -0
- package/dist-server/service/accounting-document/accounting-document.js.map +1 -0
- package/dist-server/service/accounting-document/event-subscriber.d.ts +7 -0
- package/dist-server/service/accounting-document/event-subscriber.js +21 -0
- package/dist-server/service/accounting-document/event-subscriber.js.map +1 -0
- package/dist-server/service/accounting-document/index.d.ts +7 -0
- package/dist-server/service/accounting-document/index.js +12 -0
- package/dist-server/service/accounting-document/index.js.map +1 -0
- package/dist-server/service/bank-account/bank-account-history.d.ts +34 -0
- package/dist-server/service/bank-account/bank-account-history.js +172 -0
- package/dist-server/service/bank-account/bank-account-history.js.map +1 -0
- package/dist-server/service/bank-account/bank-account-mutation.d.ts +10 -0
- package/dist-server/service/bank-account/bank-account-mutation.js +128 -0
- package/dist-server/service/bank-account/bank-account-mutation.js.map +1 -0
- package/dist-server/service/bank-account/bank-account-query.d.ts +11 -0
- package/dist-server/service/bank-account/bank-account-query.js +79 -0
- package/dist-server/service/bank-account/bank-account-query.js.map +1 -0
- package/dist-server/service/bank-account/bank-account-type.d.ts +39 -0
- package/dist-server/service/bank-account/bank-account-type.js +153 -0
- package/dist-server/service/bank-account/bank-account-type.js.map +1 -0
- package/dist-server/service/bank-account/bank-account.d.ts +38 -0
- package/dist-server/service/bank-account/bank-account.js +164 -0
- package/dist-server/service/bank-account/bank-account.js.map +1 -0
- package/dist-server/service/bank-account/event-subscriber.d.ts +7 -0
- package/dist-server/service/bank-account/event-subscriber.js +21 -0
- package/dist-server/service/bank-account/event-subscriber.js.map +1 -0
- package/dist-server/service/bank-account/index.d.ts +7 -0
- package/dist-server/service/bank-account/index.js +12 -0
- package/dist-server/service/bank-account/index.js.map +1 -0
- package/dist-server/service/financial-institution/financial-institution-mutation.d.ts +10 -0
- package/dist-server/service/financial-institution/financial-institution-mutation.js +169 -0
- package/dist-server/service/financial-institution/financial-institution-mutation.js.map +1 -0
- package/dist-server/service/financial-institution/financial-institution-query.d.ts +12 -0
- package/dist-server/service/financial-institution/financial-institution-query.js +97 -0
- package/dist-server/service/financial-institution/financial-institution-query.js.map +1 -0
- package/dist-server/service/financial-institution/financial-institution-type.d.ts +32 -0
- package/dist-server/service/financial-institution/financial-institution-type.js +126 -0
- package/dist-server/service/financial-institution/financial-institution-type.js.map +1 -0
- package/dist-server/service/financial-institution/financial-institution.d.ts +34 -0
- package/dist-server/service/financial-institution/financial-institution.js +137 -0
- package/dist-server/service/financial-institution/financial-institution.js.map +1 -0
- package/dist-server/service/financial-institution/index.d.ts +6 -0
- package/dist-server/service/financial-institution/index.js +10 -0
- package/dist-server/service/financial-institution/index.js.map +1 -0
- package/dist-server/service/financial-statement/financial-statement-history.d.ts +9 -6
- package/dist-server/service/financial-statement/financial-statement-history.js +30 -20
- package/dist-server/service/financial-statement/financial-statement-history.js.map +1 -1
- package/dist-server/service/financial-statement/financial-statement-line-item.d.ts +19 -0
- package/dist-server/service/financial-statement/financial-statement-line-item.js +94 -0
- package/dist-server/service/financial-statement/financial-statement-line-item.js.map +1 -0
- package/dist-server/service/financial-statement/financial-statement-mutation.js +12 -8
- package/dist-server/service/financial-statement/financial-statement-mutation.js.map +1 -1
- package/dist-server/service/financial-statement/financial-statement-query.js +2 -0
- package/dist-server/service/financial-statement/financial-statement-query.js.map +1 -1
- package/dist-server/service/financial-statement/financial-statement.d.ts +2 -0
- package/dist-server/service/financial-statement/financial-statement.js +45 -24
- package/dist-server/service/financial-statement/financial-statement.js.map +1 -1
- package/dist-server/service/financial-statement/index.d.ts +2 -2
- package/dist-server/service/financial-statement/index.js +2 -1
- package/dist-server/service/financial-statement/index.js.map +1 -1
- package/dist-server/service/fiscal-month/fiscal-month-mutation.js +6 -0
- package/dist-server/service/fiscal-month/fiscal-month-mutation.js.map +1 -1
- package/dist-server/service/fiscal-month/fiscal-month-query.js +2 -0
- package/dist-server/service/fiscal-month/fiscal-month-query.js.map +1 -1
- package/dist-server/service/fiscal-month/fiscal-month.js +1 -1
- package/dist-server/service/fiscal-month/fiscal-month.js.map +1 -1
- package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js +6 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-mutation.js.map +1 -1
- package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js +2 -0
- package/dist-server/service/fiscal-quarter/fiscal-quarter-query.js.map +1 -1
- package/dist-server/service/fiscal-quarter/fiscal-quarter.js +1 -1
- package/dist-server/service/fiscal-quarter/fiscal-quarter.js.map +1 -1
- package/dist-server/service/fiscal-year/fiscal-year-mutation.js +6 -0
- package/dist-server/service/fiscal-year/fiscal-year-mutation.js.map +1 -1
- package/dist-server/service/fiscal-year/fiscal-year-query.js +2 -0
- package/dist-server/service/fiscal-year/fiscal-year-query.js.map +1 -1
- package/dist-server/service/fiscal-year/fiscal-year.js +1 -1
- package/dist-server/service/fiscal-year/fiscal-year.js.map +1 -1
- package/dist-server/service/income-statement/income-statement-history.d.ts +9 -5
- package/dist-server/service/income-statement/income-statement-history.js +35 -20
- package/dist-server/service/income-statement/income-statement-history.js.map +1 -1
- package/dist-server/service/income-statement/income-statement-line-item.d.ts +19 -0
- package/dist-server/service/income-statement/income-statement-line-item.js +96 -0
- package/dist-server/service/income-statement/income-statement-line-item.js.map +1 -0
- package/dist-server/service/income-statement/income-statement-mutation.js +12 -8
- package/dist-server/service/income-statement/income-statement-mutation.js.map +1 -1
- package/dist-server/service/income-statement/income-statement-query.js +2 -0
- package/dist-server/service/income-statement/income-statement-query.js.map +1 -1
- package/dist-server/service/income-statement/income-statement.d.ts +2 -0
- package/dist-server/service/income-statement/income-statement.js +46 -26
- package/dist-server/service/income-statement/income-statement.js.map +1 -1
- package/dist-server/service/income-statement/index.d.ts +2 -2
- package/dist-server/service/income-statement/index.js +2 -1
- package/dist-server/service/income-statement/index.js.map +1 -1
- package/dist-server/service/index.d.ts +4 -2
- package/dist-server/service/index.js +10 -0
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/payment/event-subscriber.d.ts +7 -0
- package/dist-server/service/payment/event-subscriber.js +21 -0
- package/dist-server/service/payment/event-subscriber.js.map +1 -0
- package/dist-server/service/payment/index.d.ts +7 -0
- package/dist-server/service/payment/index.js +12 -0
- package/dist-server/service/payment/index.js.map +1 -0
- package/dist-server/service/payment/payment-history.d.ts +37 -0
- package/dist-server/service/payment/payment-history.js +174 -0
- package/dist-server/service/payment/payment-history.js.map +1 -0
- package/dist-server/service/payment/payment-mutation.d.ts +10 -0
- package/dist-server/service/payment/payment-mutation.js +134 -0
- package/dist-server/service/payment/payment-mutation.js.map +1 -0
- package/dist-server/service/payment/payment-query.d.ts +11 -0
- package/dist-server/service/payment/payment-query.js +81 -0
- package/dist-server/service/payment/payment-query.js.map +1 -0
- package/dist-server/service/payment/payment-type.d.ts +30 -0
- package/dist-server/service/payment/payment-type.js +114 -0
- package/dist-server/service/payment/payment-type.js.map +1 -0
- package/dist-server/service/payment/payment.d.ts +42 -0
- package/dist-server/service/payment/payment.js +181 -0
- package/dist-server/service/payment/payment.js.map +1 -0
- package/dist-server/service/transaction/index.d.ts +2 -1
- package/dist-server/service/transaction/transaction-history.d.ts +6 -2
- package/dist-server/service/transaction/transaction-history.js +28 -9
- package/dist-server/service/transaction/transaction-history.js.map +1 -1
- package/dist-server/service/transaction/transaction-mutation.js +13 -9
- package/dist-server/service/transaction/transaction-mutation.js.map +1 -1
- package/dist-server/service/transaction/transaction-query.js +2 -0
- package/dist-server/service/transaction/transaction-query.js.map +1 -1
- package/dist-server/service/transaction/transaction.d.ts +28 -6
- package/dist-server/service/transaction/transaction.js +119 -31
- package/dist-server/service/transaction/transaction.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/accounting/accounting-document.md +160 -0
- package/helps/accounting/bank-account.md +160 -0
- package/helps/accounting/bank.md +160 -0
- package/helps/accounting/contract.md +160 -0
- package/helps/accounting/financial-institution.md +160 -0
- package/helps/accounting/payment.md +160 -0
- package/package.json +5 -5
- package/server/activities/activity-book.ts +31 -19
- package/server/controllers/summary-statements.ts +13 -7
- package/server/index.ts +1 -0
- package/server/migrations/1725200507196-seed-fiscal-entities.ts +3 -3
- package/server/migrations/1725201467183-seed-accounts.ts +31 -31
- package/server/migrations/1725201567284-seed-country-codes.ts +261 -0
- package/server/migrations/1725201667385-seed-financial-institutions.ts +348 -0
- package/server/routes.ts +0 -2
- package/server/service/account/account-history.ts +14 -6
- package/server/service/account/account-mutation.ts +13 -10
- package/server/service/account/account-query.ts +2 -0
- package/server/service/account/account.ts +15 -4
- package/server/service/accounting-category/accounting-category-history.ts +123 -0
- package/server/service/accounting-category/accounting-category-mutation.ts +12 -9
- package/server/service/accounting-category/accounting-category-query.ts +23 -0
- package/server/service/accounting-category/accounting-category.ts +14 -3
- package/server/service/accounting-category/event-subscriber.ts +20 -0
- package/server/service/accounting-category/index.ts +4 -2
- package/server/service/accounting-document/accounting-document-history.ts +117 -0
- package/server/service/accounting-document/accounting-document-mutation.ts +137 -0
- package/server/service/accounting-document/accounting-document-query.ts +48 -0
- package/server/service/accounting-document/accounting-document-type.ts +52 -0
- package/server/service/accounting-document/accounting-document.ts +93 -0
- package/server/service/accounting-document/event-subscriber.ts +17 -0
- package/server/service/accounting-document/index.ts +9 -0
- package/server/service/bank-account/bank-account-history.ts +149 -0
- package/server/service/bank-account/bank-account-mutation.ts +137 -0
- package/server/service/bank-account/bank-account-query.ts +48 -0
- package/server/service/bank-account/bank-account-type.ts +112 -0
- package/server/service/bank-account/bank-account.ts +142 -0
- package/server/service/bank-account/event-subscriber.ts +17 -0
- package/server/service/bank-account/index.ts +9 -0
- package/server/service/financial-institution/financial-institution-mutation.ts +198 -0
- package/server/service/financial-institution/financial-institution-query.ts +62 -0
- package/server/service/financial-institution/financial-institution-type.ts +91 -0
- package/server/service/financial-institution/financial-institution.ts +122 -0
- package/server/service/financial-institution/index.ts +7 -0
- package/server/service/financial-statement/financial-statement-history.ts +27 -18
- package/server/service/financial-statement/financial-statement-line-item.ts +82 -0
- package/server/service/financial-statement/financial-statement-mutation.ts +12 -9
- package/server/service/financial-statement/financial-statement-query.ts +2 -0
- package/server/service/financial-statement/financial-statement.ts +52 -36
- package/server/service/financial-statement/index.ts +2 -1
- package/server/service/fiscal-month/fiscal-month-mutation.ts +10 -2
- package/server/service/fiscal-month/fiscal-month-query.ts +3 -1
- package/server/service/fiscal-month/fiscal-month.ts +1 -1
- package/server/service/fiscal-quarter/fiscal-quarter-mutation.ts +14 -3
- package/server/service/fiscal-quarter/fiscal-quarter-query.ts +2 -0
- package/server/service/fiscal-quarter/fiscal-quarter.ts +1 -1
- package/server/service/fiscal-year/fiscal-year-mutation.ts +10 -2
- package/server/service/fiscal-year/fiscal-year-query.ts +2 -0
- package/server/service/fiscal-year/fiscal-year.ts +1 -1
- package/server/service/income-statement/income-statement-history.ts +30 -17
- package/server/service/income-statement/income-statement-line-item.ts +84 -0
- package/server/service/income-statement/income-statement-mutation.ts +12 -10
- package/server/service/income-statement/income-statement-query.ts +2 -0
- package/server/service/income-statement/income-statement.ts +54 -39
- package/server/service/income-statement/index.ts +2 -1
- package/server/service/index.ts +18 -0
- package/server/service/payment/event-subscriber.ts +17 -0
- package/server/service/payment/index.ts +9 -0
- package/server/service/payment/payment-history.ts +149 -0
- package/server/service/payment/payment-mutation.ts +139 -0
- package/server/service/payment/payment-query.ts +50 -0
- package/server/service/payment/payment-type.ts +82 -0
- package/server/service/payment/payment.ts +154 -0
- package/server/service/transaction/transaction-history.ts +24 -8
- package/server/service/transaction/transaction-mutation.ts +13 -10
- package/server/service/transaction/transaction-query.ts +2 -0
- package/server/service/transaction/transaction.ts +130 -34
- package/things-factory.config.js +0 -1
- package/translations/en.json +9 -1
- package/translations/ja.json +9 -1
- package/translations/ko.json +9 -1
- package/translations/ms.json +9 -1
- package/translations/zh.json +9 -1
- package/client/pages/main.ts +0 -24
- package/dist-client/pages/ledger/ledger-importer.js.map +0 -1
- package/dist-client/pages/ledger/ledger-list-page.js.map +0 -1
- package/dist-client/pages/main.d.ts +0 -1
- package/dist-client/pages/main.js +0 -27
- package/dist-client/pages/main.js.map +0 -1
@@ -0,0 +1,16 @@
|
|
1
|
+
import { Domain, User } from '@operato/shell';
|
2
|
+
export declare class AccountingCategory {
|
3
|
+
readonly id?: string;
|
4
|
+
domain?: Domain;
|
5
|
+
code?: string;
|
6
|
+
name?: string;
|
7
|
+
description?: string;
|
8
|
+
parent?: AccountingCategory;
|
9
|
+
children?: AccountingCategory[];
|
10
|
+
active?: boolean;
|
11
|
+
createdAt?: Date;
|
12
|
+
updatedAt?: Date;
|
13
|
+
deletedAt?: Date;
|
14
|
+
creator?: User;
|
15
|
+
updater?: User;
|
16
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"accounting-category.js","sourceRoot":"","sources":["../../client/types/accounting-category.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;CAoB9B","sourcesContent":["import { Domain, User } from '@operato/shell'\n\nexport class AccountingCategory {\n readonly id?: string\n\n domain?: Domain\n\n code?: string\n name?: string\n description?: string\n\n parent?: AccountingCategory\n children?: AccountingCategory[]\n\n active?: boolean\n\n createdAt?: Date\n updatedAt?: Date\n deletedAt?: Date\n\n creator?: User\n updater?: User\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './accounting-category';
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../client/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA","sourcesContent":["export * from './accounting-category'\n"]}
|
@@ -12,15 +12,22 @@ async function callback(activityInstance, addendum, context) {
|
|
12
12
|
name: 'Book'
|
13
13
|
}));
|
14
14
|
/*
|
15
|
-
|
16
|
-
|
15
|
+
The Book activity is designed to be performed by a single assignee (thread).
|
16
|
+
Therefore, we take a sample from the output as data.
|
17
|
+
If it were an activity performed by multiple assignees (threads),
|
18
|
+
we would process the entire output as data.
|
17
19
|
*/
|
18
20
|
const assignees = Object.keys(output);
|
19
21
|
const data = assignees.length > 0 && output[assignees[0]];
|
20
22
|
if (activity) {
|
21
23
|
/*
|
22
|
-
|
23
|
-
|
24
|
+
Custom logic goes here.
|
25
|
+
Typically, this would involve recording the accounting transaction
|
26
|
+
or updating related data in the accounting system.
|
27
|
+
For example, you might:
|
28
|
+
1. Save the transaction to the database
|
29
|
+
2. Update account balances
|
30
|
+
3. Generate necessary reports or notifications
|
24
31
|
*/
|
25
32
|
}
|
26
33
|
else {
|
@@ -28,11 +35,12 @@ async function callback(activityInstance, addendum, context) {
|
|
28
35
|
}
|
29
36
|
}
|
30
37
|
else if (state == worklist_1.ActivityInstanceStatus.Aborted) {
|
38
|
+
// Implement logic for handling aborted activities here
|
31
39
|
}
|
32
40
|
}
|
33
41
|
exports.ActivityBook = {
|
34
42
|
name: 'Book',
|
35
|
-
description: 'An activity
|
43
|
+
description: 'An activity that records income or expenses in the accounting system',
|
36
44
|
release: '1.0.0',
|
37
45
|
provider: 'hatiolab.com',
|
38
46
|
category: 'accounting',
|
@@ -48,24 +56,28 @@ exports.ActivityBook = {
|
|
48
56
|
}
|
49
57
|
],
|
50
58
|
/*
|
51
|
-
startable
|
52
|
-
|
53
|
-
|
59
|
+
Setting an activity as startable means it can be manually initiated and assigned.
|
60
|
+
Users with the defined issuer role can start it, or all users if no issuer is defined.
|
61
|
+
The process of starting allows for manual adjustment of assignees and approval-line,
|
62
|
+
with activity settings as the default.
|
54
63
|
*/
|
55
64
|
startable: true,
|
56
|
-
/* (
|
57
|
-
startingType
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
65
|
+
/* (Unimplemented property)
|
66
|
+
startingType can be set to 'issue' or 'post'. 'post' type allows for start, assign, and end
|
67
|
+
to be done at once by a single user. Users only see draft and post stages for this activity.
|
68
|
+
All model properties should be 'in' or 'inout' in this case, as 'out' properties won't have
|
69
|
+
a chance for input. Assignees settings are meaningless in this case.
|
70
|
+
If an approval-line is set, it will still be processed through the approval process.
|
71
|
+
For 'issue' type, 'in' or 'inout' properties of the model are filled and assigned to the assignee,
|
72
|
+
so an assignee must be set.
|
62
73
|
*/
|
63
74
|
startingType: 'post',
|
64
|
-
/* (
|
65
|
-
multiple
|
66
|
-
sequential
|
67
|
-
|
68
|
-
|
75
|
+
/* (Unimplemented property)
|
76
|
+
The multiple property can be set to 'parallel' or 'sequential'. 'parallel' processes multiple
|
77
|
+
instances (threads) in parallel, while 'sequential' processes them in sequence.
|
78
|
+
If not set, it implies single instance execution, where only one assignee is allocated even if
|
79
|
+
multiple are set. In this case, the activity instance's result data (output) is directly applied
|
80
|
+
from the single thread's output.
|
69
81
|
*/
|
70
82
|
multiple: null,
|
71
83
|
model: [
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"activity-book.js","sourceRoot":"","sources":["../../server/activities/activity-book.ts"],"names":[],"mappings":";;;AAAA,uDAMiC;AAEjC,KAAK,UAAU,QAAQ,CACrB,gBAAkC,EAClC,QAA6C,EAC7C,OAAwB;IAExB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IACpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAA;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAA;IAEnC,IAAI,KAAK,IAAI,iCAAsB,CAAC,KAAK,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,mBAAQ,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE;YACzB,IAAI,EAAE,MAAM;SACb,CAAC,CAAa,CAAA;QAEf
|
1
|
+
{"version":3,"file":"activity-book.js","sourceRoot":"","sources":["../../server/activities/activity-book.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n ActivityInstance,\n ActivityInstanceStatus,\n ActivityThread,\n UpdateActivityInstanceStateAddendum\n} from '@things-factory/worklist'\n\nasync function callback(\n activityInstance: ActivityInstance,\n addendum: UpdateActivityInstanceStateAddendum,\n context: ResolverContext\n) {\n const { domain, tx } = context.state\n const { input, output, state } = activityInstance\n const { causedBy } = addendum || {}\n\n if (state == ActivityInstanceStatus.Ended) {\n const activity = (await tx.getRepository(Activity).findOneBy({\n domain: { id: domain.id },\n name: 'Book'\n })) as Activity\n\n /* \n The Book activity is designed to be performed by a single assignee (thread).\n Therefore, we take a sample from the output as data.\n If it were an activity performed by multiple assignees (threads),\n we would process the entire output as data.\n */\n const assignees = Object.keys(output)\n const data = assignees.length > 0 && output[assignees[0]]\n\n if (activity) {\n /* \n Custom logic goes here.\n Typically, this would involve recording the accounting transaction\n or updating related data in the accounting system.\n For example, you might:\n 1. Save the transaction to the database\n 2. Update account balances\n 3. Generate necessary reports or notifications\n */\n } else {\n console.error('Book Activity not installed.')\n }\n } else if (state == ActivityInstanceStatus.Aborted) {\n // Implement logic for handling aborted activities here\n }\n}\n\nexport const ActivityBook = {\n name: 'Book',\n description: 'An activity that records income or expenses in the accounting system',\n release: '1.0.0',\n provider: 'hatiolab.com',\n category: 'accounting',\n activityType: 'user',\n priority: 1,\n searchKeys: [\n // sample search keys\n {\n name: 'category',\n description: 'expense category',\n inputKey: 'category',\n tKey: 'category'\n }\n ],\n /* \n Setting an activity as startable means it can be manually initiated and assigned.\n Users with the defined issuer role can start it, or all users if no issuer is defined.\n The process of starting allows for manual adjustment of assignees and approval-line,\n with activity settings as the default.\n */\n startable: true,\n /* (Unimplemented property) \n startingType can be set to 'issue' or 'post'. 'post' type allows for start, assign, and end\n to be done at once by a single user. Users only see draft and post stages for this activity.\n All model properties should be 'in' or 'inout' in this case, as 'out' properties won't have\n a chance for input. Assignees settings are meaningless in this case.\n If an approval-line is set, it will still be processed through the approval process.\n For 'issue' type, 'in' or 'inout' properties of the model are filled and assigned to the assignee,\n so an assignee must be set.\n */\n startingType: 'post',\n /* (Unimplemented property)\n The multiple property can be set to 'parallel' or 'sequential'. 'parallel' processes multiple\n instances (threads) in parallel, while 'sequential' processes them in sequence.\n If not set, it implies single instance execution, where only one assignee is allocated even if\n multiple are set. In this case, the activity instance's result data (output) is directly applied\n from the single thread's output.\n */\n multiple: null,\n model: [\n {\n name: 'name',\n description: 'name',\n tag: 'name',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'select',\n options: {\n options: ['KRW', 'USD', 'CNY']\n },\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'currency',\n description: 'currency',\n tag: 'currency',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'select',\n options: {\n options: ['KRW', 'USD', 'CNY']\n },\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'amount',\n description: 'amount',\n tag: 'amount',\n hidden: false,\n mandatory: true,\n inout: 'in',\n type: 'number',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'category',\n description: 'accounting category',\n tag: 'category',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n },\n {\n name: 'date',\n description: 'issuance date',\n tag: 'date',\n hidden: true,\n mandatory: true,\n inout: 'in',\n type: 'string',\n options: {},\n unit: null,\n quantifier: [1],\n spec: {}\n }\n ],\n uiType: 'generated',\n uiSource: '',\n viewType: 'generated',\n viewSource: '',\n reportType: 'custom-element',\n reportSource: 'activity-book-report',\n thumbnail: '/assets/images/book-activity.jpg',\n callback /* Called when there is a change in the lifecycle of a task (activity-instance). */\n}\n"]}
|
@@ -8,20 +8,24 @@ const shell_1 = require("@things-factory/shell");
|
|
8
8
|
const financial_statement_1 = require("../service/financial-statement/financial-statement");
|
9
9
|
const income_statement_1 = require("../service/income-statement/income-statement");
|
10
10
|
const transaction_1 = require("../service/transaction/transaction");
|
11
|
+
const payment_1 = require("../service/payment/payment");
|
11
12
|
async function calculateMonthlyStatements(year, month) {
|
12
13
|
const transactionRepository = (0, shell_1.getRepository)(transaction_1.Transaction);
|
14
|
+
const paymentRepository = (0, shell_1.getRepository)(payment_1.Payment);
|
13
15
|
const financialStatementRepository = (0, shell_1.getRepository)(financial_statement_1.FinancialStatement);
|
14
16
|
const incomeStatementRepository = (0, shell_1.getRepository)(income_statement_1.IncomeStatement);
|
15
17
|
// 재무제표 계산
|
16
18
|
const financialResult = await transactionRepository
|
17
19
|
.createQueryBuilder('transaction')
|
20
|
+
.leftJoinAndSelect('transaction.payments', 'payment')
|
18
21
|
.select([
|
19
|
-
'SUM(CASE WHEN transaction.type = :asset THEN
|
20
|
-
'SUM(CASE WHEN transaction.type = :liability THEN
|
21
|
-
'SUM(CASE WHEN transaction.type = :equity THEN
|
22
|
+
'SUM(CASE WHEN transaction.type = :asset THEN payment.amount ELSE 0 END) AS asset',
|
23
|
+
'SUM(CASE WHEN transaction.type = :liability THEN payment.amount ELSE 0 END) AS liability',
|
24
|
+
'SUM(CASE WHEN transaction.type = :equity THEN payment.amount ELSE 0 END) AS equity'
|
22
25
|
])
|
23
26
|
.where('transaction.year = :year', { year })
|
24
27
|
.andWhere('transaction.month = :month', { month })
|
28
|
+
.andWhere('payment.direction = :incoming', { incoming: payment_1.PaymentDirection.Incoming })
|
25
29
|
.setParameters({
|
26
30
|
asset: transaction_1.TransactionType.Asset,
|
27
31
|
liability: transaction_1.TransactionType.Liability,
|
@@ -38,15 +42,17 @@ async function calculateMonthlyStatements(year, month) {
|
|
38
42
|
// 손익계산서 계산
|
39
43
|
const incomeResult = await transactionRepository
|
40
44
|
.createQueryBuilder('transaction')
|
45
|
+
.leftJoinAndSelect('transaction.payments', 'payment')
|
41
46
|
.select([
|
42
|
-
'SUM(CASE WHEN transaction.type = :income THEN
|
43
|
-
'SUM(CASE WHEN transaction.type = :expense THEN
|
47
|
+
'SUM(CASE WHEN transaction.type = :income THEN payment.amount ELSE 0 END) AS revenue',
|
48
|
+
'SUM(CASE WHEN transaction.type = :expense THEN payment.amount ELSE 0 END) AS expense'
|
44
49
|
])
|
45
50
|
.where('transaction.year = :year', { year })
|
46
51
|
.andWhere('transaction.month = :month', { month })
|
52
|
+
.andWhere('payment.direction = :incoming', { incoming: payment_1.PaymentDirection.Incoming })
|
47
53
|
.setParameters({
|
48
|
-
income: transaction_1.TransactionType.
|
49
|
-
expense: transaction_1.TransactionType.
|
54
|
+
income: transaction_1.TransactionType.SalesIncome,
|
55
|
+
expense: transaction_1.TransactionType.PurchaseExpense
|
50
56
|
})
|
51
57
|
.getRawOne();
|
52
58
|
const incomeStatement = new income_statement_1.IncomeStatement();
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"summary-statements.js","sourceRoot":"","sources":["../../server/controllers/summary-statements.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { FinancialStatement } from '../service/financial-statement/financial-statement'\nimport { IncomeStatement } from '../service/income-statement/income-statement'\nimport { Transaction, TransactionType } from '../service/transaction/transaction'\n\nexport async function calculateMonthlyStatements(year: number, month: number): Promise<void> {\n const transactionRepository = getRepository(Transaction)\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 계산\n const financialResult = await transactionRepository\n .createQueryBuilder('transaction')\n .select([\n 'SUM(CASE WHEN transaction.type = :asset THEN transaction.amount ELSE 0 END) AS asset',\n 'SUM(CASE WHEN transaction.type = :liability THEN transaction.amount ELSE 0 END) AS liability',\n 'SUM(CASE WHEN transaction.type = :equity THEN transaction.amount ELSE 0 END) AS equity'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .setParameters({\n asset: TransactionType.Asset,\n liability: TransactionType.Liability,\n equity: TransactionType.Equity\n })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.month = month\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 계산\n const incomeResult = await transactionRepository\n .createQueryBuilder('transaction')\n .select([\n 'SUM(CASE WHEN transaction.type = :income THEN transaction.amount ELSE 0 END) AS revenue',\n 'SUM(CASE WHEN transaction.type = :expense THEN transaction.amount ELSE 0 END) AS expense'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .setParameters({\n income: TransactionType.Income,\n expense: TransactionType.Expense\n })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.month = month\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateQuarterlyStatements(year: number, quarter: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n const months = getMonthsInQuarter(quarter)\n\n // 재무제표 분기 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .andWhere('financialStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.quarter = quarter\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 분기 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .andWhere('incomeStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.quarter = quarter\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateYearlyStatements(year: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 연간 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 연간 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport function getMonthsInQuarter(quarter: number): number[] {\n switch (quarter) {\n case 1:\n return [1, 2, 3]\n case 2:\n return [4, 5, 6]\n case 3:\n return [7, 8, 9]\n case 4:\n return [10, 11, 12]\n default:\n throw new Error('Invalid quarter number')\n }\n}\n"]}
|
1
|
+
{"version":3,"file":"summary-statements.js","sourceRoot":"","sources":["../../server/controllers/summary-statements.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRepository } from '@things-factory/shell'\n\nimport { FinancialStatement } from '../service/financial-statement/financial-statement'\nimport { IncomeStatement } from '../service/income-statement/income-statement'\nimport { Transaction, TransactionType } from '../service/transaction/transaction'\nimport { Payment, PaymentDirection } from '../service/payment/payment'\n\nexport async function calculateMonthlyStatements(year: number, month: number): Promise<void> {\n const transactionRepository = getRepository(Transaction)\n const paymentRepository = getRepository(Payment)\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 계산\n const financialResult = await transactionRepository\n .createQueryBuilder('transaction')\n .leftJoinAndSelect('transaction.payments', 'payment')\n .select([\n 'SUM(CASE WHEN transaction.type = :asset THEN payment.amount ELSE 0 END) AS asset',\n 'SUM(CASE WHEN transaction.type = :liability THEN payment.amount ELSE 0 END) AS liability',\n 'SUM(CASE WHEN transaction.type = :equity THEN payment.amount ELSE 0 END) AS equity'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .andWhere('payment.direction = :incoming', { incoming: PaymentDirection.Incoming })\n .setParameters({\n asset: TransactionType.Asset,\n liability: TransactionType.Liability,\n equity: TransactionType.Equity\n })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.month = month\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 계산\n const incomeResult = await transactionRepository\n .createQueryBuilder('transaction')\n .leftJoinAndSelect('transaction.payments', 'payment')\n .select([\n 'SUM(CASE WHEN transaction.type = :income THEN payment.amount ELSE 0 END) AS revenue',\n 'SUM(CASE WHEN transaction.type = :expense THEN payment.amount ELSE 0 END) AS expense'\n ])\n .where('transaction.year = :year', { year })\n .andWhere('transaction.month = :month', { month })\n .andWhere('payment.direction = :incoming', { incoming: PaymentDirection.Incoming })\n .setParameters({\n income: TransactionType.SalesIncome,\n expense: TransactionType.PurchaseExpense\n })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.month = month\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateQuarterlyStatements(year: number, quarter: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n const months = getMonthsInQuarter(quarter)\n\n // 재무제표 분기 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .andWhere('financialStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.quarter = quarter\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 분기 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .andWhere('incomeStatement.month IN (:...months)', { months })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.quarter = quarter\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport async function calculateYearlyStatements(year: number): Promise<void> {\n const financialStatementRepository = getRepository(FinancialStatement)\n const incomeStatementRepository = getRepository(IncomeStatement)\n\n // 재무제표 연간 합계 계산\n const financialResult = await financialStatementRepository\n .createQueryBuilder('financialStatement')\n .select([\n 'SUM(financialStatement.asset) AS asset',\n 'SUM(financialStatement.liability) AS liability',\n 'SUM(financialStatement.equity) AS equity'\n ])\n .where('financialStatement.year = :year', { year })\n .getRawOne()\n\n const financialStatement = new FinancialStatement()\n financialStatement.year = year\n financialStatement.asset = financialResult.asset || 0\n financialStatement.liability = financialResult.liability || 0\n financialStatement.equity = financialResult.equity || 0\n\n await financialStatementRepository.save(financialStatement)\n\n // 손익계산서 연간 합계 계산\n const incomeResult = await incomeStatementRepository\n .createQueryBuilder('incomeStatement')\n .select(['SUM(incomeStatement.revenue) AS revenue', 'SUM(incomeStatement.expense) AS expense'])\n .where('incomeStatement.year = :year', { year })\n .getRawOne()\n\n const incomeStatement = new IncomeStatement()\n incomeStatement.year = year\n incomeStatement.revenue = incomeResult.revenue || 0\n incomeStatement.expense = incomeResult.expense || 0\n incomeStatement.netIncome = (incomeResult.revenue || 0) - (incomeResult.expense || 0)\n\n await incomeStatementRepository.save(incomeStatement)\n}\n\nexport function getMonthsInQuarter(quarter: number): number[] {\n switch (quarter) {\n case 1:\n return [1, 2, 3]\n case 2:\n return [4, 5, 6]\n case 3:\n return [7, 8, 9]\n case 4:\n return [10, 11, 12]\n default:\n throw new Error('Invalid quarter number')\n }\n}\n"]}
|
package/dist-server/index.d.ts
CHANGED
package/dist-server/index.js
CHANGED
@@ -4,5 +4,6 @@ const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./controllers"), exports);
|
5
5
|
tslib_1.__exportStar(require("./migrations"), exports);
|
6
6
|
tslib_1.__exportStar(require("./middlewares"), exports);
|
7
|
+
tslib_1.__exportStar(require("./service"), exports);
|
7
8
|
require("./routes");
|
8
9
|
//# sourceMappingURL=index.js.map
|
package/dist-server/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,uDAA4B;AAC5B,wDAA6B;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,wDAA6B;AAC7B,uDAA4B;AAC5B,wDAA6B;AAC7B,oDAAyB;AAEzB,oBAAiB","sourcesContent":["export * from './controllers'\nexport * from './migrations'\nexport * from './middlewares'\nexport * from './service'\n\nimport './routes'\n"]}
|
@@ -86,9 +86,9 @@ class SeedFiscalEntities1725200507196 {
|
|
86
86
|
}
|
87
87
|
const currentYear = new Date().getFullYear();
|
88
88
|
// FiscalMonth, FiscalQuarter, FiscalYear 삭제
|
89
|
-
await fiscalMonthRepository.delete({ domain, year: currentYear });
|
90
|
-
await fiscalQuarterRepository.delete({ domain, year: currentYear });
|
91
|
-
await fiscalYearRepository.delete({ domain, year: currentYear });
|
89
|
+
await fiscalMonthRepository.delete({ domain: { id: domain.id }, year: currentYear });
|
90
|
+
await fiscalQuarterRepository.delete({ domain: { id: domain.id }, year: currentYear });
|
91
|
+
await fiscalYearRepository.delete({ domain: { id: domain.id }, year: currentYear });
|
92
92
|
}
|
93
93
|
}
|
94
94
|
exports.SeedFiscalEntities1725200507196 = SeedFiscalEntities1725200507196;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"1725200507196-seed-fiscal-entities.js","sourceRoot":"","sources":["../../server/migrations/1725200507196-seed-fiscal-entities.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"1725200507196-seed-fiscal-entities.js","sourceRoot":"","sources":["../../server/migrations/1725200507196-seed-fiscal-entities.ts"],"names":[],"mappings":";;;AACA,iDAA6D;AAC7D,yDAAgD;AAChD,oEAA+D;AAC/D,6EAAwE;AACxE,uEAAkE;AAClE,wDAAqD;AAErD,MAAa,+BAA+B;IACnC,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;QAC9C,MAAM,cAAc,GAAG,IAAA,qBAAa,EAAC,gBAAI,CAAC,CAAA;QAC1C,MAAM,oBAAoB,GAAG,IAAA,qBAAa,EAAC,wBAAU,CAAC,CAAA;QACtD,MAAM,uBAAuB,GAAG,IAAA,qBAAa,EAAC,8BAAa,CAAC,CAAA;QAC5D,MAAM,qBAAqB,GAAG,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAA;QAExD,MAAM,MAAM,GAAkB,MAAM,gBAAgB,CAAC,OAAO,CAAC;YAC3D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAE1E,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAE5C,IAAI,CAAC;YACH,iBAAiB;YACjB,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC;gBACjD,MAAM;gBACN,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,GAAG,WAAW,QAAQ,EAAE,UAAU;gBAC7C,OAAO,EAAE,GAAG,WAAW,QAAQ,EAAE,UAAU;gBAC3C,MAAM,EAAE,0BAAY,CAAC,IAAI;gBACzB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,IAAI;aACd,CAAC,CAAA;YAEF,qBAAqB;YACrB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC9C,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACxC,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAA;gBAE5B,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC;oBACvD,MAAM;oBACN,IAAI,EAAE,WAAW;oBACjB,OAAO;oBACP,SAAS,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,UAAU;oBACjF,OAAO,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,wBAAwB;oBAC3F,MAAM,EAAE,0BAAY,CAAC,IAAI;oBACzB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;gBAEF,mBAAmB;gBACnB,KAAK,IAAI,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;oBACxD,MAAM,SAAS,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAA;oBACvE,MAAM,OAAO,GAAG,GAAG,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAA;oBAE/G,MAAM,qBAAqB,CAAC,IAAI,CAAC;wBAC/B,MAAM;wBACN,IAAI,EAAE,WAAW;wBACjB,OAAO;wBACP,KAAK;wBACL,SAAS;wBACT,OAAO;wBACP,MAAM,EAAE,0BAAY,CAAC,IAAI;wBACzB,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE,IAAI;qBACd,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAA;YACvD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,gBAAgB,GAAG,IAAA,qBAAa,EAAC,cAAM,CAAC,CAAA;QAC9C,MAAM,oBAAoB,GAAG,IAAA,qBAAa,EAAC,wBAAU,CAAC,CAAA;QACtD,MAAM,uBAAuB,GAAG,IAAA,qBAAa,EAAC,8BAAa,CAAC,CAAA;QAC5D,MAAM,qBAAqB,GAAG,IAAA,qBAAa,EAAC,0BAAW,CAAC,CAAA;QAExD,MAAM,MAAM,GAAkB,MAAM,gBAAgB,CAAC,OAAO,CAAC;YAC3D,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAE5C,4CAA4C;QAC5C,MAAM,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QACpF,MAAM,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QACtF,MAAM,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;IACrF,CAAC;CACF;AAjGD,0EAiGC","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport { FiscalYear } from '../service/fiscal-year/fiscal-year'\nimport { FiscalQuarter } from '../service/fiscal-quarter/fiscal-quarter'\nimport { FiscalMonth } from '../service/fiscal-month/fiscal-month'\nimport { FiscalStatus } from '../service/common-type'\n\nexport class SeedFiscalEntities1725200507196 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<void> {\n const domainRepository = getRepository(Domain)\n const userRepository = getRepository(User)\n const fiscalYearRepository = getRepository(FiscalYear)\n const fiscalQuarterRepository = getRepository(FiscalQuarter)\n const fiscalMonthRepository = getRepository(FiscalMonth)\n\n const domain: Domain | null = await domainRepository.findOne({\n where: { name: 'SYSTEM' }\n })\n\n if (!domain) {\n throw new Error('SYSTEM domain not found')\n }\n\n const user = await userRepository.findOne({ where: { id: domain.owner } })\n\n if (!user) {\n throw new Error('Domain owner not found')\n }\n\n const currentYear = new Date().getFullYear()\n\n try {\n // Fiscal Year 생성\n const fiscalYear = await fiscalYearRepository.save({\n domain,\n year: currentYear,\n startDate: `${currentYear}-01-01`, // 문자열로 저장\n endDate: `${currentYear}-12-31`, // 문자열로 저장\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n\n // Fiscal Quarters 생성\n for (let quarter = 1; quarter <= 4; quarter++) {\n const startMonth = (quarter - 1) * 3 + 1\n const endMonth = quarter * 3\n\n const fiscalQuarter = await fiscalQuarterRepository.save({\n domain,\n year: currentYear,\n quarter,\n startDate: `${currentYear}-${String(startMonth).padStart(2, '0')}-01`, // 문자열로 저장\n endDate: `${currentYear}-${String(endMonth).padStart(2, '0')}-31`, // 임시로 월의 마지막 날을 31일로 설정\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n\n // Fiscal Months 생성\n for (let month = startMonth; month <= endMonth; month++) {\n const startDate = `${currentYear}-${String(month).padStart(2, '0')}-01`\n const endDate = `${currentYear}-${String(month).padStart(2, '0')}-${new Date(currentYear, month, 0).getDate()}`\n\n await fiscalMonthRepository.save({\n domain,\n year: currentYear,\n quarter,\n month,\n startDate,\n endDate,\n status: FiscalStatus.OPEN,\n creator: user,\n updater: user\n })\n }\n }\n } catch (error) {\n console.error('Failed to seed fiscal entities:', error)\n throw error\n }\n }\n\n public async down(queryRunner: QueryRunner): Promise<void> {\n const domainRepository = getRepository(Domain)\n const fiscalYearRepository = getRepository(FiscalYear)\n const fiscalQuarterRepository = getRepository(FiscalQuarter)\n const fiscalMonthRepository = getRepository(FiscalMonth)\n\n const domain: Domain | null = await domainRepository.findOne({\n where: { name: 'SYSTEM' }\n })\n\n if (!domain) {\n throw new Error('SYSTEM domain not found')\n }\n\n const currentYear = new Date().getFullYear()\n\n // FiscalMonth, FiscalQuarter, FiscalYear 삭제\n await fiscalMonthRepository.delete({ domain: { id: domain.id }, year: currentYear })\n await fiscalQuarterRepository.delete({ domain: { id: domain.id }, year: currentYear })\n await fiscalYearRepository.delete({ domain: { id: domain.id }, year: currentYear })\n }\n}\n"]}
|
@@ -138,155 +138,155 @@ class SeedAccounts1725201467183 {
|
|
138
138
|
const accounts = [
|
139
139
|
// 유동자산 계정
|
140
140
|
{
|
141
|
-
|
141
|
+
code: '101',
|
142
142
|
name: '현금 및 현금성 자산',
|
143
143
|
description: '현금, 예금 및 기타 현금성 자산',
|
144
144
|
category: subCategories.유동자산
|
145
145
|
},
|
146
146
|
{
|
147
|
-
|
147
|
+
code: '102',
|
148
148
|
name: '매출채권',
|
149
149
|
description: '상품 또는 서비스의 판매로 인해 발생한 채권',
|
150
150
|
category: subCategories.유동자산
|
151
151
|
},
|
152
152
|
{
|
153
|
-
|
153
|
+
code: '103',
|
154
154
|
name: '재고자산',
|
155
155
|
description: '판매를 목적으로 보유한 상품, 제품, 원재료 등',
|
156
156
|
category: subCategories.유동자산
|
157
157
|
},
|
158
158
|
{
|
159
|
-
|
159
|
+
code: '104',
|
160
160
|
name: '단기금융상품',
|
161
161
|
description: '단기투자 목적으로 보유한 금융상품',
|
162
162
|
category: subCategories.유동자산
|
163
163
|
},
|
164
164
|
{
|
165
|
-
|
165
|
+
code: '105',
|
166
166
|
name: '선급금',
|
167
167
|
description: '상품, 서비스 제공을 위해 미리 지급한 금액',
|
168
168
|
category: subCategories.유동자산
|
169
169
|
},
|
170
170
|
// 비유동자산 계정
|
171
171
|
{
|
172
|
-
|
172
|
+
code: '201',
|
173
173
|
name: '건물',
|
174
174
|
description: '기업이 소유한 건물',
|
175
175
|
category: furtherSubCategories.유형자산
|
176
176
|
},
|
177
177
|
{
|
178
|
-
|
178
|
+
code: '202',
|
179
179
|
name: '토지',
|
180
180
|
description: '기업이 소유한 토지',
|
181
181
|
category: furtherSubCategories.유형자산
|
182
182
|
},
|
183
183
|
{
|
184
|
-
|
184
|
+
code: '203',
|
185
185
|
name: '기계장치',
|
186
186
|
description: '생산을 위해 사용되는 기계 및 장치',
|
187
187
|
category: furtherSubCategories.유형자산
|
188
188
|
},
|
189
189
|
{
|
190
|
-
|
190
|
+
code: '204',
|
191
191
|
name: '무형자산',
|
192
192
|
description: '특허권, 상표권 등의 무형자산',
|
193
193
|
category: furtherSubCategories.무형자산
|
194
194
|
},
|
195
195
|
// 유동부채 계정
|
196
196
|
{
|
197
|
-
|
197
|
+
code: '301',
|
198
198
|
name: '매입채무',
|
199
199
|
description: '상품 또는 서비스의 구매로 인해 발생한 채무',
|
200
200
|
category: subCategories.유동부채
|
201
201
|
},
|
202
202
|
{
|
203
|
-
|
203
|
+
code: '302',
|
204
204
|
name: '단기차입금',
|
205
205
|
description: '단기 대출금',
|
206
206
|
category: furtherSubCategories.단기금융부채
|
207
207
|
},
|
208
208
|
{
|
209
|
-
|
209
|
+
code: '303',
|
210
210
|
name: '미지급금',
|
211
211
|
description: '이미 발생한 비용에 대한 지급할 금액',
|
212
212
|
category: subCategories.유동부채
|
213
213
|
},
|
214
214
|
{
|
215
|
-
|
215
|
+
code: '304',
|
216
216
|
name: '선수금',
|
217
217
|
description: '고객으로부터 미리 받은 금액',
|
218
218
|
category: subCategories.유동부채
|
219
219
|
},
|
220
220
|
// 비유동부채 계정
|
221
|
-
{
|
221
|
+
{ code: '401', name: '장기차입금', description: '장기 대출금', category: subCategories.비유동부채 },
|
222
222
|
{
|
223
|
-
|
223
|
+
code: '402',
|
224
224
|
name: '퇴직급여충당부채',
|
225
225
|
description: '퇴직급여 지급을 위해 설정한 부채',
|
226
226
|
category: subCategories.비유동부채
|
227
227
|
},
|
228
228
|
// 자본 계정
|
229
|
-
{
|
230
|
-
{
|
229
|
+
{ code: '501', name: '자본금', description: '주주가 납입한 자본', category: topLevelCategories.자본 },
|
230
|
+
{ code: '502', name: '이익잉여금', description: '이익의 축적', category: topLevelCategories.자본 },
|
231
231
|
// 수익 계정
|
232
232
|
{
|
233
|
-
|
233
|
+
code: '601',
|
234
234
|
name: '제품매출',
|
235
235
|
description: '제품의 판매로 인한 수익',
|
236
236
|
category: topLevelCategories.수익
|
237
237
|
},
|
238
238
|
{
|
239
|
-
|
239
|
+
code: '602',
|
240
240
|
name: '상품매출',
|
241
241
|
description: '상품의 판매로 인한 수익',
|
242
242
|
category: topLevelCategories.수익
|
243
243
|
},
|
244
244
|
{
|
245
|
-
|
245
|
+
code: '603',
|
246
246
|
name: '용역매출',
|
247
247
|
description: '용역 제공으로 인한 수익',
|
248
248
|
category: topLevelCategories.수익
|
249
249
|
},
|
250
250
|
{
|
251
|
-
|
251
|
+
code: '604',
|
252
252
|
name: '이자수익',
|
253
253
|
description: '금융 자산에서 발생한 이자수익',
|
254
254
|
category: topLevelCategories.수익
|
255
255
|
},
|
256
256
|
{
|
257
|
-
|
257
|
+
code: '605',
|
258
258
|
name: '배당금수익',
|
259
259
|
description: '주식 투자로 인한 배당금 수익',
|
260
260
|
category: topLevelCategories.수익
|
261
261
|
},
|
262
262
|
// 비용 계정
|
263
263
|
{
|
264
|
-
|
264
|
+
code: '701',
|
265
265
|
name: '매출원가',
|
266
266
|
description: '제품, 상품, 용역 제공에 대한 원가',
|
267
267
|
category: topLevelCategories.비용
|
268
268
|
},
|
269
|
-
{
|
270
|
-
{
|
269
|
+
{ code: '702', name: '급여', description: '직원 급여 비용', category: topLevelCategories.비용 },
|
270
|
+
{ code: '703', name: '임대료', description: '건물 및 설비 임차료', category: topLevelCategories.비용 },
|
271
271
|
{
|
272
|
-
|
272
|
+
code: '704',
|
273
273
|
name: '감가상각비',
|
274
274
|
description: '유형자산의 감가상각비용',
|
275
275
|
category: topLevelCategories.비용
|
276
276
|
},
|
277
277
|
{
|
278
|
-
|
278
|
+
code: '705',
|
279
279
|
name: '이자비용',
|
280
280
|
description: '차입금에 대한 이자비용',
|
281
281
|
category: topLevelCategories.비용
|
282
282
|
},
|
283
283
|
{
|
284
|
-
|
284
|
+
code: '706',
|
285
285
|
name: '판매비 및 관리비',
|
286
286
|
description: '기업 운영에 필요한 비용',
|
287
287
|
category: topLevelCategories.비용
|
288
288
|
},
|
289
|
-
{
|
289
|
+
{ code: '707', name: '법인세비용', description: '법인세 납부 비용', category: topLevelCategories.비용 }
|
290
290
|
];
|
291
291
|
// 계정 저장
|
292
292
|
for (const account of accounts) {
|
@@ -309,9 +309,9 @@ class SeedAccounts1725201467183 {
|
|
309
309
|
throw new Error('SYSTEM domain not found');
|
310
310
|
}
|
311
311
|
// Accounts 삭제
|
312
|
-
await accountRepository.
|
312
|
+
await accountRepository.softDelete({ domain: { id: domain.id } });
|
313
313
|
// AccountingCategories 삭제
|
314
|
-
await accountingCategoryRepository.
|
314
|
+
await accountingCategoryRepository.softDelete({ domain: { id: domain.id } });
|
315
315
|
}
|
316
316
|
}
|
317
317
|
exports.SeedAccounts1725201467183 = SeedAccounts1725201467183;
|