@@ -170,8 +170,9 @@ class HrContract(models.Model):
|
||||
"view_mode": "form",
|
||||
"context": {
|
||||
"default_employee_id": self.employee_id.id,
|
||||
"default_current_status": self.date_end,
|
||||
"default_current_status": self.employee_id.contract_id.date_end,
|
||||
"default_department1_id": self.employee_id.department_id.id,
|
||||
"default_renewal_date": self.employee_id.contract_id.date_end + relativedelta(years=3),
|
||||
"default_contract_id": self.id,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
'views/hr_attendance_portal_templates.xml',
|
||||
'views/meal_approval.xml',
|
||||
'views/applet_address_views.xml',
|
||||
'views/yuthon.overtime.report.xml',
|
||||
'views/all_attendance_menu.xml',
|
||||
'views/overtime_approval_inherit_header.xml',
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@ from . import meal_approval
|
||||
from . import back_approval
|
||||
from . import staff_dining_report
|
||||
from . import message_reminder_tasks
|
||||
from . import yuthon_overtime_report
|
||||
|
||||
# from odoo.tools import SQL
|
||||
# import odoo
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
from odoo import api, fields, models, tools, _
|
||||
from datetime import datetime, time, timedelta
|
||||
from odoo.exceptions import UserError
|
||||
from datetime import date, timedelta
|
||||
|
||||
|
||||
class YuthonOvertimeReport(models.Model):
|
||||
_name = 'yuthon.overtime.report'
|
||||
_description = '加班费记录'
|
||||
|
||||
employee_id = fields.Many2one('hr.employee', string="员工")
|
||||
department_id = fields.Many2one('hr.department',string="部门")
|
||||
overtime_date = fields.Char(string="加班时间")
|
||||
carry_forward_date = fields.Date(string="结转日期")
|
||||
carry_forward_duration = fields.Float(string="结转时长")
|
||||
carry_forward_result = fields.Selection(
|
||||
selection=[
|
||||
('success', '成功'),
|
||||
('failed', '失败')
|
||||
],
|
||||
string='结转结果',
|
||||
)
|
||||
validity = fields.Char(string="有效期")
|
||||
carry_forward_state = fields.Selection(
|
||||
selection=[
|
||||
('pending', '待结转'),
|
||||
('completed', '已结转'),
|
||||
('partial', '部分结转')
|
||||
],
|
||||
string='结转状态',
|
||||
default='pending',
|
||||
)
|
||||
remaining_quantity = fields.Float(string='剩余数')
|
||||
|
||||
@@ -82,4 +82,5 @@ access_vacation_put_wizard,vacation.put.wizard,model_vacation_put_wizard,base.gr
|
||||
access_message_reminder_tasks,message.reminder.tasks,model_message_reminder_tasks,base.group_user,1,1,1,1
|
||||
access_applet_security_quick_perm_wizard,access_applet_security_quick_perm_wizard,model_applet_security_quick_perm_wizard,base.group_user,1,1,1,1
|
||||
|
||||
access_vacation_reports_wizard,vacation.reports.wizard,model_vacation_reports_wizard,base.group_user,1,1,1,1
|
||||
access_vacation_reports_wizard,vacation.reports.wizard,model_vacation_reports_wizard,base.group_user,1,1,1,1
|
||||
access_yuthon_overtime_report,access_yuthon_overtime_report,model_yuthon_overtime_report,base.group_user,1,1,1,1
|
||||
|
@@ -222,4 +222,16 @@
|
||||
parent="menu_hr_attendance_approval_request" sequence="15" action="view_back_approval_action"/>
|
||||
<menuitem id="menu_hr_attendance_meal" name="报餐申请"
|
||||
parent="menu_hr_attendance_approval_request" sequence="16" action="view_meal_approval_action"/>
|
||||
|
||||
|
||||
<!-- 加班管理菜单 -->
|
||||
<menuitem id="menu_yuthon_overtime_management_board"
|
||||
name="加班管理"
|
||||
parent="yuthon_attendance_planning_board"
|
||||
sequence="18"/>
|
||||
<menuitem id="menu_yuthon_overtime_report_board"
|
||||
name="加班费记录"
|
||||
parent="menu_yuthon_overtime_management_board"
|
||||
action="action_yuthon_overtime_report"
|
||||
sequence="5"/>
|
||||
</odoo>
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="view_yuthon_overtime_report_tree" model="ir.ui.view">
|
||||
<field name="name">yuthon.overtime.report.tree</field>
|
||||
<field name="model">yuthon.overtime.report</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="加班费记录" editable="bottom">
|
||||
<field name="employee_id"/>
|
||||
<field name="department_id"/>
|
||||
<field name="overtime_date"/>
|
||||
<field name="carry_forward_date"/>
|
||||
<field name="carry_forward_duration"/>
|
||||
<field name="carry_forward_result"/>
|
||||
<field name="carry_forward_state"/>
|
||||
<field name="remaining_quantity"/>
|
||||
<field name="validity"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<!-- 定义 action -->
|
||||
<record id="action_yuthon_overtime_report" model="ir.actions.act_window">
|
||||
<field name="name">加班费记录</field>
|
||||
<field name="res_model">yuthon.overtime.report</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_smiling_face">
|
||||
暂无加班费记录
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -1,6 +1,8 @@
|
||||
from odoo import models, fields, api
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
|
||||
class YuthonRenewalApproval(models.Model):
|
||||
_name = 'yuthon.renewal.approval'
|
||||
@@ -26,7 +28,7 @@ class YuthonRenewalApproval(models.Model):
|
||||
user_sex = fields.Selection(related='employee_id.user_sex', string="性别")
|
||||
degree = fields.Char(related='employee_id.high_degree', string="学历")
|
||||
onboard_time = fields.Date(related='employee_id.contract_id.date_of_entry', string='入职时间')
|
||||
current_status = fields.Date(related='employee_id.contract_id.date_end',string='合同到期日')
|
||||
current_status = fields.Date(string='合同到期日')
|
||||
renewal_date = fields.Date(string="续签日期")
|
||||
contract = fields.Char(string="劳动合同签订情况")
|
||||
condition_review = fields.Text(string="续期条件审核")
|
||||
@@ -39,3 +41,22 @@ class YuthonRenewalApproval(models.Model):
|
||||
name_title = fields.Char(default=_get_default_name_title)
|
||||
self_users_ids = fields.Many2many('res.users', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
|
||||
|
||||
def end_approval(self):
|
||||
self.ensure_one()
|
||||
original_contract = self.employee_id.contract_id
|
||||
version_num = float(self.employee_id.contract_id.version.lstrip('Vv'))
|
||||
new_version_num = version_num + 1.0
|
||||
new_version = f"V{new_version_num:.1f}"
|
||||
new_contract_vals = original_contract.copy_data()[0]
|
||||
new_contract_vals.update({
|
||||
'date_end': self.renewal_date,
|
||||
'date_start': original_contract.date_end + relativedelta(days=1),
|
||||
'state': 'open',
|
||||
'job_id': self.job_id.id,
|
||||
'version': new_version,
|
||||
'structure_type_id': self.payroll_structure_id.type_id.id,
|
||||
'department_id': self.department1_id.id
|
||||
})
|
||||
new_contract = self.env['hr.contract'].create(new_contract_vals)
|
||||
self.employee_id.write({'contract_id': new_contract.id})
|
||||
|
||||
|
||||
@@ -43,6 +43,9 @@
|
||||
<field name="name"/>
|
||||
</h1>
|
||||
</div>
|
||||
<header>
|
||||
<button name="end_approval" type="object" string="结束" dclass="oe_highlight"/>
|
||||
</header>
|
||||
<group string="审批事项">
|
||||
<group>
|
||||
<field name="is_back" invisible="1"/>
|
||||
@@ -61,6 +64,7 @@
|
||||
<field name="card"/>
|
||||
<field name="department1_id"/>
|
||||
<field name="current_status"/>
|
||||
<field name="renewal_date"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="user_sex"/>
|
||||
|
||||
Reference in New Issue
Block a user