Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
4 Răspunsuri
11726 Vizualizări

I'm trying to modify layout of the tree view for one2many field in sale.order.

This is my code,

@api.model

def fields_view_get(self, view_id=None, view_type=False, context=None,

toolbar=False, submenu=False):

res = super(saleOrder,

self).fields_view_get(view_id=view_id, view_type=view_type,

toolbar=toolbar, submenu=submenu)

if view_type == 'form':

doc = etree.XML(res['arch'])

for node in doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']"):

node.set('invisible', 'True')

res['arch'] = etree.tostring(doc)

return res


After debug, only   //field[@name='order_line'], appears.

can't find  'product_id'.

Imagine profil
Abandonează

Hi Juan,

Did you found any solution fot this Issues?

Cel mai bun răspuns

Try below code

       if view_type =='form':
            doc = etree.XML(result['fields']['order_line']['views']['tree']['arch'])
            node = doc.xpath("//field[@name='product_id']")[0]
            node.set('invisible','1')
            result['fields']['order_line']['views']['tree']['arch'] = etree.tostring(doc)
        return result

Hope it will help you.

Imagine profil
Abandonează
Cel mai bun răspuns

This is my problem now. can you solve this?

Imagine profil
Abandonează
Cel mai bun răspuns

try this.

from openerp.osv.orm import setup_modifiers


if doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']"):

    node = doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']")[0]

    node.set('invisible', '1')

    setup_modifiers(node, res['fields']['product_id'])

res['arch'] = etree.tostring(doc)

return res

OR

<xpath expr="//field[@name='order_line']//tree//field[@name='product_id']" position="attributes">

           attribute name="invisible">1</attribute>

</xpath>





I hope it's useful for you. 

Imagine profil
Abandonează
Autor

Thanks in advance for your help,

the problem is that

doc.xpath("//field[@name='order_line']/tree//field[@name='product_id']")

returns an empty element, [ ]

only finds

doc.xpath("//field[@name='order_line']")

cannot find the elements of the one2many field 'order_line'.

Kind regards.

batter so you can use xpath from form view like

<xpath expr="//field[@name='order_line']/tree//field[@name='product_id']" position="attributes">

<attribute name="invisible">1</attribute>

</xpath>

Autor Cel mai bun răspuns

I can't do it in the xml file, because i have to show/hide the column, depending of attributes like company_id.

Since now i can't find 'order_line <tree> columns in the doc.xpath, so i cannot replace or hide the fields.


Kind regards.

Imagine profil
Abandonează

Hi Juan! Do you have any luck with this problem?