@@ -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,
|
||||
})]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user