2025-08-09 12:00:40 +00:00
|
|
|
# Project Readme Hints
|
|
|
|
|
|
2025-10-28 08:50:32 +00:00
|
|
|
## Current Status (2025-10-27)
|
|
|
|
|
|
|
|
|
|
### Test Results
|
|
|
|
|
✅ **ALL 65/65 TESTS PASSING** (100%)
|
|
|
|
|
|
|
|
|
|
### Recent Fixes
|
|
|
|
|
|
|
|
|
|
#### Fixed: SKR04 Bug (Account 3300 Misclassification)
|
|
|
|
|
**Problem**: Account 3300 was incorrectly hardcoded as an automatic account for SKR04
|
|
|
|
|
**Root Cause**: Bug in `ts/skr.classes.account.ts:192` - account 3300 is "Fahrzeugkosten" (vehicle costs), NOT an automatic account
|
|
|
|
|
**Solution**:
|
|
|
|
|
1. Removed 3300 from automatic accounts list in `isAutomaticAccount()` method
|
|
|
|
|
2. Updated test.skr04.ts to use timestamped database names to avoid conflicts
|
|
|
|
|
**Files Changed**:
|
|
|
|
|
- `ts/skr.classes.account.ts` - Fixed automatic account detection
|
|
|
|
|
- `test/test.skr04.ts` - Added timestamp to database name
|
|
|
|
|
|
|
|
|
|
**Result**: ✅ All SKR04 tests now passing (jahresabschluss.skr04 + basic SKR04 tests)
|
|
|
|
|
|
|
|
|
|
### Architecture Notes
|
|
|
|
|
|
|
|
|
|
#### VAT Validation Logic (Recent Changes)
|
|
|
|
|
- **skr.classes.journalentry.ts:224-273**: Detects VAT lines in entries to enable smart validation
|
|
|
|
|
- **skr.postingkeys.ts:87-100**: Exempts VAT accounts and debtor/creditor accounts from VAT amount requirements
|
|
|
|
|
- **Rationale**: VAT accounts ARE the VAT; settlement transactions don't need VAT details again
|
|
|
|
|
|
|
|
|
|
#### Posting Key Usage Pattern
|
|
|
|
|
- **Tax-free operations** (key 40): Internal adjustments, depreciation, closing entries
|
|
|
|
|
- **VAT operations** (keys 3, 8, 9, 19, 94): Customer/supplier transactions
|
|
|
|
|
- **Best practice**: Use posting key 40 for non-VAT lines in mixed entries
|
|
|
|
|
|
|
|
|
|
#### Account Structure
|
|
|
|
|
- **Automatic accounts**: Cannot be posted to directly (1400 Debtors, 1600 Creditors, 3300 Bank)
|
|
|
|
|
- **Personal accounts**: Created in ranges 10000-69999 (debtors), 70000-99999 (creditors)
|
|
|
|
|
- **System enforces**: Must use personal variants instead of automatic accounts
|
|
|
|
|
|
|
|
|
|
### Validation Pipeline
|
|
|
|
|
1. **Line-level**: Posting key required, account exists, VAT rules
|
|
|
|
|
2. **Posting key level**: VAT amount requirements (with exemptions)
|
|
|
|
|
3. **Consistency level**: No mixing tax-free and taxed (unless intentional)
|
|
|
|
|
4. **Balance level**: Debits must equal credits (0.01 tolerance)
|
|
|
|
|
|
|
|
|
|
### Test Coverage
|
|
|
|
|
- 65 test cases covering full accounting cycle
|
|
|
|
|
- Complete Jahresabschluss (annual closing) workflow in SKR03
|
|
|
|
|
- Report generation (Trial Balance, Income Statement, Balance Sheet)
|
|
|
|
|
- Transaction reversal and audit trails
|
|
|
|
|
- DATEV posting key validation
|
|
|
|
|
|
|
|
|
|
### Dependencies
|
|
|
|
|
- MongoDB via @push.rocks/smartdata for persistence
|
|
|
|
|
- TypeScript 5.8.3 with strict mode
|
|
|
|
|
- @git.zone/tstest for testing framework
|
|
|
|
|
- @push.rocks/smartexpect for assertions
|