{"id":"c0164","filename":"c0164_datev_worktime_global_modul.dok.json","weise3_id":"WEISE3::datev_worktime_global::fenix-v3::core::2026-05-08::FENIX2026","tip":"modul","naziv":"core/datev_worktime.py — Globalni DATEV Worktime Export Modul","kreator":"Ivan + CC (Sonnet 4.6)","datum":"2026-05-08","snippet":"","status":"LIVE","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"modul","naziv":"core/datev_worktime.py — Globalni DATEV Worktime Export Modul","weise3_id":"WEISE3::datev_worktime_global::fenix-v3::core::2026-05-08::FENIX2026","verzija":"1.0","datum":"2026-05-08","autor":"Ivan + CC (Sonnet 4.6)","status":"LIVE","sto_je":"Domenski 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_sesije":"c0160 F6 — korisnik zatražio globalni modul koji se poziva po potrebi u sve domene"}}