如何在Odoo中自定义树形视图的求和函数?

时间:2019-01-07 06:22:16

标签: xml sum treeview odoo odoo-10

我有一个树状视图,其中列出了费用和收入记录。 xml中有一个与SUM函数一起应用的金额列。我的要求是在-ve中将所有金额设置为树视图中type = Revenues,以便将其汇总后的结果将是Expenses减去Revenues。下面是我的树状视图,请帮助。预先感谢!

<record id="view_program_activity_tree" model="ir.ui.view">
    <field name="name">program.activity.tree</field>
    <field name="model">program.activity</field>
    <field name="arch" type="xml">

        <tree string="Program Activity" colors="green:type_id[1] == 'REVENUE'">

            <field name="department_id"/>
            <field name="sector_id"/>
            <field name="name"/>
            <field name="code"/>
            <field name="type_id"/>
            <field name="total_planned" sum="Total Planned"/>

        </tree>
    </field>
</record> 

1 个答案:

答案 0 :(得分:1)

您可以实现一个新的计算字段total_planned_signed,该字段取决于total_plannedtype_id,并在列表视图中显示此新字段:

total_planned_signed = fields.Float(
    string="Total Planned", compute="_compute_total_planned_signed",
    store=True)

@api.depends('total_planned', 'type_id')
def _compute_total_planned_signed(self):
    for activity in self:
        if activity.type_id.name == 'REVENUE':
            activity.total_planned_signed = activity.total_planned
        else:
            activity.total_planned_signed = -activity.total_planned

现在将列表视图中的total_planned替换为total_planned_signed

或者,如果可能的话,总是将total_planned计算或设置为有符号值。