[IMP] hr_holidays: toogle button for leaves mgmt
authorParamjit Singh Sahota <psa@openerp.com>
Thu, 4 Sep 2014 11:21:59 +0000 (16:51 +0530)
committerRichard Mathot <rim@openerp.com>
Tue, 16 Sep 2014 14:06:07 +0000 (16:06 +0200)
addons/hr_holidays/hr_holidays.py
addons/hr_holidays/hr_holidays_view.xml
addons/web/static/src/js/view_list.js
addons/web/static/src/xml/base.xml

index 25611bb..c3c3f06 100644 (file)
@@ -178,7 +178,7 @@ class hr_holidays(osv.osv):
             \nThe status is \'Approved\', when holiday request is approved by manager.'),
         'payslip_status': fields.boolean(string='Payslip Status',
             help='Check this field when the leave has been taken into account in the payslip.'),
-        'report_note': fields.text('Comment by Manager'),
+        'report_note': fields.text('HR Comments'),
         'user_id':fields.related('employee_id', 'user_id', type='many2one', relation='res.users', string='User', store=True),
         'date_from': fields.datetime('Start Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, select=True, copy=False),
         'date_to': fields.datetime('End Date', readonly=True, states={'draft':[('readonly',False)], 'confirm':[('readonly',False)]}, copy=False),
@@ -459,11 +459,9 @@ class hr_holidays(osv.osv):
         return True
 
     def set_payslip_status(self, cr, uid, ids, context=None):
-        return self.write(cr, uid, ids, {'payslip_status': True}, context=context)
-
-    def unset_payslip_status(self, cr, uid, ids, context=None):
-        return self.write(cr, uid, ids, {'payslip_status': False}, context=context)
-
+        holidays_obj = self.browse(cr, uid, ids, context=context)[0]
+        status = False if holidays_obj['payslip_status'] else True
+        return self.write(cr, uid, ids, {'payslip_status': status}, context=context)
 
 class resource_calendar_leaves(osv.osv):
     _inherit = "resource.calendar.leaves"
index 958194d..6cbf52c 100644 (file)
@@ -35,6 +35,8 @@
                     <separator/>
                     <filter string="My Requests" name="my_leaves" domain="[('employee_id.user_id','=', uid)]" help="My Leave Requests"/>
                     <separator/>
+                    <filter string="To Do" name="todo" domain="[('payslip_status', '=', False), ('holiday_status_id.active', '=', True)]"/>
+                    <separator/>
                     <filter string="My Department Leaves" help="My Department Leaves" domain="[('department_id.manager_id','=',uid)]"/>
                     <field name="employee_id"/>
                     <field name="department_id"/>
                     <field name="date_to" required="1" on_change="onchange_date_to(date_to, date_from)"/>
                     <field name="number_of_days_temp" string="Allocated Days" sum="Remaining Days"/>
                     <field name="state"/>
+                    <button name="set_payslip_status" field_name="payslip_status" type="object"
+                        widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="base.group_hr_manager"/>
                     <field name="report_note" groups="base.group_hr_manager"/>
                     <field name="payslip_status" invisible="1"/>
-                    <button string="To Report in Payslip" name="set_payslip_status"
-                        type="object" class="oe_link oe_right" icon="gtk-normal"
-                        attrs="{'invisible': [('payslip_status', '=', True)]}" groups="base.group_hr_manager"/>
-                    <button string="Reported in last payslips" name="unset_payslip_status"
-                        type="object" class="oe_link oe_right" icon="gtk-yes"
-                        attrs="{'invisible': [('payslip_status', '=', False)]}" groups="base.group_hr_manager"/>
                 </tree>
             </field>
         </record>
                     <field name="date_to"/>
                     <field name="holiday_status_id"/>
                     <field name="state"/>
+                    <button name="set_payslip_status" field_name="payslip_status" type="object"
+                        widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="base.group_hr_manager"/>
                     <field name="report_note"/>
                     <field name="payslip_status" invisible="1"/>
-                    <button string="To Report in Payslip" name="set_payslip_status"
-                        type="object" class="oe_link oe_right"
-                        attrs="{'invisible': [('payslip_status', '=', True)]}" groups="base.group_hr_manager"/>
-                    <button string="Reported in last payslips" name="unset_payslip_status"
-                        type="object" class="oe_link oe_right"
-                        attrs="{'invisible': [('payslip_status', '=', False)]}" groups="base.group_hr_manager"/>
                 </tree>
             </field>
         </record>
                     <field name="number_of_days" string="Number of Days" sum="Remaining Days"/>
                     <field name="state"/>
                     <field name="payslip_status" invisible="1"/>
-                    <button string="To Report in Payslip" name="set_payslip_status"
-                        type="object" class="oe_link oe_right"
-                        attrs="{'invisible': [('payslip_status', '=', True)]}" groups="base.group_hr_manager"/>
-                    <button string="Reported in last payslips" name="unset_payslip_status"
-                        type="object" class="oe_link oe_right"
-                        attrs="{'invisible': [('payslip_status', '=', False)]}" groups="base.group_hr_manager"/>
+                    <button name="set_payslip_status" field_name="payslip_status" type="object"
+                        widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="base.group_hr_manager"/>
                     <field name="category_id" invisible="1"/>
                     <field name="department_id" invisible="not context.get('set_visible',False)"/>
                     <field name="manager_id" invisible="1"/>
             <field name="view_type">form</field>
             <field name="view_mode">tree,form</field>
             <field name="view_id" eval="view_holiday_employee"/>
-            <field name="context">{'default_type': 'remove', 'search_default_gray': 1, 'search_default_year': 1, 'search_default_group_employee': 1}</field>
+            <field name="context">{'default_type': 'remove', 'search_default_todo': 1}</field>
             <field name="domain">[('type','=','remove')]</field>
             <field name="search_view_id" ref="view_hr_holidays_filter"/>
         </record>
index b36974e..9df9247 100644 (file)
@@ -2155,7 +2155,8 @@ instance.web.list.columns = new instance.web.Registry({
     'button': 'instance.web.list.Button',
     'field.many2onebutton': 'instance.web.list.Many2OneButton',
     'field.reference': 'instance.web.list.Reference',
-    'field.many2many': 'instance.web.list.Many2Many'
+    'field.many2many': 'instance.web.list.Many2Many',
+    'button.toggle_button': 'instance.web.list.toggle_button',
 });
 instance.web.list.columns.for_ = function (id, field, node) {
     var description = _.extend({tag: node.tag}, field, node.attrs);
@@ -2394,5 +2395,18 @@ instance.web.list.Reference = instance.web.list.Column.extend({
         return this._super(row_data, options);
     }
 });
+instance.web.list.toggle_button = instance.web.list.Column.extend({
+    format: function (row_data, options) {
+        this._super(row_data, options);
+        var button_tips = JSON.parse(this.options);
+        var fieldname = this.field_name;
+        var has_value = row_data[fieldname] && !!row_data[fieldname].value;
+        this.icon = has_value ? 'gtk-yes' : 'gtk-normal';
+        this.string = has_value ? _t(button_tips ? button_tips['active']: ''): _t(button_tips ? button_tips['inactive']: '');
+        return QWeb.render('toggle_button', {
+            widget: this,
+            prefix: instance.session.prefix,
+        });
+    },
+});
 })();
-// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
index 911736c..e489898 100644 (file)
     <a href="javascript:void(0)"><t t-esc="text"/></a>
 </t>
 <t t-name="StatInfo">
-    <strong><t t-esc="value"/></strong><br/><t t-esc="text"/></t>
+    <strong><t t-esc="value"/></strong><br/><t t-esc="text"/>
+</t>
+<button t-name="toggle_button" type="button"
+    t-att-title="widget.string"
+    style="box-shadow: none; white-space:nowrap;">
+    <img t-attf-src="#{prefix}/web/static/src/img/icons/#{widget.icon}.png"
+    t-att-alt="widget.string"/>
+</button>
 
 </templates>