添加功能

This commit is contained in:
李鹏宇
2026-01-22 19:52:19 +08:00
parent e8e4275695
commit 3ba4b0b560
7 changed files with 65 additions and 21 deletions
@@ -559,6 +559,22 @@ class SoongWorkflowMixin(models.AbstractModel):
comment_note_id = btn_rec.node_id.comment_id.id
else:
comment_note_id = False
# 加签人员过滤
if self.log_ids:
log_node_ids = self.log_ids.mapped('node_id.id')
log_nodes = self.env['soong.workflow.node'].browse(log_node_ids)
all_node_employees = log_nodes.mapped('employee_ids')
else:
current_node = node_list[state_list.index(state)]
all_node_employees = current_node.employee_ids
log_done_by_users = self.log_ids.mapped('done_by')
log2_done_by_users = self.log_ids2.mapped('done_by')
all_done_by_users = log_done_by_users | log2_done_by_users
done_by_employees = self.env['hr.employee'].search([
('user_id', 'in', all_done_by_users.ids)
])
all_filter_employees = all_node_employees | done_by_employees
return {
"name": _("评论"),
"type": "ir.actions.act_window",
@@ -572,6 +588,7 @@ class SoongWorkflowMixin(models.AbstractModel):
'default_comment_note_id': comment_note_id,
"default_code": self.code,
"default_res_model": self._name,
"default_filter_personnel_ids": [(6, 0, all_filter_employees.ids)],
"default_node_btn_id": btn_rec.id,
"default_is_supervising": is_supervising,
"default_trans_link_id": self.env['trans.link'].search(trans_domain, limit=1).id if btn_rec.name == '转交' else False,
+1 -12
View File
@@ -95,16 +95,9 @@ class SoongWorkflowNode(models.Model):
)
user_role_ids = fields.Many2many("soong.user.role", string="抄送角色", )
users_role_group_ids = fields.Many2many('soong.user.role.group', string='抄送角色组')
employee1_ids = fields.Many2many(
'hr.employee',
string='抄送人员',
relation="soong_workflow_node_employee1_rel",
column1="node_id",
column2="employee1_id"
)
employee_ids = fields.Many2many(
'hr.employee',
string='抄送/传阅人员(总和)',
string='抄送/传阅人员',
relation="soong_workflow_node_employee_total_rel",
column1="node_id",
column2="employee_total_id"
@@ -142,10 +135,6 @@ class SoongWorkflowNode(models.Model):
('department_id', 'in', record.department1_ids.ids)
])
final_employees |= dept_employees
if record.employee1_ids:
final_employees |= record.employee1_ids
record.employee_ids = final_employees if final_employees else [(5, 0, 0)]
@api.onchange("is_apostille")
@@ -43,9 +43,8 @@
options="{'no_create': True}"/>
<field name="department1_ids" widget="many2many_tags" invisible="not is_carbon_copy"
options="{'no_create': True}"/>
<field name="employee1_ids" widget="many2many_tags" invisible="not is_carbon_copy"
<field name="employee_ids" widget="many2many_tags" invisible="not is_carbon_copy"
options="{'no_create': True}"/>
<field name="employee_ids" widget="many2many_tags" invisible="1"/>
<field name="is_apostille"/>
<field name="is_end"/>
<field name="is_confirm"/>
@@ -43,9 +43,9 @@ class SoongWorkflowCommentWizard(models.TransientModel):
)
employee_trans_domain_ids = fields.Many2many('hr.employee', 'employee_trans_domain_ids_rel', string="传阅人员", store=True)
filter_personnel_ids = fields.Many2many('hr.employee', 'filter_personnel_rel', 'custom_id', 'employee_id', string="过滤人员", store=True)
employee_ids = fields.Many2many('hr.employee', 'employee_ids_rel', 'custom_id', 'employee_id', string="传阅人员", store=True)
circulated_employee_ids = fields.Many2many('hr.employee', 'circulated_employee_rel', 'custom_id', 'employee_id', help='只可以看不可以评论,看过以后状态自动变为已阅', string="抄送/传阅人员", store=True)
circulated_employee_ids = fields.Many2many('hr.employee', 'circulated_employee_rel', 'custom_id', 'employee_id', help='只可以看不可以评论,看过以后状态自动变为已阅', string="加签人员", store=True)
dep_manager_employee_ids = fields.Many2many('hr.employee', 'dep_manager_employee_rel', 'custom_id', 'employee_id', string="承办", store=True)
add_employee_ids = fields.Many2many('hr.employee', 'add_employee_rel', 'custom_id', 'employee_id', string="加签人员", help='点击确认以后评论的人员', store=True)
supervising_employee_ids = fields.Many2many('hr.employee', 'supervising_employee_rel', 'custom_id', 'employee_id', string="督办人员", store=True)
@@ -11,6 +11,7 @@
<group invisible="1">
<field name="approval_concatenation" widget="radio"/>
<field name="invalid_link_ids" widget="many2many_tags"/>
<field name="filter_personnel_ids" widget="many2many_tags"/>
<field name="user_role_ids"/>
<field name="comment"/>
</group>
@@ -34,7 +35,7 @@
<group>
<!-- 归档弹窗新增“本公司”勾选,控制抄送人员是否限定当前公司 -->
<field name="is_this_company"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('company_id', '=', company_id)] if is_this_company else []"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('company_id', '=', company_id), ('id', 'not in' , filter_personnel_ids)] if is_this_company else [('id', 'not in' , filter_personnel_ids)]"/>
<field name="document_ids" string="附件" widget="preview_many2many" force_save="1"/>
</group>
</group>
@@ -48,7 +49,7 @@
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
<group>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain = "[('company_id', '=', company_id)]"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain = "[('company_id', '=', company_id),('id', 'not in' , filter_personnel_ids)]"/>
</group>
</group>
<group invisible="node_btn_name != '确认'">
@@ -58,7 +59,7 @@
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
<group>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain = "[('company_id', '=', company_id)]"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain = "[('company_id', '=', company_id), ('id', 'not in' , filter_personnel_ids)]"/>
</group>
</group>
<group invisible="node_btn_name != '分发'">
@@ -94,7 +95,7 @@
<field name="company_id" invisible="1"/>
<field name="employee_ids1" widget="many2many_tags" string="人员范围" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围" domain = "[('company_id', '=', company_id), ('id', 'in', employee_ids1)] if is_this_company else [('id', 'in', employee_ids1)]" options="{'no_create': True}"/>
<field name="circulated_employee_ids" invisible="node_btn_name == '退回'" widget="many2many_tags" options="{'no_create': True}" domain = "[('company_id', '=', company_id)]"/>
<field name="circulated_employee_ids" invisible="node_btn_name == '退回'" widget="many2many_tags" options="{'no_create': True}" domain = "[('company_id', '=', company_id),('id', 'not in' , filter_personnel_ids)]"/>
<!-- <field name="add_employee_ids" invisible="node_btn_name == '退回'" widget="many2many_tags" options="{'no_create': True}"/>-->
</group>
</group>
@@ -108,7 +109,7 @@
<field name="employee_ids" widget="many2many_tags" string="董事长" domain="[('user_role_id.name', '=', '董事长')]" options="{'no_create': True}" groups="yuthon_salary.group_jtbb_user"/>
<field name="dep_manager_employee_ids" widget="many2many_tags" string="承办" options="{'no_create': True}"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain = "[('id', 'not in' , filter_personnel_ids)]"/>
<field name="supervising_employee_ids" widget="many2many_tags" invisible="not is_supervising" options="{'no_create': True}"/>
</group>
<footer>
@@ -15,6 +15,25 @@ class InheritHrLeave(models.Model):
is_filing = fields.Boolean(string="归档")
application_reason = fields.Char(string="申请原因", compute="_compute_application_reason")
def confirm(self):
now = datetime.now()
current_month = now.month
current_year = now.year
if current_month == 1:
last_month = 12
last_month_year = current_year - 1
else:
last_month = current_month - 1
last_month_year = current_year
last_month_first_day = datetime(last_month_year, last_month, 1)
current_month_first_day = datetime(current_year, current_month, 1)
valid_leaves = self.filtered(lambda l:
fields.Datetime.to_datetime(l.date_from) >= last_month_first_day and
fields.Datetime.to_datetime(l.date_from) < current_month_first_day
)
if valid_leaves:
valid_leaves.write({'is_filing': True})
@api.depends('batch_id', 'hour_batch_id')
def _compute_application_reason(self):
for rec in self:
@@ -1228,6 +1228,25 @@ class VacationMealLine(models.Model):
rec._compute_employee_id()
rec._compute_overtime()
def confirm(self):
now = datetime.now()
current_month = now.month
current_year = now.year
if current_month == 1:
last_month = 12
last_month_year = current_year - 1
else:
last_month = current_month - 1
last_month_year = current_year
last_month_first_day = datetime(last_month_year, last_month, 1)
current_month_first_day = datetime(current_year, current_month, 1)
valid_leaves = self.filtered(lambda l:
fields.Datetime.to_datetime(l.start_date) >= last_month_first_day and
fields.Datetime.to_datetime(l.start_date) < current_month_first_day
)
if valid_leaves:
valid_leaves.write({'is_filing': True})
@api.depends('workflow_record_id')
def _compute_overtime(self):
for rec in self: