This question has been flagged
2 Replies
5551 Views

My location is at UTC + 8,  when I sell products in POS before 8am KUL time the sale detail report will show them as yesterday records, how to fix this?

Avatar
Discard

The time zone depend on location of server and time set on server, check that may help you.

Author Best Answer

This is a serious issue, unfortunately odoo and it's support don't bother much, raised a ticket to them, took me for a ride by incompetent support,  then ask to close the ticket.

Some smart guy from the community suggested the following link and it took me another ride.  But it may help you:-

https://github.com/odoo/odoo/pull/2914  

https://github.com/odoo/odoo/pull/2776

https://github.com/odoo/odoo/pull/2915 


If you really want an easy answer, this was what I changed to make it work, it make look stupid.

Edit  addons/point_of_sale/report/pos_details.py

add 

import datetime

look for the following line

pos_ids = pos_obj.search(self.cr, self.uid, [('date_order','>=',form['date_start'] + ' 00:00:00'),('date_order','<=',form['date_end'] + ' 23:59:59'),('user_id','in',user_ids),('state','in',['done','paid','invoiced']),('company_id','=',company_id)])
 

Change it to 

pos_ids = pos_obj.search(self.cr, self.uid, [('date_order','>=', (datetime.datetime.strptime( (form['date_start'] + ' 00:00:00'), "%Y-%m-%d %H:%M:%S") - datetime.timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S") ),('date_order','<=',form['date_end'] + ' 15:59:59'),('user_id','in',user_ids),('state','in',['done','paid','invoiced']),('company_id','=',company_id)])


Take note for the following, since my location is UTC+8 , you need to change it according to you own number.

datetime.timedelta(hours=8)

form['date_end'] + ' 15:59:59' 

God knows how many more I need to change. I just hope it can be fixed it at the core.


Avatar
Discard