diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py index afd2ffe09c0..d204a7f3bfc 100644 --- a/addons/purchase/models/purchase.py +++ b/addons/purchase/models/purchase.py @@ -31,18 +31,6 @@ class PurchaseOrder(models.Model): 'amount_total': amount_untaxed + amount_tax, }) - @api.depends('order_line.date_planned', 'date_order') - def _compute_date_planned(self): - for order in self: - min_date = False - for line in order.order_line: - if not min_date or line.date_planned and line.date_planned < min_date: - min_date = line.date_planned - if min_date: - order.date_planned = min_date - else: - order.date_planned = order.date_order - @api.depends('state', 'order_line.qty_invoiced', 'order_line.qty_received', 'order_line.product_qty') def _get_invoiced(self): precision = self.env['decimal.precision'].precision_get('Product Unit of Measure') @@ -109,7 +97,7 @@ class PurchaseOrder(models.Model): ], string='Billing Status', compute='_get_invoiced', store=True, readonly=True, copy=False, default='no') # There is no inverse function on purpose since the date may be different on each line - date_planned = fields.Datetime(string='Scheduled Date', compute='_compute_date_planned', store=True, index=True) + date_planned = fields.Datetime(string='Receipt Date', index=True) amount_untaxed = fields.Monetary(string='Untaxed Amount', store=True, readonly=True, compute='_amount_all', tracking=True) amount_tax = fields.Monetary(string='Taxes', store=True, readonly=True, compute='_amount_all') @@ -169,6 +157,12 @@ class PurchaseOrder(models.Model): vals['name'] = self.env['ir.sequence'].next_by_code('purchase.order') or '/' return super(PurchaseOrder, self).create(vals) + def write(self, vals): + res = super(PurchaseOrder, self).write(vals) + if vals.get('date_planned'): + self.order_line.write({'date_planned': vals['date_planned']}) + return res + def unlink(self): for order in self: if not order.state == 'cancel': @@ -178,10 +172,13 @@ class PurchaseOrder(models.Model): def copy(self, default=None): new_po = super(PurchaseOrder, self).copy(default=default) for line in new_po.order_line: - seller = line.product_id._select_seller( - partner_id=line.partner_id, quantity=line.product_qty, - date=line.order_id.date_order and line.order_id.date_order.date(), uom_id=line.product_uom) - line.date_planned = line._get_date_planned(seller) + if new_po.date_planned: + line.date_planned = new_po.date_planned + else: + seller = line.product_id._select_seller( + partner_id=line.partner_id, quantity=line.product_qty, + date=line.order_id.date_order and line.order_id.date_order.date(), uom_id=line.product_uom) + line.date_planned = line._get_date_planned(seller) return new_po def _track_subtype(self, init_values): @@ -409,10 +406,6 @@ class PurchaseOrder(models.Model): result['context']['default_reference'] = self.partner_ref return result - def action_set_date_planned(self): - for order in self: - order.order_line.update({'date_planned': order.date_planned}) - class PurchaseOrderLine(models.Model): _name = 'purchase.order.line' @@ -549,6 +542,11 @@ class PurchaseOrderLine(models.Model): if values.get('display_type', self.default_get(['display_type'])['display_type']): values.update(product_id=False, price_unit=0, product_uom_qty=0, product_uom=False, date_planned=False) + order_id = values.get('order_id') + if 'date_planned' not in values: + order = self.env['purchase.order'].browse(order_id) + if order.date_planned: + values['date_planned'] = order.date_planned line = super(PurchaseOrderLine, self).create(values) if line.order_id.state == 'purchase': msg = _("Extra line with %s ") % (line.product_id.display_name,) diff --git a/addons/purchase/views/purchase_views.xml b/addons/purchase/views/purchase_views.xml index 99f237d889b..fe836240b4b 100644 --- a/addons/purchase/views/purchase_views.xml +++ b/addons/purchase/views/purchase_views.xml @@ -206,7 +206,7 @@ context="{'partner_id':parent.partner_id, 'quantity':product_qty,'uom':product_uom, 'company_id': parent.company_id}" force_save="1" domain="[('purchase_ok', '=', True), '|', ('company_id', '=', False), ('company_id', '=', parent.company_id)]"/> - + @@ -342,11 +342,6 @@