Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
4 Trả lời
11716 Lượt xem

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

Ảnh đại diện
Huỷ bỏ

Hi Juan,

Did you found any solution fot this Issues?

Câu trả lời hay nhất

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.

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

This is my problem now. can you solve this?

Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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. 

Ảnh đại diện
Huỷ bỏ
Tác giả

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>

Tác giả Câu trả lời hay nhất

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.

Ảnh đại diện
Huỷ bỏ

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