Publicidad

miƩrcoles, 27 de mayo de 2015

Corregir el Error de la Zona Horario en Odoo (OpenERP)


Corregir el Error de la Zona Horario en Formularios Odoo (OpenERP




    Muchos Tenemos Errores al momento de generar, Facturas, Pedidos de Venta, Compras, etc..., debido a que Odoo maneja el horario EstĆ”ndar y aunque se configura la Zona Horaria Correcta para cada usuario, esta no se ve reflejada.

Si tu no encuentras SoluciĆ³n Para este Error, aquĆ­ te presento la SoluciĆ³n:

Primero Tenemos que tener Instaladas las librerias:

  • datetime
  • pytz
  • time

Ahora en Odoo importamos estas librerias:
from datetime import date, datetime, timedelta
import time
import pytz

Ahora un ejemplo, primero tomare la fecha actual que me ofrece odoo y la transformare a la Zona Horaria del Usuario Logeado:
date_now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
start = datetime.strptime(date_now, "%Y-%m-%d %H:%M:%S")
user = self.pool.get('res.users').browse(cr, uid, uid)
tz = pytz.timezone(user.tz) if user.tz else pytz.utc
start = pytz.utc.localize(start).astimezone(tz)     
tz_date = start.strftime("%Y-%m-%d %H:%M:%S")
### tz_date es la fecha correcta con la zona hroaria
print "########################## DATE FINAL TZ >>> ", tz_date

Si necesitƔramos corregir la fecha y hora de un registro bastaria con hacerlo de la siguiente forma:

for rec in self.browse(cr, uid, ids, context):
    field_date = rec.date ## Campo Fecha del Formulario
    start = datetime.strptime(field_date, "%Y-%m-%d %H:%M:%S")
    user = self.pool.get('res.users').browse(cr, uid, uid)
    tz = pytz.timezone(user.tz) if user.tz else pytz.utc
    start = pytz.utc.localize(start).astimezone(tz)     
    tz_date = start.strftime("%Y-%m-%d %H:%M:%S")
    ### tz_date es la fecha correcta con la zona hroaria
    print "########################## DATE FINAL TZ >>> ", tz_date

Como vimos en el ejemplo anterior, primero obtenemos el valor de campo fecha/fecha_hora, despuƩs solo hacemos unas conversiones para pasarlo a la librerƭa pytz.


Espero que les sea de ayuda.



1 comentario:

  1. Hola GermƔn, me asalta la duda de como utilizar este ejemplo, deberƭa crear un nuevo archivo con llamadas? copiar esto dentro de orm.py? es que no me queda del todo claro.
    De antemano muchas gracias

    ResponderBorrar