6de2455917
- Added GLOBAL_MARKETS_TITLE to all translation files - Updated footer with 12 markets (4 active + 8 upcoming) - Translated market section to: zh-cn, zh-tw, ja, ko, th, vi, id, ms, hi - Built and deployed to production - CloudFront invalidation: I3RTMXVFDJXWLG3SYX208OP1CC
137 lines
4.1 KiB
Python
137 lines
4.1 KiB
Python
#!/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()
|