This commit is contained in:
李鹏宇
2025-02-05 21:17:47 +08:00
parent ee3cf3f5c1
commit aea0d178da
5 changed files with 67 additions and 49 deletions
+35 -20
View File
@@ -11,37 +11,19 @@ class SoongWorkflowLog(models.Model):
_name = "soong.workflow.log"
_description = "Soong Workflow Log"
# _sql_constraints = [(
# "uniq_node_btn_id",
# "unique(model, res_id, node_btn_id)",
# _("Workflow log must be unique."),), ]
name = fields.Char(string="节点名称", compute="_compute_name", store=True)
model = fields.Char(string="Related Document Model", index=True, required=True)
res_id = fields.Integer(string="Related Document ID", index=True, required=True)
code = fields.Char(string="流水号", index=True)
sequence = fields.Integer(string="序号", compute="_compute_sequence")
# w_res_id = fields.Many2oneReference(string='Workflow Ref.', index=True, model_field='w_res_model_id')
# w_res_model_id = fields.Many2one('ir.model', string='Model', index=True, ondelete='cascade')
# w_res_model = fields.Char('Workflow Ref Model', index=True, related='w_res_model_id.model', precompute=True, store=True, readonly=True)
workflow_id = fields.Many2one(comodel_name="soong.workflow")
node_id = fields.Many2one(comodel_name="soong.workflow.node")
node_btn_id = fields.Many2one(comodel_name="soong.workflow.node.button", string="动作名称")
node_btn_name = fields.Selection([
('0', ' '),
('1', '退回'),
('2', '加签'),
], string='节点功能', default='0')
node_btn_name = fields.Selection([('0', ' '), ('1', '退回'), ('2', '加签')], string='节点功能', default='0')
done_by = fields.Many2one(comodel_name="res.users", string="审批人")
lase_click_date = fields.Datetime(string="操作时间")
approval_state = fields.Selection([
('0', '待办'),
('1', '办理中'),
('2', '已办结'),
], string='审批状态', default='0')
approval_state = fields.Selection([('0', '待办'), ('1', '办理中'), ('2', '已办结')], string='审批状态', default='0')
comment = fields.Char(string="意见")
date_create = fields.Datetime(string="时间", default=lambda self: fields.Datetime.now())
@@ -63,3 +45,36 @@ class SoongWorkflowLog(models.Model):
else:
logs_obj = self.sudo().search([("res_id", "=", record.res_id), ("model", "=", record.model), ("workflow_id", "=", record.workflow_id.id), ("date_create", "<", record.date_create)])
record.sequence = len(logs_obj) + 1
class SoongWorkflowLog2(models.Model):
_name = "soong.workflow.log2"
_description = "Soong Workflow Log2"
workflow_id = fields.Many2one(comodel_name="soong.workflow")
model = fields.Char(string="Related Document Model", index=True, required=True)
res_id = fields.Integer(string="Related Document ID", index=True, required=True)
node_id = fields.Many2one(comodel_name="soong.workflow.node")
node_btn_id = fields.Many2one(comodel_name="soong.workflow.node.button", string="动作名称")
sequence = fields.Integer(string="序号", compute="_compute_sequence")
done_by = fields.Many2one(comodel_name="res.users", string="审批人")
name = fields.Char(string="节点名称", compute="_compute_name", store=True)
approval_state = fields.Selection([('0', '未读'), ('1', '已读')], string='审批状态', default='0')
lase_click_date = fields.Datetime(string="操作时间")
@api.depends("workflow_id", "node_id", "node_btn_id")
def _compute_name(self):
for rec in self:
rec.name = "%(node_id_name)s" % {"node_id_name": rec.node_id.name}
@api.depends("workflow_id")
def _compute_sequence(self):
for record in self:
if type(record.id) == int:
logs_obj = self.sudo().search([("res_id", "=", record.res_id), ("model", "=", record.model),
("workflow_id", "=", record.workflow_id.id), ("id", "<", record.id)])
else:
logs_obj = self.sudo().search([("res_id", "=", record.res_id), ("model", "=", record.model),
("workflow_id", "=", record.workflow_id.id),
("date_create", "<", record.date_create)])
record.sequence = len(logs_obj) + 1
@@ -152,13 +152,10 @@ class SoongWorkflowMixin(models.AbstractModel):
else:
rec.approve_state = "pending"
log_ids = fields.One2many(
comodel_name="soong.workflow.log",
inverse_name="res_id",
string=" ",
domain=lambda self: [("model", "=", self._name)],
auto_join=True,
)
log_ids = fields.One2many(comodel_name="soong.workflow.log", inverse_name="res_id", string=" ",
domain=lambda self: [("model", "=", self._name)], auto_join=True)
log_ids2 = fields.One2many(comodel_name="soong.workflow.log2", inverse_name="res_id", string=" ",
domain=lambda self: [("model", "=", self._name)], auto_join=True)
@api.model_create_multi
def create(self, vals_list):
@@ -27,6 +27,7 @@ access_trans_link,trans_link,model_trans_link,soong_workflow.group_soong_workflo
access_soong_workflow_entrust,soong_workflow_entrust,model_soong_workflow_entrust,soong_workflow.group_soong_workflow_user,1,1,1,1
access_entrust_all,entrust_all,model_entrust_all,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_log,soong_workflow_log,model_soong_workflow_log,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_log2,soong_workflow_log2,model_soong_workflow_log2,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_inspector,soong_workflow_inspector,model_soong_workflow_inspector,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_inspector_line,soong_workflow_inspector_line,model_soong_workflow_inspector_line,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_inspector_line2,soong_workflow_inspector_line2,model_soong_workflow_inspector_line2,soong_workflow.group_soong_workflow_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
27 access_soong_workflow_log soong_workflow_log model_soong_workflow_log soong_workflow.group_soong_workflow_user 1 1 1 1
28 access_soong_workflow_inspector access_soong_workflow_log2 soong_workflow_inspector soong_workflow_log2 model_soong_workflow_inspector model_soong_workflow_log2 soong_workflow.group_soong_workflow_user 1 1 1 1
29 access_soong_workflow_inspector_line access_soong_workflow_inspector soong_workflow_inspector_line soong_workflow_inspector model_soong_workflow_inspector_line model_soong_workflow_inspector soong_workflow.group_soong_workflow_user 1 1 1 1
30 access_soong_workflow_inspector_line soong_workflow_inspector_line model_soong_workflow_inspector_line soong_workflow.group_soong_workflow_user 1 1 1 1
31 access_soong_workflow_inspector_line2 soong_workflow_inspector_line2 model_soong_workflow_inspector_line2 soong_workflow.group_soong_workflow_user 1 1 1 1
32 access_soong_note_setting soong_note_setting model_soong_note_setting soong_workflow.group_soong_workflow_user 1 1 1 1
33 access_soong_workflow_apostille_wizard_user soong_workflow_apostille_wizard model_soong_workflow_apostille_wizard soong_workflow.group_soong_workflow_user 1 1 1 1
@@ -1,18 +1,32 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<template id="soong_workflow_log">
<group string="审批详情" invisible="not log_ids">
<field name="log_ids" invisible="not log_ids" style="width:100%%; margin-top: 10px;">
<tree create="false" edit="false" delete="false" editable="bottom">
<field name="sequence" string=""/>
<field name="name" string=""/>
<field name="done_by" string=""/>
<field name="lase_click_date" string=""/>
<field name="comment" string=""/>
<field name="approval_state" string=""/>
<field name="node_btn_name" string=""/>
</tree>
</field>
</group>
<notebook>
<page string="审批详情" invisible="not log_ids">
<field name="log_ids" style="width:100%%; margin-top: 10px;">
<tree create="false" edit="false" delete="false" editable="bottom">
<field name="sequence" string=""/>
<field name="name" string=""/>
<field name="done_by" string=""/>
<field name="lase_click_date" string=""/>
<field name="comment" string=""/>
<field name="approval_state" string=""/>
<field name="node_btn_name" string=""/>
</tree>
</field>
</page>
<page string="抄送/传阅记录" invisible="not log_ids">
<field name="log_ids2" style="width:100%%; margin-top: 10px;">
<tree create="false" edit="false" delete="false" editable="bottom">
<field name="sequence" string=""/>
<field name="done_by" string=""/>
<field name="name" string=""/>
<field name="lase_click_date" string=""/>
<field name="approval_state" string=""/>
<field name="lase_click_date" string=""/>
</tree>
</field>
</page>
</notebook>
</template>
</odoo>
-9
View File
@@ -21,55 +21,46 @@
parent="menu_soong_workflow_root"
action="soong_workflow_record_action"
sequence="3"/>
<menuitem id="menu_workflow_approval_request_all"
name="流程查询"
parent="menu_soong_workflow_root"
action="soong_workflow_record_action_all"
sequence="4"/>
<menuitem id="menu_workflow_approval_request_new"
name="新建流程"
parent="menu_soong_workflow_root"
action="action_kklw_workflow_approval_request"
sequence="5"/>
<menuitem id="menu_soong_workflow_entrust"
sequence="6"
name="流程委托"
action="soong_workflow_entrust_action"
parent="menu_soong_workflow_root"/>
<menuitem id="menu_workflow_approval_request_recycle"
name="流程回收站"
parent="menu_soong_workflow_root"
action="soong_workflow_record_action_reclaim"
sequence="7"/>
<menuitem id="menu_soong_workflow_inspector_approval"
sequence="8"
name="督办审批"
action="soong_workflow_inspector_action"
parent="menu_soong_workflow_root"/>
<menuitem id="menu_soong_other_setting"
sequence="9"
name="其他配置"
parent="menu_soong_workflow_root"
action="soong_note_action"/>
<menuitem id="menu_soong_workflow"
name="工作流配置"
parent="menu_soong_other_setting"
action="action_soong_workflow"
sequence="1"/>
<menuitem id="menu_soong_workflow_log"
name="工作流日志"
parent="menu_soong_other_setting"
action="action_soong_workflow_log"
sequence="2"/>
<menuitem id="menu_soong_approval_note"
name="常用审批意见"
parent="menu_soong_other_setting"