This question has been flagged
2 Replies
4175 Views

Hello,

I'm trying to do a wizard. But when I try to launch it on OpenERP, I have a blank view. I think I miss something, but I don't know what.

XML:

<?xml version="1.0"?>
<openerp>
<data>
    <!-- form view -->
    <record model="ir.ui.view" id="view_staff_pay_push_form">
        <field name="name">staff.pay.push.form</field>
        <field name="model">staff.pay.push</field>
        <field name="type">form</field>
        <field name="arch" type="xml">
            <form string="Pay Push" version="7.0">
                <field invisible="1" name="state" />
                <group states="init">
                    <field name="user_id" />                
                </group>
                <group states="defineAmount">
                    <field name="amount" />                
                </group>
                <footer states="init">
                    <button name="action_next" string="Next"/>
                </footer>
                <footer states="defineAmount">
                    <button name="action_previous" string="Previous"/>
                </footer>
          </form>
        </field>
    </record>
    <record model="ir.ui.view" id="view_staff_pay_push_tree">
        <field name="name">staff.pay.push.tree</field>
        <field name="model">staff.pay.push</field>
        <field name="type">tree</field>
        <field name="arch" type="xml">
            <tree string="Pay Push" version="7.0">
                <field name="user_id" />
                <field name="amount" />
          </tree>
        </field>
    </record>
    <!-- action -->
    <record model="ir.actions.act_window" id="show_Field">
        <field name="name">Pay Push</field>
        <field name="res_model">staff.pay.push</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
    </record>
    <!-- menu -->
    <menuitem name="Field" id="menu_staff_pay_pushs"  sequence="49" parent="menu_staff_options" action="show_Field" groups="group_staff_management_in_charge"/>
</data>
</openerp>

Python file:

from openerp.osv import osv, fields
from openerp.osv.orm import TransientModel

class staff_pay_push(TransientModel):
_name="staff.pay.push"
_columns={
    'user_id':fields.many2one('res.users', 'User', relate=True),
    'amount': fields.float('Amount', readonly=False),
    'state': fields.selection([('init', 'init'),('defineAmount', 'defineAmount')])
}

def action_next(self, cr, uid, ids, context=None):
    #your treatment to click  button next 
    #...
    # update state to  step2
    self.write(cr, uid, ids, {'state': 'defineAmount',}, context=context)
    #return view
    return {
        'type': 'ir.actions.act_window',
        'res_model': 'staff_pay_push',
        'view_mode': 'form',
        'view_type': 'form',
        'res_id': this.id,
        'views': [(False, 'form')],
        'target': 'new',
        'context' : context
         }

def action_previous(self, cr, uid, ids, context=None):
    #your treatment to click  button previous 
    #...
    # update state to  step1
    self.write(cr, uid, ids, {'state': 'init',}, context=context)
    #return view
    return {
        'type': 'ir.actions.act_window',
        'res_model': 'staff_pay_push',
        'view_mode': 'form',
        'view_type': 'form',
        'res_id': this.id,
        'views': [(False, 'form')],
        'target': 'new',
         }

staff_pay_push()
Avatar
Discard
Best Answer

You need define initial value of state field. Or through defaults values or through context.

For example in your py file add:

_defaults = {
    'state': 'init',
}
Avatar
Discard
Best Answer

Hi,

Try this code

def action_previous(self, cr, uid, ids, context=None):
    #your treatment to click  button previous 
    #...
    # update state to  step1
    self.write(cr, uid, ids, {'state': 'init',}, context=context)
    ir_model_data = self.pool.get('ir.model.data')
    view_id = ir_model_data.get_object_reference(cr, uid, 'your_module_name', 'view_staff_pay_push_form')[1]
    #return view
    return {
        'name': _('Test '),
        'type': 'ir.actions.act_window',
        'res_model': 'staff.pay.push',
        'view_mode': 'form',
        'view_type': 'form',
        'view_id': view_id,
        'views': [(view_id, 'form')],
        'target': 'new',
         }
Avatar
Discard
Author

This code don't seems to be the solution. I steel have my blank page.