2012-07-26 8 views
5

में एक बटन से एक विज़ार्ड लॉन्च करना मैं ओपनईआरपी में एक बटन से बुलाए गए एक क्रिया से एक जादूगर लॉन्च करने की कोशिश कर रहा हूं। मैं एक साइड मेनू बटन का उपयोग करके विज़ार्ड लॉन्च कर सकता हूं, लेकिन जब भी मैं बटन में एक्शन का उपयोग करता हूं, तो मुझे नए फॉर्म खोलने के बिना बस कुछ रीफ्रेश मिलते हैं।ओपनरपी

विज़ार्ड बहुत बुनियादी है। यहाँ कोड है:

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

मैं वहाँ में सीधे एक्सएमएल आईडी डालने की कोशिश की है (बिना $() डी), और मैंने ऊपर परिभाषित क्रिया का उपयोग करने की कोशिश की है, सभी एक ही परिणाम के साथ। अगर मैं एक बुरा कार्य नाम डालता हूं, तो मुझे एक त्रुटि मिलती है, लेकिन यह इसके बारे में है। यहां से कहां जाना है इसके बारे में कोई विचार?

उत्तर

6

आपकी बटन परिभाषा में $(...)d%(...)d के साथ प्रतिस्थापित करें।

XML_ID प्रतिस्थापन प्रतिशत चिह्न का उपयोग करता है, न कि डॉलर के संकेत।

बीटीडब्ल्यू, आपको पहले act_window की आवश्यकता नहीं है। रिकॉर्ड टैग के माध्यम से act_window को परिभाषित करना साइडबार लिंक नहीं बनाएगा; आपको शॉर्टकट टैग <act_window> का उपयोग करना होगा या ir_value रिकॉर्ड के साथ साइड बार लिंक जोड़ना होगा। दूसरा act_window (action_res_partner_terminal_wizard) साइडबार लिंक बनाएगा और बटन एक्शन के लिए उपयोग करेगा।

+0

समझते हैं कि यह बिल्कुल सही था!दो act_windows के बीच अंतर को स्पष्ट करने के लिए धन्यवाद। मैं पहले के साथ चिपक रहा हूं, मुख्य रूप से क्योंकि मैं इसे साइडव्यू में दिखाना नहीं चाहता हूं। –

+0

हां @ एली दाएं, सटीक मुद्दे पर, लेकिन उन्हें act_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> 

और देखें बटन पर की तरह

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

नीचे आप के बजाय बटन कार्रवाई पर ir.actions.act_window की एक एक्सएमएल ईद को परिभाषित करना होगा act_window परिभाषित किया जाना चाहिए एक्सएमएल आईडी

सम्मान।

+0

टैग एक शॉर्टकट है, जैसे

+0

@ मोहम्मद अली: मैं याद रखना चाहूंगा कि act_wondow रिकॉर्ड को जोड़ रहा है, यह ir.actions.act_window जैसा व्यवहार नहीं करता है। –

+0

अगर मैं गलत हूं तो कृपया मुझे सही करें; Openerp/tools/convert.py से मेरी समझ है कि act_window टैग सामान्य ir.action.act_window रिकॉर्ड प्लस सेटिंग ir.value प्रविष्ट करता है यदि src_model को साइडबार एक्शन जोड़ने के लिए परिभाषित किया गया है। इसलिए, यह सरल कार्यों के लिए समकक्ष रिकॉर्ड होना चाहिए लेकिन आप उन्नत रिकॉर्ड टैग फ़ंक्शंस जैसे रेफरी या सर्च एट्रिब्यूट्स का उपयोग नहीं कर सकते हैं। –