Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

Publicidad

Mostrando las entradas con la etiqueta error fechas openerp. Mostrar todas las entradas
Mostrando las entradas con la etiqueta error fechas openerp. Mostrar todas las entradas

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.