Tartalomra ugrás

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?

KomponensLeí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ásAutomatikusan 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

  1. A felhasználó ma rögzíti a mai munkát: ➔ record_time_highlight = "done" 🟢

  2. A felhasználó ma rögzíti a tegnapi munkát: ➔ record_time_highlight = "normal" 🟡

  3. A felhasználó ma rögzíti a múlt heti munkát: ➔ record_time_highlight = "blocked" 🔴

  4. 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.

  5. 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ülModullal
Nincs lehetőség a késve bevitt adatok kiszűréséreAzonnali, színkódolt átláthatóság
Manuális ellenőrzések szükségesekAutomatikus, tárolt és kereshető adatok
Pontatlan számlázás kockázataEgyértelmű auditálhatóság
Nincs csoportosítás pontosság szerintBeépített csoportosítási szűrő
A vezetői módosítások felülírják az előzményeketA saját szerkesztés érzékelése megőrzi az előzményeket
Nincs időzóna-kezelésTeljesen 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

  1. Töltse le és helyezze el a modult az Odoo addons útvonalán.

  2. Győződjön meg róla, hogy a hr_timesheet modul telepítve van.

  3. Frissítse az Alkalmazások (Apps) listáját.

  4. Keressen rá a „Timesheet: Record Time Highlight” kifejezésre.

  5. Kattintson a Telepítés gombra.

  6. 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.