2010-06-15 22:46:18 +00:00
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
2010-07-26 11:06:59 +00:00
from datetime import datetime
from dateutil . relativedelta import relativedelta
2010-08-09 06:35:42 +00:00
from osv import fields , osv
2010-06-15 22:46:18 +00:00
class sale_order_dates ( osv . osv ) :
_inherit = ' sale.order '
2010-10-22 13:16:15 +00:00
def _get_effective_date ( self , cr , uid , ids , name , arg , context = None ) :
2010-06-15 22:46:18 +00:00
res = { }
dates_list = [ ]
2010-11-22 10:37:53 +00:00
for order in self . browse ( cr , uid , ids , context = context ) :
2010-06-15 22:46:18 +00:00
dates_list = [ ]
for pick in order . picking_ids :
dates_list . append ( pick . date )
if dates_list :
res [ order . id ] = min ( dates_list )
else :
2010-10-22 07:23:46 +00:00
res [ order . id ] = False
2010-10-22 13:16:15 +00:00
return res
2010-06-15 22:46:18 +00:00
2010-10-22 13:16:15 +00:00
def _get_commitment_date ( self , cr , uid , ids , name , arg , context = None ) :
2010-06-15 22:46:18 +00:00
res = { }
dates_list = [ ]
2010-11-22 10:37:53 +00:00
for order in self . browse ( cr , uid , ids , context = context ) :
2010-06-15 22:46:18 +00:00
dates_list = [ ]
for line in order . order_line :
2010-07-26 11:06:59 +00:00
dt = datetime . strptime ( order . date_order , ' % Y- % m- %d ' ) + relativedelta ( days = line . delay or 0.0 )
2010-06-15 22:46:18 +00:00
dt_s = dt . strftime ( ' % Y- % m- %d ' )
dates_list . append ( dt_s )
2010-06-16 11:15:00 +00:00
if dates_list :
res [ order . id ] = min ( dates_list )
2010-10-22 13:16:15 +00:00
return res
2010-06-15 22:46:18 +00:00
_columns = {
2011-07-01 23:41:24 +00:00
' commitment_date ' : fields . function ( _get_commitment_date , store = True , type = ' date ' , string = ' Commitment Date ' , help = " Date on which delivery of products is to be made. " ) ,
2010-12-13 06:07:23 +00:00
' requested_date ' : fields . date ( ' Requested Date ' , help = " Date on which customer has requested for sales. " ) ,
2011-07-01 23:41:24 +00:00
' effective_date ' : fields . function ( _get_effective_date , type = ' date ' , store = True , string = ' Effective Date ' , help = " Date on which picking is created. " ) ,
2010-06-15 22:46:18 +00:00
}
2010-08-09 06:35:42 +00:00
sale_order_dates ( )
2010-06-15 22:46:18 +00:00
2010-08-09 06:35:42 +00:00
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: