Skip to Content
Odoo Menu
  • Zaloguj się
  • Wypróbuj za darmo
  • Aplikacje
    Finanse
    • Księgowość
    • Fakturowanie
    • Wydatki
    • Arkusz kalkulacyjny (BI)
    • Dokumenty
    • Podpisy
    Sprzedaż
    • CRM
    • Sprzedaż
    • PoS Sklep
    • PoS Restauracja
    • Subskrypcje
    • Wypożyczalnia
    Strony Internetowe
    • Kreator Stron Internetowych
    • eCommerce
    • Blog
    • Forum
    • Czat na Żywo
    • eLearning
    Łańcuch dostaw
    • Magazyn
    • Produkcja
    • PLM
    • Zakupy
    • Konserwacja
    • Jakość
    Zasoby Ludzkie
    • Pracownicy
    • Rekrutacja
    • Urlopy
    • Ocena pracy
    • Polecenia Pracownicze
    • Flota
    Marketing
    • Marketing Społecznościowy
    • E-mail Marketing
    • SMS Marketing
    • Wydarzenia
    • Automatyzacja Marketingu
    • Ankiety
    Usługi
    • Projekt
    • Ewidencja czasu pracy
    • Usługi Terenowe
    • Helpdesk
    • Planowanie
    • Spotkania
    Produktywność
    • Dyskusje
    • Zatwierdzenia
    • IoT
    • VoIP
    • Baza wiedzy
    • WhatsApp
    Aplikacje trzecich stron Studio Odoo Odoo Cloud Platform
  • Branże
    Sprzedaż detaliczna
    • Księgarnia
    • Sklep odzieżowy
    • Sklep meblowy
    • Sklep spożywczy
    • Sklep z narzędziami
    • Sklep z zabawkami
    Żywienie i hotelarstwo
    • Bar i Pub
    • Restauracja
    • Fast Food
    • Pensjonat
    • Dystrybutor napojów
    • Hotel
    Agencja nieruchomości
    • Agencja nieruchomości
    • Biuro architektoniczne
    • Budowa
    • Zarządzanie nieruchomościami
    • Ogrodnictwo
    • Stowarzyszenie właścicieli nieruchomości
    Doradztwo
    • Biuro księgowe
    • Partner Odoo
    • Agencja marketingowa
    • Kancelaria prawna
    • Agencja rekrutacyjna
    • Audyt i certyfikacja
    Produkcja
    • Tekstylia
    • Metal
    • Meble
    • Jedzenie
    • Browar
    • Prezenty firmowe
    Zdrowie & Fitness
    • Klub sportowy
    • Salon optyczny
    • Centrum fitness
    • Praktycy Wellness
    • Apteka
    • Salon fryzjerski
    Transakcje
    • Złota rączka
    • Wsparcie Sprzętu IT
    • Systemy energii słonecznej
    • Szewc
    • Firma sprzątająca
    • Usługi HVAC
    Inne
    • Organizacja non-profit
    • Agencja Środowiskowa
    • Wynajem billboardów
    • Fotografia
    • Leasing rowerów
    • Sprzedawca oprogramowania
    Przeglądaj wszystkie branże
  • Community
    Ucz się
    • Samouczki
    • Dokumentacja
    • Certyfikacje
    • Szkolenie
    • Blog
    • Podcast
    Pomóż w nauce innym
    • Program Edukacyjny
    • Scale Up! Gra biznesowa
    • Odwiedź Odoo
    Skorzystaj z oprogramowania
    • Pobierz
    • Porównaj edycje
    • Wydania
    Współpracuj
    • Github
    • Forum
    • Wydarzenia
    • Tłumaczenia
    • Zostań partnerem
    • Usługi dla partnerów
    • Zarejestruj swoją firmę rachunkową
    Skorzystaj z usług
    • Znajdź partnera
    • Znajdź księgowego
    • Spotkaj się z doradcą
    • Usługi wdrożenia
    • Opinie klientów
    • Wsparcie
    • Aktualizacje
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Zaplanuj demo
  • Cennik
  • Pomoc

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

  • CRM
  • e-Commerce
  • Księgowość
  • Zapasy
  • PoS
  • Projekt
  • MRP
All apps
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
Wszystkie posty Osoby Odznaki
Tagi (Zobacz wszystko)
odoo accounting v14 pos v15
O tym forum
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
Wszystkie posty Osoby Odznaki
Tagi (Zobacz wszystko)
odoo accounting v14 pos v15
O tym forum
Pomoc

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

Zaprenumeruj

Otrzymaj powiadomienie o aktywności w tym poście

To pytanie dostało ostrzeżenie
timezonev7attendancetimesheets
2 Odpowiedzi
11252 Widoki
Awatar
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
Awatar
Odrzuć
Bill Ennals
Autor

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.

Awatar
Laura Jarvenpaa
Najlepsza odpowiedź

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
Awatar
Odrzuć
Bill Ennals
Autor

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

Awatar
Mohamed
Najlepsza odpowiedź

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
Awatar
Odrzuć
Podoba Ci się ta dyskusja? Dołącz do niej!

Stwórz konto dzisiaj, aby cieszyć się ekskluzywnymi funkcjami i wchodzić w interakcje z naszą wspaniałą społecznością!

Zarejestruj się
Powiązane posty Odpowiedzi Widoki Czynność
Attendances not using correct timezone
timezone attendance
Awatar
Awatar
1
lip 24
4557
Best Practices for Integrating Attendance with Time Sheets in Odoo
attendance timesheets
Awatar
1
cze 25
3091
how to get attendance be assigned to the correct day? for anyone who is not in the UTC timezone
hr timezone attendance
Awatar
Awatar
Awatar
2
lip 24
10027
Time of check in and check out in attendance is two hours later than assigned in code Rozwiązane
timezone time attendance
Awatar
Awatar
1
gru 23
2605
Import attendance in UTC Rozwiązane
timezone attendance importing
Awatar
1
sie 21
3555
Społeczność
  • Samouczki
  • Dokumentacja
  • Forum
Open Source
  • Pobierz
  • Github
  • Runbot
  • Tłumaczenia
Usługi
  • Hosting Odoo.sh
  • Wsparcie
  • Aktualizacja
  • Indywidualne rozwiązania
  • Edukacja
  • Znajdź księgowego
  • Znajdź partnera
  • Zostań partnerem
O nas
  • Nasza firma
  • Zasoby marki
  • Skontaktuj się z nami
  • Oferty pracy
  • Wydarzenia
  • Podcast
  • Blog
  • Klienci
  • Informacje prawne • Prywatność
  • Bezpieczeństwo Odoo
الْعَرَبيّة 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 to pakiet aplikacji biznesowych typu open source, które zaspokoją wszystkie potrzeby Twojej firmy: CRM, eCommerce, księgowość, inwentaryzacja, punkt sprzedaży, zarządzanie projektami itp.

Unikalną wartością Odoo jest to, że jest jednocześnie bardzo łatwe w użyciu i w pełni zintegrowane.

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