添加功能

This commit is contained in:
zhou
2025-05-24 21:54:19 +08:00
parent 736eb6fa7a
commit cbcebaf573
10 changed files with 61 additions and 50 deletions
+13 -13
View File
@@ -245,6 +245,18 @@ class SoongWorkflowMixin(models.AbstractModel):
# 继续正常流程
if btn_rec.has_comment:
return self.with_context(cx)._add_comment(log_obj, btn_rec)
if btn_rec.name == '收回':
return {
'name': '收回弹窗',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'soong.bounced.wizard',
"target": "new",
'context': {
'default_res_id': self.id,
"default_res_model": self._name,
}
}
else:
return btn_rec.with_context(cx).run()
@@ -402,19 +414,7 @@ class SoongWorkflowMixin(models.AbstractModel):
# 收回
def action_withdraw(self):
wizard = self.env.ref("soong_workflow.soong_bounced_wizard_form_view")
return {
'name': '收回弹窗',
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'soong.bounced.wizard',
"views": [(wizard.id, "form")],
"view_id": wizard.id,
"target": "new",
'context': {
'default_mixin_id': self.id,
}
}
pass
def _remove_default_header(self, view_type, res):
"""
+1 -1
View File
@@ -42,4 +42,4 @@ access_role_group_wizard,role_group_wizard,model_role_group_wizard,soong_workflo
access_soong_workflow_record_revoke_wizard,soong_workflow_record_revoke_wizard,model_soong_workflow_record_revoke_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_line,soong_workflow_line,model_soong_workflow_line,soong_workflow.group_soong_workflow_user,1,1,1,1
access_project_project_line,project_project_line,model_project_project_line,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_bounced_wizard, soong_bounced_wizard,model_soong_bounced_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_bounced_wizard,soong_bounced_wizard,model_soong_bounced_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
42 access_soong_bounced_wizard soong_bounced_wizard model_soong_bounced_wizard soong_workflow.group_soong_workflow_user base.group_user 1 1 1 1
43
44
45
+17 -11
View File
@@ -8,16 +8,22 @@ class SoongBouncedWizard(models.Model):
_name = 'soong.bounced.wizard'
_description = '收回弹窗'
mixin_id = fields.Many2one('soong.workflow.mixin')
res_id = fields.Integer()
res_model = fields.Char()
def action_bounced(self):
for record in self.mixin_id:
log_ids = record.log_ids.sorted('sequence')
if log_ids[-1].approval_state == '2':
raise UserError('当前状态不可以收回')
employee_id = self.env.user.employee_id.id
self.env['soong.workflow.record'].search([('code', '=', self.code)]).write(
{'employee_ids': [(6, 0, [employee_id])]})
log_ids[-1].unlink()
log_ids[-2].write({'approval_state': '1'})
record.write({'state': log_ids[-2].name})
record = self.env[self.res_model].search([('id', '=', self.res_id)])
log_ids = record.log_ids.sorted('sequence')
if log_ids[-1].approval_state == '1':
raise UserError('当前状态不可以收回')
employee_id = self.env.user.employee_ids.id
workflow_id = (self.env['soong.workflow.record'].search([('code', '=', record.code)]))
if employee_id:
workflow_id.write({'employee_ids': [(6, 0, [employee_id])]})
if workflow_id.users_ids:
last_user = workflow_id.users_ids[-1]
if last_user.employee_ids.id != employee_id:
workflow_id.write({'users_ids': [(3, last_user.id)]})
log_ids[-1].unlink()
log_ids[-2].write({'approval_state': '1'})
record.write({'state': log_ids[-2].name})
@@ -8,7 +8,8 @@
<p>确认要收回吗?</p>
<sheet>
<group>
<field name="mixin_id"/>
<field name="res_id"/>
<field name="res_model"/>
</group>
</sheet>
<footer>
@@ -54,14 +54,14 @@ class SoongWorkflowCommentWizard(models.TransientModel):
store=True
)
@api.onchange('employee_ids')
def _onchange_employee_ids(self):
if len(self.employee_ids) == 1:
self.employee_ids1 = self.employee_ids
@api.onchange('employee_ids1')
def _onchange_employee_ids1(self):
if len(self.employee_ids1) == 1:
self.employee_ids = self.employee_ids
@api.constrains('employee_ids1')
def _check_employee_ids1(self):
if not self.employee_ids1:
@api.constrains('employee_ids')
def _check_employee_ids(self):
if not self.employee_ids:
raise ValidationError("必须有转交人员")
@api.depends('comment_note_id', 'comment_note')
@@ -104,16 +104,15 @@ class SoongWorkflowCommentWizard(models.TransientModel):
if '转交' not in next_list:
raise UserError('配置错误,请配置当前{}的转交按钮'.format(btn.name))
else:
employee_user_role_id = self.env['hr.employee'].search(
[('user_role_id', '=', btn.users_role_id.id),
("user_role_ids", "in", btn.users_role_id.id),
('department_id', '=', record_id.department_id.id)])
if employee_user_role_id:
if btn.is_automatic:
employee_user_role_id = self.env['hr.employee'].search(
[('user_role_id', '=', btn.users_role_id.id),
('department_id', '=', record_id.department_id.id)])
self.employee_ids = employee_user_role_id
else:
raise UserError('下一个流程节点没有匹配的人员,请联系管理员配置')
if btn.is_automatic:
self.employee_ids1 = employee_user_role_id
employee_user_role_ids = self.env['hr.employee'].search(
[('user_role_id', '=', btn.users_role_id.id)])
self.employee_ids = employee_user_role_ids
@api.onchange('trans_link_id')
def onchange_trans_employee_ids(self):
@@ -133,13 +132,14 @@ class SoongWorkflowCommentWizard(models.TransientModel):
employee_user_role_ids = self.env['hr.employee'].search(['|', ('user_role_id', 'in', link_users_group_ids.user_role_ids.ids), ('user_role_ids', 'in', link_users_group_ids.user_role_ids.ids)])
# 自动匹配
employee_user_role_id = self.env['hr.employee'].search([('id', 'in', employee_user_role_ids.ids),
# ("user_role_ids", "in", employee_user_role_ids.id),
'|', ('department_id', '=', record_id.department_id.id),
('department_ids', 'in', record_id.department_id.id),
('company_id', '=', self.env.user.company_id.id)]) # 自动匹配
self.employee_trans_domain_ids = employee_user_role_ids if not next_is_automatic else employee_user_role_id
self.employee_ids = employee_user_role_ids if not next_is_automatic else employee_user_role_id
self.employee_ids1 = employee_user_role_ids if not next_is_automatic else employee_user_role_id
if '分发' in ret.name:
self.employee_ids = record_id.users_id.employee_id
self.employee_ids1 = record_id.users_id.employee_id
def add_comment(self):
self.ensure_one()
@@ -48,8 +48,8 @@
<!-- 转交人员 -->
<field name="trans_link_id" string="转交节点" invisible="node_btn_name == '退回'"/>
<field name="employee_trans_domain_ids" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围" invisible="1"/>
<field name="employee_ids1" widget="many2many_tags" string="人员范围" domain="[('id', 'in', employee_ids)]"/>
<field name="employee_ids1" widget="many2many_tags" string="人员范围" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" string="人员范围" domain="[('id', 'in', employee_ids1)]"/>
</group>
<div invisible="node_btn_name != '结束'">
<h2>当前流程是否结束,请确认</h2>
@@ -465,7 +465,7 @@
<field name="power_attorney_id" widget="preview_many2one"/>
<field name="asset_valuation_id" widget="preview_many2one"/>
<field name="confirmation_transaction_id" widget="preview_many2one"/>
<field name="other_id"/>
<field name="other_id" widget="preview_many2one"/>
</group>
</group>
</page>
@@ -40,23 +40,27 @@
<field name="code">yuthon_task_approval_code</field>
<field name="prefix">ZY%(y)s%(month)s%(day)s</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
<record id="property_personal_condolences_code_sequence" model="ir.sequence">
<field name="name">个人慰问编号</field>
<field name="code">property_personal_condolences_code</field>
<field name="prefix">GR%(y)s%(month)s%(day)s</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
<record id="property_care_reward_code_sequence" model="ir.sequence">
<field name="name">关怀奖励编号</field>
<field name="code">property_care_reward_code</field>
<field name="prefix">GH%(y)s%(month)s%(day)s</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
<record id="yuthon_trade_activities_code_sequence" model="ir.sequence">
<field name="name">活动编号</field>
<field name="code">yuthon_trade_activities_code</field>
<field name="prefix">HD%(y)s%(month)s%(day)s</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
</odoo>
+2 -2
View File
@@ -18,8 +18,8 @@ class YuthonSealsApproval(models.Model):
urgency_level = fields.Selection([('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], string='紧急度',
default='normal')
type_stamp_ids = fields.Many2many('seals.type.setting', string='用章类型')
scope_chapter_id = fields.Many2one('seals.scope.setting', string='用章范围')
approval_id = fields.Many2one('sending.unit.setting', string="发送单位")
scope_chapter_ids = fields.Many2many('seals.scope.setting', string='用章范围')
approval_ids = fields.Many2many('sending.unit.setting', string="发送单位")
remake = fields.Text(string="用章意见")
active = fields.Boolean('Active', default=True, tracking=True)
work_end = fields.Boolean(string="结束")
@@ -40,8 +40,8 @@
<field name="name"/>
<field name="users_id" options="{'no_create': True}"/>
<field name="type_stamp_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="scope_chapter_id" options="{'no_create': True}"/>
<field name="approval_id" options="{'no_create': True}"/>
<field name="scope_chapter_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="approval_ids" widget="many2many_tags" options="{'no_create': True}"/>
<field name="remake"/>
<field name="document_ids" widget="preview_many2many"/>
<field name="department_id" invisible="1"/>