diff --git a/soong_workflow/__manifest__.py b/soong_workflow/__manifest__.py index e9bb93352..601d939cd 100644 --- a/soong_workflow/__manifest__.py +++ b/soong_workflow/__manifest__.py @@ -8,12 +8,14 @@ "depends": [ "base", "crnd_web_diagram_plus", - "yuthon_hr_employee", + "hr", ], "data": [ "security/soong_workflow_security.xml", "security/ir.model.access.csv", "views/menuitem.xml", + "views/soong_hr_employee_views.xml", + "views/yuthon_user_role_views.xml", "views/soong_workflow_node_views.xml", "views/soong_workflow_link_views.xml", "views/soong_workflow_views.xml", diff --git a/soong_workflow/models/__init__.py b/soong_workflow/models/__init__.py index 0fc916d1d..a670bc2ea 100644 --- a/soong_workflow/models/__init__.py +++ b/soong_workflow/models/__init__.py @@ -6,3 +6,6 @@ from . import soong_workflow_link from . import ir_model from . import soong_workflow_record from . import soong_workflow_mixin +from . import soong_approval_users +from . import soong_hr_employee +from . import soong_user_role diff --git a/soong_workflow/models/soong_approval_users.py b/soong_workflow/models/soong_approval_users.py new file mode 100644 index 000000000..1e9832af7 --- /dev/null +++ b/soong_workflow/models/soong_approval_users.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api, _ +from odoo.exceptions import ValidationError, UserError +import logging + +_logger = logging.getLogger(__name__) + + +class SoongApprovalUsers(models.Model): + _name = "soong.approval.users" + _description = "Soong Approval Users" + + approval_user_id = fields.Many2one('res.users', string='审批人') + approval_user = fields.Many2one('soong.user.role', string='审批角色') + approval_user_datetime = fields.Datetime(string='审批时间') + approval_user_notice = fields.Char(string='审批意见') + approval_user_sign = fields.Char(string='审批签署') + approval_user_state = fields.Selection([('will', '待审批')], string='状态') diff --git a/soong_workflow/models/soong_hr_employee.py b/soong_workflow/models/soong_hr_employee.py new file mode 100644 index 000000000..3029231c8 --- /dev/null +++ b/soong_workflow/models/soong_hr_employee.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +from odoo import api, fields, models + + +class YuthonHrEmployee(models.Model): + """ + 对原模型数据的隐藏,字段的开发和添加 + """ + _inherit = "hr.employee" + + user_role_id = fields.Many2one('soong.user.role', string="主角色") + user_role_ids = fields.Many2many('soong.user.role', string="辅助角色") \ No newline at end of file diff --git a/yuthon_hr_employee/models/yuthon_user_role.py b/soong_workflow/models/soong_user_role.py similarity index 95% rename from yuthon_hr_employee/models/yuthon_user_role.py rename to soong_workflow/models/soong_user_role.py index 51d65cd0d..d07fe9249 100644 --- a/yuthon_hr_employee/models/yuthon_user_role.py +++ b/soong_workflow/models/soong_user_role.py @@ -3,7 +3,7 @@ from odoo import api, fields, models, _ class YuthonUserRole(models.Model): - _name = 'yuthon.user.role' + _name = 'soong.user.role' name = fields.Char(string="角色名称") user_type = fields.Selection([("oa_admin", "OA管理员"), diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 06deccce0..ee8c7aae0 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -273,7 +273,7 @@ class SoongWorkflowMixin(models.AbstractModel): if self.env.user not in button.reviewer_group_id.users: continue elif button.review_type == 'user_role': - user_role_id = self.env['res.users'].search([('employee_id.user_role_id', '=', button.users_role_id)]) + user_role_id = self.env['res.users'].search([('employee_id.user_role_id', '=', button.users_role_id.id)]) if self.env.user != user_role_id: continue else: diff --git a/soong_workflow/models/soong_workflow_node.py b/soong_workflow/models/soong_workflow_node.py index 97926f3a1..11508beb2 100644 --- a/soong_workflow/models/soong_workflow_node.py +++ b/soong_workflow/models/soong_workflow_node.py @@ -227,7 +227,7 @@ class SoongWorkflowNodeButton(models.Model): ) reviewer_id = fields.Many2one(comodel_name="res.users", string="Reviewer") reviewer_group_id = fields.Many2one(comodel_name="res.groups", string="Reviewer group") - users_role_id = fields.Many2one(comodel_name="yuthon.user.role", string="User Role") + users_role_id = fields.Many2one(comodel_name="soong.user.role", string="主角色") reviewer_expression = fields.Text( string="Review Expression", default=CONDITION_CODE_TEMP, diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index 055ffe5a1..30a626664 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -23,9 +23,7 @@ class SoongWorkflowRecord(models.Model): res_model = fields.Char(string="Res Model", required=True) res_id = fields.Integer(string="Res ID", required=True) workflow_id = fields.Many2one(comodel_name="soong.workflow", string="Workflow Ref.") - node_id = fields.Many2one( - comodel_name="soong.workflow.node", string="Workflow Node Ref." - ) + node_id = fields.Many2one(comodel_name="soong.workflow.node", string="Workflow Node Ref.") def open_record(self): return { diff --git a/soong_workflow/security/ir.model.access.csv b/soong_workflow/security/ir.model.access.csv index a5bde2ae9..7b0558b52 100644 --- a/soong_workflow/security/ir.model.access.csv +++ b/soong_workflow/security/ir.model.access.csv @@ -14,4 +14,5 @@ access_soong_workflow_node_field_manager,soong_workflow_node_field_manager,model access_soong_workflow_node_button_manager,soong_workflow_node_button_manager,model_soong_workflow_node_button,soong_workflow.group_soong_workflow_manager,1,1,1,1 access_soong_workflow_link_manager,soong_workflow_link_manager,model_soong_workflow_link,soong_workflow.group_soong_workflow_manager,1,1,1,1 ,,,,,,, -access_soong_workflow_record_user,soong_workflow_record_user,model_soong_workflow_record,soong_workflow.group_soong_workflow_user,1,1,1,1 \ No newline at end of file +access_soong_workflow_record_user,soong_workflow_record_user,model_soong_workflow_record,soong_workflow.group_soong_workflow_user,1,1,1,1 +access_soong_user_role,soong_user_role,model_soong_user_role,soong_workflow.group_soong_workflow_user,1,1,1,1 \ No newline at end of file diff --git a/soong_workflow/views/soong_hr_employee_views.xml b/soong_workflow/views/soong_hr_employee_views.xml new file mode 100644 index 000000000..7dde842b5 --- /dev/null +++ b/soong_workflow/views/soong_hr_employee_views.xml @@ -0,0 +1,24 @@ + + + + hr.employee.inherit.del.form + hr.employee + + + + + + + + + + hr.employee.inherit.del.form + hr.employee + + + + + + + + \ No newline at end of file diff --git a/yuthon_hr_employee/views/yuthon_user_role_views.xml b/soong_workflow/views/yuthon_user_role_views.xml similarity index 64% rename from yuthon_hr_employee/views/yuthon_user_role_views.xml rename to soong_workflow/views/yuthon_user_role_views.xml index d872182ab..1362a58f4 100644 --- a/yuthon_hr_employee/views/yuthon_user_role_views.xml +++ b/soong_workflow/views/yuthon_user_role_views.xml @@ -1,9 +1,9 @@ - - yuthon.user.role.tree - yuthon.user.role + + soong.user.role.tree + soong.user.role @@ -16,16 +16,16 @@ - + 角色配置 - yuthon.user.role + soong.user.role tree \ No newline at end of file diff --git a/yuthon_hr_attendance/__manifest__.py b/yuthon_hr_attendance/__manifest__.py index 8374b068a..831499117 100644 --- a/yuthon_hr_attendance/__manifest__.py +++ b/yuthon_hr_attendance/__manifest__.py @@ -12,7 +12,7 @@ 'category': 'Human Resources/Attendances', 'sequence': 240, 'website': 'https://www.pengyuthon.com', - 'depends': ['hr_attendance', 'resource', 'approvals', 'base', 'hr', 'mail'], + 'depends': ['hr_attendance', 'resource', 'approvals', 'base', 'hr', 'mail', 'soong_workflow'], 'data': [ 'security/ir.model.access.csv', 'security/approval_attendance.xml', diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index 525acfed6..0e771f2ba 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -11,15 +11,9 @@ class HrAttendance(models.Model): is_early_card = fields.Boolean(string="是否早退") is_late_card = fields.Boolean(string="是否迟到") work_time_type = fields.Selection([('close_day', '休息日'), ('work_day', '工作日')], string="工作时间类型") - on_card_time = fields.Datetime(string="上班打卡时间") on_card_location = fields.Char(string="上班打卡地点") - down_card_time = fields.Datetime(string="下班打卡时间") down_card_location = fields.Char(string="下班打卡地点") out_card_time = fields.Datetime(string="外出打卡时间") out_card_location = fields.Char(string="外出打卡地点") work_hours = fields.Float(string="工作时长") - company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) - - - def send_wecom_attendance(self): - pass \ No newline at end of file + company_id = fields.Many2one('res.company', string='公司', index=True, default=lambda self: self.env.company) \ No newline at end of file diff --git a/yuthon_hr_attendance/models/overtime_approval.py b/yuthon_hr_attendance/models/overtime_approval.py index 1248409a4..4a77249e2 100644 --- a/yuthon_hr_attendance/models/overtime_approval.py +++ b/yuthon_hr_attendance/models/overtime_approval.py @@ -12,13 +12,14 @@ class OvertimeApprovals(models.Model): name = 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) overtime_department_id = fields.Many2one('hr.department', string="加班部门") - overtime_user_ids = fields.One2many('overtime.user.line', 'overtime_approval_id', string="审批明细行") + reason_application = fields.Char(string="申请事由") date = fields.Datetime(string="日期", default=fields.Datetime.now) department_id = fields.Many2one('hr.department', string="申请人部门") partner_id = fields.Many2one('res.partner', string="来文单位") - statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], string="状态", - default='drft') + statu = fields.Selection([('drft', '草稿'), ('going', '执行中'), ('cancel', '已取消'), ('done', '已完成')], + string="状态", default='drft') + overtime_user_ids = fields.One2many('overtime.user.line', 'overtime_approval_id', string="加班明细行") @api.onchange('overtime_department_id') def onchange_overtime_users(self): users_data_list = [] @@ -49,9 +50,6 @@ class OvertimeApprovals(models.Model): 'compensation_mode': 'salary', })) over.overtime_user_ids = users_data_list - def go_overtime_approval(self): - pass - class OvertimeUserLine(models.Model): _name = 'overtime.user.line' diff --git a/yuthon_hr_attendance/views/hr_attendance_views.xml b/yuthon_hr_attendance/views/hr_attendance_views.xml index f9962902c..152abefd9 100644 --- a/yuthon_hr_attendance/views/hr_attendance_views.xml +++ b/yuthon_hr_attendance/views/hr_attendance_views.xml @@ -6,10 +6,6 @@ hr.attendance -
-
@@ -17,9 +13,9 @@ - + - + diff --git a/yuthon_hr_attendance/views/overtime_approval.xml b/yuthon_hr_attendance/views/overtime_approval.xml index 9548297f5..91f4cf64d 100644 --- a/yuthon_hr_attendance/views/overtime_approval.xml +++ b/yuthon_hr_attendance/views/overtime_approval.xml @@ -20,11 +20,6 @@ overtime.approval
- - - - -