Ir al contenido
Menú
Se marcó esta pregunta
1 Responder
5972 Vistas


class AccountInvoice(models.Model): _inherit = ["account.invoice"]

duplication_number = fields.Char(string="Duplication Number")

@api.multi def check_fields(self): print self.id invoices = self.env['account.invoice'].search([]) for record in invoices: if record.duplication_number != self.duplication_number: raise UserError(_("You can't save this record, the same Vendor Bill can only be used one time."))

@api.multi def write(self, vals): self.check_fields() res = super(AccountInvoice, self).write(vals) return res


I don't understand why my "self" in check_fields(self) is empty everytime.

I can't get the actual value of the field: duplication_number in self. The return of self is account.invoice(), everytime.

I need to get the actual value of my field "duplication_number" when I want to save it. It should check if this field has the same value as any other field in account.invoice



Avatar
Descartar
Mejor respuesta

Hi,

Are you looking to check whether such a number is already saved in the db ?

If so, easily you can do it with using the sql constrains,

_sql_constraints = [    ('unique_duplication_number', 'unique (duplication_number)', 'Show message here!'),]


Or else you can do it using the constrains,





Thanks

Avatar
Descartar
Autor

the problem now is, that invoice_rec is everytime true...

The _sql_constraints method should be used, it is the most secure way as the rule is implemented at the database level.

Also, @api.constrains methods takes recordsets, therefore a 'for rec in self:' loop should wrap this otherwise it will fail if multiple records are added.

Publicaciones relacionadas Respuestas Vistas Actividad
2
sept 18
4716
2
sept 17
7908
1
jun 17
4908
5
sept 20
62260
0
jul 19
12260