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_dateSi 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.