2014-12-30 4 views
1

나는 odoo에 대한 새로운 프로그래머이며 내 검색에서 내 문제에 대한 답을 찾지 못했습니다.xml 필드에서 텍스트 가져 오기 및 설정

name 필드의 기본 폴더에서 res_partner_view 확장자를 사용하고 있습니다. 내가 원하는 것은 부가 가치세가 없거나 일반으로 정의 된 사용자가있는 경우 파트너 이름을 변경할 수 없다는 것입니다 (999999990). 사용자가 이름을 변경할 수 없다는 인상을 할 때 그는 변경하려고하기 전에 필드에 원래 이름을 넣고 싶습니다.

은 내 모듈의 onchange를 기능이 있습니다

def onchange_partner_name(self, cr, uid, ids, n, context=None): 
    #raise osv.except_osv(_('Alterar nome'), _('Função onchange_partner_name')) 

    result = {} 

    cr.execute("Select res_partner.vat, res_partner.name, account_invoice.state from account_invoice inner join res_partner on account_invoice.partner_id = res_partner.id where res_partner.id = '%s'" % ids[0]) 
    registos = cr.fetchall() 

    if (len(registos) > 0): 
     partner_nif = list(set(i[0] for i in registos)) 

     if partner_nif[-1] == None or str(partner_nif[-1]) == '999999990': 
      for vat,nam,estado in registos: 
       if estado == 'open' or estado == 'paid': 
         raise osv.except_osv(_('Cliente com documentos emitidos'), _(content + 'Não pode alterar o Nome de um cliente sem NIF.')) 

    result['name'] = n 
    return {'value': result} 

을 그리고 내 XML은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 

     <record id="view_partner_form_Name" model="ir.ui.view"> 
      <field name="name">res.partner.form2</field> 
      <field name="model">res.partner</field> 
      <field name="inherit_id" ref="base.view_partner_form"/> 
      <field eval="1" name="priority"/> 
      <field name="arch" type="xml"> 
       <field name="name" default_focus="1" placeholder="Name" position="replace"> 
        <field name="name" default_focus="1" placeholder="Name" on_change="onchange_partner_name(name)"/> 
       </field> 
      </field> 
     </record> 

    </data> 
</openerp> 

그래서 내가 원하는, 또는 필드 "이름"에서의 변경하기 전에 이름을 저장 xml 및 raise 이전에 다시 변경하거나 raise 전에 테이블에있는 이름을 넣습니다.

xml의 필드 이름에있는 contend (문자열)을 가져오고 설정하는 방법이 있습니까? 사전에

감사

답변

0
사람이 같은 문제가 있다면하지만 난 볼 수있는 솔루션 대신 인상 osv.except의 반환에 경고를 추가 할 수 있다는 모르겠어요

....

... 
for vat,nam,estado in registos: 
        if estado == 'open' or estado == 'paid': 
         result['name'] = nam 
         return{'value': result, 'warning':{'title':'warning','message':'Não pode alterar o Nome de um cliente sem NIF.'}} 
... 

그리고 "경고"를 표시하는 "이름"필드를 변경하고 필드의 변경 사항을 테이블에 저장된 이름으로 롤백 할 수 없습니다.

관련 문제