Consulta SQL en Odoo corrigiendo el error de la zona horaria en el resultado de la consulta de un periodo
La siguiente Consulta SQL resuelve el error de la Zona Horario Odoo, como sabran la base de datos se encuentra en UTC o zona horaria central por lo cual visualmente dentro del sistema se realiza la conversión a la zona horaria del usuario y se muestra correctamente, pero en base de datos podemos tener una diferencia en campos fecha/hora, por lo cual al realizar una consulta esta puede abarcar un periodo que no es correcto, para ello lo unico que requerimos es dentro de la conulta convertir la columna de fecha/hora a nuestra zona horaria, para este ejemplo utilizare la zona horaria de Mexico UTC-6.
from datetime import timedelta, datetime
La clave esta en convertir la columna fecha/hora a UTC-6
start_period = self.date_start + " 00:00:01" start_period_strp = datetime.strptime(start_period, '%Y-%m-%d %H:%M:%S') start_period_tz = fields.Datetime.context_timestamp(self, timestamp=start_period_strp) end_period = self.date_stop + " 23:59:59" end_period_strp = datetime.strptime(end_period, '%Y-%m-%d %H:%M:%S') end_period_tz = fields.Datetime.context_timestamp(self, timestamp=end_period_strp) get_list_contacts_partner = self.get_parners_list(self.supplier_id) product_list = [] cr.execute(""" insert into supplier_puchase_detail_record( supplier_id, product_id, uom_id, qty_total, qty_available ) select %s, stock_move.product_id, stock_move.product_uom, sum(stock_move.product_uom_qty), 0.0 from stock_move join stock_picking on stock_move.picking_id = stock_picking.id join purchase_order_line on purchase_order_line.id = stock_move.purchase_line_id where stock_picking.partner_id in %s and (stock_picking.date_done at time zone 'UTC-6') between %s and %s group by stock_move.product_id, stock_move.product_uom """, (self.supplier_id.id, tuple(get_list_contacts_partner), start_period_tz, end_period_tz))
0 comentarios:
Publicar un comentario