2012-07-26 6 views
5

Ich versuche, einen Assistenten aus einer Aktion, die von einer Schaltfläche in OpenERP aufgerufen wird, zu starten. Ich kann den Assistenten mit einem seitlichen Menü-Button starten, aber wenn ich die Aktion in einer Schaltfläche verwende, erhalte ich nur ein paar Aktualisierungen, ohne dass das neue Formular geöffnet wird.Starten eines Assistenten von einer Schaltfläche in OpenERP

Der Assistent ist ziemlich einfach. Hier ist der Code:

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> 

Und ich habe den Code für die Schaltfläche mit:

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

Ich habe versucht, dort die gerade XML-ID setzen (ohne die $() d), und ich habe versucht, entweder die oben definierte Aktion, alle mit den gleichen Ergebnissen. Ich erhalte einen Fehler, wenn ich einen schlechten Aktionsnamen eingebe, aber das ist es auch schon. Irgendwelche Ideen, wohin du von hier aus gehst?

Antwort

6

In Ihrer Knopfdefinition ersetzen Sie $(...)d durch %(...)d.

Die XML_ID-Substitution verwendet das Prozentzeichen, nicht das Dollarzeichen.

BTW, Sie brauchen nicht die erste act_window. Das Definieren des act_window über Datensatz-Tags wird nicht die Sidebar-Verknüpfung erstellen; Sie müssen das Shortcut-Tag <act_window> verwenden oder den Link der Seitenleiste mit dem Eintrag ir_value hinzufügen. Die zweite act_window (action_res_partner_terminal_wizard) wird die Seitenleiste Link erstellen und für die Schaltfläche Aktion verwendet werden.

+0

Das war genau das Problem!Danke für die Klärung der Unterschiede zwischen den beiden act_windows. Ich bleibe bei der ersten, hauptsächlich weil ich nicht möchte, dass sie in der Seitenansicht erscheint. –

+0

Ja @Ali richtig, Thst das genaue Problem, aber sie ist nicht zu defione act_windoe auch –

+0

@Ali Ich bin überrascht Warum Sie vorschlagen, hier Richtlinien falsch zu tun, führen diese Opensource-Produkt in Richtung falsches Ende –

-2

Ihre wizard.xml sollte wie folgt aussehen:

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

und On View-Taste sein sollte Defined unter

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

Sie eine XML-Id des ir.actions.act_window auf die Schaltfläche Aktion definieren müssen stattdessen act_window XML-ID

Grüße.

+0

Das -Tag ist eine Verknüpfung, wie und Tags. Es erstellt den gleichen Datensatz wie das

+0

@MohammadAli: Ich möchte daran erinnern, dass act_wondow den Datensatz verbindet, der sich nicht wie ir.actions.act_window verhält. –

+0

Bitte korrigieren Sie mich, wenn ich falsch liege; Nach meinem Verständnis von openerp/tools/convert.py fügt das act_window-Tag den normalen ir.action.act_window-Datensatz und den ir.value-Wert ein, wenn src_model zum Hinzufügen der Seitenleistenaktion definiert ist. Es sollte also ein gleichwertiger Datensatz für einfache Aktionen sein, aber Sie können keine erweiterten Record-Tag-Funktionen wie ref oder Suchattribute verwenden. –

Verwandte Themen