如何在Odoo中自定义树视图的求和函数?
How to customize sum function of tree view in Odoo?
我有一个列出费用和收入记录的树视图。 xml中有一列用SUM函数应用的金额。我的要求是在 treeview 中将所有金额设为 -ve where type=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>
您可以实现一个新的计算字段 total_planned_signed
,它依赖于 total_planned
和 type_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
作为有符号值。
我有一个列出费用和收入记录的树视图。 xml中有一列用SUM函数应用的金额。我的要求是在 treeview 中将所有金额设为 -ve where type=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>
您可以实现一个新的计算字段 total_planned_signed
,它依赖于 total_planned
和 type_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
作为有符号值。