Skip to Content
Menu
This question has been flagged
1 Reply
6077 Views

Hi,

I created a new class inheriting stock.pack.operation. This class adds a One2many field named carrier_pack and an Integer field named carrier_pack_count. The field carrier_pack_count is a computed value, returning the number of objects in the field carrier_pack. The class is well installed and I can find both fields with the developer tools via the Technical>Database>Models menu.

I also try to display an icon in the list of operations of a stock.picking view. I created a new ir.ui.view <record> inheriting stock.view_picking_form. This form targets "//form/sheet/notebook/page/field[@name='pack_operation_product_ids']/tree" and adds some code as follows:

<field name="arch" type="xml">    <xpath expr="//form/sheet/notebook/page/field[@name='pack_operation_product_ids']/tree" position="inside">        <button type="object" name="show_pack" string="Pack expedited" icon="fa-truck" attrs="{'invisible': [('carrier_pack_count', '!=', 0)]}"/>    </xpath></field>

given the //form/sheet/notebook/page/field[@name='pack_operation_product_ids']/tree is :

<field name="pack_operation_product_ids" options="{'reload_on_button': True}" context="{'default_picking_id': id, 'default_location_id': location_id, 'default_location_dest_id': location_dest_id}" mode="tree,kanban">    <tree editable="bottom" decoration-muted="result_package_id" decoration-danger="qty_done&gt;product_qty" decoration-success="qty_done==product_qty and state!='done' and not result_package_id">        <field name="package_id" groups="stock.group_tracking_lot" invisible="1"/>        <field name="product_id" required="1" attrs="{'readonly': [('fresh_record', '=', False)]}"/>        <field name="fresh_record" invisible="1"/>        <field name="product_uom_id" attrs="{'readonly': [('fresh_record', '=', False)]}" groups="product.group_uom"/>        <field name="lots_visible" invisible="1"/>        <!-- [...] -->        <button name="split_lot" string="Lot Split" type="object" icon="fa-list" groups="stock.group_production_lot"            attrs="{'invisible': ['|', ('lots_visible', '=', False), ('state', 'not in', ['confirmed', 'assigned', 'waiting', 'partially_available','done'])]}"/>        <button name="show_details" string="Modify" type="object" icon="fa-pencil" groups="stock.group_stock_multi_locations"            states="confirmed,assigned,waiting,partially_available"/>    </tree><!-- [...] --></field>

adding my new button results in having the following code:

<!-- [...] -->        <button name="split_lot" string="Lot Split" type="object" icon="fa-list" groups="stock.group_production_lot"            attrs="{'invisible': ['|', ('lots_visible', '=', False), ('state', 'not in', ['confirmed', 'assigned', 'waiting', 'partially_available','done'])]}"/>        <button name="show_details" string="Modify" type="object" icon="fa-pencil" groups="stock.group_stock_multi_locations"            states="confirmed,assigned,waiting,partially_available"/>

<button type="object" name="show_pack" string="Pack expedited" icon="fa-truck" attrs="{'invisible': [('carrier_pack_count', '!=', 0)]}"/> </tree>

<!-- [...] -->

Fields like lots_visible or state used in attrs are well considered as belonging to one of the current pack_operation_product_ids parent field as expected. But the carrier_pack_count used in attrs="{'invisible': [('carrier_pack_count', '!=', 0)]}" defined in my inheriting view IS NOT.

Odoo displays the following error message :

Unknown field carrier_pack_count in domain [["carrier_pack_count","!=",0]]

Do I miss something? Is this a bug? How to fix this issue?

Thanks.


Avatar
Discard
Best Answer

Hi Maxime Marais,

I think you need first give the field carrier_pack_count in view with which the domain can work properly.
Or else, please post the whole code so we can figure out properly.

Regards,

Krimi

Avatar
Discard
Author

Hi Krimi.

carrier_pack_count is expected to be in the view. The field carrier_pack_count is added by my add-on, inheriting from stock.pack.operation model. I'm sure it is, I can see browsing the models with the developer tools.

The parent view is composed like this :

<FIELD name="pack_operation_product_ids" options="{'reload_on_button': True}" context="{'default_picking_id': id, 'default_location_id': location_id, 'default_location_dest_id': location_dest_id}" mode="tree,kanban">

<TREE editable="bottom" decoration-muted="result_package_id" decoration-danger="qty_done&gt;product_qty" decoration-success="qty_done==product_qty and state!='done' and not result_package_id">

<FIELD name="package_id" groups="stock.group_tracking_lot" invisible="1"/>

<FIELD name="product_id" required="1" attrs="{'readonly': [('fresh_record', '=', False)]}"/>

<!-- [...] -->

</TREE>

<!-- [...] -->

</FIELD>

I simply add a new button in the tree above.

Looping on pack_operation_product_ids, the tree in it is in the stock.pack.operation domain (the class stock.picking defines pack_operation_product_ids as a One2many fields pointing to stock.pack.operation, the view loops on each stock.pack.operation referenced by stock.picking).

Fields named package_id, product_id, etc. are properties of stock.pack.operation, as well as my carrier_pack_count defined in my model expending stock.pack.operation.

I cannot figure out why Odoo displays carrier_pack_count as being part of stock.pack.operation model (as well as package_id, product_id, etc.) but cannot access it when displaying the view.

Related Posts Replies Views Activity
4
Aug 21
60857
2
Mar 15
6453
1
Mar 15
7068
1
Nov 24
103
5
Jul 24
86816