有没有人可以帮我解决下面的问题:我正在尝试划分两个浮点型字段,但是我得到了一个错误
AttributeError: 'stock.picking' object has no attribute 'calculate_reserved_per'下面是我的代码:
from odoo import models, fields, api
class PickingTotalQty(models.Model):
_inherit = 'stock.picking'
sum_dmd_qty = fields.Float(compute='calculate_dmd_qty', string='Total Demand Quantity')
sum_reserved_qty = fields.Float(compute='calculate_reserved_qty', string='Total Reserved Quantity')
reserved_qty_per = fields.Float(compute='calculate_reserved_per', string='Reserved Quantity (%)')
def calculate_dmd_qty(self):
for rs in self:
dmdqty = 0
for line in rs.move_lines:
dmdqty += line.product_uom_qty
rs.sum_dmd_qty = dmdqty
def calculate_reserved_qty(self):
for rs in self:
reservedqty = 0
for line in rs.move_lines:
reservedqty += line.reserved_availability
rs.sum_reserved_qty = reservedqty
@api.depends('sum_reserved_qty', 'sum_dmd_qty')
def calculate_reserved_per(self):
for rec in self:
rec.reserved_qty_per = rec.sum_reserved_qty / rec.sum_dmd_qty发布于 2020-07-12 02:32:03
如果您已经重启了服务器,那么在除法之前,检查calculate_reserved_per方法的缩进,并确保rec.sum_dmd_qty与Zero不同。
您面临的奇怪行为是由于两个方法中最后一行的缩进造成的:calculate_dmd_qty和calculate_reserved_qty,这两个方法将忽略除最后一条记录之外的所有记录。在窗体视图中,使用包含一条记录的记录集调用该方法。
要纠正这一点,请将每个方法的最后一行移动到for循环中。
sum_dmd_qty和sum_reserved_qty是分别依赖于move_lines.product_uom_qty和move_lines.reserved_availability的计算字段,应该用来指定何时使用@api.depends重新计算它们的值。
您可以使用会计发票_compute_amount作为参考,并将这三个方法合并到一个计算三个字段的值的方法中。
示例:
@api.depends("move_lines.product_uom_qty", "move_lines.reserved_availability")
def _calculate_quantities(self):
for picking in self:
dmd_qty = 0
reserved_qty = 0
for move in picking.move_lines:
dmd_qty += move.product_uom_qty
reserved_qty += move.reserved_availability
picking.sum_dmd_qty = dmd_qty
picking.sum_reserved_qty = reserved_qty
if picking.sum_dmd_qty:
picking.reserved_qty_per = picking.sum_reserved_qty / picking.sum_dmd_qty 我没有使用
@api.one,因为它在Odoo13
中不可用
https://stackoverflow.com/questions/62847469
复制相似问题