diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index 06fd67db099..df7160a46f5 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -360,6 +360,8 @@ class SaleOrder(models.Model): }) return + self = self.with_company(self.company_id) + addr = self.partner_id.address_get(['delivery', 'invoice']) partner_user = self.partner_id.user_id or self.partner_id.commercial_partner_id.user_id values = { @@ -452,15 +454,13 @@ class SaleOrder(models.Model): @api.model def create(self, vals): + if 'company_id' in vals: + self = self.with_company(vals['company_id']) if vals.get('name', _('New')) == _('New'): seq_date = None if 'date_order' in vals: seq_date = fields.Datetime.context_timestamp(self, fields.Datetime.to_datetime(vals['date_order'])) - if 'company_id' in vals: - vals['name'] = self.env['ir.sequence'].with_company(vals['company_id']).next_by_code( - 'sale.order', sequence_date=seq_date) or _('New') - else: - vals['name'] = self.env['ir.sequence'].next_by_code('sale.order', sequence_date=seq_date) or _('New') + vals['name'] = self.env['ir.sequence'].next_by_code('sale.order', sequence_date=seq_date) or _('New') # Makes sure partner_invoice_id', 'partner_shipping_id' and 'pricelist_id' are defined if any(f not in vals for f in ['partner_invoice_id', 'partner_shipping_id', 'pricelist_id']): @@ -468,7 +468,7 @@ class SaleOrder(models.Model): addr = partner.address_get(['delivery', 'invoice']) vals['partner_invoice_id'] = vals.setdefault('partner_invoice_id', addr['invoice']) vals['partner_shipping_id'] = vals.setdefault('partner_shipping_id', addr['delivery']) - vals['pricelist_id'] = vals.setdefault('pricelist_id', partner.property_product_pricelist and partner.property_product_pricelist.id) + vals['pricelist_id'] = vals.setdefault('pricelist_id', partner.property_product_pricelist.id) result = super(SaleOrder, self).create(vals) return result