Files
skr/readme.plan.md
Juergen Kunz 8a9056e767
Some checks failed
Default (tags) / security (push) Successful in 44s
Default (tags) / test (push) Failing after 4m4s
Default (tags) / release (push) Has been skipped
Default (tags) / metadata (push) Has been skipped
feat(core): initial release of SKR03/SKR04 German accounting standards implementation
- Complete implementation of German standard charts of accounts
- SKR03 (Process Structure Principle) for trading/service companies
- SKR04 (Financial Classification Principle) for manufacturing companies
- Double-entry bookkeeping with MongoDB persistence
- Comprehensive reporting suite with DATEV export
- Full TypeScript support and type safety
2025-08-09 12:00:40 +00:00

244 lines
8.3 KiB
Markdown

# @fin.cx/skr Implementation Plan
## Command to reread CLAUDE.md
`cat /home/philkunz/.claude/CLAUDE.md`
## Project Overview
TypeScript module implementing SKR03 and SKR04 German accounting standards for double-entry bookkeeping with MongoDB persistence via @push.rocks/smartdata.
## Implementation Tasks
### Phase 1: Project Setup
- [ ] Initialize npm project with pnpm
- [ ] Create package.json with proper metadata (@fin.cx/skr)
- [ ] Install core dependencies
- [ ] @push.rocks/smartdata
- [ ] @git.zone/tstest (dev dependency)
- [ ] Create tsconfig.json based on @push.rocks/smarthash pattern
- [ ] Create npmextra.json for additional configuration
- [ ] Create .gitignore file
- [ ] Create directory structure
- [ ] ts/ directory for source code
- [ ] test/ directory for tests
- [ ] .vscode/ for VS Code settings
- [ ] Create initial readme.md with project description
### Phase 2: Core Infrastructure
- [ ] Create ts/index.ts with main exports
- [ ] Create ts/plugins.ts for dependency management
- [ ] Import and export @push.rocks/smartdata
- [ ] Import and export @push.rocks/smartunique for ID generation
- [ ] Import and export @push.rocks/smarttime for date handling
- [ ] Set up database connection helper in ts/skr.database.ts
- [ ] Create type definitions in ts/skr.types.ts
- [ ] Define AccountType enum
- [ ] Define SKRType enum
- [ ] Define TransactionStatus enum
- [ ] Define report interfaces
### Phase 3: Data Models
- [ ] Create ts/skr.classes.account.ts
- [ ] Define Account class extending SmartDataDbDoc
- [ ] Add accountNumber field with unique index
- [ ] Add accountName with searchable decorator
- [ ] Add accountClass (0-9)
- [ ] Add accountType (asset/liability/equity/revenue/expense)
- [ ] Add skrType (SKR03/SKR04)
- [ ] Add balance field
- [ ] Add validation methods
- [ ] Add helper methods for balance updates
- [ ] Create ts/skr.classes.transaction.ts
- [ ] Define Transaction class extending SmartDataDbDoc
- [ ] Add transactionId with unique index
- [ ] Add date field with index
- [ ] Add debitAccount and creditAccount fields
- [ ] Add amount field
- [ ] Add description with searchable decorator
- [ ] Add reference field
- [ ] Add validation for double-entry rules
- [ ] Add beforeSave hook for validation
- [ ] Create ts/skr.classes.journalentry.ts
- [ ] Define JournalEntry class for multi-line entries
- [ ] Support split transactions
- [ ] Add validation for balanced entries
### Phase 4: SKR Account Definitions
- [ ] Create ts/skr03.data.ts
- [ ] Define account class 0 (Capital accounts)
- [ ] Define account class 1 (Fixed assets)
- [ ] Define account class 2 (Current assets)
- [ ] Define account class 3 (Equity and liabilities)
- [ ] Define account class 4 (Operating income)
- [ ] Define account class 5 (Operating expenses - materials)
- [ ] Define account class 6 (Operating expenses - personnel)
- [ ] Define account class 7 (Operating expenses - other)
- [ ] Define account class 8 (Financial accounts)
- [ ] Define account class 9 (Closing accounts)
- [ ] Create ts/skr04.data.ts
- [ ] Define account class 0 (Capital accounts)
- [ ] Define account class 1 (Financial accounts)
- [ ] Define account class 2 (Expenses)
- [ ] Define account class 3 (Expenses continued)
- [ ] Define account class 4 (Revenues)
- [ ] Define account class 5 (Revenues continued)
- [ ] Define account class 6 (Special accounts)
- [ ] Define account class 7 (Cost accounting)
- [ ] Define account class 8 (Free for use)
- [ ] Define account class 9 (Closing accounts)
### Phase 5: Business Logic
- [ ] Create ts/skr.classes.chartofaccounts.ts
- [ ] Implement initializeSKR03() method
- [ ] Implement initializeSKR04() method
- [ ] Implement getAccountByNumber() method
- [ ] Implement getAccountsByClass() method
- [ ] Implement createCustomAccount() method
- [ ] Implement validateAccountNumber() method
- [ ] Implement importFromCSV() method
- [ ] Implement exportToCSV() method
- [ ] Create ts/skr.classes.ledger.ts
- [ ] Implement postTransaction() method
- [ ] Implement postJournalEntry() method
- [ ] Implement validateDoubleEntry() method
- [ ] Implement updateAccountBalances() method
- [ ] Implement reverseTransaction() method
- [ ] Implement getAccountHistory() method
- [ ] Implement closeAccountingPeriod() method
### Phase 6: Reporting
- [ ] Create ts/skr.classes.reports.ts
- [ ] Implement getTrialBalance() method
- [ ] Implement getIncomeStatement() for SKR03
- [ ] Implement getIncomeStatement() for SKR04
- [ ] Implement getBalanceSheet() for SKR03
- [ ] Implement getBalanceSheet() for SKR04
- [ ] Implement getGeneralLedger() method
- [ ] Implement getAccountStatement() method
- [ ] Implement getCashFlowStatement() method
- [ ] Add DATEV export format support
### Phase 7: API Layer
- [ ] Create ts/skr.api.ts
- [ ] Implement REST-style account methods
- [ ] createAccount()
- [ ] getAccount()
- [ ] updateAccount()
- [ ] deleteAccount()
- [ ] listAccounts()
- [ ] Implement transaction methods
- [ ] postTransaction()
- [ ] getTransaction()
- [ ] listTransactions()
- [ ] reverseTransaction()
- [ ] Implement report methods
- [ ] generateTrialBalance()
- [ ] generateIncomeStatement()
- [ ] generateBalanceSheet()
- [ ] Implement search methods
- [ ] searchAccounts()
- [ ] searchTransactions()
- [ ] Add pagination support
- [ ] Add filtering support
### Phase 8: Testing
- [ ] Create test/test.basic.ts
- [ ] Test database connection
- [ ] Test basic model creation
- [ ] Create test/test.skr03.ts
- [ ] Test SKR03 account initialization
- [ ] Test SKR03 specific account structure
- [ ] Test process-oriented organization
- [ ] Test SKR03 reporting
- [ ] Create test/test.skr04.ts
- [ ] Test SKR04 account initialization
- [ ] Test SKR04 specific account structure
- [ ] Test financial statement organization
- [ ] Test SKR04 reporting
- [ ] Create test/test.transactions.ts
- [ ] Test simple transaction posting
- [ ] Test complex journal entries
- [ ] Test double-entry validation
- [ ] Test balance updates
- [ ] Test transaction reversal
- [ ] Create test/test.reports.ts
- [ ] Test trial balance generation
- [ ] Test income statement
- [ ] Test balance sheet
- [ ] Test report accuracy
- [ ] Create test/test.api.ts
- [ ] Test API CRUD operations
- [ ] Test API search functionality
- [ ] Test API pagination
- [ ] Test API error handling
### Phase 9: Documentation
- [ ] Update readme.md with comprehensive documentation
- [ ] Installation instructions
- [ ] Quick start guide
- [ ] API reference
- [ ] SKR03 vs SKR04 explanation
- [ ] Code examples
- [ ] Add inline JSDoc comments to all classes and methods
- [ ] Create example usage files
- [ ] Document CSV import/export format
- [ ] Document DATEV compatibility
### Phase 10: Build and Quality
- [ ] Run pnpm build and fix any TypeScript errors
- [ ] Run pnpm test and ensure all tests pass
- [ ] Check for missing type definitions
- [ ] Optimize database indexes
- [ ] Add data validation and error handling
- [ ] Performance testing with large datasets
- [ ] Security review for data access
### Phase 11: Advanced Features
- [ ] Add multi-currency support
- [ ] Add VAT/tax calculation helpers
- [ ] Add cost center accounting
- [ ] Add budget management
- [ ] Add audit trail functionality
- [ ] Add data migration tools
- [ ] Add backup/restore functionality
### Phase 12: Finalization
- [ ] Final code review
- [ ] Update all documentation
- [ ] Create migration guide from other systems
- [ ] Prepare for npm publication
- [ ] Create changelog
- [ ] Tag version 1.0.0
## Notes
- SKR03 uses process structure principle (operating procedures)
- SKR04 uses financial classification principle (financial statements)
- Account numbers are 4-digit (0000-9999)
- Must maintain double-entry bookkeeping rules
- Use @push.rocks/smartdata for all database operations
- Follow existing code patterns from @push.rocks modules
- Test with @git.zone/tstest using expect from tapbundle
## Success Criteria
- [ ] All account classes (0-9) implemented for both SKR03 and SKR04
- [ ] Double-entry bookkeeping validation working
- [ ] Reports generating correctly
- [ ] All tests passing
- [ ] TypeScript compilation successful
- [ ] Documentation complete