Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
4837 Lượt xem

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()
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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',
}
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

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',
         }
Ảnh đại diện
Huỷ bỏ
Tác giả

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

Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 12 22
3453
What is wizard ? Đã xử lý
3
thg 11 23
32693
4
thg 7 25
4973
2
thg 12 23
17804
6
thg 4 18
21522