تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
4 الردود
11569 أدوات العرض

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'.

الصورة الرمزية
إهمال

Hi Juan,

Did you found any solution fot this Issues?

أفضل إجابة

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.

الصورة الرمزية
إهمال
أفضل إجابة

This is my problem now. can you solve this?

الصورة الرمزية
إهمال
أفضل إجابة

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. 

الصورة الرمزية
إهمال
الكاتب

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>

الكاتب أفضل إجابة

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.

الصورة الرمزية
إهمال

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