#!/usr/bin/env python3 """ AAMOS Integration för Landvex Artikelautomation Hämtar data från aamos-ledger och skapar artikelkandidater """ import json import os from datetime import datetime, timezone from pathlib import Path # Använd direkt SQL-klient from aamos_simple_client import SimpleAamosClient # Konfiguration DEFAULT_OUTPUT_DIR = Path(__file__).parent / "intag" def skapa_artikel_fran_konto(konto): """Skapa en artikelkandidat baserat på ett aamos-konto""" # Mappa kontotyp till domän doman_map = { "Asset": "ANL", "Liability": "FIN", "Equity": "FIN", "Income": "FIN", "Expense": "ANL" } doman = doman_map.get(konto['account_type'], 'ANL') # Skapa artikelstruktur artikel = { "kandidat_id": f"K-{datetime.now(timezone.utc).strftime('%Y%m%d')}-aamos-{konto['code']}", "atgard": "ny", "serie": {"typ": "klass", "tier": 2}, "paket_ref": [], "patch": {}, "post": { "posttyp": "objektklass", "slug": f"{konto['code']}-{konto['name'].lower().replace(' ', '-').replace('/', '-')}", "namn": { "sv": konto['name'], "en": konto['name'] # Behåll svenskt namn eller översätt }, "doman": doman, "identitet": { "status": "aktiv", "beskrivning": f"{konto['name']} — accounting category {konto['code']} in Swedish BAS chart of accounts. Used for financial tracking and reporting in infrastructure projects." }, "teknik": { "konto": { "kod": konto['code'], "typ": konto['account_type'], "standard": "BAS2024" } }, "geografi": { "marknader": ["SE", "EU"] }, "standarder": [ { "beteckning": "BAS2024", "organ": "BAS", "roll": "referens" } ], "ai": { "ocr": {"falt": []} }, "problem": [], "relationer": [], "proveniens": { "skapad": datetime.now(timezone.utc).strftime("%Y-%m-%d"), "uppdaterad": datetime.now(timezone.utc).strftime("%Y-%m-%d"), "verifieringsniva": "bekraftad", "konfidens": 0.9, "kallor": [ { "titel": "AAMOS Ledger — BAS Kontoplan", "url": "https://aamos.wavult.com", "typ": "system" } ] } }, "verifieringsniva_forslag": "bekraftad", "motivering": f"Auto-generated from AAMOS ledger account {konto['code']}" } return artikel def hamta_och_skapa_artiklar(): """Hämta konton från aamos och skapa artikelkandidater""" print("=== AAMOS Integration ===") print("Ansluter till aamos-ledger...") client = SimpleAamosClient().connect() # Hämta alla konton accounts = client.list_accounts() print(f"Hittade {len(accounts)} konton") # Skapa artiklar kandidater = [] for konto in accounts: artikel = skapa_artikel_fran_konto(konto) kandidater.append(artikel) print(f" ✓ {konto['code']}: {konto['name']}") # Spara kandidatfil datum = datetime.now(timezone.utc).strftime("%Y-%m-%d") filnamn = f"kandidatposter-{datum}-aamos.json" sokvag = DEFAULT_OUTPUT_DIR / filnamn payload = { "beskrivning": f"AAMOS Ledger — konton som artikelkandidater {datum}", "extraktor": "aamos-ledger-integration", "genererad": datum, "kandidater": kandidater } with open(sokvag, "w", encoding="utf-8") as f: json.dump(payload, f, ensure_ascii=False, indent=2) print(f"\n✅ Sparade {len(kandidater)} artiklar till {sokvag}") client.close() return sokvag if __name__ == "__main__": hamta_och_skapa_artiklar()