Munkaidő-nyilvántartás: Rögzítési Idő Kiemelés (Timesheet: Record Time Highlight)
Kategória: DO Tech / Timesheets
Technikai név: odootech_timesheet_record_time_highlight
Verzió: 19.0.1.0.0
Licenc: LGPL-3
Odoo verziók: 16.0, 17.0, 18.0, 19.0
Függőség: hr_timesheet
🎯 A Probléma
Az Odoo-ban a munkaidő-nyilvántartásokat (timesheets) napokkal, vagy akár hetekkel a tényleges munkavégzés után is be lehet vinni. Ez komoly problémákat okoz:
Pontatlan számlázás: Nem tudni, hogy a nyilvántartás a valós munkaidőt tükrözi-e, vagy utólag lett-e feltöltve.
Elszámoltathatóság hiánya: A vezetőiknek nincs lehetőségük a késve rögzített bejegyzések kiszűrésére.
Bérszámfejtési hibák: A késve bevitt munkaórák lemaradhatnak a bérszámfejtési zárolásról.
Projekttervezési problémák: A korábbi adatokat eltorzítják az utólagos bejegyzések.
Vizuális visszajelzés hiánya: A munkaidő-nyilvántartási lista pontosan ugyanúgy néz ki, függetlenül attól, hogy a bejegyzést ma vagy egy hónappal ezelőtt rögzítették.
A meglévő megoldásokhoz egyedi jelentésekre, külső táblázatokra vagy manuális auditokra van szükség. Nincs beépített Odoo mechanizmus annak megjelölésére, hogy mikor rögzítettek valójában egy munkaidő-bejegyzést ahhoz a dátumhoz képest, amit állítólag lefed.
✨ A Megoldás
A Timesheet: Record Time Highlight egy színkódolt állapotjelzőt ad minden egyes munkaidő-nyilvántartási sorhoz, ami egyetlen pillantással megmutatja, hogy a bejegyzést mikor rögzítették:
🟢 Időben (On Time) – a munkavégzés napján rögzítve
🟡 Tolerancián belül (Within Tolerance) – egy nap késéssel rögzítve (a legtöbb munkafolyamatban még elfogadható)
🔴 Késve (Late) – több mint egy nappal a munkavégzés dátuma után rögzítve
Az állapot automatikusan kerül kiszámításra, az adatbázisban tárolódik (így csoportosítható, szűrhető és jelentések készíthetők belőle), és minden főbb munkaidő-nyilvántartási nézetben megjelenik: a feladat űrlapon, a munkaidő-listában, a kanban nézetben és a keresési szűrők között.
A telepítés után a yövezetők azonnal láthatják, ki az, aki naprakészen rögzíti az idejét, és ki az, aki hetekkel később pótolja a bejegyzéseket.
🚀 Főbb jellemzők
🎨 Háromállapotú vizuális indikátor A state_selection widget egy színes pöttyként jeleníti meg az állapotot minden nézetben:
Időben (zöld) – aznapi rögzítés
Tolerancián belül (sárga) – 1 napos késés
Késve (piros) – több mint 1 napos késés
💾 Tárolt és kereshető adatok A record_time_highlight mező egy tárolt, számított mező (stored computed field) btree indexszel, ami azt jelenti, hogy:
Csoportosíthatja a munkaidőket a rögzítés állapota szerint
Szűrhet a késve bevitt bejegyzésekre
Pivot és diagram nézeteket építhet rá
SQL jelentéseket futtathat újraszámítási kényszer nélkül
⏱️ Automatikus időbélyeg-rögzítés Egy új timesheet_record_time (dátum/idő) mező rögzíti a pontos pillanatot, amikor a munkaidő-bejegyzést maga a felhasználó létrehozza vagy módosítja.
Automatikusan frissül a write metódus lefutásakor, ha a kulcsfontosságú mezők megváltoznak (date, unit_amount, product_uom_id, partner_id, task_id).
Tartalékként a create_date értéket használja, ha nincs más megadva.
Csak olvasható és duplikáláskor nem másolódik – minden bejegyzés megőrzi a saját előzményét.
👤 Intelligens saját-módosítás érzékelés Az időbélyeg csak akkor frissül, amikor a felhasználó a saját munkaidő-bejegyzését szerkeszti. Ha egy vezető módosítja valaki más bejegyzését (ami a csapatvezetők számára engedélyezett), az eredeti rögzítési idő megmarad – így az auditálhatóság sértetlen marad.
🔗 Kizárólag feladathoz kötött kiemelés Az állapotjelző csak a feladathoz (task) kapcsolódó munkaidő-bejegyzéseknél kerül kiszámításra. A feladat nélküli sorok (pl. belső jelenlét vagy projektfüggetlen idő) kimaradnak – nincsenek vaklármák és hamis pozitív jelzések.
🖥️ Teljes nézet-integráció Az állapotjelző megjelenik a következő helyeken:
Feladat űrlap → Munkaidő-nyilvántartás lap (lista + kanban)
Munkaidő-nyilvántartás → Összes munkaidő-bejegyzés lista
Munkaidő-nyilvántartás → Kanban nézet
Keresés → Csoportosítás alapján → Pontossági állapot szerint
🌍 Időzóna-érzékeny A fields.Datetime.context_timestamp() függvényt használja az UTC időbélyegek felhasználói helyi időzónára történő átváltásához a dátumok összehasonlítása előtt – így a helyi idő szerint este 11-kor rögzített munkaidőt nem jelöli tévesen „következő napi” bejegyzésként.
📦 Mit tartalmaz a modul?
| Komponens | Leírás |
|---|---|
| record_time_highlight mező | Tárolt, indexelt, számított kiválasztó mező (selection) |
| timesheet_record_time mező | Csak olvasható dátum/idő mező, nem másolható |
| write() felülbírálás | Automatikusan rögzíti az időbélyeget saját szerkesztéskor |
| _compute_record_time_highlight() | Időzóna-érzékeny állapotkiszámítási logika |
| Feladat űrlapnézet javítása | Állapot oszlop a munkaidő-listában és kanban nézetben |
| Munkaidő listanézet javítása | Állapot oszlop az óraszám (unit amount) mellett |
| Munkaidő kanban nézet javítása | Állapotjelző jelvény (badge) minden kártyán |
| Keresési nézet javítása | „Pontossági állapot” csoportosítási szűrő |
🧪 Hogyan működik? – Lépésről lépésre
A felhasználó ma rögzíti a mai munkát: ➔ record_time_highlight = "done" 🟢
A felhasználó ma rögzíti a tegnapi munkát: ➔ record_time_highlight = "normal" 🟡
A felhasználó ma rögzíti a múlt heti munkát: ➔ record_time_highlight = "blocked" 🔴
A vezető módosítja egy alkalmazott bejegyzését: ➔ A timesheet_record_time nem frissül – az eredeti rögzítési idő megőrződik, és az állapot pontos marad.
Feladat nélküli munkaidő-bejegyzés: ➔ record_time_highlight = False – nem jelenik meg indikátor.
🏆 Miért válassza ezt a modult?
| Modul nélkül | Modullal |
|---|---|
| Nincs lehetőség a késve bevitt adatok kiszűrésére | Azonnali, színkódolt átláthatóság |
| Manuális ellenőrzések szükségesek | Automatikus, tárolt és kereshető adatok |
| Pontatlan számlázás kockázata | Egyértelmű auditálhatóság |
| Nincs csoportosítás pontosság szerint | Beépített csoportosítási szűrő |
| A vezetői módosítások felülírják az előzményeket | A saját szerkesztés érzékelése megőrzi az előzményeket |
| Nincs időzóna-kezelés | Teljesen időzóna-érzékeny működés |
🔧 Technikai részletek
Függőség: hr_timesheet
Kiterjesztett modell: account.analytic.line
Új mezők száma: 2 (record_time_highlight, timesheet_record_time)
Számított mező: record_time_highlight (tárolt, indexelt, btree)
Dátum/idő mező: timesheet_record_time (readonly, copy=False, default_export_compatible=False)
Nézetmódosítások száma: 4 (feladat űrlap, munkaidő lista, kanban, keresés)
Új modellek: Nincsenek
Új menük: Nincsenek
Adatbázis-séma módosítás: A 2 új oszlopon kívül nincs más módosítás
📥 Telepítés
Töltse le és helyezze el a modult az Odoo addons útvonalán.
Győződjön meg róla, hogy a hr_timesheet modul telepítve van.
Frissítse az Alkalmazások (Apps) listáját.
Keressen rá a „Timesheet: Record Time Highlight” kifejezésre.
Kattintson a Telepítés gombra.
Nyissa meg bármelyik feladat Munkaidő-nyilvántartás lapját – a színes állapotjelző azonnal láthatóvá válik.
💬 Támogatás
Fejlesztette és karbantartja a DO Tech. Hibabejelentéssel, funkciókérésekkel vagy a toleranciaküszöbök egyedi testreszabásával kapcsolatban (pl. 1 nap helyett 2 napos tolerancia beállítása) lépjen velünk kapcsolatba az Odoo Apps Store-on keresztül.