Files
gzth/soong_workflow/models/soong_workflow_log.py
T
2025-02-07 19:18:42 +08:00

82 lines
4.3 KiB
Python

# Copyright 2017-19 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
import pytz
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class SoongWorkflowLog(models.Model):
_name = "soong.workflow.log"
_description = "Soong Workflow Log"
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")
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')
done_by = fields.Many2one(comodel_name="res.users", string="审批人")
lase_click_date = fields.Datetime(string="操作时间")
approval_state = fields.Selection([('0', '待办'), ('1', '办理中'), ('2', '已办结'), ('3', '结束')], string='审批状态', default='0')
comment = fields.Char(string="意见")
date_create = fields.Datetime(string="时间", default=lambda self: fields.Datetime.now())
@api.depends("workflow_id", "node_id", "node_btn_id")
def _compute_name(self):
for rec in self:
# rec.name = "%(workflow_id_name)s - %(node_id_name)s - %(node_btn_name)s" % {
# "workflow_id_name": rec.workflow_id.name,
# "node_id_name": rec.node_id.name,
# "node_btn_name": rec.node_btn_id.name,
# }
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
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