2

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

我在 v12.0 中使用 Odoo 工作室并创建了一个字段 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)

我没有收到任何错误,但该字段没有像我预期的那样计算。

我期望的一个例子如下:

发票表

我的代码中是否缺少某些内容以使其正确计算?

4

2 回答 2

1

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

字段 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_subtotal应该从record. Edit2:和相同的discount

于 2019-03-14T15:14:29.677 回答
0

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

于 2019-03-14T15:10:40.260 回答