Files
skr/readme.hints.md

2.4 KiB

Project Readme Hints

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