fix(skr.classes.account): Remove incorrect SKR04 automatic account 3300; improve VAT posting validation and test isolation; update readme hints and CI settings
This commit is contained in:
@@ -1,3 +1,56 @@
|
||||
# Project Readme Hints
|
||||
|
||||
This is the initial readme hints file.
|
||||
## 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
|
||||
|
||||
Reference in New Issue
Block a user