Merge pull request !8591 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2026-02-03 06:50:11 +00:00
committed by Gitee
7 changed files with 53 additions and 32 deletions
@@ -85,7 +85,7 @@
<field name="model">soong.workflow.record</field>
<field name="arch" type="xml">
<tree string="流程查询" action="open_record" type="object"
delete="false"
delete="false" copy="false"
create="false" default_order="display_end_time desc, write_date2 desc, id desc" expand="1" limit="10">
<header>
<button name="admin_end" type="object" string="管理员强制结束" class="oe_highlight"
+25 -25
View File
@@ -566,32 +566,32 @@ class HolidaysRequestBatch(models.Model):
vacation_report.this_year1 = 0.0
vacation_report._compute_working_overtime()
domain = [
('employee_id', '=', self.users_id.employee_ids.id),
('is_visible', '=', False),
('is_void', '=', False),
('text', '!=', '上月额度继承'),
]
if self.users_id.employee_ids.company_id.name == '集团本部':
domain.append(('start_time', '>=', datetime(2025, 12, 1)),)
overtime_records = self.env['vacation.over.line'].search(domain, order='start_time ASC')
remaining_deduct = hours
for record in overtime_records:
if remaining_deduct <= 0:
break
current_remaining = record.public_holidays + record.workday # 剩余数
deduct_amount = min(remaining_deduct, current_remaining)
if remaining_deduct < current_remaining:
carry_state = 'partial'
else:
carry_state = 'completed'
domain = [
('employee_id', '=', self.users_id.employee_ids.id),
('is_visible', '=', False),
('is_void', '=', False),
('text', '!=', '上月额度继承'),
]
if self.users_id.employee_ids.company_id.name == '集团本部':
domain.append(('start_time', '>=', datetime(2025, 12, 1)),)
overtime_records = self.env['vacation.over.line'].search(domain, order='start_time ASC')
remaining_deduct = hours
for record in overtime_records:
if remaining_deduct <= 0:
break
current_remaining = record.public_holidays + record.workday # 剩余数
deduct_amount = min(remaining_deduct, current_remaining)
if remaining_deduct < current_remaining:
carry_state = 'partial'
else:
carry_state = 'completed'
record.write({
'carry_forward_date': fields.Date.to_string(period_start),
'carry_forward_quantity': deduct_amount,
'carry_forward_state': carry_state,
})
remaining_deduct -= deduct_amount
record.write({
'carry_forward_date': fields.Date.to_string(period_start),
'carry_forward_quantity': deduct_amount,
'carry_forward_state': carry_state,
})
remaining_deduct -= deduct_amount
def _create_annual_leave_line(self, period_start, leave_data, hours, period):
@@ -66,7 +66,7 @@ class OvertimeApprovals(models.Model):
workflow_records = self.env['soong.workflow.record'].search([
('workflow_id.name', '=', '加班'),
('create_uid', '=', self.env.user.id),
('reclaim_state', '=', False),
('reclaim_state', '!=', False),
])
if not workflow_records:
continue
@@ -10,6 +10,26 @@ class HrPayrollStructureType(models.Model):
sequence = fields.Char(related="default_struct_id.sequence",store=True)
yuthon_company = fields.Selection([('thtz', 'thtz')], default="thtz")
company_id = fields.Many2one(related='default_struct_id.company_id', default=lambda self: self.env.company, store=True)
is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',
search='_search_part_of_company')
@api.depends_context('uid', 'company')
@api.depends('company_id')
def _compute_is_company(self):
active_company_ids = self.env.companies
for employee in self:
employee.is_company = employee.company_id in active_company_ids
def _search_part_of_company(self, operator, value):
company_ids = self.env.companies.ids
# 处理反向操作符
if not value:
operator = '!=' if operator == '=' else '='
# 使用company_id in company_ids的结构
if operator == '=':
return [('company_id', 'in', company_ids)]
else: # operator == '!='
return [('company_id', 'not in', company_ids)]
def sort_sequence(self):
structure_ids = self.env["hr.payroll.structure.type"].browse(self._context.get('active_ids', self._context.get('active_id')))
@@ -55,11 +55,6 @@
<field name="model_id" ref="model_yuthon_payroll_retired"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record model="ir.rule" id="yuthon_payroll_type_setting_rule">
<field name="name">职级类别多公司</field>
<field name="model_id" ref="model_yuthon_payroll_type_setting"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record model="ir.rule" id="yuthon_salary_documents_rule">
<field name="name">附件管理多公司</field>
<field name="model_id" ref="model_yuthon_salary_documents"/>
@@ -27,6 +27,7 @@
<field name="name">职级类型</field>
<field name="res_model">hr.payroll.structure.type</field>
<field name="view_mode">tree,form,search</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="context">{'search_default_group_lv_id': 1}</field>
</record>
<record id="action_sequence" model="ir.actions.server">
+5
View File
@@ -11,6 +11,11 @@
parent="human_resources_menu_root_board"
action="hr.open_view_employee_list_my"
sequence="1"/>
<menuitem id="hr_contract_menu_root_board1"
name="合同"
parent="human_resources_menu_root_board"
action="hr_contract.action_hr_contract"
sequence="2"/>
<!-- <menuitem id="hr_cs_payslip_line"-->
<!-- name="工资条"-->
<!-- parent="human_resources_menu_root_board"-->