diff --git a/soong_workflow/__manifest__.py b/soong_workflow/__manifest__.py
index c1f380cbc..6da57042f 100644
--- a/soong_workflow/__manifest__.py
+++ b/soong_workflow/__manifest__.py
@@ -35,6 +35,7 @@
"wizard/soong_workflow_apostille_wizard_view.xml",
"wizard/workflow_line_wizard_viwes.xml",
"wizard/role_group_wizard_views.xml",
+ "wizard/soong_workflow_log2_wizard_views.xml",
"wizard/soong_workflow_apostille_ok_wizard_view.xml",
"wizard/soong_workflow_record_revoke_wizard_view.xml",
"wizard/soong_workflow_record_delete_wizard_view.xml",
diff --git a/soong_workflow/models/soong_workflow_log.py b/soong_workflow/models/soong_workflow_log.py
index da6211b23..a424be823 100644
--- a/soong_workflow/models/soong_workflow_log.py
+++ b/soong_workflow/models/soong_workflow_log.py
@@ -29,7 +29,6 @@ class SoongWorkflowLog(models.Model):
date_create = fields.Datetime(string="时间", default=lambda self: fields.Datetime.now())
document_ids = fields.Many2many('ir.attachment', string="附件")
active = fields.Boolean(string="归档", default=True)
- msg_id = fields.Char()
display_field = fields.Char(string="显示字段", compute="_compute_display_field")
diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py
index 28fb85fd9..be4cd9ddd 100644
--- a/soong_workflow/models/soong_workflow_record.py
+++ b/soong_workflow/models/soong_workflow_record.py
@@ -23,6 +23,14 @@ class SoongWorkflowRecord(models.Model):
]
return self.search_count(domain)
+ def get_is_logs2_count(self):
+ domain = [
+ ('is_log2', '=', True),
+ ('users_ids', 'in', self.env.user.id),
+ ('reclaim_state', '=', False)
+ ]
+ return self.search_count(domain)
+
def read(self, fields=None, load='_classic_read'):
for re in self:
res_name = self.env[re.res_model].search([('id', '=', re.res_id)]).name
@@ -37,12 +45,20 @@ class SoongWorkflowRecord(models.Model):
res_model = fields.Char(string="Res Model", required=True)
res_id = fields.Integer(string="Res ID", required=True)
users_ids = fields.Many2many('res.users', string="用户")
- employee_ids = fields.Many2many('hr.employee', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
text = fields.Text(string="正文")
documents_ids = fields.Many2many('ir.attachment', string="附件")
workflow_id = fields.Many2one(comodel_name="soong.workflow", string="类型", ondelete="restrict")
node_id = fields.Many2one(comodel_name="soong.workflow.node", string="当前节点")
company_id = fields.Many2one(related="create_uid.company_id", string="公司")
+ is_log2 = fields.Boolean(string="是否是抄送流程")
+ employee_ids = fields.Many2many('hr.employee', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
+ employee2_ids = fields.Many2many(
+ 'hr.employee',
+ relation='soong_workflow_record_employee2_rel',
+ column1='record_id',
+ column2='employee2_id',
+ string='抄送/传阅人员'
+ )
approve_state = fields.Selection([("start", "草稿"), ("pending", "审批中"), ("end", "结束")], default="start", string="状态")
reclaim_state = fields.Boolean(string="回收")
meal = fields.Selection([('yes', '是'), ('no', '否')], string="误餐费", default=None)
@@ -86,6 +102,28 @@ class SoongWorkflowRecord(models.Model):
else:
record.is_unlink = False
+ def greater_record(self):
+ self.ensure_one()
+ target_record = self.env[self.res_model].browse(self.res_id)
+ log2_line_list = []
+ for log2 in target_record.log_ids2:
+ log2_line_list.append((0, 0, {
+ 'employee_id': log2.done_by.employee_ids.id,
+ 'log2_time': log2.lase_click_date,
+ 'commit': log2.commit,
+ 'approval_state': log2.approval_state,
+ }))
+ return {
+ "type": "ir.actions.act_window",
+ "name": "更多详情",
+ "res_model": "soong.workflow.log2.wizard",
+ "view_mode": "form",
+ "target": "new",
+ "context": {
+ "default_log2_line_ids": log2_line_list,
+ }
+ }
+
def _get_valid_employee_for_user(self):
user = self.env.user
employee = user.employee_ids
diff --git a/soong_workflow/security/ir.model.access.csv b/soong_workflow/security/ir.model.access.csv
index 47b3094d0..36b49d63c 100644
--- a/soong_workflow/security/ir.model.access.csv
+++ b/soong_workflow/security/ir.model.access.csv
@@ -52,4 +52,6 @@ access_project_project_line,project_project_line,model_project_project_line,soon
access_soong_bounced_wizard,soong_bounced_wizard,model_soong_bounced_wizard,base.group_user,1,1,1,1
access_workflow_line_wizard,workflow_line_wizard,model_workflow_line_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
-access_change_opinions_wizard,change_opinions_wizard,model_change_opinions_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
\ No newline at end of file
+access_change_opinions_wizard,change_opinions_wizard,model_change_opinions_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
+access_soong_workflow_log2_wizard,soong_workflow_log2_wizard,model_soong_workflow_log2_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
+access_soong_workflow_log2_line,soong_workflow_log2_line,model_soong_workflow_log2_line,soong_workflow.group_soong_workflow_user,1,1,1,1
\ No newline at end of file
diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml
index 0b1db243a..b8aa826a7 100644
--- a/soong_workflow/views/soong_workflow_record.xml
+++ b/soong_workflow/views/soong_workflow_record.xml
@@ -184,6 +184,27 @@
+
+
+ soong.workflow.log2.record.tree
+ soong.workflow.record
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
soong.workflow.department.tree
soong.workflow.record
@@ -280,6 +301,16 @@
+
+ 抄送流程
+ ir.actions.act_window
+ soong.workflow.record
+ tree,kanban,search
+ {'header_search_default_approve_state': 1, 'header_search_default_to_do':1, 'check_employee': 1}
+ [('users_ids', 'in', uid), ('reclaim_state', '=', False), ('is_log2', '=', True)]
+
+
+
待办
ir.actions.act_window
diff --git a/soong_workflow/wizard/__init__.py b/soong_workflow/wizard/__init__.py
index 5cef6345a..6a291ef37 100644
--- a/soong_workflow/wizard/__init__.py
+++ b/soong_workflow/wizard/__init__.py
@@ -10,5 +10,5 @@ from . import role_group_wizard
from . import workflow_line_wizard
from . import soong_bounced_wizard
from . import change_opinions_wizard
-
+from . import soong_workflow_log2_wizard
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index 5735e01c2..85cf51e58 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -442,6 +442,9 @@ class SoongWorkflowCommentWizard(models.TransientModel):
user_ids = [employee.user_id.id for employee in self.employee_ids if employee.user_id]
related_record.self_users_ids = [(6, 0, user_ids)] if user_ids else [(5,)]
record_id.write({'state': self.trans_link_id.name})
+ if self.circulated_employee_ids:
+ workflow_record_id.is_log2 = True
+ workflow_record_id.employee2_ids = [(6, 0, self.circulated_employee_ids.ids)]
for employee in self.employee_ids:
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&active_id={action_id.id}&model={record_id._name}&view_type=form'
diff --git a/soong_workflow/wizard/soong_workflow_log2_wizard.py b/soong_workflow/wizard/soong_workflow_log2_wizard.py
new file mode 100644
index 000000000..ffe6a8c51
--- /dev/null
+++ b/soong_workflow/wizard/soong_workflow_log2_wizard.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, fields, api, _
+from odoo.exceptions import ValidationError, UserError
+import logging
+from datetime import datetime, date, time, timedelta
+import re
+_logger = logging.getLogger(__name__)
+
+
+class SoongWorkflowLog2Wizard(models.Model):
+ _name = 'soong.workflow.log2.wizard'
+ _description = '抄送流程弹窗'
+
+ log2_line_ids = fields.One2many('soong.workflow.log2.line', 'log2_wizard_id', string='抄送流程')
+
+
+class SoongWorkflowLog2Line(models.Model):
+ _name = 'soong.workflow.log2.line'
+ _description = '抄送流程弹窗行'
+
+ log2_wizard_id = fields.Many2one('soong.workflow.log2.wizard', string='抄送流程弹窗')
+ employee_id = fields.Many2one('hr.employee', string='人员')
+ log2_time = fields.Datetime(string='抄送时间')
+ commit = fields.Char(string='意见')
+ approval_state = fields.Selection([('0', '待办理'), ('1', '办理中'), ('2', '已办结')], string='状态', default='0')
\ No newline at end of file
diff --git a/soong_workflow/wizard/soong_workflow_log2_wizard_views.xml b/soong_workflow/wizard/soong_workflow_log2_wizard_views.xml
new file mode 100644
index 000000000..0c35bdeda
--- /dev/null
+++ b/soong_workflow/wizard/soong_workflow_log2_wizard_views.xml
@@ -0,0 +1,22 @@
+
+
+
+ soong.workflow.log2.wizard.form
+ soong.workflow.log2.wizard
+
+
+
+
+
\ No newline at end of file
diff --git a/sun_badge_menu/models/ir_ui_menu.py b/sun_badge_menu/models/ir_ui_menu.py
index 54ef083e7..9e64494b4 100644
--- a/sun_badge_menu/models/ir_ui_menu.py
+++ b/sun_badge_menu/models/ir_ui_menu.py
@@ -178,6 +178,8 @@ class IrUiMenu(models.Model):
badge_count = self.env[res_model].read_coming_count()
elif hasattr(res_model, 'read_due_count'):
badge_count = self.env[res_model].read_due_count()
+ elif hasattr(res_model, 'get_is_logs2_count'):
+ badge_count = self.env[res_model].get_is_logs2_count()
web_menus[menu['id']] = {
"id": menu['id'],
diff --git a/yuthon_work_brand/views/hr_menus.xml b/yuthon_work_brand/views/hr_menus.xml
index 594172ad3..666abbe7b 100644
--- a/yuthon_work_brand/views/hr_menus.xml
+++ b/yuthon_work_brand/views/hr_menus.xml
@@ -729,11 +729,11 @@
parent="holiday_manage_menu_root_board"
action="soong_workflow.soong_workflow_hr_employee_action"
sequence="5"/>
-
-
-
-
-
+