Значение sum
повторно инициализируется для каждой записи и назначается вне цикла for, расчет не будет работать, кроме последней записи в древовидном представлении. методы вызываются с набором записей, в представлении формы он вызывается с набором записей, содержащим только одну запись, и поэтому он работает в представлении формы, а не в древовидном представлении.
Чтобы исправить это проблема переместите последнюю строку двух первых методов внутрь первого l oop.
Отсутствует декоратор зависимостей, попробуйте добавить его.
Пример:
@api.depends("move_lines.product_uom_qty")
def calculate_dmd_qty(self):
for rs in self:
dmdqty = 0
for line in rs.move_ids_without_package:
dmdqty += line.product_uom_qty
rs.sum_dmd_qty = dmdqty
@api.depends("move_lines.reserved_availability")
def calculate_reserved_qty(self):
for rs in self:
reservedqty = 0
for line in rs.move_ids_without_package:
reservedqty += line.reserved_availability
rs.sum_reserved_qty = reservedqty
Изменить:
<odoo>
<record id="view_picking_form" model="ir.ui.view">
<field name="name">view.picking.form</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.view_picking_form"/>
<field name="arch" type="xml">
<xpath expr='//notebook' position="after">
<group>
<field name="reserved_qty_per"/>
</group>
</xpath>
</field>
</record>
<record id="vpicktree" model="ir.ui.view">
<field name="name">view.vpicktree</field>
<field name="model">stock.picking</field>
<field name="inherit_id" ref="stock.vpicktree"/>
<field name="arch" type="xml">
<field name="state" position="before">
<field name="reserved_qty_per"/>
</field>
</field>
</record>
</odoo>