#!/usr/bin/env python3 """Usage: python scripts/import_excel.py workbook.xlsx [--db ./data/finance.db].""" import argparse from pathlib import Path import sys sys.path.insert(0, str(Path(__file__).resolve().parents[1] / 'app')) from models import money from services.excel_import import import_excel def main(): parser = argparse.ArgumentParser(description='Ertragsbuch aus dem ersten XLSX-Blatt nach SQLite importieren.') parser.add_argument('filename', type=Path) parser.add_argument('--db', type=Path, help='Alternativer Datenbankpfad, Standard: FINANCE_DB_PATH oder /data/finance.db') parser.add_argument('--dry-run', action='store_true', help='Transaktion zurückrollen; Datenbank/Seed werden bei Bedarf angelegt.') args = parser.parse_args() try: result = import_excel(args.filename, args.db, args.dry_run) except ImportError: parser.exit(1, 'Importbibliothek fehlt: pip install -r requirements-import.txt\n') except Exception as error: parser.exit(1, f'Import abgebrochen: {error}\n') print(f"{'Vorschau' if result['dry_run'] else 'Import'}: {result['rows']} Buchungen, {result['added']} neu, {result['skipped']} bereits vorhanden.") for warning in result['warnings']: print(warning) print(f"Plausibilitätscheck September 2026: {money(result['september_2026'])} (Referenz 3,71 €).") print(f"Enbridge 02.09.2026 / 0,04 €: {'gefunden' if result['enbridge_check'] else 'nicht gefunden'}.") if result['september_2026'] != 371: print('Hinweis: September-Summe weicht vom historischen Referenzstand ab; Buchungen prüfen.') if __name__ == '__main__': main()