diff --git a/yuthon_issue/models/inherit_room_booking.py b/yuthon_issue/models/inherit_room_booking.py index b50ac52be..4ae47459e 100644 --- a/yuthon_issue/models/inherit_room_booking.py +++ b/yuthon_issue/models/inherit_room_booking.py @@ -20,16 +20,32 @@ class RoomBooking(models.Model): if record.issue_meeting_line_ids: for meet in record.issue_meeting_line_ids: if meet.issue_library_id: - meeting_type_name = str(self.meeting_type_id.name).strip() + meeting_type_name = str(record.meeting_type_id.name).strip() if '党' in meeting_type_name: - meet.issue_library_id.party_char = str(self.start_datetime.date()) + self.meeting_type_id.name + meet.issue_library_id.party_char = str( + record.start_datetime.date()) + record.meeting_type_id.name meet.issue_library_id.issue_state_party = 'meeting' + if '班子' in meeting_type_name: - meet.issue_library_id.class_char = str(self.start_datetime.date()) + f'第{self.number_of_meetings}' + self.meeting_type_id.name + 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' + if '董事' in meeting_type_name: - meet.issue_library_id.boss_char = str(self.start_datetime.date()) + self.meeting_type_id.name + meet.issue_library_id.boss_char = str( + record.start_datetime.date()) + record.meeting_type_id.name meet.issue_library_id.issue_state_boss = 'meeting' + + 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' + elif 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' + if self.code: self.env['issue.library.approval.line'].create({ 'issue_library_id': meet.issue_library_id.id, @@ -300,3 +316,34 @@ class IssueMeetingLine(models.Model): self.issue_library_id.issue_state_boss = 'on_meet' else: self.issue_library_id.issue_state_boss = 'will' + + if '套' in meeting_type_name: + if (self.issue_library_id.is_party and + (self.issue_library_id.is_party_passed == 'reject' or not self.issue_library_id.is_party_passed)): + if self.issue_library_id.is_class: + self.issue_library_id.is_push_class = is_push + + self.issue_library_id.is_party_passed = is_agree + original_party_char = self.issue_library_id.party_char or "" + clean_party_char = original_party_char + for suffix in suffix_list: + clean_party_char = clean_party_char.removesuffix(suffix) + self.issue_library_id.party_char = clean_party_char + agree_name + if is_push: + self.issue_library_id.issue_state_party = 'on_meet' + else: + self.issue_library_id.issue_state_party = 'will' + + elif (self.issue_library_id.is_class and + (self.issue_library_id.is_class_passed == 'reject' or not self.issue_library_id.is_class_passed)): + # 复用班子会的修改逻辑 + self.issue_library_id.is_class_passed = is_agree + original_class_char = self.issue_library_id.class_char or "" + clean_class_char = original_class_char + for suffix in suffix_list: + clean_class_char = clean_class_char.removesuffix(suffix) + self.issue_library_id.class_char = clean_class_char + agree_name + if is_push: + self.issue_library_id.issue_state_class = 'on_meet' + else: + self.issue_library_id.issue_state_class = 'will' diff --git a/yuthon_issue/models/issue_library.py b/yuthon_issue/models/issue_library.py index c6411b11d..fad7fc1e0 100644 --- a/yuthon_issue/models/issue_library.py +++ b/yuthon_issue/models/issue_library.py @@ -591,6 +591,26 @@ class IssueLibrary(models.Model): break elif passed_result == 'pass': continue + + if len(issue_active_ids) == 2 and all(ras.company_id.name == "天河粮储" for ras in issue_active_ids): + record_a, record_b = issue_active_ids + # 定义核心判断条件: + # 场景1:A党勾 + B党未勾且班子勾 OR 场景2:B党勾 + A党未勾且班子勾 + condition = ((getattr(record_a, 'is_party', False) and not getattr(record_b, 'is_party', False) and getattr(record_b, 'is_class', False)) + or + (getattr(record_b, 'is_party', False) and not getattr(record_a, 'is_party',False) and getattr(record_a,'is_class', False))) + all_char_empty = ( + not getattr(record_a, 'party_char', '') and not getattr(record_a, 'class_char', '') + and + not getattr(record_b, 'party_char', '') and not getattr(record_b, 'class_char', '') + ) + if condition and all_char_empty: + meeting_type_with_tao = self.env['room.meeting.type'].search([ + ('name', 'ilike', '套')# 模糊匹配含「套」的会议类型 + ], limit=1) + if meeting_type_with_tao: + target_meeting_type_id = meeting_type_with_tao.id + form_id = self.env.ref("room.room_booking_view_form", raise_if_not_found=False) return { "type": "ir.actions.act_window", diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml index 3022566ba..dc26cea12 100644 --- a/yuthon_issue/views/issue_library_views.xml +++ b/yuthon_issue/views/issue_library_views.xml @@ -53,9 +53,9 @@ decoration-info="issue_state == 'will'" decoration-success="issue_state == 'done'" decoration-muted="issue_state == 'cancel'"> - - - +
+
@@ -358,7 +358,7 @@ decoration-success="issue_state_party == 'done'" decoration-muted="issue_state_party == 'cancel'">
-
@@ -396,7 +396,7 @@ decoration-success="issue_state_party == 'done'" decoration-muted="issue_state_party == 'cancel'">
-
@@ -574,7 +574,7 @@ decoration-success="issue_state == 'done'" decoration-muted="issue_state == 'cancel'">
-
@@ -735,7 +735,7 @@ decoration-success="issue_state_boss == 'done'" decoration-muted="issue_state_boss == 'cancel'">
-