Как настроить функцию суммирования дерева в Odoo? - PullRequest
0 голосов
/ 07 января 2019

У меня есть древовидная структура, в которой перечислены записи о расходах и доходах. И есть столбец количества, который применяется с функцией SUM в XML. Мое требование - указывать все суммы в -ve, где 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> 

1 Ответ

0 голосов
/ 07 января 2019

Вы можете реализовать новое вычисляемое поле 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 в качестве значения со знаком.

...