diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index 25611bb0ed005d567fabde7cd25e73c626bf9aab..c3c3f0660ba980f3a02bffa453c6c770e1bb664a 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -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" diff --git a/addons/hr_holidays/hr_holidays_view.xml b/addons/hr_holidays/hr_holidays_view.xml index 958194d35145ed5d97924abc9f833a6f199a800d..6cbf52c89d700bf9f1fadc1c238576e997b4e4c8 100644 --- a/addons/hr_holidays/hr_holidays_view.xml +++ b/addons/hr_holidays/hr_holidays_view.xml @@ -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"/> @@ -156,14 +158,10 @@ <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> @@ -204,14 +202,10 @@ <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> @@ -231,12 +225,8 @@ <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"/> @@ -430,7 +420,7 @@ <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> diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index b36974e859ea489db004f234e820ca8a109a9ee8..9df9247f485244345f08981d53e2876c769f0d27 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -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: diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 911736c7262bce55edbeffe9711000cb59dacd7a..e48989890d4acbb920bcd6a43d9ad9e3333f9ed3 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -2028,6 +2028,13 @@ <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>