diff --git a/addons/account/i18n/account.pot b/addons/account/i18n/account.pot index e9ae89d92e110b4d521e0063c2cc222808d3ad06..fbfea6933aa4c4d67b5a4c43e40d14f787bbd44c 100644 --- a/addons/account/i18n/account.pot +++ b/addons/account/i18n/account.pot @@ -10799,6 +10799,12 @@ msgstr "" msgid "You can not have an overlap between two fiscal years, please correct the start and/or end dates of your fiscal years." msgstr "" +#. module: account +#: code:addons/account/models/partner.py:441 +#, python-format +msgid "You can't change the company of a partner if the latter already has some invoices." +msgstr "" + #. module: account #: code:addons/account/models/account_invoice.py:1784 #, python-format diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py index b92f900904dfbb74d1566977ea17e085ac28cda5..e7218094cdd59c181b316573eb536d5ab0d0f712 100644 --- a/addons/account/models/partner.py +++ b/addons/account/models/partner.py @@ -434,6 +434,22 @@ class ResPartner(models.Model): for partner in self: partner.bank_account_count = mapped_data.get(partner.id, 0) + @api.constrains('company_id') + def _check_company_and_invoices(self): + partners_with_company = self.filtered(lambda p: p.company_id) + if partners_with_company: + query = """ + SELECT partner.id + FROM res_partner partner + JOIN account_invoice invoice ON invoice.partner_id = partner.id + AND invoice.company_id != partner.company_id + WHERE partner.id IN %s + LIMIT 1 + """ + self.env.cr.execute(query, (tuple(partners_with_company.ids),)) + if self.env.cr.fetchall(): + raise ValidationError(_("You can't change the company of a partner if the latter already has some invoices.")) + def _find_accounting_partner(self, partner): ''' Find the partner for which the accounting entries will be created ''' return partner.commercial_partner_id