【发布时间】:2019-05-02 19:45:45
【问题描述】:
我的模型中有一个方法,当我通过按钮调用它时,它工作得非常好,但是,每当它由我在同一个模型中的计算字段触发时,由于我不这样做的原因,它无法执行其中的所有代码不知道。即使发生这种情况,如果我通过按钮再次调用该方法,它也可以正常工作。我试过用谷歌搜索这个问题,但没有运气。这是我的代码中有问题的部分。
class recibos(models.Model):
_name = "tecnop.recibos"
_rec_name = "num_recibo"
num_recibo = fields.Integer('Número de recibo', size=20)
fecha = fields.Date('Fecha')
# Conecta con módulo de productos
ids_productos = fields.One2many('tecnop.productos', 'id_producto', 'Productos')
# Relación con módulo de proveedores
ids_proveedores = fields.Many2one('tecnop.proveedores', 'Proveedor')
total = fields.Float('Total', size=400, readonly=True, store=True, compute='calcular_total')
subtotal = fields.Float('Subtotal', size=400, readonly=True)
impuesto_total = fields.Float('Impuesto', size=400, readonly=True)
@api.multi
@api.depends('ids_productos.nombre', 'ids_productos.precio')
def calcular_total(self):
registros = self.env['tecnop.productos'].search([('id_producto', '=', self.id)])
self.total = 0
self.impuesto_total = 0
self.subtotal = 0
for registro in registros:
if registro.precio:
impuestos = self.env['tecnop.impuestos'].search([('id_impuesto', '=', registro.id)])
for impuesto in impuestos:
if impuesto.impuesto:
registro.impuesto = registro.precio * impuesto.impuesto
self.total = (registro.precio * registro.cantidad) + self.total
self.impuesto_total = registro.impuesto + self.impuesto_total
self.subtotal = self.total - self.impuesto_total
无论何时,变量“registros”都不会从“total”的计算字段中获取任何字段。它只是将所有字段设置为 0 并且不执行任何其他操作。有谁知道我在这里做错了什么?
【问题讨论】: