This commit is contained in:
李鹏宇
2026-03-23 17:01:13 +08:00
5 changed files with 83 additions and 6 deletions
@@ -429,6 +429,11 @@ class SoongWorkflowCommentWizard(models.TransientModel):
is_admin = self.env.user.has_group('soong_workflow.group_soong_workflow_manager')
log_done_by_ids = [log.done_by.id for log in record_id.log_ids if log.done_by]
if self.node_btn_name == '转交':
if self.res_model == 'issue.approval':
if self.trans_link_id.name != '申请人':
if record_id.issue_approval_ids:
for issue_library in record_id.issue_approval_ids:
issue_library.issue_library_id.issue_state = 'to_draft'
has_comment_note = bool(self.comment_note_id)
has_comment = bool(self.comment and self.comment.strip())
if not has_comment_note and not has_comment:
@@ -646,6 +651,11 @@ class SoongWorkflowCommentWizard(models.TransientModel):
if self.node_btn_name == '退回':
if not self.return_link_id:
raise UserError('请选择退回节点')
if self.res_model == 'issue.approval':
if self.return_link_id.name == '申请人':
if record_id.issue_approval_ids:
for issue_library in record_id.issue_approval_ids:
issue_library.issue_library_id.issue_state = 'draft'
record_id.write({'state': self.return_link_id.name})
next_node_id = record_id.workflow_id.node_ids.search([('name', '=', self.return_link_id.name), ('workflow_id', '=', record_id.workflow_id.id)])
for next_link in record_id.workflow_id.link_ids:
@@ -27,12 +27,14 @@ class RoomBooking(models.Model):
meet.issue_library_id.party_char = str(
record.start_datetime.date()) + record.meeting_type_id.name
meet.issue_library_id.issue_state_party = 'meeting'
meet.issue_library_id.issue_state = False
if '班子' in meeting_type_name:
if meet.issue_library_id.is_class and (meet.issue_library_id.is_class_passed == 'reject' or not meet.issue_library_id.is_class_passed):
meet.issue_library_id.class_char = str(
record.start_datetime.date()) + f'第{record.number_of_meetings}' + record.meeting_type_id.name
meet.issue_library_id.issue_state_class = 'meeting'
meet.issue_library_id.issue_state = False
if '董事' in meeting_type_name:
if meet.issue_library_id.is_boss and (
@@ -40,16 +42,19 @@ class RoomBooking(models.Model):
meet.issue_library_id.boss_char = str(
record.start_datetime.date()) + record.meeting_type_id.name
meet.issue_library_id.issue_state_boss = 'meeting'
meet.issue_library_id.issue_state = False
elif '套' in meeting_type_name:
if meet.issue_library_id.is_party and (meet.issue_library_id.is_party_passed == 'reject' or not meet.issue_library_id.is_party_passed):
meet.issue_library_id.party_char = str(
record.start_datetime.date()) + record.meeting_type_id.name
meet.issue_library_id.issue_state_party = 'meeting'
meet.issue_library_id.issue_state = False
elif meet.issue_library_id.is_class and (meet.issue_library_id.is_class_passed == 'r eject' or not meet.issue_library_id.is_class_passed):
meet.issue_library_id.class_char = str(
record.start_datetime.date()) + f'第{record.number_of_meetings}' + record.meeting_type_id.name
meet.issue_library_id.issue_state_class = 'meeting'
meet.issue_library_id.issue_state = False
if self.code:
self.env['issue.library.approval.line'].create({
@@ -365,3 +370,33 @@ class IssueMeetingLine(models.Model):
self.issue_library_id.issue_state_class = 'on_meet'
else:
self.issue_library_id.issue_state_class = 'will'
def unlink(self):
delete_lines = self.filtered(lambda l: l.issue_library_id and l.meeting_booking_id)
for line in delete_lines:
self._reset_issue_library_fields(line)
return super(IssueMeetingLine, self).unlink()
def _reset_issue_library_fields(self, line):
lib_record = line.issue_library_id
booking_record = line.meeting_booking_id
meeting_type_name = str(booking_record.meeting_type_id.name or "").strip()
# 根据会议类型重置对应字段
if '党' in meeting_type_name or '套' in meeting_type_name:
lib_record.write({
'party_char': False,
'issue_state_party': 'will'
})
if '班子' in meeting_type_name or '套' in meeting_type_name:
lib_record.write({
'class_char': False,
'issue_state_class': 'will'
})
if '董事' in meeting_type_name:
lib_record.write({
'boss_char': False,
'issue_state_boss': 'will'
})
+10 -1
View File
@@ -77,7 +77,6 @@ class IssueApproval(models.Model):
for issue_library in rec.issue_approval_ids:
name_val = issue_library.issue_library_id.name or ""
issue_names.append(str(name_val))
decision_sequences = []
for issue_library in rec.issue_approval_ids:
seq_val = issue_library.approval_decision_sequence
@@ -118,6 +117,16 @@ class IssueApprovalLine(models.Model):
is_boss = fields.Boolean(related='issue_library_id.is_boss', string="董事会")
is_note = fields.Boolean(related='issue_library_id.is_note', string="上级单位")
def unlink(self):
delete_lines = self.filtered(lambda l: l.issue_library_id.exists())
issue_library_records = self.env['issue.library']
for line in delete_lines:
issue_library_records |= line.issue_library_id
if issue_library_records:
issue_library_records.write({'issue_state': 'draft'})
issue_library_records.issue_approval_id = False
return super(IssueApprovalLine, self).unlink()
def open_record(self):
self.ensure_one()
is_modify = False
+22 -2
View File
@@ -475,27 +475,48 @@ class IssueLibrary(models.Model):
self.issue_approval_id.unlink()
def all_issue_pull(self):
# 1. 获取选中的议题库记录
issue_active_ids = self.env["issue.library"].browse(
self._context.get('active_ids', self._context.get('active_id'))
)
# 校验选中记录的状态(非草稿不允许提交)
for i in issue_active_ids:
if i.issue_state != 'draft':
raise UserError("当前状态不允许提交")
# 2. 查找已存在的关联 issue.approval 记录
existing_approval = self.env['issue.approval'].search([
('issue_approval_ids.issue_library_id', 'in', issue_active_ids.ids),
], limit=1)
# 3. 拼接审批单名称
specifics_list = [rec.name for rec in issue_active_ids]
name = ','.join(specifics_list) if len(specifics_list) > 1 else (
self.name or specifics_list[0] if specifics_list else "")
if existing_approval:
issue_approval_id = existing_approval
# 获取已有审批单中已关联的议题库 ID
existing_issue_ids = issue_approval_id.issue_approval_ids.mapped('issue_library_id').ids
# 筛选出选中但未关联的议题库记录
new_issue_records = issue_active_ids.filtered(lambda r: r.id not in existing_issue_ids)
if new_issue_records:
new_lines = []
for issue_record in new_issue_records:
new_lines.append((0, 0, {
'issue_library_id': issue_record.id,
'approval_decision_sequence': issue_record.approval_decision_sequence,
'employee_id': issue_record.employee_id.id
}))
# 追加新行到已有审批单
issue_approval_id.write({
'issue_approval_ids': new_lines,
'name': name
})
self.issue_approval_id = issue_approval_id
else:
issue_decision_lines = []
for issue_record in issue_active_ids:
issue_record.write({"issue_state": "to_draft"})
issue_decision_lines.append((0, 0, {
'issue_library_id': issue_record.id,
'approval_decision_sequence': issue_record.approval_decision_sequence,
@@ -507,7 +528,6 @@ class IssueLibrary(models.Model):
'name': name,
})
self.issue_approval_id = issue_approval_id
form_id = self.env.ref("yuthon_issue.issue_library_approval_form").id
return {
"type": "ir.actions.act_window",
+6 -3
View File
@@ -30,6 +30,7 @@
<field name="creart_datetime" column_invisible="1"/>
<field name="member_of_department" column_invisible="1"/>
<field name="is_push_depart" column_invisible="1"/>
<field name="issue_approval_id" column_invisible="1"/>
<field name="is_admin" column_invisible="1"/>
<button name="depart_push" string="推送" type="object" class="btn btn-blue"
invisible="issue_state != 'to_do'"/>
@@ -40,7 +41,7 @@
<button name="unlink" string="删除" type="object" class="btn btn-blue"
invisible="is_push_depart == True"/>
<button name="approval_details" string="审批详情" type="object" class="btn btn-blue"
invisible="issue_state in ['draft', 'to_do']"/>
invisible="not issue_approval_id"/>
</tree>
</field>
</record>
@@ -82,6 +83,7 @@
<field name="is_push_depart" column_invisible="1"/>
<field name="push_invisible" column_invisible="1"/>
<field name="is_admin" column_invisible="1"/>
<field name="issue_approval_id" column_invisible="1"/>
<!-- <button name="single_issue_pull" string="提交" type="object" class="oe_highlight"/>-->
<button name="library_push" string="推送" type="object" class="btn btn-blue"
invisible="push_invisible"/>
@@ -90,7 +92,7 @@
<button name="unlink" string="删除" type="object" class="btn btn-blue"/>
<button name="correction" string="修正提醒" type="object" class="btn btn-blue"/>
<button name="approval_details" string="审批详情" type="object" class="btn btn-blue"
invisible="issue_state in ['draft', 'to_do']"/>
invisible="not issue_approval_id"/>
</tree>
</field>
</record>
@@ -128,10 +130,11 @@
<field name="creart_datetime" column_invisible="1"/>
<field name="member_of_department" column_invisible="1"/>
<field name="is_push_depart" column_invisible="1"/>
<field name="issue_approval_id" column_invisible="1"/>
<field name="is_admin" column_invisible="1"/>
<!-- <button name="single_issue_pull" string="提交" type="object" class="oe_highligh"/>-->
<button name="approval_details" string="审批详情" type="object" class="btn btn-blue"
invisible="issue_state in ['draft', 'to_do']"/>
invisible="not issue_approval_id"/>
</tree>
</field>
</record>