Hello, I have a problem with the onchange event that is not working completely in multi-company. The instruction self.env.company is not returning the current company. Can you help me identify what could be failing, if there is any solution or if it is an Odoo bug that needs to be fixed. The problem had not arisen until multiple companies with different RFCs began to be used. The restriction validates that the mx_customer_rfc field is the same as the company’s. So the problem is that self.env.company always returns the same company regardless of whether the user is moving from company to company. What I identified is that outside of onchange it does work, it is even the classic way to assign the default company (default=lambda self:self.env.company).
@api.constrains('mx_customer_rfc')
def _check_customer_rfc(self):
for record in self:
if record.mx_customer_rfc and record.mx_customer_rfc != self.env.company.vat and (record.move_type == 'in_invoice' or record.move_type == 'in_refund' or record.move_type == 'in_receipt'):
raise ValidationError('El RFC del receptor (%s) no corresponde con el RFC de %s (%s)' %
(record.mx_customer_rfc, self.env.company.name, self.env.company.vat))
@Niyas Raphy
Hi,
Yes, it’s correct, you have multi-company mode enabled and several companies selected in the company switcher, that is, in the menu bar, and you understand that self.env.company will return the first selected company. However, when using @api.constrains for some strange reason it no longer works, it always returns the same company regardless of whether you are switching between companies from the menu bar.
Thanks