#. module: sale_order_dates
#: help:sale.order,commitment_date:0
-msgid "Date by which the products is sure to be delivered. This is a date that you can promise to the customer, based on the Product Lead Times."
+msgid "Date by which the products are sure to be delivered. This is a date that you can promise to the customer, based on the Product Lead Times."
msgstr ""
#. module: sale_order_dates
_inherit = 'sale.order'
def copy(self, cr, uid, id, default=None, context=None):
- """Don't copy the requested date along with the Sale Order"""
- if default is None:
- default = {}
- else:
- default = default.copy()
- default['requested_date'] = False
+ """Don't copy the requested date along with the Sales Order"""
+ default = dict(default or {}, requested_date=False)
return super(sale_order_dates, self).copy(cr, uid, id, default=default,
- context=context)
-
- def _order_line_move_date(self, cr, uid, line, context=None):
+ context=context)
+
+ 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"""
- order=line.order_id
if order and order.requested_date:
- date_planned = datetime.strptime(order.requested_date,
- DEFAULT_SERVER_DATE_FORMAT)
+ planned_str = self.date_to_datetime(cr, uid,
+ order.requested_date, context)
+ date_planned = datetime.strptime(planned_str,
+ DEFAULT_SERVER_DATETIME_FORMAT)
date_planned -= timedelta(days=order.company_id.security_lead)
return date_planned.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
- else:
- return super(sale_order_dates, self)._order_line_move_date(cr, uid, line)
+ return super(sale_order_dates, self)._get_date_planned(
+ cr, uid, order, line, start_date, context=context)
def _get_effective_date(self, cr, uid, ids, name, arg, context=None):
"""Read the shipping date from the related packings"""
- # XXX would be better if it returned the date the picking was processed
+ # TODO: would be better if it returned the date the picking was processed?
res = {}
dates_list = []
for order in self.browse(cr, uid, ids, context=context):
res = {}
dates_list = []
for order in self.browse(cr, uid, ids, context=context):
+ order_datetime_str = self.date_to_datetime(cr, uid, order.date_order,
+ context)
+ order_datetime = datetime.strptime(order_datetime_str,
+ DEFAULT_SERVER_DATETIME_FORMAT)
dates_list = []
for line in order.order_line:
- dt = (datetime.strptime(order.date_order,
- DEFAULT_SERVER_DATE_FORMAT)
- + timedelta(days=line.delay or 0.0) )
+ dt = order_datetime + timedelta(days=line.delay or 0.0)
dt_s = dt.strftime(DEFAULT_SERVER_DATE_FORMAT)
dates_list.append(dt_s)
if dates_list:
"unable to honor the customer's request.")
}
}
- else:
- return {}
+ return {}
_columns = {
'commitment_date': fields.function(_get_commitment_date, store=True,
type='date', string='Commitment Date',
- help="Date by which the products is sure to be delivered. This is "
+ help="Date by which the products are sure to be delivered. This is "
"a date that you can promise to the customer, based on the "
"Product Lead Times."),
'requested_date': fields.date('Requested Date',
</field>
</record>
<record id="view_order_tree_date" model="ir.ui.view">
- <field name="name">sale.order.tree.inherit5</field>
<field name="model">sale.order</field>
- <field name="type">tree</field>
<field name="inherit_id" ref="sale.view_order_tree"/>
<field name="arch" type="xml">
<field name="date_order" position="after">
I update a demo Sale Order with Requested Date on 2010-12-17
-
!python {model: sale.order}: |
- so = self.write(cr, uid, ref("sale.order"), {'requested_date': '2010-07-12'})
--
+ self.write(cr, uid, ref("sale.sale_order_6"), {'requested_date': '2010-07-12'})
+-
I confirm the Sale Order.
--
+-
!workflow {
model: sale.order, action: order_confirm,
- ref: sale.order
+ ref: sale.sale_order_6
}
-
I verify that the Procurements and Stock Moves have been generated with the
-
!python {model: sale.order}: |
from datetime import datetime, timedelta
- from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
-
- so = self.browse(cr, uid, ref("sale.order"))
- security_delay = timedelta(days=so.shop_id.company_id.security_lead)
- requested_date = datetime.strptime(so.requested_date,
- DEFAULT_SERVER_DATE_FORMAT)
+ from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+
+ so = self.browse(cr, uid, ref("sale.sale_order_6"))
+ security_delay = timedelta(days=so.company_id.security_lead)
+ requested_date = datetime.strptime(
+ self.date_to_datetime(cr, uid, so.requested_date),
+ DEFAULT_SERVER_DATETIME_FORMAT)
right_date = (requested_date - security_delay).strftime(
DEFAULT_SERVER_DATETIME_FORMAT)
for line in so.order_line:
##############################################################################
from datetime import datetime, timedelta
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP, float_compare
-from dateutil.relativedelta import relativedelta
from openerp.osv import fields, osv
from openerp.tools.translate import _
import pytz
if tz_name:
utc = pytz.timezone('UTC')
context_tz = pytz.timezone(tz_name)
- user_datetime = user_date + relativedelta(hours=12.0)
+ user_datetime = user_date + timedelta(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)
'company_id': order.company_id.id,
'note': line.name,
}
-
- def _order_line_move_date(self, cr, uid, line, context=None):
- """Compute the Stock Move date for the Sale Order Line"""
- date_planned = datetime.strptime(line.order_id.date_order,
- DEFAULT_SERVER_DATE_FORMAT)
- date_planned += timedelta(days=line.delay or 0.0)
- date_planned -= timedelta(days=line.order_id.company_id.security_lead)
- return date_planned.strftime(DEFAULT_SERVER_DATETIME_FORMAT)
-
def _prepare_order_line_move(self, cr, uid, order, line, picking_id, date_planned, context=None):
location_id = order.warehouse_id.lot_stock_id.id
return True
def _get_date_planned(self, cr, uid, order, line, start_date, context=None):
+ """Compute the Stock Move date for the Sale Order Line"""
start_date = self.date_to_datetime(cr, uid, start_date, context)
- date_planned = datetime.strptime(start_date, DEFAULT_SERVER_DATETIME_FORMAT) + relativedelta(days=line.delay or 0.0)
+ date_planned = datetime.strptime(start_date, DEFAULT_SERVER_DATETIME_FORMAT) + timedelta(days=line.delay or 0.0)
date_planned = (date_planned - timedelta(days=order.company_id.security_lead)).strftime(DEFAULT_SERVER_DATETIME_FORMAT)
return date_planned
if line.state == 'done':
continue
- date_planned = self._order_line_move_date(cr, uid, line, context=context)
+ date_planned = self._get_date_planned(cr, uid, order, line, order.date_order, context=context)
if line.product_id:
if line.product_id.type in ('product', 'consu'):