From 27cb39082239833a370d4e5aef81b6bd5a608fdf Mon Sep 17 00:00:00 2001 From: zhou <123@> Date: Wed, 2 Apr 2025 19:43:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_holiday/models/inherit_hr_leave.py | 34 +++++++++-------- .../models/overtime_approval.py | 38 ++++++++++++------- yuthon_hr_attendance/models/overtime_page.py | 1 + .../views/overtime_page_views.xml | 1 + .../models/yuthon_hr_department.py | 2 - yuthon_notice/views/yuthon_notice_views.xml | 3 -- yuthon_property_approval/__manifest__.py | 1 + yuthon_trade/models/yuthon_task_approval.py | 15 +++++++- yuthon_will_task/views/yuthon_task_menu.xml | 6 --- yuthon_work_brand/views/hr_menus.xml | 17 --------- 10 files changed, 59 insertions(+), 59 deletions(-) diff --git a/yuthon_holiday/models/inherit_hr_leave.py b/yuthon_holiday/models/inherit_hr_leave.py index 4f4700e57..b6fc81588 100644 --- a/yuthon_holiday/models/inherit_hr_leave.py +++ b/yuthon_holiday/models/inherit_hr_leave.py @@ -299,21 +299,25 @@ class HolidaysRequestBatch(models.Model): self.leave_ids.action_validate() self.hour_leave_ids.action_validate() - # @api.model_create_multi - # def create(self, vals_list): - # for vals in vals_list: - # number_hours = 0 - # if vals.get('yuthon_company') == 'thwg': - # if 'hour_leave_ids' in vals: - # for leave_info in vals.get('hour_leave_ids', []): - # hours_text = leave_info[2]['number_of_hours_text'] - # match = re.search(r'\d+', hours_text) - # if match: - # number_hours += float(match.group()) - # valid_hours = [2, 4, 6, 8] - # if number_hours not in valid_hours: - # raise ValidationError("休假时长必须为 2、4、6 或 8 小时才可以保存!") - # return super(HolidaysRequestBatch, self).create(vals_list) + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + number_hours = 0 + company_id = vals.get('company_id') + if company_id: + company = self.env['res.company'].browse(company_id) + has_tianhe_property = any(child.name == '天河物管' for child in company.child_ids) + if has_tianhe_property: + if 'hour_leave_ids' in vals: + for leave_info in vals.get('hour_leave_ids', []): + hours_text = leave_info[2]['number_of_hours_text'] + match = re.search(r'\d+', hours_text) + if match: + number_hours += float(match.group()) + valid_hours = [2, 4, 6, 8] + if number_hours not in valid_hours: + raise ValidationError("休假时长必须为 2、4、6 或 8 小时才可以保存!") + return super(HolidaysRequestBatch, self).create(vals_list) @api.onchange('leave_ids', 'hour_leave_ids', 'employee_id') def _onchange_leave_dates(self): diff --git a/yuthon_hr_attendance/models/overtime_approval.py b/yuthon_hr_attendance/models/overtime_approval.py index 1090a0017..e255a4a78 100644 --- a/yuthon_hr_attendance/models/overtime_approval.py +++ b/yuthon_hr_attendance/models/overtime_approval.py @@ -16,6 +16,7 @@ class OvertimeApprovals(models.Model): name = fields.Char(string="标题", compute='_compute_name') code = fields.Char(string="编号", default=lambda self: self.env['ir.sequence'].next_by_code('overtime_approval')) users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id) + company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) # overtime_approval_ids = fields.One2many('overtime.user.line', 'overtime_approval_id', string="加班审批行") reason_application = fields.Text(string="事由") department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门") @@ -50,14 +51,18 @@ class OvertimeApprovals(models.Model): else: rec.duration = 0.0 - # @api.model_create_multi - # def create(self, vals_list): - # for vals in vals_list: - # if vals.get('yuthon_company') == 'thwg': - # if vals.get('duration'): - # if (vals['duration']) % 1 != 0.5: - # raise ValidationError("时长不对!请重新编辑") - # return super(OvertimeApprovals, self).create(vals_list) + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + company_id = vals.get('company_id') + if company_id: + company = self.env['res.company'].browse(company_id) + has_tianhe_property = any(child.name == '天河物管' for child in company.child_ids) + if has_tianhe_property: + if vals.get('duration'): + if (vals['duration']) % 1 != 0.5: + raise ValidationError("时长不对!请重新编辑") + return super(OvertimeApprovals, self).create(vals_list) @api.onchange('is_issues') def _onchange_is_issues(self): @@ -105,12 +110,17 @@ class OvertimeApprovals(models.Model): })) over.overtime_user_ids = users_data_list - # @api.onchange('yuthon_company') - # def onchange_company(self): - # for record in self: - # overtime_id = record.env['overtime.page'].search([('yuthon_company', '=', record.yuthon_company)]) - # record.details = (f"1、每天加班不得超过{overtime_id.day_time}\n" - # f"2、每月加班不得超过{overtime_id.month_time}\n") + @api.onchange('company_id') + def onchange_company(self): + for record in self: + if record.company_id: + # 根据 company_id 搜索 overtime.page 模型中的记录 + overtime_id = record.env['overtime.page'].search([('company_id', '=', record.company_id.id)], limit=1) + if overtime_id: + record.details = (f"1、每天加班不得超过{overtime_id.day_time}\n" + f"2、每月加班不得超过{overtime_id.month_time}\n") + else: + record.details = "" def put_hr_employee(self): for record in self: diff --git a/yuthon_hr_attendance/models/overtime_page.py b/yuthon_hr_attendance/models/overtime_page.py index 3ec1be4b7..13362b421 100644 --- a/yuthon_hr_attendance/models/overtime_page.py +++ b/yuthon_hr_attendance/models/overtime_page.py @@ -10,3 +10,4 @@ class OvertimePage(models.Model): day_time = fields.Char(string="工作日加班时间不超过") month_time = fields.Char(string="公休日和节假日不超过") year_time = fields.Char(string="每月合计不超过") + company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) diff --git a/yuthon_hr_attendance/views/overtime_page_views.xml b/yuthon_hr_attendance/views/overtime_page_views.xml index f7ea27503..500fbde17 100644 --- a/yuthon_hr_attendance/views/overtime_page_views.xml +++ b/yuthon_hr_attendance/views/overtime_page_views.xml @@ -17,6 +17,7 @@ + diff --git a/yuthon_hr_employee/models/yuthon_hr_department.py b/yuthon_hr_employee/models/yuthon_hr_department.py index 4ab518130..7dc018ede 100644 --- a/yuthon_hr_employee/models/yuthon_hr_department.py +++ b/yuthon_hr_employee/models/yuthon_hr_department.py @@ -8,8 +8,6 @@ class YuthonHrDepartment(models.Model): _rec_name = 'name' _order = 'department_code asc' - - department_phone = fields.Char(string="部门电话") department_fax = fields.Char(string="部门传真") department_location = fields.Char(string="部门地址") diff --git a/yuthon_notice/views/yuthon_notice_views.xml b/yuthon_notice/views/yuthon_notice_views.xml index 8c16df777..ced5595a5 100644 --- a/yuthon_notice/views/yuthon_notice_views.xml +++ b/yuthon_notice/views/yuthon_notice_views.xml @@ -187,21 +187,18 @@ \ No newline at end of file diff --git a/yuthon_property_approval/__manifest__.py b/yuthon_property_approval/__manifest__.py index b4029cd52..219f6d4d0 100644 --- a/yuthon_property_approval/__manifest__.py +++ b/yuthon_property_approval/__manifest__.py @@ -71,6 +71,7 @@ 'wizard/property_contract_wizard.xml', 'wizard/property_physical_wizard_views.xml', 'wizard/choose_contract_wizard_views.xml', + 'wizard/rental_scheme_wizard_views.xml', 'wizard/property_reconciliation_wizard_views.xml', 'wizard/property_rental_wizard_views.xml', 'views/property_menu_all.xml', diff --git a/yuthon_trade/models/yuthon_task_approval.py b/yuthon_trade/models/yuthon_task_approval.py index a1d7d0511..dffe9b5ca 100644 --- a/yuthon_trade/models/yuthon_task_approval.py +++ b/yuthon_trade/models/yuthon_task_approval.py @@ -26,7 +26,7 @@ class YuthonTaskApproval(models.Model): default='normal') active = fields.Boolean('Active', default=True, tracking=True) work_end = fields.Boolean(string="结束") - duration = fields.Float(string="时长", store=True) + duration = fields.Float(string="时长", store=True, compute='_compute_duration') concentration = fields.Float(string="浓度") warning_value = fields.Float(string="警戒值") number = fields.Integer(string="数量") @@ -35,4 +35,15 @@ class YuthonTaskApproval(models.Model): def _get_default_name_title(self): return self._description if self._description else self._name - name_title = fields.Char(default=_get_default_name_title) \ No newline at end of file + name_title = fields.Char(default=_get_default_name_title) + + @api.depends('task_start_time', 'task_end_time') + def _compute_duration(self): + for record in self: + if record.task_start_time and record.task_end_time: + start = fields.Datetime.to_datetime(record.task_start_time) + end = fields.Datetime.to_datetime(record.task_end_time) + delta = end - start + record.duration = delta.total_seconds() / 3600 + else: + record.duration = 0 \ No newline at end of file diff --git a/yuthon_will_task/views/yuthon_task_menu.xml b/yuthon_will_task/views/yuthon_task_menu.xml index feff2398f..2c9963b3f 100644 --- a/yuthon_will_task/views/yuthon_task_menu.xml +++ b/yuthon_will_task/views/yuthon_task_menu.xml @@ -3,36 +3,30 @@ \ No newline at end of file