Перейти к содержимому
Odoo Меню
  • Войти
  • Попробовать бесплатно
  • Модули
    Финансы
    • Бухгалтерия
    • Выставление счетов
    • Расходы
    • Таблицы
    • Документооборот
    • Подпись
    Продажи
    • CRM
    • Продажи
    • POS Магазин
    • POS Ресторан
    • Подписки
    • Аренда
    Вебсайты
    • Конструктор вебсайтов
    • eCommerce
    • Блог
    • Форум
    • Онлайн-чат
    • Электронное обучение
    Логистика
    • Склад
    • Производство
    • PLM
    • Закупки
    • Обслуживание
    • Качество
    Отдел кадров
    • Сотрудники
    • Подбор персонала
    • Отпуска
    • Оценка персонала
    • Реферальная программа
    • Автопарк
    Маркетинг
    • SMM
    • E-mail рассылки
    • СМС рассылки
    • Мероприятия
    • Автоматизация маркетинга
    • Опросы
    Услуги
    • Проекты
    • Табели
    • Выездной сервис
    • Поддержка
    • Планирование
    • Встречи
    Продуктивность
    • Обсуждения
    • Согласование
    • IoT
    • VoIP-телефония
    • Knowledge
    • WhatsApp
    Сторонние приложения Модуль Студия Odoo Платформа Odoo Cloud
  • Индустрии
    Розничная торговля
    • Книжный магазин
    • Магазин одежды
    • Мебельный магазин
    • Продуктовый магазин
    • Строительный магазин
    • Магазин игрушек
    Гостинично-ресторанный бизнес
    • Бар и паб
    • Ресторан
    • Фастфуд
    • Гостевой дом
    • Дистрибьютор напитков
    • Отель
    Недвижимость
    • Агентство недвижимости
    • Архитектурное бюро
    • Строительство
    • Управление недвижимостью
    • Ландшафтный дизайн
    • Товарищество собственников жилья
    Консалтинг
    • Бухгалтерская фирма
    • Партнер Odoo
    • Маркетинговое агентство
    • Юридическая фирма
    • Подбор персонала
    • Аудиторское бюро
    Производство
    • Текстиль
    • Металл
    • Мебель
    • Продукты питания
    • Пивоварня
    • Корпоративные сувениры
    Здоровье и фитнес
    • Спортивный комплекс
    • Магазин оптики
    • Фитнес-клуб
    • Велнес-центр
    • Аптека
    • Салон красоты
    Услуги
    • Специалист по бытовым услугам
    • Продажа и обслуживание IT-оборудования
    • Солнечные энергосистемы
    • Производство обуви
    • Клининг
    • Системы ОВКВ
    Прочее
    • Некоммерческая организация
    • Консалтинг в сфере устойчивого развития
    • Аренда рекламных щитов
    • Бизнес по фотосъемке
    • Прокат велосипедов
    • Реселлер программного обеспечения
    Все индустрии
  • Community
    Обучение
    • Видео уроки
    • Документация
    • Сертификация
    • Тренинг
    • Блог
    • Подкаст
    Образование и развитие
    • Образовательная программа
    • Деловая игра Scale Up!
    • Экскурсия в офис Odoo
    ПО
    • Скачать
    • Сравнить версии
    • Релизы
    Сотрудничество
    • Github
    • Форум
    • Мероприятия
    • Перевод
    • Стать партнером
    • Услуги для партнеров
    • Зарегистрировать бухгалтерскую фирму
    Услуги
    • Найти партнера
    • Найти бухгалтера
    • Встреча с экспертом
    • Услуги по внедрению
    • Отзывы клиентов
    • Поддержка
    • Обновления
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Заказать демонстрацию
  • Цены
  • Поддержка

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

  • CRM
  • e-Commerce
  • Бухгалтерия
  • Склад
  • PoS
  • Проекты
  • MRP
All apps
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Помощь

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

Подписаться

Получайте уведомления о появлении активности в этом посте

Этот вопрос был отмечен
timezonev7attendancetimesheets
2 Ответы
11316 Представления
Аватар
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
Аватар
Отменить
Bill Ennals
Автор

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.

Аватар
Laura Jarvenpaa
Лучший ответ

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
Аватар
Отменить
Bill Ennals
Автор

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

Аватар
Mohamed
Лучший ответ

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
Аватар
Отменить
Не оставайтесь в стороне – присоединяйтесь к обсуждению!

Создайте аккаунт сегодня, чтобы получить доступ к эксклюзивным функциям и стать частью нашего замечательного сообщества!

Регистрация
Похожие посты Ответы Просмотры Активность
Attendances not using correct timezone
timezone attendance
Аватар
Аватар
1
июл. 24
4618
Best Practices for Integrating Attendance with Time Sheets in Odoo
attendance timesheets
Аватар
1
июн. 25
3112
how to get attendance be assigned to the correct day? for anyone who is not in the UTC timezone
hr timezone attendance
Аватар
Аватар
Аватар
2
июл. 24
10090
Time of check in and check out in attendance is two hours later than assigned in code Решено
timezone time attendance
Аватар
Аватар
1
дек. 23
2665
Import attendance in UTC Решено
timezone attendance importing
Аватар
1
авг. 21
3602
Сообщество
  • Видео уроки
  • Документация
  • Форум
Открытый исходный код
  • Скачать
  • Github
  • Runbot
  • Перевод
Услуги
  • Хостинг Odoo.sh
  • Поддержка
  • Обновление
  • Индивидуальные решения по доработке
  • Образование
  • Найти бухгалтера
  • Найти партнера
  • Стать партнером
О нас
  • Наша компания
  • Активы бренда
  • Cвяжитесь с нами
  • Вакансии
  • Мероприятия
  • Подкаст
  • Блог
  • Клиенты
  • Правовые документы • Конфиденциальность
  • Безопасность
الْعَرَبيّة 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 – это набор бизнес-модулей с открытым исходным кодом, который закроет все потребности вашей компании: CRM, E-commerce, Бухгалтерия, Склад, POS, управление проектами и др.

Odoo сочетает в себе простоту использования и полную интеграцию всех бизнес-процессов в одной системе.

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