-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
date în UTC (baza de date) și timezone-ul utilizatorului #65
Comments
Aici poti calcula cu pytz din utc in timezone utilizator asociat angajatului daca are sau userul care e pus in timesheet...attendance... |
Sau serverul pe bucharest si cu fields.datetime... |
Serverul ignora timezone. Ramane in UTC. |
Corect @filsys. Odoo ia teoretic câmpurile date şi datetime şi le transformă în UTC. Aici intervine partea tâmpită. Să zicem că-ţi pui concediu de la începutul lunii viitoare. Când o să se facă ştatul o să apară o zi de concediu în luna curentă. Asta pentru că în db n-o să scrie 2015-03-01 00:00:00 ci 2015-02-28 22:00:00. Am găsit un pull la odoo, dar linkul e pe comp, care teoretic ar rezolva problema. O s-o testez mâine. Oricum, e o problemă serioasă care afectează multe părţi ale modulelor de hr care fac de ex căutări direct pe resultset cu filtre pe data fără să ia în considerare tz. |
E din pacate o problema veche de cel putin 3ani.. credeam ca a fost O idee (netestata) ar fi sa stochezi si tz si sa se faca conversia cand e Sunt multe discutii pe launchpad.
|
In hr sunt totusi putine tranzactii. Iar cele de concediu pot fi evitate in RO. E vorba de doar 2 ore. Mai problematic este pe pontajele sign_id/out pe schimbul 2 si 3. Insa in stocuri pot fi mii de tranzactii in perioada de interferenta (00:00 - 01:59). In B.D. vor fi in ziua anterioara. Mai mult, contabilitatea pentru ele este generata in ziua anterioara. Pentru data de 01.ale lunii, toate receptiile procesate intre orele 00:01 si 01:59 vor fi in contabilitatea lunii anteriaore. Problema se mosteneste in rapoarte. |
Da dar in noul api fields ai la datetime context_timestamp care iti ia direct in timezone user...e adevarat ca trebuie rescrise mai toate functiile ce iti dau interval ca sa fie corect...in cel vechi luam direct orele 10 zi 4 pentru calcul |
E mai usor in noul api, dar tot trebuie rescrise functiile. Si avand in vedere ca impactul este mai ales pe functiile din modulele standard (nu in localizari), cred ca se incadreaza in categoria bug major de core/framework. Discutia asta se poarta de multa vreme. Dar cei de la OpenERP S.A. sunt ocupati cu schimbarea de licentiere: AGPL sa te oblige sa le dai codul, LGPL sa-l ia si sa-l valorifice fara restrictii. |
Ideea e bună să ai în db un standard, problema e în aplicaţiile care o folosesc, ele ar trebui să facă transformările. |
Uite şi issue de la ei specific statului de plată: |
uitati-va daca vreti si in odoo/odoo#5378 si odoo/odoo#5379. dar eu cred ca problema e rezolvata numai pe jumatate... |
Cred că am găsit solutia pt stat. sunt 3 tabele/modele hr_holidays, resource_calendar şi resource_calendar_leaves. |
o ciudățenie... (bug vechi? de pe vremea 6.1 și cam afectează tot hr-ul - attendance/timesheets/payroll și cam tot ce folosește field.Datetime/calendar)
când introduci o cerere de concediu, în baza de date se salvează date_from & date_to în format UTC, dar tu introduci cu timezone-ul tău (+2h pt bucurești). exemplu concret: introduc e cerere de 2h la începutul programului de lucru (8:00-10:00 și programul de lucru 08-16). partea nasoală se întâmplă când e cererea de la 00:00, îți calculează 2 zile de concediu că în baza de date apare ca ziua precedentă 22:00.
aici m-am blocat la salarizare.
The text was updated successfully, but these errors were encountered: