From 0452b7bbd2dd69df230211bc6db2fbdfa91412a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 28 Oct 2024 15:28:37 +0800 Subject: [PATCH] pengyuthon --- yuthon_holiday/__manifest__.py | 3 +- yuthon_holiday/models/inherit_hr_leave.py | 59 +++++++-- yuthon_holiday/security/ir.model.access.csv | 2 +- yuthon_holiday/views/hr_leave_batch.xml | 117 ++++++++++++++++++ .../views/inherit_hr_type_views.xml | 6 +- yuthon_hr_employee/__manifest__.py | 2 +- .../{user_templat.xlsx => user_template.xlsx} | Bin yuthon_property/views/menuitem.xml | 20 +-- yuthon_work_brand/views/hr_menus.xml | 10 +- 9 files changed, 186 insertions(+), 33 deletions(-) create mode 100644 yuthon_holiday/views/hr_leave_batch.xml rename yuthon_hr_employee/static/others/{user_templat.xlsx => user_template.xlsx} (100%) diff --git a/yuthon_holiday/__manifest__.py b/yuthon_holiday/__manifest__.py index f49979893..3097d3d50 100644 --- a/yuthon_holiday/__manifest__.py +++ b/yuthon_holiday/__manifest__.py @@ -9,7 +9,8 @@ 'security/ir.model.access.csv', 'views/inherit_hr_type_views.xml', 'views/inherit_hr_leave_allocation_views.xml', - 'views/inherit_hr_leave_view.xml', + 'views/hr_leave_batch.xml', + # 'views/inherit_hr_leave_view.xml', ], 'demo': [], 'depends': ['hr_holidays'], diff --git a/yuthon_holiday/models/inherit_hr_leave.py b/yuthon_holiday/models/inherit_hr_leave.py index 4a7ba4598..944ca4e00 100644 --- a/yuthon_holiday/models/inherit_hr_leave.py +++ b/yuthon_holiday/models/inherit_hr_leave.py @@ -1,23 +1,58 @@ # -*- coding: utf-8 -*- from odoo import models, fields, api +from odoo.exceptions import ValidationError class HrLeave(models.Model): _inherit = 'hr.leave' - leave_line_ids = fields.One2many('hr.leave.line', 'leave_id', string="假期明细") + batch_id = fields.Many2one(string='Batch', comodel_name='hr.leave.batch', required=True, ondelete='cascade') -class HrLeaveLine(models.Model): - _name = 'hr.leave.line' +class HolidaysRequestBatch(models.Model): + _name = 'hr.leave.batch' + _description = 'Time Off Batches' + _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin'] - leave_id = fields.Many2one('hr.leave', string="关联审批") - holiday_status_id = fields.Many2one('hr.leave.type', string="假期种类") - days_available = fields.Float(string="可用天数", store=True) - applicants = fields.Selection([('hour', '按小时'), ('day', '天'), ('half_day', '半天')], string="申请单位", store=True) - date_start = fields.Datetime(string="开始时间", default=fields.Datetime.now) - date_end = fields.Datetime(string="结束时间") - leave_days = fields.Float(string='请假天数', store=True) - surplus_days = fields.Float(string="剩余天数") - leave_documents_id = fields.Many2many(related="holiday_status_id.leave_documents_id", string="假期详细说明") + def _get_default_emp(self): + emp = self.env['hr.employee']._get_contextual_employee() + if not emp: + raise + return emp + + name = fields.Char(string='Description') + employee_id = fields.Many2one(string='Employee', comodel_name='hr.employee', required=True, default=_get_default_emp, index=True) + leave_ids = fields.One2many(string='Details', comodel_name='hr.leave', inverse_name='batch_id') + state = fields.Selection(string='State', selection=[ + ('draft', 'To Submit'), + ('confirm', 'To Approve'), + ('refuse', 'Refused'), + ('validate', 'Approved') + ], default='draft', tracking=True, copy=False) + + @api.constrains('leave_ids') + def _check_leave_ids(self): + for rec in self: + if len(rec.leave_ids) < 1: + raise ValidationError(_('You must have at least one leave request in the batch.')) + + # 提交 + def action_submit(self): + self.state = 'confirm' + self.leave_ids.action_confirm() + + # 拒绝 + def action_refuse(self): + self.state = 'refuse' + self.leave_ids.action_refuse() + + # 通过 + def action_validate(self): + self.state = 'validate' + self.leave_ids.action_validate() + + # 撤回 + def action_draft(self): + self.state = 'draft' + self.leave_ids.action_draft() diff --git a/yuthon_holiday/security/ir.model.access.csv b/yuthon_holiday/security/ir.model.access.csv index f312a536c..f4129e1d0 100644 --- a/yuthon_holiday/security/ir.model.access.csv +++ b/yuthon_holiday/security/ir.model.access.csv @@ -1,2 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_hr_leave_line,hr_leave_line,model_hr_leave_line,base.group_user,1,1,1,1 +access_hr_leave_batch,hr.leave.batch,model_hr_leave_batch,,1,1,1,1 diff --git a/yuthon_holiday/views/hr_leave_batch.xml b/yuthon_holiday/views/hr_leave_batch.xml new file mode 100644 index 000000000..2a299707d --- /dev/null +++ b/yuthon_holiday/views/hr_leave_batch.xml @@ -0,0 +1,117 @@ + + + + + + hr.leave.batch.tree + hr.leave.batch + + + + + + +