2016-12-02 83 views
1

我是Odoo的新手,并且仍然试图获取它的视图。Odoo 8显示stock_move.picking_id.partner_id在视图中

我需要在标准视图中为采购添加一个字段“供应商” - 传入产品,其值应该从stock_move.picking_id.partner_id中获取 我似乎无法弄清楚如何获取值的视图xml中,虽然必要的关系似乎被定义,因为我可以用python代码这样得到它。

这里的标准视图定义:

 <record id="view_move_tree_receipt_picking" model="ir.ui.view"> 
     <field name="name">stock.move.tree2</field> 
     <field name="model">stock.move</field> 
     <field name="priority" eval="6"/> 
     <field name="arch" type="xml"> 
      <tree colors="grey:state == 'cancel'" string="Moves"> 
       <field name="date" widget="date"/> 
       <field name="picking_id" string="Reference" invisible="1"/> 
       <field name="origin"/> 
       <field name="product_id"/> 
       <field name="product_uom_qty"/> 
       <field name="product_uom" string="Unit of Measure" groups="product.group_uom"/> 
       <field name="location_id" invisible="1"/> 
       <field name="location_dest_id" invisible="1"/> 
       <field name="create_date" invisible="1"/> 
       <field name="date_expected" invisible="1"/> 
       <button name="%(stock.move_scrap)d" 
        string="Scrap Products" type="action" 
        icon="terp-gtk-jump-to-ltr" context="{'scrap': True}" 
        states="draft,waiting,confirmed,assigned" 
        groups="stock.group_stock_user"/> 
       <field name="state"/> 
       <button name="action_done" states="draft,assigned,confirmed" 
        icon="gtk-go-forward" type="object" groups="stock.group_stock_user" 
        class="oe_highlight" help="Done"/> 
      </tree> 
     </field> 
    </record> 

及有关列定义(跳过无关线简洁)

class stock_move(osv.osv): 
    _name = "stock.move" 
    _description = "Stock Move" 
    _order = 'date_expected desc, id' 

    _columns = { 
     'picking_id': fields.many2one('stock.picking', 'Reference', select=True, states={'done': [('readonly', True)]}), 
    } 


class stock_picking(osv.osv): 
    _name = "stock.picking" 
    _inherit = ['mail.thread'] 
    _description = "Picking List" 
    _order = "priority desc, date asc, id desc" 

    _columns = { 
     'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}), 
    } 

回答

1

不需要定义关系,它已经存在,所以你只需要在stock.move中添加相关字段,并通过继承现有视图将该合作伙伴字段添加到stock.move的列表视图或表单视图中。

class stock_move(osv.osv): 
    _inherit = "stock.move" 

    _columns = { 
     'partner_id': fields.related('picking_id', 'partner_id', 'Supplier', type='many2one', store=True, readonly=True), 
    } 

现在使用继承在现有视图中添加此partner_id字段。

基础视角ID => stock.view_move_form(它可能在你的情况不同)

<record id="new_view_id" model="ir.ui.view"> 
    <field name="name">stock.form</field> 
    <field name="model">stock.move</field> 
    <field name="inherit_id" ref="stock.view_move_form" /> 
    <field name="priority" eval="40"/> 
    <field name="arch" type="xml"> 
     <!-- field name which you specify here after then new field will be added. --> 
     <field name="existing_field_name" position="after"> 
      <field name="partner_id" /> 
     </field> 
    </field> 
</record> 
+0

谢谢您的回答。听起来很合理,但我得到的是一个空值列。 – dgeorgiev

+0

您需要重新启动服务器和升级模块,如果仍然没有成功,请通过查询手动从表(stock_move)手动删除该partner_id,然后重新启动服务器和升级模块。 –

+0

好吧,看起来我设法让它工作。是的,现有的列导致了问题,所以我重新命名了新的字段。还决定不要存储=真 – dgeorgiev