2016-12-02 6 views
1

私はOdooを初めて利用しています。Odoo 8 displayStock_move.picking_id.partner_idを表示

Purchases - Incoming製品の標準ビューに「Supplier」フィールドを追加する必要があります。その値はstock_move.picking_id.partner_idから取得する必要があります。 その取得方法を理解できないようです私はそれを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

まだ成功していない場合は、サーバーとアップグレードモジュールを再起動してから、テーブルからそのpartner_idを削除して(inventory_move)、手動でクエリを実行してから、サーバーとアップグレードモジュールを再起動する必要があります。 –

+0

さて、私はそれが動作するように管理されているように見えます。そして、既存の列は問題を引き起こしていたので、私は新しいフィールドの名前を変更しました。また、保存しないことに決めた= True – dgeorgiev