summaryrefslogtreecommitdiff
path: root/addons/hr_holidays/wizard
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/hr_holidays/wizard
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/hr_holidays/wizard')
-rw-r--r--addons/hr_holidays/wizard/__init__.py5
-rw-r--r--addons/hr_holidays/wizard/hr_departure_wizard.py20
-rw-r--r--addons/hr_holidays/wizard/hr_departure_wizard_views.xml13
-rw-r--r--addons/hr_holidays/wizard/hr_holidays_summary_employees.py31
-rw-r--r--addons/hr_holidays/wizard/hr_holidays_summary_employees_views.xml34
5 files changed, 103 insertions, 0 deletions
diff --git a/addons/hr_holidays/wizard/__init__.py b/addons/hr_holidays/wizard/__init__.py
new file mode 100644
index 00000000..2b891270
--- /dev/null
+++ b/addons/hr_holidays/wizard/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import hr_holidays_summary_employees
+from . import hr_departure_wizard
diff --git a/addons/hr_holidays/wizard/hr_departure_wizard.py b/addons/hr_holidays/wizard/hr_departure_wizard.py
new file mode 100644
index 00000000..784d4f3a
--- /dev/null
+++ b/addons/hr_holidays/wizard/hr_departure_wizard.py
@@ -0,0 +1,20 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from datetime import datetime, timedelta
+
+from odoo import api, fields, models
+
+
+class HrDepartureWizard(models.TransientModel):
+ _inherit = 'hr.departure.wizard'
+
+ cancel_leaves = fields.Boolean("Cancel Future Leaves", default=True)
+
+ def action_register_departure(self):
+ super(HrDepartureWizard, self).action_register_departure()
+ if self.cancel_leaves:
+ future_leaves = self.env['hr.leave'].search([('employee_id', '=', self.employee_id.id),
+ ('date_to', '>', self.departure_date),
+ ('state', 'not in', ['cancel', 'refuse'])])
+ future_leaves.write({'state': 'cancel'})
diff --git a/addons/hr_holidays/wizard/hr_departure_wizard_views.xml b/addons/hr_holidays/wizard/hr_departure_wizard_views.xml
new file mode 100644
index 00000000..02dd43c9
--- /dev/null
+++ b/addons/hr_holidays/wizard/hr_departure_wizard_views.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="hr_departure_wizard_view_form" model="ir.ui.view">
+ <field name="name">hr.departure.wizard.view.form.extend3</field>
+ <field name="model">hr.departure.wizard</field>
+ <field name="inherit_id" ref="hr.hr_departure_wizard_view_form" />
+ <field name="arch" type="xml">
+ <xpath expr="//group[@id='date']" position="inside">
+ <field name="cancel_leaves" string="Cancel all time off after this date"/>
+ </xpath>
+ </field>
+ </record>
+</odoo>
diff --git a/addons/hr_holidays/wizard/hr_holidays_summary_employees.py b/addons/hr_holidays/wizard/hr_holidays_summary_employees.py
new file mode 100644
index 00000000..fccc9269
--- /dev/null
+++ b/addons/hr_holidays/wizard/hr_holidays_summary_employees.py
@@ -0,0 +1,31 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+import time
+
+from odoo import api, fields, models
+
+
+class HolidaysSummaryEmployee(models.TransientModel):
+
+ _name = 'hr.holidays.summary.employee'
+ _description = 'HR Time Off Summary Report By Employee'
+
+ date_from = fields.Date(string='From', required=True, default=lambda *a: time.strftime('%Y-%m-01'))
+ emp = fields.Many2many('hr.employee', 'summary_emp_rel', 'sum_id', 'emp_id', string='Employee(s)')
+ holiday_type = fields.Selection([
+ ('Approved', 'Approved'),
+ ('Confirmed', 'Confirmed'),
+ ('both', 'Both Approved and Confirmed')
+ ], string='Select Time Off Type', required=True, default='Approved')
+
+ def print_report(self):
+ self.ensure_one()
+ [data] = self.read()
+ data['emp'] = self.env.context.get('active_ids', [])
+ employees = self.env['hr.employee'].browse(data['emp'])
+ datas = {
+ 'ids': [],
+ 'model': 'hr.employee',
+ 'form': data
+ }
+ return self.env.ref('hr_holidays.action_report_holidayssummary').report_action(employees, data=datas)
diff --git a/addons/hr_holidays/wizard/hr_holidays_summary_employees_views.xml b/addons/hr_holidays/wizard/hr_holidays_summary_employees_views.xml
new file mode 100644
index 00000000..b5821c5e
--- /dev/null
+++ b/addons/hr_holidays/wizard/hr_holidays_summary_employees_views.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+ <record id="view_hr_holidays_summary_employee" model="ir.ui.view">
+ <field name="name">hr.holidays.summary.employee.form</field>
+ <field name="model">hr.holidays.summary.employee</field>
+ <field name="arch" type="xml">
+ <form string="Time Off Summary">
+ <group col="4" colspan="6">
+ <field name="date_from"/>
+ <newline/>
+ <field name="holiday_type"/>
+ <newline/>
+ <field name="emp" invisible="True"/>
+ </group>
+ <footer>
+ <button name="print_report" string="Print" type="object" class="btn-primary"/>
+ <button string="Cancel" class="btn-secondary" special="cancel" />
+ </footer>
+ </form>
+ </field>
+ </record>
+
+ <record id="action_hr_holidays_summary_employee" model="ir.actions.act_window">
+ <field name="name">Time Off Summary</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">hr.holidays.summary.employee</field>
+ <field name="view_mode">form</field>
+ <field name="target">new</field>
+ <field name="binding_model_id" ref="hr.model_hr_employee" />
+ <field name="binding_type">report</field>
+ </record>
+
+</odoo>