tipmodul
verzija1.0
statusLIVE
sto_jeDomenski neutralan modul za DATEV LODAS i Stundennachweis izvoz radnih sati. Poziva se iz BILO KOJE domene u sustavu.
lokacija{
"server": "/var/www/fenix-v3/core/datev_worktime.py",
"import": "from core.datev_worktime import DATEVWorktime, WorktimeRecord, DATEVConfig"
}
domene_koje_ga_koriste[
"sati.ink — sati_worktime app (primarni korisnik)",
"genesispos.online — POS time tracking (budući)",
"limit-connect.com — HR payroll TimeLog (budući)",
"memio.farm / memio.world — radnici po projektu (budući)"
]
klase{
"DATEVConfig": "Konfiguracija mandanta: berater_nr, mandant_nr, kostenstelle, max_daily_regular_h",
"WorktimeRecord": "Domenski neutralan zapis smjene. Adaptori: from_sati_log(), from_time_log()",
"DATEVWorktime": "Statična klasa s export metodama: lodas_export(), stundennachweis_csv()"
}
format_podrska[
"DATEV LODAS ASCII — Lohnbuchungsstapel (primarni, 90%+ DE Steuerberater)",
"Stundennachweis CSV — Excel/Google Sheets (sekundarni, za radnike)"
]
lohnarten{
"100": "Lohnstunden — regularne sate (do max_daily_regular_h, default 8h/dan)",
"110": "Überstunden — prekovremeni sati (>8h/dan)",
"120": "ArbZG Pause — rezervirano, §4 ArbZG (nije u retku, nego u kolonama)"
}
zakoni[
"ZAKON 26 — TypedDict/dataclass schema contract",
"ZAKON 1A — WeisE3 ID u svakom retku"
]
backward_compat{
"putanja": "/var/www/fenix-v3/sati_worktime/datev_export.py",
"sto_radi": "Re-exportira iz core.datev_worktime + legacy wrapper funkcije za stare pozive"
}
sigurnost{
"bom": "UTF-8 BOM (\\ufeff) — DATEV standard za DE posebne znakove (ä/ö/ü)",
"idempotent": "Svaki poziv generira isti output za iste ulazne podatke",
"genesis_id_kolona": "weise3_id puni string u svakom retku — DokArh verifikacija"
}
faze{
"f1": "core/datev_worktime.py napisan — DONE",
"f2": "sati_worktime/datev_export.py → backward compat wrapper — DONE",
"f3": "View + URL za download endpoint u sati_worktime — TODO (c0160 F6 nastavak)",
"f4": "POS time tracking adapter — FUTURE",
"f5": "TimeLog adapter (limit-connect.com) — FUTURE"
}
zapis_sesijec0160 F6 — korisnik zatražio globalni modul koji se poziva po potrebi u sve domene