工作流权限调整

This commit is contained in:
李鹏宇
2026-01-21 17:30:53 +08:00
parent ce81f15dff
commit 729a27bcbb
11 changed files with 104 additions and 17 deletions
@@ -77,6 +77,25 @@ class SoongWorkflowRecord(models.Model):
compute='_compute_is_to_do',
search='_search_is_to_do',
)
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 '='
if operator == '=':
return [('company_id', 'in', company_ids)]
else:
return [('company_id', 'not in', company_ids)]
@api.depends('employee_ids', 'soong_state', 'reclaim_state')
def _compute_is_to_do(self):
current_uid = self.env.user.id
@@ -324,6 +324,7 @@
<record id="soong_workflow_record_todo_action" model="ir.actions.act_window">
<field name="name">待办</field>
<field name="type">ir.actions.act_window</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1,
@@ -336,6 +337,7 @@
<record id="soong_workflow_record_done_action" model="ir.actions.act_window">
<field name="name">已办</field>
<field name="type">ir.actions.act_window</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1,
@@ -350,6 +352,7 @@
<record id="soong_workflow_department_record_action" model="ir.actions.act_window">
<field name="name">流程查询</field>
<field name="type">ir.actions.act_window</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="domain">[('reclaim_state', '=', False), ('member_of_department', '=', True)]</field>
@@ -360,6 +363,7 @@
<record id="soong_workflow_hr_employee_action" model="ir.actions.act_window">
<field name="name">人事相关流程</field>
<field name="type">ir.actions.act_window</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="domain">[('reclaim_state', '=', False), '|', ('approvals_group_id.name', '=', '人力资源'),
@@ -370,6 +374,7 @@
<record id="soong_workflow_other_record_action" model="ir.actions.act_window">
<field name="name">流程查询</field>
<field name="type">ir.actions.act_window</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="domain">[('reclaim_state', '=', False), ('approvals_group_id.name', '!=', '人力资源'),
@@ -381,6 +386,7 @@
<record id="soong_workflow_record_action_admin" model="ir.actions.act_window">
<field name="name">流程监控</field>
<field name="type">ir.actions.act_window</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,form,search</field>
<!-- <field name="context">{'search_default_group_by_group_soong_state': True, 'search_default_group_by_workflow_id': True}</field>-->
@@ -391,6 +397,7 @@
<record id="soong_workflow_record_action_reclaim" model="ir.actions.act_window">
<field name="name">工作流回收站</field>
<field name="type">ir.actions.act_window</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('reclaim_state', '=', True)]</field>
@@ -53,6 +53,24 @@ class HrAttendance(models.Model):
)
is_approval = fields.Boolean(string="是否审批修正", default=False)
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 '='
if operator == '=':
return [('company_id', 'in', company_ids)]
else:
return [('company_id', 'not in', company_ids)]
def action_show_details(self):
self.ensure_one()
view = self.env.ref("yuthon_wechat.view_hr_attendance_detail_tree")
@@ -34,11 +34,11 @@
<field name="model_id" ref="model_applet_address"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record model="ir.rule" id="hr_attendance_rule">
<field name="name">考勤记录多公司</field>
<field name="model_id" ref="model_hr_attendance"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<!-- <record model="ir.rule" id="hr_attendance_rule">-->
<!-- <field name="name">考勤记录多公司</field>-->
<!-- <field name="model_id" ref="model_hr_attendance"/>-->
<!-- <field name="domain_force">[('company_id', 'in', company_ids)]</field>-->
<!-- </record>-->
<record model="ir.rule" id="yuthon_vacation_reports_rule">
<field name="name">假期额度记录多公司</field>
<field name="model_id" ref="model_yuthon_vacation_reports"/>
@@ -157,11 +157,13 @@
</record>
<record id="view_attendance_going_action" model="ir.actions.act_window">
<field name="name">出勤</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">hr.attendance</field>
<field name="view_mode">tree,form</field>
</record>
<record id="hr_attendance.hr_attendance_action" model="ir.actions.act_window">
<field name="name">全部考勤</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">hr.attendance</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('employee_id.resource_calendar_id.name', '=', '行政考勤')]</field>
@@ -76,7 +76,24 @@ class YuthonOnboardApproval(models.Model):
salary_group_id = fields.Many2one(
"yuthon.salary.group", string="工资单分组", store=True, index=True
)
is_this_company = fields.Boolean(string='本公司', default=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 '='
if operator == '=':
return [('company_id', 'in', company_ids)]
else:
return [('company_id', 'not in', company_ids)]
def _get_default_name_title(self):
return self._description if self._description else self._name
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record model="ir.rule" id="yuthon_onboard_approval_rule">
<field name="name">入职多公司</field>
<field name="model_id" ref="model_yuthon_onboard_approval"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<!-- <record model="ir.rule" id="yuthon_onboard_approval_rule">-->
<!-- <field name="name">入职多公司</field>-->
<!-- <field name="model_id" ref="model_yuthon_onboard_approval"/>-->
<!-- <field name="domain_force">[('company_id', 'in', company_ids)]</field>-->
<!-- </record>-->
</odoo>
@@ -36,7 +36,7 @@
<field name="urgency_level" readonly="1"/>
</group>
<group>
<field name="is_this_company"/>
<field name="is_company"/>
</group>
<group>
<field name="is_issues"/>
@@ -123,6 +123,7 @@
<record id="yuthon_onboard_approval_action" model="ir.actions.act_window">
<field name="name">基本信息</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">yuthon.onboard.approval</field>
<field name="view_mode">tree,form</field>
</record>
+5 -5
View File
@@ -7,9 +7,9 @@
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
<record model="ir.rule" id="model_purchase_order_rule">
<field name="name">采购多公司</field>
<field name="model_id" ref="model_purchase_order"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<!-- <record model="ir.rule" id="model_purchase_order_rule">-->
<!-- <field name="name">采购多公司</field>-->
<!-- <field name="model_id" ref="model_purchase_order"/>-->
<!-- <field name="domain_force">[('company_id', 'in', company_ids)]</field>-->
<!-- </record>-->
</odoo>
@@ -36,6 +36,23 @@ class InheritPurchaseOrder(models.Model):
pay_way = fields.Selection([('onetime', '一次性'), ('installment', '分期')], string="付款方式", default='onetime')
reason_text = fields.Text(string="申请事由")
pay_line_ids = fields.One2many('purchase.order.pay.line', 'order_id', string="付款详情")
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 '='
if operator == '=':
return [('company_id', 'in', company_ids)]
else:
return [('company_id', 'not in', company_ids)]
def update_state(self):
order_ids = self.env["purchase.order"].browse(
@@ -158,4 +158,10 @@
<field name="state">code</field>
<field name="code">action = model.update_state()</field>
</record>
<record id="inherit_purchase_form_action" model="ir.actions.act_window">
<field name="name">Purchase Orders</field>
<field name="domain">[('is_company', '=', True)]</field>
<field name="res_model">purchase.order</field>
</record>
</odoo>