This question has been flagged
1 Reply
7490 Views

This issue touches two Modules (maybe more but in my case and this specific example this relates to 2 Modules)

  1. hr_attendance
  2. hr_attendance_analysis

If we have a Sign In before 08:00:00 (timezone is UTC +8)

  1. the Attendance (Sign In) is not shown under the filter "Today" but it appears under the day before
  2. an "Attendance Analysis" lists the whole Attendance (Sign In - Sign Out) under the prior day

for example:

  • Sign In 2013-09-23 07:55:00
  • Sign Out 2013-09-23 18:00:00

As far as I know OE uses UTC timecode for all entries in the database. The time you see in the interface is always calculated based on the UTC time. For example you input a Sign in at 11:00:00 your database entry will be 11 am - 8 hrs (if you are in the UTC +8 timezone as we are) = 03:00:00

And I am pretty convinced that this is where the problem lies ... If we have a Sign In before 08:00:00 (in our UTC+8 timezone) the system regards this as prior 00:00:00 (which logically is yesterday). Contrary to this inner logic it is pretty messing up things in the real world though. For example an employee gets to see an Attendance analysis which shows wrong days when he or she has worked. Also this must lead to double Attendances at one day with no attendance on the next day

  • Monday Sign in 08:00 Sign out 16:00 Attendance Analysis = Mon 08:00 - 16:00
  • Tuesday Sign in 07:59 Sign out 15:59 Attendance Analysis = Mon 07:59 - 15:59

No Attendance will be shown for Tuesday

I regard this as a bug but not sure how to file that (and how to solve it until it might get fixed). In my case I might force anybody to sign in not earlier then 8 (which luckily is our scheduled working time) but that is not a real solution naturally)

Avatar
Discard
Author

seems we are not alone (how could we, it's a very basic issue that affects a lot of things I would imagine) http://help.openerp.com/question/17404/is-there-a-workaround-for-the-bug-where-timesheet-entries-use-incorrect-timezone/ with this UTC messup. I would imagine this is a rather simple fix because it is quite obvious there are missing some 'timezome translations' so to say ... is it?

Best Answer

Yes as of now openERP is using all entries based on UTC , it save date value as +/- UTC in database , but while showing in view it's again convert the value to +/- UTC value Eg:- Am in a time zone 'Asia/Dubai' which is UTC +4

Sign In 2013-09-23 07:55:00(in UI) --> 2013-09-23 03:55:00(in DB)

I guess following is quick solution to some specific date time related entries , all that you need to do is use openERP's special context timestamp method to convert the datetime as follows.

now = fields.datetime.context_timestamp(cr, uid, datetime.now(), context=context)

will give u the datetime of the moment to signin as per your time zone.

Avatar
Discard

I have the same problem, if I use the previous line is it supposed that the DB value will change?