@fin.cx/skr
Version:
SKR03 and SKR04 German accounting standards for double-entry bookkeeping
100 lines (99 loc) • 2.91 kB
TypeScript
import { Account } from './skr.classes.account.js';
import { Transaction } from './skr.classes.transaction.js';
import { JournalEntry } from './skr.classes.journalentry.js';
import type { IDatabaseConfig, TSKRType, IAccountData, IAccountFilter, ITransactionFilter, ITransactionData, IJournalEntry } from './skr.types.js';
export declare class ChartOfAccounts {
private config?;
private logger;
private initialized;
private skrType;
constructor(config?: IDatabaseConfig);
/**
* Initialize the database connection
*/
init(): Promise<void>;
/**
* Initialize SKR03 chart of accounts
*/
initializeSKR03(): Promise<void>;
/**
* Initialize SKR04 chart of accounts
*/
initializeSKR04(): Promise<void>;
/**
* Get the current SKR type
*/
getSKRType(): TSKRType | null;
/**
* Set the active SKR type
*/
setSKRType(skrType: TSKRType): void;
/**
* Get account by number
*/
getAccountByNumber(accountNumber: string): Promise<Account | null>;
/**
* Get accounts by class
*/
getAccountsByClass(accountClass: number): Promise<Account[]>;
/**
* Get accounts by type
*/
getAccountsByType(accountType: IAccountData['accountType']): Promise<Account[]>;
/**
* Create a custom account
*/
createCustomAccount(accountData: Partial<IAccountData>): Promise<Account>;
/**
* Update an existing account
*/
updateAccount(accountNumber: string, updates: Partial<IAccountData>): Promise<Account>;
/**
* Delete a custom account (only non-system accounts)
*/
deleteAccount(accountNumber: string): Promise<void>;
/**
* Search accounts
*/
searchAccounts(searchTerm: string): Promise<Account[]>;
/**
* Get all accounts
*/
getAllAccounts(filter?: IAccountFilter): Promise<Account[]>;
/**
* Post a simple transaction
*/
postTransaction(transactionData: ITransactionData): Promise<Transaction>;
/**
* Post a journal entry
*/
postJournalEntry(journalData: IJournalEntry): Promise<JournalEntry>;
/**
* Get transactions for an account
*/
getAccountTransactions(accountNumber: string): Promise<Transaction[]>;
/**
* Get transactions by filter
*/
getTransactions(filter?: ITransactionFilter): Promise<Transaction[]>;
/**
* Reverse a transaction
*/
reverseTransaction(transactionId: string): Promise<Transaction>;
/**
* Get account class description
*/
getAccountClassDescription(accountClass: number): string;
/**
* Import accounts from CSV
*/
importAccountsFromCSV(csvContent: string): Promise<number>;
/**
* Export accounts to CSV
*/
exportAccountsToCSV(): Promise<string>;
/**
* Close the database connection
*/
close(): Promise<void>;
}