Siirry sisältöön
Odoo Menu
  • Kirjaudu sisään
  • Kokeile ilmaiseksi
  • Sovellukset
    Talous
    • Kirjanpito
    • Laskutus
    • Kulut
    • Datataulukot (BI)
    • Asiakirjat
    • Allekirjoita
    Myynti
    • CRM
    • Myynti
    • Kassajärjestelmä myymälään
    • Kassajärjestelmä ravintolaan
    • Tilaukset
    • Vuokraus
    Verkkosivut
    • Verkkosivun Rakennustyökalu
    • Verkkokauppa
    • Blogi
    • Foorumi
    • Livechat
    • Verkko-oppiminen
    Toimitusketju
    • Varastointi
    • Tuotanto
    • Tuotteen elinkaaren hallinta (PLM)
    • Ostot
    • Huolto
    • Laatu
    Henkilöstöhallinto
    • Työntekijät
    • Rekrytointi
    • Vapaat
    • Arvioinnit
    • Suositukset
    • Kuljetuskalusto
    Markkinointi
    • Somemarkkinointi
    • Sähköpostimarkkinointi
    • Tekstiviestimarkkinointi
    • Tapahtumat
    • Markkinoinnin automaatio
    • Kyselyt
    Palvelut
    • Projekti
    • Työaikakirjaukset
    • Kenttähuolto
    • Asiakaspalvelu
    • Suunnittelu
    • Ajanvaraukset
    Tuottavuus
    • Viestintä
    • Hyväksynnät
    • IoT
    • IP-puhe
    • Tietokirjasto
    • WhatsApp
    Kolmannen osapuolen sovellukset Odoo-Studio Odoo-Pilvialusta
  • Toimialat
    Vähittäiskauppa
    • Kirjakauppa
    • Vaatekauppa
    • Huonekaluliike
    • Ruokakauppa
    • Laitteistokauppa
    • Lelukauppa
    Ruoka & Majoitus
    • Baari ja Pubi
    • Ravintola
    • Pikaruoka
    • Majatalo
    • Juomien jakelija
    • Hotelli
    Kiinteistöt
    • Kiinteistönvälitystoimisto
    • Arkkitehtitoimisto
    • Rakentaminen
    • Kiinteistönhallinta
    • Puutarhanhoito
    • Kiinteistön omistajien yhdistys
    Konsultointi
    • Tilitoimisto
    • Odoo-kumppani
    • Markkinointitoimisto
    • Lakitoimisto
    • Osaajahankinta
    • Tilintarkastus & sertifiointi
    Tuotanto
    • Tekstiili
    • Metalli
    • Huonekalut
    • Ruoka
    • Panimo
    • Yrityslahjat
    Terveys & Liikunta
    • Urheiluseura
    • Silmälasiliike
    • Kuntokeskus
    • Hyvinvointialan ammattilaiset
    • Apteekki
    • Kampaamo
    Kaupat
    • Yleismies
    • IT-laitteisto & Tuki
    • Aurinkoenergiajärjestelmät
    • Suutari
    • Siivouspalvelut
    • LVI-palvelut
    Muut
    • Voittoa tavoittelematon järjestö
    • Ympäristötoimisto
    • Mainostaulujen vuokraus  
    • Valokuvaus
    • Leasing-pyörät
    • Ohjelmistojen jälleenmyyjä
    Selaa kaikkia toimialoja
  • Yhteisö
    Opi
    • Kurssit
    • Dokumentaatio
    • Todistukset
    • Koulutus
    • Blogi
    • Podcast
    Kannusta kouluttautumaan
    • Koulutusohjelmat
    • Scale Up! Liiketoimintapeli
    • Vieraile Odoolla
    Hanki ohjelmisto
    • Lataa
    • Vertaile versioita
    • Julkaisut
    Tee yhteistyötä
    • Github
    • Foorumi
    • Tapahtumat
    • Käännökset
    • Ryhdy kumppaniksi
    • Kumppanipalvelut
    • Rekisteröi tilitoimistosi
    Hanki palveluja
    • Löydä kumppani
    • Löydä kirjanpitäjä
    • Varaa asiantuntijatapaaminen
    • Implementaatiopalvelut
    • Asiakasreferenssit
    • Tuki
    • Versionkorotukset
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Varaa demo
  • Hinnoittelu
  • Asiakaspalvelu

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

  • CRM
  • e-Commerce
  • Kirjanpito
  • Varastointi
  • PoS
  • Projekti
  • MRP
All apps
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Kaikki kirjoitukset Ihmiset Merkit
Tunnisteet (Näytä kaikki)
odoo accounting v14 pos v15
Tietoa tästä foorumista
Sinun on rekisteröidyttävä, jotta voit olla vuorovaikutuksessa yhteisön kanssa.
Kaikki kirjoitukset Ihmiset Merkit
Tunnisteet (Näytä kaikki)
odoo accounting v14 pos v15
Tietoa tästä foorumista
Apua

Despite correct terminal outputs, Odoo's frontend displays a different value of check-out hours (a TZ problem)

Tilaa

Saat ilmoituksen, kun tähän viestiin ilmaantuu aktiviteettia

Tämä kysymys on merkitty
hremployeeattendancetimezones
3064 Näkymät
Avatar
Victor Schumann

Hello everyone,

I hope you are having a good day. I have encountered an issue with the code bellow.


PROBLEM:

Despite the output being as expected, when I navigate to the Attendances module, I notice that the checkout times for the employees are not correct. The employee was checked out at 15:00 (instead of 14:00), and the admin was checked out at 19:00 (instead of 18:00). I believe two factors might be causing this issue, but I am uncertain how to resolve them:

  1. The server's timezone and the current time appear to be incorrect. The TZ is set to None, and the current time is defaulting to GMT 0, as indicated in the output. This might be causing Odoo to adjust the checkout times by adding +01:00:00 to them.

  2. We are currently observing daylight saving time in Lisbon/Europe, which could also be contributing to the discrepancy in checkout times.

I attempted to address this by forcing the functions to use the Administrator's timezone instead of the server's timezone, but it did not resolve the issue. I even tried to alter the hidden user OdooBot, and setting up a timezone, without results.

If anyone has insights on how to rectify this situation, I would greatly appreciate your assistance.

Thank you in advance, and have a nice day.

Best regards,


CODE:

from odoo import _, api, fields, models
from datetime import datetime
import pytz

class HrAttendance(models.Model):
_inherit = 'hr.attendance'

def _auto_attendance_checkout(self):
current_time_lisbon = datetime.now(pytz.timezone('Europe/Lisbon'))
current_time_brazil = datetime.now(pytz.timezone('America/Sao_Paulo'))

# admin_datetime gets the admin user tz (same format as above):
admin_datetime = datetime.now(pytz.timezone(self.env['res.users'].browse(1).tz))

checked_out_records = self.search([('check_out', '=', False), ('check_in', '!=', False)])
for record in checked_out_records:
check_in_datetime = fields.Datetime.from_string(record.check_in)

# Convert current datetime to user's timezone
converted_datetime = self._convert_to_admin_tz(record.employee_id, admin_datetime)

# Calculate logout time in user's timezone
logout_time_user_tz = self._get_logout_time(admin_datetime, record.employee_id)

# Update check_out field with logout time
record.check_out = logout_time_user_tz.strftime('%Y-%m-%d %H:%M:%S')

print(f"\n============== USER DATA ==============\n")
print(f"\tUSER NAME: {record.employee_id.name}")
print(f"\tUSER TIME (ADMIN TZ): {converted_datetime}")

print(f"\n\tCHECK IN: {check_in_datetime}")
print(f"\tCHECK OUT: {record.check_out}")

print(f"\n\tLISBON TZ: {current_time_lisbon}")
print(f"\tBRAZIL TZ: {current_time_brazil}")
print(f"\tADMIN TZ: {admin_datetime}")
print(f"\tSERVER DATETIME: {fields.Datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print(f"\tSERVER TZ: {fields.Datetime.now().tzname()}\n")

def _convert_to_admin_tz(self, employee, admin_tz):
user_tz = pytz.timezone(employee.tz)
converted_datetime = admin_tz.astimezone(user_tz)

return converted_datetime

def _get_logout_time(self, check_in_datetime, employee):
user_tz = pytz.timezone(employee.tz)
logout_time = check_in_datetime.replace(hour=18, minute=0, second=0)
convert_checkout_time = logout_time.astimezone(user_tz)

return convert_checkout_time


TERMINAL OUTPUT:

============== USER DATA ==============

USER NAME: Employee from Brazil
USER TIME (ADMIN TZ): 2023-05-10 11:22:22.346949-03:00

CHECK IN: 2023-05-10 08:26:53
CHECK OUT: 2023-05-10 14:00:00

LISBON TZ: 2023-05-10 15:22:22.344828+01:00
BRAZIL TZ: 2023-05-10 11:22:22.344981-03:00
ADMIN TZ: 2023-05-10 15:22:22.346949+01:00
SERVER DATETIME: 2023-05-10 14:22:22
SERVER TZ: None


============== USER DATA ==============

USER NAME: Administrator from Portugal
USER TIME (ADMIN TZ): 2023-05-10 15:22:22.346949+01:00

CHECK IN: 2023-05-10 08:04:47
CHECK OUT: 2023-05-10 18:00:00

LISBON TZ: 2023-05-10 15:22:22.344828+01:00
BRAZIL TZ: 2023-05-10 11:22:22.344981-03:00
ADMIN TZ: 2023-05-10 15:22:22.346949+01:00
SERVER DATETIME: 2023-05-10 14:22:22
SERVER TZ: None


0
Avatar
Hylkää
Nautitko keskustelusta? Älä vain lue, vaan osallistu!

Luo tili jo tänään nauttiaksesi yksinoikeusominaisuuksista ja osallistuaksesi mahtavaan yhteisöömme!

Rekisteröidy
Aiheeseen liittyviä artikkeleita Vastaukset Näkymät Toimenpide
Connect fingerprint devices to Odoo Ratkaistu
hr attendance
Avatar
Avatar
1
toukok. 25
2209
Employee Attendance Resume Per Day
employee attendance
Avatar
0
marrask. 24
1707
Flexible Working Hours
hr employee payroll attendance working_time
Avatar
0
marrask. 23
80
Allow employees to see their own attendances Ratkaistu
hr attendance
Avatar
Avatar
Avatar
Avatar
Avatar
6
tammik. 23
18619
odoo13: Button with function of capture image Ratkaistu
hr attendance
Avatar
Avatar
2
jouluk. 22
5891
Yhteisö
  • Kurssit
  • Dokumentaatio
  • Foorumi
Avoin lähdekoodi
  • Lataa
  • Github
  • Runbot
  • Käännökset
Palvelut
  • Odoo.sh hosting
  • Tuki
  • Versionkorotus
  • Räätälöidyt kehitykset
  • Koulutus
  • Löydä kirjanpitäjä
  • Löydä kumppani
  • Ryhdy kumppaniksi
Meistä
  • Yrityksemme
  • Brändiominaisuudet
  • Ota yhteyttä
  • Työpaikat
  • Tapahtumat
  • Podcast
  • Blogi
  • Asiakkaat
  • Oikeudellinen ilmoitus • Yksityisyys
  • Tietoturva
الْعَرَبيّة 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 on kokoelma avoimen lähdekoodin yrityssovelluksia, jotka kattavat kaikki yrityksesi tarpeet: asiakkuudenhallinta eli CRM, verkkokauppa, kirjanpito, varastointi, kassajärjestelmä, projektinhallinta, jne.

Odoon uniikki arvolupaus on olla samanaikaisesti erittäin helppokäyttöinen ja täysin integroitu.

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