Skip to Content
Odoo Menu
  • Log ind
  • Prøv gratis
  • Apps
    Økonomi
    • Bogføring
    • Fakturering
    • Udgifter
    • Regneark (BI)
    • Dokumenter
    • e-Signatur
    Salg
    • CRM
    • Salg
    • POS Butik
    • POS Restaurant
    • Abonnementer
    • Udlejning
    Hjemmeside
    • Hjemmesidebygger
    • e-Handel
    • Blog
    • Forum
    • LiveChat
    • e-Læring
    Forsyningskæde
    • Lagerbeholdning
    • Produktion
    • PLM
    • Indkøb
    • Vedligeholdelse
    • Kvalitet
    HR
    • Medarbejdere
    • Rekruttering
    • Fravær
    • Medarbejdersamtaler
    • Anbefalinger
    • Flåde
    Marketing
    • Markedsføring på sociale medier
    • E-mailmarketing
    • SMS-marketing
    • Arrangementer
    • Automatiseret marketing
    • Spørgeundersøgelser
    Tjenester
    • Projekt
    • Timesedler
    • Udkørende Service
    • Kundeservice
    • Planlægning
    • Aftaler
    Produktivitet
    • Dialog
    • Godkendelser
    • IoT
    • VoIP
    • Vidensdeling
    • WhatsApp
    Tredjepartsapps Odoo Studio Odoo Cloud-platform
  • Brancher
    Detailhandel
    • Boghandel
    • Tøjforretning
    • Møbelforretning
    • Dagligvarebutik
    • Byggemarked
    • Legetøjsforretning
    Mad og værtsskab
    • Bar og pub
    • Restaurant
    • Fastfood
    • Gæstehus
    • Drikkevareforhandler
    • Hotel
    Ejendom
    • Ejendomsmægler
    • Arkitektfirma
    • Byggeri
    • Ejendomsadministration
    • Havearbejde
    • Boligejerforening
    Rådgivning
    • Regnskabsfirma
    • Odoo-partner
    • Marketingbureau
    • Advokatfirma
    • Rekruttering
    • Audit & certificering
    Produktion
    • Tekstil
    • Metal
    • Møbler
    • Fødevareproduktion
    • Bryggeri
    • Firmagave
    Heldbred & Fitness
    • Sportsklub
    • Optiker
    • Fitnesscenter
    • Kosmetolog
    • Apotek
    • Frisør
    Håndværk
    • Handyman
    • IT-hardware og support
    • Solenergisystemer
    • Skomager
    • Rengøringsservicer
    • VVS- og ventilationsservice
    Andet
    • Nonprofitorganisation
    • Miljøagentur
    • Udlejning af billboards
    • Fotografi
    • Cykeludlejning
    • Softwareforhandler
    Gennemse alle brancher
  • Community
    Få mere at vide
    • Tutorials
    • Dokumentation
    • Certificeringer
    • Oplæring
    • Blog
    • Podcast
    Bliv klogere
    • Udannelselsesprogram
    • Scale Up!-virksomhedsspillet
    • Besøg Odoo
    Få softwaren
    • Download
    • Sammenlign versioner
    • Udgaver
    Samarbejde
    • Github
    • Forum
    • Arrangementer
    • Oversættelser
    • Bliv partner
    • Tjenester til partnere
    • Registrér dit regnskabsfirma
    Modtag tjenester
    • Find en partner
    • Find en bogholder
    • Kontakt en rådgiver
    • Implementeringstjenester
    • Kundereferencer
    • Support
    • Opgraderinger
    Github Youtube Twitter LinkedIn Instagram Facebook Spotify
    +1 (650) 691-3277
    Få en demo
  • Prissætning
  • Hjælp

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Bogføring
  • Lager
  • PoS
  • Projekt
  • MRP
All apps
Du skal være registreret for at interagere med fællesskabet.
All Posts People Emblemer
Tags (View all)
odoo accounting v14 pos v15
Om dette forum
Du skal være registreret for at interagere med fællesskabet.
All Posts People Emblemer
Tags (View all)
odoo accounting v14 pos v15
Om dette forum
Hjælp

Is there a workaround for the bug where timesheet entries use incorrect timezone

Tilmeld

Få besked, når der er aktivitet på dette indlæg

Dette spørgsmål er blevet anmeldt
timezonev7attendancetimesheets
2 Besvarelser
11307 Visninger
Avatar
Bill Ennals

There is currently a bug in Timesheets where sign in and out events get timestamped with UTC time rather than the users timezone time. The bug has been confirmed (bugs.launchpad.net/openobject-addons/+bug/1179893).

It creates a significant impediment to implementing OpenERP 7 in my workplace as Timesheet management would be a major reason to do so. Is there some way I can work around this bug in the meantime? I thought about 'pretending' we were in UTC timezone but I think that will create confusion with workers and other problems elsewhere. The bug has only been given low priority so it may take some time to fix.

Bill

2
Avatar
Kassér
Bill Ennals
Forfatter

Well, I tried messing around with the system timezone to try and compensate for this bug but it messed too many other things up, like email times and dates, file modification dates etc. It seems like this should be such an easy bug to fix, though I would have no idea how. Can't one of you coding gurus come to the rescue?:)

gunnar

we are having a similar issue with Attendances being messed up (I think same UTC issue is the core of our problem as well) http://help.openerp.com/question/31908/how-to-get-attendance-be-assigned-to-the-correct-day-for-anyone-who-is-not-in-the-utc-timezone. In our case we want a report for Attendances (to show overtime worked in a monthly report to all employees). To overcome this issue (at least on the surface) we kind of fake the output time & date in the pdf report that is being generated. Not a real solution but a cosmetical solution that helps us survive for the moment)

gunnar

hi Bill, seems there was a bugfix that solved it for you https://bugs.launchpad.net/openobject-addons/+bug/1179893. Would you mind to post a short how-to here how to get that in play? Best it would be dummy-proof I guess.

Avatar
Laura Jarvenpaa
Bedste svar

The problem is not that attendances are timestamped in utc (all the times are timestamped in utc in OpenERP) but the fact that OpenERP developers have not realized on which things this kind of forcing openERP to use utc time in database affects. Because timezone problems are like ripples, first they look really small and irrelevant but they grow bigger and bigger...

Anyway, here is temporary solution for your problem however like I said timezone problems are like ripples and you may encounter them in future in many places where you are not expecting them so be prepared for that. And as I don't use timesheets myself I didn't test this totally I just checked that the problem you described doesn't appear anymore. I.e., I made this fix just out of curiosity not because it would help me so test it properly.

And remember, this trick is just what it is: a trick which makes it look like the problem is solved but it isn't fully solved. So this solution is like a painkiller it removes the pain but doesn't remove the reason for the pain.

  1. Remove all you attendance data (old data is not updated so they will still appear on the wrong sheet even after this modification so you have to remove it).

  2. Open file [path to your openerp addons]/hr_timesheet_sheet/hr_timesheet_sheet.py It would be better to do your own module, that inherits from existing implementation, for this because as you update your OpenERP all these changes done directly to the source code will vanish.

In the beginning of file add:

import pytz

pytz is a python module for handling timezones. Then go to line 367 (this is in class hr_attendance in function _sheet)

there is for loop looking like this:

for attendance in self.browse(cursor, user, ids, context=context):
        date_to = datetime.strftime(datetime.strptime(attendance.name[0:10], '%Y-%m-%d'), '%Y-%m-%d %H:%M:%S')
        sheet_ids = sheet_obj.search(cursor, user,
            [('date_to', '>=', date_to), ('date_from', '<=', attendance.name),
             ('employee_id', '=', attendance.employee_id.id)],
            context=context)
        if sheet_ids:
            # [0] because only one sheet possible for an employee between 2 dates
            res[attendance.id] = sheet_obj.name_get(cursor, user, sheet_ids, context=context)[0]

add these line to this loop

        cursor.execute("select rp.tz as tz from res_partner as rp, res_users as ru where ru.id=%s  and ru.partner_id=rp.id", (user,))
        tz = cursor.dictfetchall()
        tz = pytz.timezone(tz[0]['tz']) or pytz.utc

        DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
        date_from = pytz.utc.localize(datetime.strptime(attendance.name, DATETIME_FORMAT)).astimezone(tz)
        date_to = pytz.utc.localize(datetime.strptime(date_to, DATETIME_FORMAT)).astimezone(tz)

So the final version of this for loop looks like this

for attendance in self.browse(cursor, user, ids, context=context):
        date_to = datetime.strftime(datetime.strptime(attendance.name[0:10], '%Y-%m-%d'), '%Y-%m-%d %H:%M:%S')

        cursor.execute("select rp.tz as tz from res_partner as rp, res_users as ru where ru.id=%s  and ru.partner_id=rp.id", (user,))
        tz = cursor.dictfetchall()
        tz = pytz.timezone(tz[0]['tz']) or pytz.utc

        DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
        date_from = pytz.utc.localize(datetime.strptime(attendance.name, DATETIME_FORMAT)).astimezone(tz)
        date_to = pytz.utc.localize(datetime.strptime(date_to, DATETIME_FORMAT)).astimezone(tz)

        sheet_ids = sheet_obj.search(cursor, user,
            [('date_to', '>=', date_to), ('date_from', '<=', date_from),
             ('employee_id', '=', attendance.employee_id.id)],
            context=context)
        if sheet_ids:
            # [0] because only one sheet possible for an employee between 2 dates                                                                        
            res[attendance.id] = sheet_obj.name_get(cursor, user, sheet_ids, context=context)[0]

NOTE: in python indentation matters so copy pasting this to your code may cause indentation failures so be sure that indentation are right (I'm not sure how much you have experience about python so thought that this is good to mention).

3.Restart your openERP server with parameter -u hr_timesheet_sheet so that hr_timesheet_sheet module is updated.

1
Avatar
Kassér
Bill Ennals
Forfatter

Thanks for your response Laura. I will give it a try when I get a chance, but as you say, if it gets overwritten whenever I update OpenERP it's of limited use. I get the feeling the developers are close to resolving the problem though.

Laura Jarvenpaa

Good if they are solving it. As I said you can also create a separate module which defines new version of this _sheet function and inherits from the original implementation so that everythime this _sheet function is called it calls this new version instead of the old one. Then changes doesn't vanish when you update your OpenERP but if you haven't done modules by yourself before it may take some time so it is better if the developers get this fixed by themselves.

Matt Taylor

This fixes only one of the problems. There are a few other problems with timezones in hr_timesheet_sheet. I submitted a patch at https://bugs.launchpad.net/openobject-addons/+bug/1179893

Avatar
Mohamed
Bedste svar

my file is different from urs, i cant find (for attendance in self.browse(cursor, user, ids, context=context):
......) . im using openerp v7.0

0
Avatar
Kassér
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Tilmeld dig
Related Posts Besvarelser Visninger Aktivitet
Attendances not using correct timezone
timezone attendance
Avatar
Avatar
1
jul. 24
4606
Best Practices for Integrating Attendance with Time Sheets in Odoo
attendance timesheets
Avatar
1
jun. 25
3105
how to get attendance be assigned to the correct day? for anyone who is not in the UTC timezone
hr timezone attendance
Avatar
Avatar
Avatar
2
jul. 24
10078
Time of check in and check out in attendance is two hours later than assigned in code Løst
timezone time attendance
Avatar
Avatar
1
dec. 23
2659
Import attendance in UTC Løst
timezone attendance importing
Avatar
1
aug. 21
3597
Community
  • Tutorials
  • Dokumentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Oversættelser
Tjenester
  • Odoo.sh-hosting
  • Support
  • Opgradere
  • Individuelt tilpasset udvikling
  • Uddannelse
  • Find en bogholder
  • Find en partner
  • Bliv partner
Om os
  • Vores virksomhed
  • Brandaktiver
  • Kontakt os
  • Stillinger
  • Arrangementer
  • Podcast
  • Blog
  • Kunder
  • Juridiske dokumenter • Privatlivspolitik
  • Sikkerhedspolitik
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo er en samling open source-forretningsapps, der dækker alle dine virksomhedsbehov – lige fra CRM, e-handel og bogføring til lagerstyring, POS, projektledelse og meget mere.

Det unikke ved Odoo er, at systemet både er brugervenligt og fuldt integreret.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now