2015-02-04 3 views
1

나는 다음과 같은 상태에서 좌초 https://www.odoo.com/apps/modules/7.0/mrp_bom_product_details/는에서 BOM 라인에 열을 추가 OpenERP V8

내 시도에 근거하여 BOM 라인에서 사용자 지정 열로 BOM 폼보기를 사용자 정의하기 위해 노력하고있어 :

custom_bom_form.py :

from openerp.osv import fields, osv 
from openerp.tools.translate import _ 

class mrp_bom(osv.osv): 
    _inherit = 'mrp.bom' 

    _columns ={ 
     'product_qty_available': fields.related('product_id', 'qty_available', type='float', string='Quantity On Hand', readonly=True), 
    } 
    _defaults = { 
    } 

mrp_bom() 

custom_bom_form.xml :

<?xml version="1.0"?> 
<openerp> 
    <data> 

     <record id="mrp_bom_form_view_product_details" model="ir.ui.view"> 
      <field name="name">mrp.bom.form.product_details</field> 
      <field name="model">mrp.bom</field> 
      <field name="inherit_id" ref="mrp.mrp_bom_form_view"/>  
      <field name="arch" type="xml"> 
       <xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='product_qty']" position="after" > 
        <field name="product_qty_available" /> 
       </xpath> 
      </field> 
     </record> 

    </data> 
</openerp> 

모듈을 설치하는 동안이 Odoo에서 오류가 발생합니다 : 내가 거기 product_qty_available를 참조 할 수없는 이유

ParseError: "ValidateError 
Field(s) `arch` failed against a constraint: Invalid view definition 

Error details: 
Field `product_qty_available` does not exist 

Error context: 
View `mrp.bom.form.product_details` 
[view_id: 1094, xml_id: n/a, model: mrp.bom, parent_id: 675]" while parsing /usr/lib/python2.7/dist-packages/openerp/addons/mrp_bom_product_details/mrp_bom_product_details.xml:5, near 
    <record id="mrp_bom_form_view_product_details" model="ir.ui.view"> 
     <field name="name">mrp.bom.form.product_details</field> 
     <field name="model">mrp.bom</field> 
     <field name="inherit_id" ref="mrp.mrp_bom_form_view"/>  
     <field name="arch" type="xml"> 
      <xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='product_qty']" position="after"> 
       <field name="product_qty_available"/> 
      </xpath> 
     </field> 
    </record> 

나는 그것은 BOM 형태로 다른 장소에서 작동 알아낼 수 없습니다. 예 :

 <field name="arch" type="xml"> 
      <field name="product_id" position="after"> 
       <field name="product_qty_available" /> 
      </field> 
     </field> 

작동.

대신 참조 된 필드를 시스템이 알고있는 것으로 변경합니다. 다른 product_qty 열을 추가 :

 <field name="arch" type="xml"> 
      <xpath expr="//notebook/page[@string='Components']/field/tree[@string='Components']/field[@name='product_qty']" position="after" > 
       <field name="product_qty" /> 
      </xpath> 
     </field> 

누군가가 내가 잘못 뭐하는 거지 저를 표시 할 수 있습니다. 어떻게 product_qty_available을 참조 할 수 있습니까? 노트북 페이지에 특별한 것이 있습니까?

업데이트

근무 평 파일 :

from openerp.osv import fields, osv 
from openerp.tools.translate import _ 

class mrp_bom_line(osv.osv): 
    _inherit = 'mrp.bom.line' 

    _columns ={ 
     'product_qty_available': fields.related('product_id', 'qty_available', type='float', string='Quantity On Hand', readonly=True), 
    } 
    _defaults = { 
    } 

mrp_bom_line() 

및 XML 파일 : 당신은 모델의 필드 product_qty_available을 추가 한

<?xml version="1.0"?> 
<openerp> 
    <data> 

     <record id="mrp_bom_form_view_product_details" model="ir.ui.view"> 
      <field name="name">mrp.bom.form.product_details</field> 
      <field name="model">mrp.bom</field> 
      <field name="inherit_id" ref="mrp.mrp_bom_form_view"/>  
      <field name="arch" type="xml"> 
       <xpath expr="//field[@name='bom_line_ids']/tree/field[@name='product_qty']" position="after"> 
        <field name="product_qty_available" /> 
       </xpath> 
      </field> 
     </record> 

    </data> 
</openerp> 

답변

1

mrp.bom 당신은을 추가하려고 내부 필드의 필드 bom_line_ids - 트리보기에서 bom_line_idsmbrp.bom.line의 one2many입니다. 따라서 시스템은 실제적으로 존재하지 않는 mrp.bom.line 모델에 그곳에있는 product_qty_available 필드를 찾으려고합니다. 나는 확실하지 않다

은, 그래서 당신은 그래서 다음

<xpath expr="/form/group/group[1]/field[@name='product_id']" position="after"> 
    <field name="product_qty_available"/> 
</xpath> 

이 의지 시도해야하지만, 다음

1. 필드는 모델 mrp.bom에 추가하려고 정확한 목표는 무엇인가 마스터 정보를 표시하는 화면의 상단 섹션에 product_id 필드 뒤에 필드를 추가하십시오. 다음

2.Add하여 mrp.bom.line 모델의 필드는 다음을 시도하십시오

<xpath expr="//field[@name='bom_line_ids']/tree/field[@name='product_qty']" position="after"> 
    <field name="product_qty_available"/> 
</xpath> 
+0

두 번째 제안은 내가 달성하기 위해 노력하고 있지만, 운이 아직있어 것입니다. .py 파일을 변경하여 mrp.bom.line에서 상속 된 mrp_bom_line 클래스를 정의하고 xml 파일을 두 번째 제안으로 변경했습니다.Odoo는 여전히'product_qty_available'이 존재하지 않는다고보고합니다. –

+0

".py"파일에 대한 코드를 여기에 게시 할 수 있습니까? 서버를 다시 시작하고 모듈을 업데이트 했습니까? –

+0

또한 모델을 xml 파일의 mrp.bom.line으로 변경하면 Odoo는 'Field' message_follower_ids'가 존재하지 않는다는 오류를 제공합니다. 가능한 경우 –