2012-07-26 8 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レコードのサイドバーリンクを追加する必要があります。 2番目のact_windowaction_res_partner_terminal_wizard)はサイドバーリンクを作成し、ボタン操作に使用されます。

+0

それはまさに問題でした!2つのact_windowsの違いを明確にしてくれてありがとう。私は主に私がそれをサイドビューに表示したくないので、最初のものに固執しています。 –

+0

はい@Ali権利、正確な問題はありませんが、彼らはまたdef_notoeを必要としませんact_windoeも –

+0

@Ali私は驚いていますあなたが間違った終わりに向かってこのリードOpensource製品 –

-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> 

と表示ONボタンは、あなたが代わりにボタンアクションにact_windowir.actions.act_windowのXML IDを定義する必要があります

<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から私の理解は、src_modelがサイドバーのアクションを追加するように定義されている場合、act_windowタグは通常のir.action.act_windowレコードとir.valueの設定を挿入します。したがって、単純なアクションでは同等のレコードでなければなりませんが、refや検索属性などの高度なレコードタグ関数は使用できません。 –

関連する問題