From 242be00429a9b1bc128a08808ebc34d9b13e49ce Mon Sep 17 00:00:00 2001 From: Mitali Patel Date: Thu, 23 May 2019 09:01:56 +0000 Subject: [PATCH] [IMP] sale,account: automatic salesteam selection This commit adds the automatic selection of the salesteam for sale.order and account.invoice objects so that changing the salesperson will automatically changes the team if the new salesperson has one. If they are not part of a team, the current value is left unchanged. This will avoid having the manually correct the salesteam every time the salesperson is modified. task-1984950 closes-#33618 closes odoo/odoo#33618 Signed-off-by: Damien Bouvy (dbo) --- addons/sale/models/account_invoice.py | 5 +++++ addons/sale/models/sale.py | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/addons/sale/models/account_invoice.py b/addons/sale/models/account_invoice.py index 235378d03e3..efad48b77e8 100644 --- a/addons/sale/models/account_invoice.py +++ b/addons/sale/models/account_invoice.py @@ -46,6 +46,11 @@ class AccountInvoice(models.Model): company = self.company_id or self.env.company self.comment = company.with_context(lang=self.partner_id.lang).invoice_terms or (self._origin.company_id == company and self.comment) + @api.onchange('user_id') + def onchange_user_id(self): + if self.user_id and self.user_id.sale_team_id: + self.team_id = self.user_id.sale_team_id + @api.multi def _prepare_refund(self, invoice, date_invoice=None, date=None, description=None, journal_id=None): values = super(AccountInvoice, self)._prepare_refund(invoice, date_invoice, date, description, journal_id) diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py index 98c0709ca92..7cc93acc194 100644 --- a/addons/sale/models/sale.py +++ b/addons/sale/models/sale.py @@ -303,20 +303,26 @@ class SaleOrder(models.Model): return 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 = { 'pricelist_id': self.partner_id.property_product_pricelist and self.partner_id.property_product_pricelist.id or False, 'payment_term_id': self.partner_id.property_payment_term_id and self.partner_id.property_payment_term_id.id or False, 'partner_invoice_id': addr['invoice'], 'partner_shipping_id': addr['delivery'], - 'user_id': self.partner_id.user_id.id or self.partner_id.commercial_partner_id.user_id.id or self.env.uid + 'user_id': partner_user.id or self.env.uid } if self.env['ir.config_parameter'].sudo().get_param('account.use_invoice_terms') and self.env.company.invoice_terms: values['note'] = self.with_context(lang=self.partner_id.lang).env.company.invoice_terms - # Use team of saleman before to fallback on team of partner. - values['team_id'] = self.partner_id.user_id and self.partner_id.user_id.sale_team_id.id or self.partner_id.team_id.id + # Use team of salesman if any otherwise leave as-is + values['team_id'] = partner_user.team_id.id if partner_user and partner_user.team_id else self.team_id self.update(values) + @api.onchange('user_id') + def onchange_user_id(self): + if self.user_id and self.user_id.sale_team_id: + self.team_id = self.user_id.sale_team_id + @api.onchange('partner_id') def onchange_partner_id_warning(self): if not self.partner_id: