[FIX] sale_order_dates yml fixed + calls to fields.date.date_to_datetime function fixed + improved in order to use it in purchase as well
bzr revid: qdp-launchpad@openerp.com-20140416154830-ec6kbs3bupd4j5vt
This commit is contained in:
parent
6d21e85454
commit
dd47f684f0
|
@ -638,29 +638,6 @@ class purchase_order(osv.osv):
|
||||||
self.signal_purchase_cancel(cr, uid, ids)
|
self.signal_purchase_cancel(cr, uid, ids)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def date_to_datetime(self, cr, uid, userdate, context=None):
|
|
||||||
""" Convert date values expressed in user's timezone to
|
|
||||||
server-side UTC timestamp, assuming a default arbitrary
|
|
||||||
time of 12:00 AM - because a time is needed.
|
|
||||||
|
|
||||||
:param str userdate: date string in in user time zone
|
|
||||||
:return: UTC datetime string for server-side use
|
|
||||||
"""
|
|
||||||
# TODO: move to fields.datetime in server after 7.0
|
|
||||||
user_date = datetime.strptime(userdate, DEFAULT_SERVER_DATE_FORMAT)
|
|
||||||
if context and context.get('tz'):
|
|
||||||
tz_name = context['tz']
|
|
||||||
else:
|
|
||||||
tz_name = self.pool.get('res.users').read(cr, SUPERUSER_ID, uid, ['tz'])['tz']
|
|
||||||
if tz_name:
|
|
||||||
utc = pytz.timezone('UTC')
|
|
||||||
context_tz = pytz.timezone(tz_name)
|
|
||||||
user_datetime = user_date + relativedelta(hours=12.0)
|
|
||||||
local_timestamp = context_tz.localize(user_datetime, is_dst=False)
|
|
||||||
user_datetime = local_timestamp.astimezone(utc)
|
|
||||||
return user_datetime.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
|
||||||
return user_date.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
|
||||||
|
|
||||||
def _prepare_order_line_move(self, cr, uid, order, order_line, picking_id, group_id, context=None):
|
def _prepare_order_line_move(self, cr, uid, order, order_line, picking_id, group_id, context=None):
|
||||||
''' prepare the stock move data from the PO line. This function returns a list of dictionary ready to be used in stock.move's create()'''
|
''' prepare the stock move data from the PO line. This function returns a list of dictionary ready to be used in stock.move's create()'''
|
||||||
product_uom = self.pool.get('product.uom')
|
product_uom = self.pool.get('product.uom')
|
||||||
|
@ -676,8 +653,8 @@ class purchase_order(osv.osv):
|
||||||
'product_id': order_line.product_id.id,
|
'product_id': order_line.product_id.id,
|
||||||
'product_uom': order_line.product_uom.id,
|
'product_uom': order_line.product_uom.id,
|
||||||
'product_uos': order_line.product_uom.id,
|
'product_uos': order_line.product_uom.id,
|
||||||
'date': self.date_to_datetime(cr, uid, order.date_order, context),
|
'date': fields.date.date_to_datetime(self, cr, uid, order.date_order, context),
|
||||||
'date_expected': self.date_to_datetime(cr, uid, order_line.date_planned, context),
|
'date_expected': fields.date.date_to_datetime(self, cr, uid, order_line.date_planned, context),
|
||||||
'location_id': order.partner_id.property_stock_supplier.id,
|
'location_id': order.partner_id.property_stock_supplier.id,
|
||||||
'location_dest_id': order.location_id.id,
|
'location_dest_id': order.location_id.id,
|
||||||
'picking_id': picking_id,
|
'picking_id': picking_id,
|
||||||
|
|
|
@ -37,7 +37,7 @@ class sale_order_dates(osv.osv):
|
||||||
def _get_date_planned(self, cr, uid, order, line, start_date, context=None):
|
def _get_date_planned(self, cr, uid, order, line, start_date, context=None):
|
||||||
"""Compute the expected date from the requested date, not the order date"""
|
"""Compute the expected date from the requested date, not the order date"""
|
||||||
if order and order.requested_date:
|
if order and order.requested_date:
|
||||||
planned_str = fields.date.date_to_datetime(cr, uid, order.requested_date, context)
|
planned_str = fields.date.date_to_datetime(self, cr, uid, order.requested_date, context)
|
||||||
date_planned = datetime.strptime(planned_str, DEFAULT_SERVER_DATETIME_FORMAT)
|
date_planned = datetime.strptime(planned_str, DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
date_planned -= timedelta(days=order.company_id.security_lead)
|
date_planned -= timedelta(days=order.company_id.security_lead)
|
||||||
return date_planned.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
return date_planned.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
|
|
|
@ -18,13 +18,12 @@
|
||||||
!python {model: sale.order}: |
|
!python {model: sale.order}: |
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
|
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
|
||||||
from openerp.fields import date
|
from openerp.osv import fields
|
||||||
|
|
||||||
so = self.browse(cr, uid, ref("sale.sale_order_6"))
|
so = self.browse(cr, uid, ref("sale.sale_order_6"))
|
||||||
security_delay = timedelta(days=so.company_id.security_lead)
|
security_delay = timedelta(days=so.company_id.security_lead)
|
||||||
requested_date = datetime.strptime(date.date_to_datetime(cr, uid, so.requested_date), DEFAULT_SERVER_DATETIME_FORMAT)
|
requested_date = datetime.strptime(fields.date.date_to_datetime(self, cr, uid, so.requested_date), DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
right_date = (requested_date - security_delay).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
right_date = (requested_date - security_delay).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
for line in so.order_line:
|
for line in so.order_line:
|
||||||
assert line.procurement_id, "No Procurement was created"
|
assert line.procurement_ids, "No Procurement was created"
|
||||||
assert line.procurement_id.date_planned == right_date, "The planned date for the Procurement Order is wrong"
|
assert line.procurement_ids[0].date_planned == right_date, "The planned date for the Procurement Order is wrong"
|
||||||
assert line.procurement_id.move_id.date_expected == right_date, "The expected date for the Stock Move is wrong"
|
assert line.procurement_ids[0].move_ids and line.procurement_ids[0].move_ids[0].date_expected == right_date, "The expected date for the Stock Move is wrong"
|
||||||
|
|
Loading…
Reference in New Issue