2012-07-26 2 views
5

OpenERP의 버튼에서 호출 된 작업에서 마법사를 시작하려고합니다. 사이드 메뉴 버튼을 사용하여 마법사를 시작할 수 있지만, 버튼으로 액션을 사용할 때마다 새로운 폼을 열지 않고도 몇 가지 새로 고침을 얻을 수 있습니다.OpenERP의 버튼에서 마법사 시작하기

마법사는 매우 기본입니다. 여기에 코드입니다 :

wizard.xml

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


     <record id="view_res_partner_add_terminal_wizard" model="ir.ui.view"> 
      <field name="name">res.partner.terminal.form</field> 
      <field name="model">res.partner.terminal</field> 
      <field name="type">form</field> 
      <field name="arch" type="xml"> 
       <form string="Add terminal"> 
        <group colspan="4" > 
         <separator string="Select terminals to assign" colspan="4"/> 
         <field name="terminal_id" string="Terminals" domain="[('state','=','available')]"/> 
         <newline/> 
        </group> 
        <separator string="" colspan="4" /> 
        <group colspan="4" col="6"> 
         <button icon="gtk-cancel" special="cancel" string="Cancel"/> 
         <button icon="gtk-ok" name="add_terminal" string="Assign Terminal" type="object"/> 
        </group> 
       </form> 
      </field> 
     </record> 

     <record id="action_res_partner_terminal" model="ir.actions.act_window"> 
      <field name="name">Assign Terminal</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">res.partner.terminal</field> 
      <field name="src_model">res.partner</field> 
      <field name="view_type">form</field> 
      <field name="view_mode">form</field> 
      <field name="view_id" ref="view_res_partner_add_terminal_wizard"/> 
      <field name="target">new</field> --> 
      <field name="key2">client_action_multi</field> 
     </record> 

     <act_window id="action_res_partner_terminal_wizard" 
       name="Assign Terminal" 
       res_model="res.partner.terminal" 
       src_model="res.partner" 
       view_mode="form" 
       key2="client_action_multi" 
       target="new" 
     /> 


    </data> 
</openerp> 

그리고있는 버튼에 대한 코드가 다음없이 (

<button name="$(universal_account.action_res_partner_terminal_wizard)d" string="Assign Terminal" type="action" /> 

내가 거기에 직선 XML ID를 넣어 시도했습니다를 $() d), 그리고 위에서 정의한 액션 중 하나를 사용하여 동일한 결과를 얻으려고했습니다. 나쁜 행동 이름을 넣으면 오류가 발생하지만 그게 문제입니다. 여기에서 어디로 가야할까요?

답변

6

버튼 정의에서 $(...)d%(...)d으로 바꿉니다.

XML_ID 대체는 달러 기호가 아닌 백분율 기호를 사용합니다.

처음에 act_window이 필요하지 않습니다. 레코드 태그를 통해 act_window을 정의하면 사이드 바 링크가 생성되지 않습니다. 바로 가기 태그 <act_window>을 사용하거나 사이드 바 링크를 ir_value 레코드와 함께 추가해야합니다. 두 번째 act_window (action_res_partner_terminal_wizard)은 사이드 바 링크를 만들고 버튼 동작에 사용됩니다.

+0

그건 정확히 문제였습니다!두 act_windows의 차이점을 명확히 해 주셔서 감사합니다. 주로 사이드 뷰에 나타나기를 원하지 않기 때문에 첫 번째 것을 고수하고 있습니다. –

+0

예 @Ali 권리, 정확한 문제는 아니지만 그들의 행동을 다시 정의 할 필요가 없습니다 ._windoe도 –

+0

@Ali 나는 놀랍습니다. 왜 여기서 잘못된 지침을 제시했는지, –

-2

귀하의 wizard.xml은 다음과 같아야합니다

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <record id="view_res_partner_add_terminal_wizard" model="ir.ui.view"> 
      <field name="name">res.partner.terminal.form</field> 
      <field name="model">res.partner.terminal</field> 
      <field name="type">form</field> 
      <field name="arch" type="xml"> 
       <form string="Add terminal"> 
        <group colspan="4" > 
         <separator string="Select terminals to assign" colspan="4"/> 
         <field name="terminal_id" string="Terminals" domain="[('state','=','available')]"/> 
         <newline/> 
        </group> 
        <separator string="" colspan="4" /> 
        <group colspan="4" col="6"> 
         <button icon="gtk-cancel" special="cancel" string="Cancel"/> 
         <button icon="gtk-ok" name="add_terminal" string="Assign Terminal" type="object"/> 
        </group> 
       </form> 
      </field> 
     </record> 


     <record id="action_res_partner_terminal" model="ir.actions.act_window"> 
      <field name="name">Assign Terminal</field> 
      <field name="type">ir.actions.act_window</field> 
      <field name="res_model">res.partner.terminal</field> 
      <field name="view_type">form</field> 
      <field name="view_id" ref="view_res_partner_add_terminal_wizard"/> 
      <field name="target">new</field> 
     </record> 
    </data> 
</openerp> 

및보기 버튼을

당신은 버튼 액션에 ir.actions.act_window의 XML 이드 정의 대신 act_window합니다

<button name="$(universal_account.action_res_partner_terminal)d" 
     string="Assign Terminal" 
     type="action" 
     help="Assign Terminal"/> 

아래처럼 정의되어야한다 XML ID.

감사합니다.

+0

태그는

+0

@MohammadAli : 나는 act_wondow가 레코드를 링크하고 있음을 상기시키고 싶습니다. ir.actions.act_window와 같지 않습니다. –

+0

내가 틀렸다면 나를 바로 잡으십시오. 내 이해는 openerp/tools/convert.py에서 act_window 태그는 src_model이 사이드 바 동작을 추가하도록 정의 된 경우 일반적인 ir.action.act_window 레코드와 ir.value 설정을 삽입합니다. 따라서 간단한 작업에 대해서는 동등한 레코드 여야하지만 ref 또는 검색 속성과 같은 고급 레코드 태그 기능을 사용할 수는 없습니다. –