Skip to Content
Odoo Menu
  • Prijavi
  • Try it free
  • Aplikacije
    Finance
    • Knjigovodstvo
    • Obračun
    • Stroški
    • Spreadsheet (BI)
    • Dokumenti
    • Podpisovanje
    Prodaja
    • CRM
    • Prodaja
    • POS Shop
    • POS Restaurant
    • Naročnine
    • Najem
    Spletne strani
    • Website Builder
    • Spletna trgovina
    • Blog
    • Forum
    • Pogovor v živo
    • eUčenje
    Dobavna veriga
    • Zaloga
    • Proizvodnja
    • PLM
    • Nabava
    • Vzdrževanje
    • Kakovost
    Kadri
    • Kadri
    • Kadrovanje
    • Odsotnost
    • Ocenjevanja
    • Priporočila
    • Vozni park
    Marketing
    • Družbeno Trženje
    • Email Marketing
    • SMS Marketing
    • Dogodki
    • Avtomatizacija trženja
    • Ankete
    Storitve
    • Projekt
    • Časovnice
    • Storitve na terenu
    • Služba za pomoč
    • Načrtovanje
    • Termini
    Produktivnost
    • Razprave
    • Odobritve
    • IoT
    • Voip
    • Znanje
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industrije
    Trgovina na drobno
    • Book Store
    • Trgovina z oblačili
    • Trgovina s pohištvom
    • Grocery Store
    • Trgovina s strojno opremo računalnikov
    • Trgovina z igračami
    Food & Hospitality
    • Bar and Pub
    • Restavracija
    • Hitra hrana
    • Guest House
    • Beverage Distributor
    • Hotel
    Nepremičnine
    • Real Estate Agency
    • Arhitekturno podjetje
    • Gradbeništvo
    • Estate Management
    • Vrtnarjenje
    • Združenje lastnikov nepremičnin
    Svetovanje
    • Računovodsko podjetje
    • Odoo Partner
    • Marketinška agencija
    • Law firm
    • Pridobivanje talentov
    • Audit & Certification
    Proizvodnja
    • Tekstil
    • Metal
    • Pohištvo
    • Hrana
    • Brewery
    • Poslovna darila
    Health & Fitness
    • Športni klub
    • Trgovina z očali
    • Fitnes center
    • Wellness Practitioners
    • Lekarna
    • Frizerski salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Sistemi sončne energije
    • Izdelovalec čevljev
    • Čistilne storitve
    • HVAC Services
    Ostali
    • Neprofitna organizacija
    • Agencija za okolje
    • Najem oglasnih panojev
    • Fotografija
    • Najem koles
    • Prodajalec programske opreme
    Browse all Industries
  • Skupnost
    Learn
    • Tutorials
    • Dokumentacija
    • Certifikati
    • Šolanje
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Prenesi
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Dogodki
    • Prevodi
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
    • Meet an advisor
    • Implementation Services
    • Sklici kupca
    • Podpora
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Get a demo
  • Določanje cen
  • Pomoč

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

  • CRM
  • e-Commerce
  • Knjigovodstvo
  • Zaloga
  • PoS
  • Projekt
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Ključne besede (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Ključne besede (View all)
odoo accounting v14 pos v15
About this forum
Pomoč

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

Naroči se

Get notified when there's activity on this post

This question has been flagged
timezonev7attendancetimesheets
2 Odgovori
11249 Prikazi
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
Opusti
Bill Ennals
Avtor

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
Best Answer

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
Opusti
Bill Ennals
Avtor

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
Best Answer

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
Opusti
Enjoying the discussion? Don't just read, join in!

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

Prijavi
Related Posts Odgovori Prikazi Aktivnost
Attendances not using correct timezone
timezone attendance
Avatar
Avatar
1
jul. 24
4556
Best Practices for Integrating Attendance with Time Sheets in Odoo
attendance timesheets
Avatar
1
jun. 25
3089
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
10027
Time of check in and check out in attendance is two hours later than assigned in code Solved
timezone time attendance
Avatar
Avatar
1
dec. 23
2604
Import attendance in UTC Solved
timezone attendance importing
Avatar
1
avg. 21
3549
Community
  • Tutorials
  • Dokumentacija
  • Forum
Open Source
  • Prenesi
  • Github
  • Runbot
  • Prevodi
Services
  • Odoo.sh Hosting
  • Podpora
  • Nadgradnja
  • Custom Developments
  • Izobraževanje
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Sredstva blagovne znamke
  • Kontakt
  • Zaposlitve
  • Dogodki
  • Podcast
  • Blog
  • Stranke
  • Pravno • Zasebnost
  • Varnost
الْعَرَبيّة 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 is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

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