diff --git a/soong_workflow/models/soong_workflow_log.py b/soong_workflow/models/soong_workflow_log.py index f0bd582aa..b77537595 100644 --- a/soong_workflow/models/soong_workflow_log.py +++ b/soong_workflow/models/soong_workflow_log.py @@ -85,6 +85,7 @@ class SoongWorkflowLog2(models.Model): approval_state = fields.Selection([('0', '未读'), ('1', '已读')], string='状态', default='0') document_ids = fields.Many2many('ir.attachment', string="附件") lase_click_date = fields.Datetime(string="操作时间") + commit = fields.Char(string="意见") @api.depends("workflow_id", "node_id", "node_btn_id") diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index a83f7a9bc..912998801 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -22,9 +22,7 @@ class SoongWorkflowMixin(models.AbstractModel): for rec in self: if rec.log_ids: current_user = self.env.user - target_logs = rec.log_ids.filtered( - lambda l: l.done_by.id == current_user.id and l.approval_state == '0' - ) + target_logs = rec.log_ids.filtered(lambda l: l.done_by.id == current_user.id and l.approval_state == '0') if target_logs: target_logs.write({'approval_state': '1'}) return super(SoongWorkflowMixin, self).read(fields=fields, load=load) @@ -813,33 +811,33 @@ class SoongWorkflowMixin(models.AbstractModel): ('employee_id.user_role_ids', 'in', role_ids) ] # 如果有角色条件,添加到可见性条件中 - # if role_domain: - # allowed_user_ids = self.env['res.users'].search(role_domain).ids - # invisible += f" or uid not in {allowed_user_ids}" + if role_domain: + allowed_user_ids = self.env['res.users'].search(role_domain).ids + invisible += f" or uid not in {allowed_user_ids}" # 如果有隐藏条件的话,启用隐藏 if button.is_review_invisible and button.invisible_expression: domain = eval(button.invisible_expression) btn_invisible = self.sudo().env[button.workflow_id.model_id.model].search(domain).ids invisible += " or id not in {0} ".format(str(btn_invisible)) # 如果是加签确认 - if is_apostille: - id_el = etree.Element("field") - id_el.set("name", "approval_sign_ids") - id_el.set("invisible", "1") - invisible += " or uid not in approval_sign_ids" + # if is_apostille: + # id_el = etree.Element("field") + # id_el.set("name", "approval_sign_ids") + # id_el.set("invisible", "1") + # invisible += " or uid not in approval_sign_ids" if button.name in ["退回", "结束"]: id_el = etree.Element("field") id_el.set("name", "log_ids") id_el.set("invisible", "1") invisible += " or not log_ids " + if button.name == "分发": + invisible += " or not is_send" if button.name == "收回": id_el = etree.Element("field") id_el.set("name", "log_ids") id_el.set("invisible", "1") invisible += " or not log_ids or not is_back" - # if button.name == "结束": - # invisible += " or True" invisible += " or work_end" if model == 'purchase.order': @@ -1090,11 +1088,8 @@ class SoongWorkflowMixin(models.AbstractModel): has_group = user_rec.has_group(ext_id) if not has_group: flag_show = False - if not flag_show and ( - field_attrs.group_ids or field_attrs.user_ids - ): + if not flag_show and (field_attrs.group_ids or field_attrs.user_ids): invisible_arr.append(node.node_name) - read_num = '' if readonly_arr: id_el = etree.Element("field") id_el.set("name", "log_ids") diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index 6dc568880..12bddf73d 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -57,6 +57,7 @@ class SoongWorkflowRecord(models.Model): # 人力资源流程的发生日期 workflow_happen_date = fields.Date(string="发生日期") + is_unlink = fields.Boolean(string="是否可删", compute='_compute_is_unlink') @api.depends_context('uid', 'company') @api.depends('department_id', 'employee_ids') @@ -77,6 +78,14 @@ class SoongWorkflowRecord(models.Model): has_valid_employee = bool(record.employee_ids & valid_employee_ids) record.member_of_department = has_valid_employee + @api.depends('create_uid', 'employee_ids') + def _compute_is_unlink(self): + for record in self: + if len(record.employee_ids) == 1 and record.employee_ids.user_id.id == record.create_uid.id: + record.is_unlink = True + else: + record.is_unlink = False + def _get_valid_employee_for_user(self): user = self.env.user employee = user.employee_ids @@ -322,6 +331,17 @@ class SoongWorkflowRecord(models.Model): # ids += c_id # return [('id', 'in', ids)] + # 后台 + + def backend(self): + form_id = self.env.ref("soong_workflow.soong_workflow_record_form").id + return { + "type": "ir.actions.act_window", + "name": "后台", + "res_model": "soong.workflow.record", + "views": [[form_id, "form"]], + "res_id": self.id + } # 撤销 def revoke_record(self): wizard = self.env.ref("soong_workflow.view_soong_workflow_record_revoke_wizard") diff --git a/soong_workflow/templates/soong_workflow_templates.xml b/soong_workflow/templates/soong_workflow_templates.xml index c96b87cac..d8a3c8500 100644 --- a/soong_workflow/templates/soong_workflow_templates.xml +++ b/soong_workflow/templates/soong_workflow_templates.xml @@ -36,7 +36,8 @@ - + + @@ -99,7 +100,8 @@ - + + diff --git a/soong_workflow/views/menuitem.xml b/soong_workflow/views/menuitem.xml index 2b5934e64..154b37ed8 100644 --- a/soong_workflow/views/menuitem.xml +++ b/soong_workflow/views/menuitem.xml @@ -11,7 +11,17 @@ parent="menu_soong_workflow_root" action="action_kklw_workflow_approval_request" sequence="1"/> - + + - - - - - + + + + + - -