【问题标题】:How do I create a computed field on an invoice in Odoo 11 using Python?如何使用 Python 在 Odoo 11 中的发票上创建计算字段?
【发布时间】:2019-03-14 14:21:14
【问题描述】:

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

我在 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)

我没有收到任何错误,但该字段未按预期计算。

我期望的一个例子如下:

Invoice Table

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

【问题讨论】:

    标签: python odoo odoo-11 computed-field


    【解决方案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一样

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多