Merge pull request !3606 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2025-07-01 08:02:13 +00:00
committed by Gitee
6 changed files with 64 additions and 42 deletions
@@ -137,17 +137,13 @@ class VacationLeaveLine(models.Model):
update_type= fields.Selection([('add', '增加'), ('reduce', '减少')], string='更新类型')
update_date = fields.Date(string='更新时间')
allocate_credits = fields.Float(string='分配额度')
is_soon = fields.Boolean(string="流程修改")
is_manual = fields.Boolean(string="手动修改")
update_lines = fields.Float(string='更新额度')
text = fields.Text(string='备注')
@api.model
def create(self, vals):
vals['is_manual'] = True
return super(VacationLeaveLine, self).create(vals)
class VacationOverline(models.Model):
_name = 'vacation.over.line'
_description = '加班明细'
@@ -158,30 +154,29 @@ class VacationOverline(models.Model):
workday = fields.Float(string='工作日')
legal_day = fields.Float(string='法定节假日')
public_holidays = fields.Float(string='公休日')
meal_number = fields.Integer(string='误餐次数')
update_date = fields.Date(string='更新时间')
is_soon = fields.Boolean(string="流程修改")
is_manual = fields.Boolean(string="手动修改")
text = fields.Text(string='备注')
@api.model
def create(self, vals):
vals['is_manual'] = True
return super(VacationOverline, self).create(vals)
def _sync_to_employee(self):
"""将数据同步到关联员工"""
def _sync_to_employee(self, reverse=False):
"""将数据同步到关联员工
:param reverse: 是否反向操作(用于删除场景)
"""
employee = self.vacation_id.employee_id
employee.meal_number -= self.meal_number
# 根据操作类型确定计算方式
sign = -1 if reverse else 1
if self.update_type == 'add':
employee.write({
'normal_overtime_hours': employee.normal_overtime_hours + self.workday,
'holiday_overtime_hours': employee.holiday_overtime_hours + self.legal_day,
'weekend_overtime_hours': employee.weekend_overtime_hours + self.public_holidays
'normal_overtime_hours': employee.normal_overtime_hours + (self.workday * sign),
'holiday_overtime_hours': employee.holiday_overtime_hours + (self.legal_day * sign),
'weekend_overtime_hours': employee.weekend_overtime_hours + (self.public_holidays * sign)
})
elif self.update_type == 'reduce':
employee.write({
'normal_overtime_hours': employee.normal_overtime_hours - self.workday,
'holiday_overtime_hours': employee.holiday_overtime_hours - self.legal_day,
'weekend_overtime_hours': employee.weekend_overtime_hours - self.public_holidays
'normal_overtime_hours': employee.normal_overtime_hours - (self.workday * sign),
'holiday_overtime_hours': employee.holiday_overtime_hours - (self.legal_day * sign),
'weekend_overtime_hours': employee.weekend_overtime_hours - (self.public_holidays * sign)
})
@api.model
@@ -190,6 +185,10 @@ class VacationOverline(models.Model):
record._sync_to_employee()
return record
def unlink(self):
"""删除记录时同步扣减员工加班时长"""
self._sync_to_employee(reverse=True)
return super(VacationOverline, self).unlink()
class VacationMealLine(models.Model):
_name = 'vacation.meal.line'
@@ -204,20 +203,31 @@ class VacationMealLine(models.Model):
is_manual = fields.Boolean(string="手动修改")
text = fields.Text(string='备注')
@api.model
def create(self, vals):
vals['is_manual'] = True
record = super(VacationMealLine, self).create(vals)
record._sync_to_employee()
return record
def _sync_to_employee(self):
"""将数据同步到关联员工"""
employee = self.vacation_id.employee_id
if self.update_type == 'add':
employee.write({'meal_count': employee.meal_count + int(self.update_lines)})
elif self.update_type == 'reduce':
employee.write({'meal_count': employee.meal_count - int(self.update_lines)})
def _sync_to_employee(self, reverse=False):
"""将数据同步到关联员工
:param reverse: 是否反向操作(用于删除场景)
"""
for record in self:
employee = record.vacation_id.employee_id
if not employee:
continue
# 根据操作类型和反向标志计算餐补变化量
sign = -1 if reverse else 1
delta = int(record.update_lines) * sign
if record.update_type == 'add':
employee.write({'meal_count': employee.meal_count + delta})
elif record.update_type == 'reduce':
employee.write({'meal_count': employee.meal_count - delta})
def unlink(self):
self._sync_to_employee(reverse=True)
return super(VacationMealLine, self).unlink()
class DetailsTree(models.Model):
_name = 'details.tree'
@@ -26,7 +26,7 @@
<field name="leave_ids">
<tree editable="bottom">
<field name="vacation_id" column_invisible="1"/>
<field name="workflow_record_id"/>
<field name="workflow_record_id" domain="[('workflow_id.name', '=', '请假')]"/>
<field name="update_type"/>
<field name="update_date"/>
<field name="update_lines"/>
@@ -37,29 +37,30 @@
</page>
<page string="加班">
<field name="overtime_ids">
<tree editable="bottom">
<tree editable="bottom" delete="false">
<field name="vacation_id" column_invisible="1"/>
<field name="workflow_record_id"/>
<field name="workflow_record_id" domain="[('workflow_id.name', '=', '加班')]"/>
<field name="update_type"/>
<field name="is_soon"/>
<field name="is_manual"/>
<field name="update_date"/>
<field name="workday"/>
<field name="legal_day"/>
<field name="public_holidays"/>
<field name="meal_number" column_invisible="1"/>
<field name="text"/>
<button name="unlink" string="删除" invisible="workflow_record_id" type="object" class="btn-primary"/>
</tree>
</field>
</page>
<page string="误餐">
<field name="meal_fee_ids">
<tree editable="bottom">
<tree editable="bottom" delete="false">
<field name="vacation_id" column_invisible="1"/>
<field name="workflow_record_id"/>
<field name="workflow_record_id" domain="[('workflow_id.name', '=', '外出')]"/>
<field name="update_type"/>
<field name="update_date"/>
<field name="update_lines"/>
<field name="text"/>
<button name="unlink" string="删除" invisible="workflow_record_id" type="object" class="btn-primary"/>
</tree>
</field>
</page>
@@ -206,12 +206,12 @@ class OvertimeApprovals(models.Model):
overtime_data = {
'vacation_id': reports_id.id,
'update_type': 'add',
'meal_number': 1 if self.meal == 'yes' else 0,
'workflow_record_id': workflow_record_id.id if workflow_record_id else False,
'workday': workday,
'legal_day': legal_day,
'public_holidays': public_holidays,
'update_date': fields.Datetime.now(),
'is_soon': True,
'text': '审批'
}
reports_id.write({'overtime_ids': overtime_data})
@@ -23,7 +23,7 @@ class YuthonOnboardApproval(models.Model):
name = fields.Char(string="标题")
code = fields.Char(string="编号",
default=lambda self: self.env['ir.sequence'].next_by_code('yuthon_onboard_approval_code'))
employee_name = fields.Char(string='姓名')
employee_name_id = fields.Many2one('hr.applicant', string='姓名')
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
department_id = fields.Many2one(related='users_id.employee_id.department_id', string="部门")
account = fields.Char(string='账号')
@@ -36,7 +36,9 @@ class YuthonOnboardApproval(models.Model):
onboard_time = fields.Date(string='入职时间', default=fields.Datetime.now)
probation_period = fields.Selection([('zero', '0个月'), ('one', '1个月'),
('two', '2个月'), ('three', '3个月'), ('year', '1年')], string='试用期结束时间')
probation_date = fields.Date(string='试用期结束时间')
probation_start_date = fields.Date(string='试用期开始时间')
probation_end_date = fields.Date(string='试用期结束时间')
duration_employment = fields.Date(string='劳动合同期限', default=fields.Datetime.now)
duration_employment_end = fields.Date(string='劳动合同结束时间')
salary = fields.Float(string='基本工资')
@@ -65,8 +65,14 @@
</group>
<group col="3" string="乙方信息">
<group>
<field name="employee_name" required="1"/>
<field name="probation_date"/>
<field name="employee_name_id" required="1" domain="[('stage_id.name', '=', '待入职')"/>
<label for="probation_start_date"/>
<div class="d-inline-flex w-100">
<field name="probation_start_date" string="试用期时间:" class="me-2"
style="max-width: 10rem !important;"/>至
<field name="probation_end_date" string=" " class="ms-2"
style="max-width: 10rem !important;"/>
</div>
</group>
<group>
<field name="job_id"/>
@@ -61,10 +61,13 @@ class PropertyTenantWizard(models.Model):
tenant_id.write(tenant_data)
def update_account(self, row):
account_id = self.env['property.tenant.information'].search([('name', '=', row[0].value)])
account_id = self.env['property.tenant.information'].search([('name', '=', row[0].value)], limit=1)
if account_id:
account_id.bank_ids = [(5, 0, 0)]
account_id.bank_ids = [(0, 0, {
'tenant_id':account_id.id,
'tenant_id': account_id.id,
'bank': row[1].value,
'user': row[3].value,
'name': row[2].value,
})]