如何使用Python在Odoo 11中的发票上创建计算字段?

如何使用Python在Odoo 11中的发票上创建计算字段?,python,odoo,odoo-11,computed-field,Python,Odoo,Odoo 11,Computed Field,我们公司根据逐行给予的折扣支付佣金。我试图在我们发送给销售代表的发票副本上显示此佣金金额 我正在v12.0中使用Odoo studio,并创建了一个标记为“佣金金额”的字段x_studio_field_dakHb,该字段显示在account.invoice.line模型中 我已选中“只读”和“存储”框。在“依赖项”字段中,我有“折扣、价格\小计” 在“高级属性”部分,我有: def compute_commission_amount(self): for record in self:

我们公司根据逐行给予的折扣支付佣金。我试图在我们发送给销售代表的发票副本上显示此佣金金额

我正在v12.0中使用Odoo studio,并创建了一个标记为“佣金金额”的字段x_studio_field_dakHb,该字段显示在account.invoice.line模型中

我已选中“只读”和“存储”框。在“依赖项”字段中,我有“折扣、价格\小计”

在“高级属性”部分,我有:

def compute_commission_amount(self):
  for record in self:
    if (discount >= 55.0):
      x_studio_field_dakHb = (price_subtotal * .05)
    elif (discount >= 45.0):
      x_studio_field_dakHb = (price_subtotal * .10)
    elif (discount >= 30.0):
      x_studio_field_dakHb = (price_subtotal * .15)
    elif (discount >= 25.0):
      x_studio_field_dakHb = (price_subtotal * .20)
    elif (discount >= 0.0):
      x_studio_field_dakHb = (price_subtotal * .25)
我没有得到任何错误,但字段的计算并不像我预期的那样

我所期望的例子如下:


我的代码中是否缺少一些东西来正确计算?

实际上,您需要使用@api.depends('fields1','fields2',…) 每更改一个字段1或字段2,您的佣金值就会更改。
对于示例代码,您可以在系统如何根据callculate产品价格、数量、折扣和税收进行小计更改中找到。

您必须使用
记录来分配值。在一个字段中,您会发现有关计算方法的以下提示:

字段Compute是用于计算字段值的Python代码 在一组记录上。该字段的值必须分配给每个 用字典式的作业记录

for record in self:
    record['size'] = len(record.name)
因此,您的代码应该如下所示:

def compute_commission_amount(self):
    for record in self:
        if (record.discount >= 55.0):
            record['x_studio_field_dakHb'] = (record.price_subtotal * .05)
        elif (record.discount >= 45.0):
            record['x_studio_field_dakHb'] = (record.price_subtotal * .10)
        elif (record.discount >= 30.0):
            record['x_studio_field_dakHb'] = (record.price_subtotal * .15)
        elif (record.discount >= 25.0):
            record['x_studio_field_dakHb'] = (record.price_subtotal * .20)
        elif (record.discount >= 0.0):
            record['x_studio_field_dakHb'] = (record.price_subtotal * .25)
编辑:还有一个错误是
price\u subtotal
应该从
记录中获取。
Edit2:折扣也一样