diff --git a/yuthon_official/models/yuthon_file_processing.py b/yuthon_official/models/yuthon_file_processing.py index f230a8631..a386a2bea 100644 --- a/yuthon_official/models/yuthon_file_processing.py +++ b/yuthon_official/models/yuthon_file_processing.py @@ -180,16 +180,16 @@ class YuthonFileProcessing(models.Model): @api.onchange('is_cold') def onchange_is_cold(self): if self.is_cold: - self.onchange_company_id() + self.onchange_company_id1() else: self.reference_cold = False - @api.onchange('company_id') - def onchange_company_id(self): + @api.onchange('company_id1') + def onchange_company_id1(self): current_year = fields.Date.today().year self.reference_cold = False - if self.company_id and self.company_id.name: - company_name = self.company_id.name + if self.company_id1 and self.company_id1.name: + company_name = self.company_id1.name prefix_map = { '集团本部': '穗天投', '天河粮储': '天粮储司', @@ -201,7 +201,7 @@ class YuthonFileProcessing(models.Model): # 构建查询条件:同公司 + 同一年份的文号 year_str = f"〔{current_year}〕" domain = [ - ('company_id', '=', self.company_id.id), + ('company_id1', '=', self.company_id1.id), ('reference_cold', 'like', f"{prefix}{year_str}%") ] last_record = self.search(domain, order='reference_cold desc', limit=1) diff --git a/yuthon_official/models/yuthon_official.py b/yuthon_official/models/yuthon_official.py index cee50ac44..86c3e940c 100644 --- a/yuthon_official/models/yuthon_official.py +++ b/yuthon_official/models/yuthon_official.py @@ -176,8 +176,15 @@ class YuthonOfficial(models.Model): } } + @api.onchange('is_cold') + def onchange_is_cold(self): + if self.is_cold: + self.onchange_company_id1() + else: + self.reference_cold = False + @api.onchange('company_id1') - def onchange_company_id(self): + def onchange_company_id1(self): current_year = fields.Date.today().year self.reference_cold = False if self.company_id1 and self.company_id1.name: @@ -190,26 +197,24 @@ class YuthonOfficial(models.Model): prefix = prefix_map.get(company_name) if not prefix: return + year_str = f"〔{current_year}〕" domain = [ - ('company_id', '=', self.company_id1.id), + ('company_id1', '=', self.company_id1.id), ('reference_cold', 'like', f"{prefix}{year_str}%") ] last_record = self.search(domain, order='reference_cold desc', limit=1) - # 计算下一个序号(格式化为3位数字:001、002...) + base_num = 27 if (current_year == 2026 and company_name == "集团本部") else 1 + max_seq = 0 if last_record and last_record.reference_cold: - # 从现有文号中提取数字部分(如从"穗天物【2025】003号"提取"003") try: - # 截取序号部分(假设格式固定为"前缀【年份】序号号") seq_str = last_record.reference_cold.split(year_str)[1].rsplit('号', 1)[0] - last_seq = int(seq_str) - next_seq = last_seq + 1 - except (IndexError, ValueError): - next_seq = 1 - else: - next_seq = 1 - seq_str = f"{next_seq}" - self.reference_cold = f"{prefix}{year_str}{seq_str}号" + max_seq = int(seq_str) + except: + max_seq = 0 + + next_seq = max(max_seq + 1, base_num) + self.reference_cold = f"{prefix}{year_str}{next_seq}号" def supervising_button(self): return { diff --git a/yuthon_official/models/yuthon_official_branch_party.py b/yuthon_official/models/yuthon_official_branch_party.py index 310196a47..419e36120 100644 --- a/yuthon_official/models/yuthon_official_branch_party.py +++ b/yuthon_official/models/yuthon_official_branch_party.py @@ -77,16 +77,16 @@ class YuthonOfficialBranchParty(models.Model): @api.onchange('is_cold') def onchange_is_cold(self): if self.is_cold: - self.onchange_company_id() + self.onchange_company_id1() else: self.reference_cold = False - @api.onchange('company_id') - def onchange_company_id(self): + @api.onchange('company_id1') + def onchange_company_id1(self): current_year = fields.Date.today().year self.reference_cold = False - if self.company_id and self.company_id.name: - company_name = self.company_id.name + if self.company_id1 and self.company_id1.name: + company_name = self.company_id1.name prefix_map = { '集团本部': '穗天投', '天河粮储': '天粮储司', @@ -95,14 +95,18 @@ class YuthonOfficialBranchParty(models.Model): prefix = prefix_map.get(company_name) if not prefix: return + # 构建查询条件:同公司 + 同一年份的文号 year_str = f"〔{current_year}〕" domain = [ - ('company_id', '=', self.company_id.id), + ('company_id1', '=', self.company_id1.id), ('reference_cold', 'like', f"{prefix}{year_str}%") ] last_record = self.search(domain, order='reference_cold desc', limit=1) + # 计算下一个序号(格式化为3位数字:001、002...) if last_record and last_record.reference_cold: + # 从现有文号中提取数字部分(如从"穗天物【2025】003号"提取"003") try: + # 截取序号部分(假设格式固定为"前缀【年份】序号号") seq_str = last_record.reference_cold.split(year_str)[1].rsplit('号', 1)[0] last_seq = int(seq_str) next_seq = last_seq + 1 diff --git a/yuthon_official/models/yuthon_official_labor.py b/yuthon_official/models/yuthon_official_labor.py index 984156327..95d3b7077 100644 --- a/yuthon_official/models/yuthon_official_labor.py +++ b/yuthon_official/models/yuthon_official_labor.py @@ -77,16 +77,16 @@ class YuthonOfficialLabor(models.Model): @api.onchange('is_cold') def onchange_is_cold(self): if self.is_cold: - self.onchange_company_id() + self.onchange_company_id1() else: self.reference_cold = False - @api.onchange('company_id') - def onchange_company_id(self): + @api.onchange('company_id1') + def onchange_company_id1(self): current_year = fields.Date.today().year self.reference_cold = False - if self.company_id and self.company_id.name: - company_name = self.company_id.name + if self.company_id1 and self.company_id1.name: + company_name = self.company_id1.name prefix_map = { '集团本部': '穗天投', '天河粮储': '天粮储司', @@ -95,27 +95,29 @@ class YuthonOfficialLabor(models.Model): prefix = prefix_map.get(company_name) if not prefix: return - # 构建查询条件:同公司 + 同一年份的文号 year_str = f"〔{current_year}〕" domain = [ - ('company_id', '=', self.company_id.id), + ('company_id1', '=', self.company_id1.id), ('reference_cold', 'like', f"{prefix}{year_str}%") ] last_record = self.search(domain, order='reference_cold desc', limit=1) - # 计算下一个序号(格式化为3位数字:001、002...) if last_record and last_record.reference_cold: - # 从现有文号中提取数字部分(如从"穗天物【2025】003号"提取"003") try: - # 截取序号部分(假设格式固定为"前缀【年份】序号号") seq_str = last_record.reference_cold.split(year_str)[1].rsplit('号', 1)[0] last_seq = int(seq_str) next_seq = last_seq + 1 except (IndexError, ValueError): - next_seq = 1 + if current_year == 2026 and company_name == '集团本部': + next_seq = 27 + else: + next_seq = 1 else: - next_seq = 1 - seq_str = f"{next_seq}" - self.reference_cold = f"{prefix}{year_str}{seq_str}号" + if current_year == 2026 and company_name == '集团本部': + next_seq = 27 + else: + next_seq = 1 + + self.reference_cold = f"{prefix}{year_str}{next_seq}号" @api.onchange('is_meet') def _onchange_is_meet(self): diff --git a/yuthon_official/models/yuthon_official_party.py b/yuthon_official/models/yuthon_official_party.py index 00e274278..9cc910ae8 100644 --- a/yuthon_official/models/yuthon_official_party.py +++ b/yuthon_official/models/yuthon_official_party.py @@ -85,16 +85,16 @@ class YuthonOfficialParty(models.Model): @api.onchange('is_cold') def onchange_is_cold(self): if self.is_cold: - self.onchange_company_id() + self.onchange_company_id1() else: self.reference_cold = False - @api.onchange('company_id') - def onchange_company_id(self): + @api.onchange('company_id1') + def onchange_company_id1(self): current_year = fields.Date.today().year self.reference_cold = False - if self.company_id and self.company_id.name: - company_name = self.company_id.name + if self.company_id1 and self.company_id1.name: + company_name = self.company_id1.name prefix_map = { '集团本部': '穗天投', '天河粮储': '天粮储司', @@ -106,12 +106,15 @@ class YuthonOfficialParty(models.Model): # 构建查询条件:同公司 + 同一年份的文号 year_str = f"〔{current_year}〕" domain = [ - ('company_id', '=', self.company_id.id), + ('company_id1', '=', self.company_id1.id), ('reference_cold', 'like', f"{prefix}{year_str}%") ] last_record = self.search(domain, order='reference_cold desc', limit=1) + # 计算下一个序号(格式化为3位数字:001、002...) if last_record and last_record.reference_cold: + # 从现有文号中提取数字部分(如从"穗天物【2025】003号"提取"003") try: + # 截取序号部分(假设格式固定为"前缀【年份】序号号") seq_str = last_record.reference_cold.split(year_str)[1].rsplit('号', 1)[0] last_seq = int(seq_str) next_seq = last_seq + 1 diff --git a/yuthon_property/models/property_bank_statements.py b/yuthon_property/models/property_bank_statements.py index d706e5e2c..c88708386 100644 --- a/yuthon_property/models/property_bank_statements.py +++ b/yuthon_property/models/property_bank_statements.py @@ -68,6 +68,18 @@ class PropertyBankStatements(models.Model): elif record.your_own_unit in ['天河粮储']: record.company_id = self.env['res.company'].search([('name', '=', '天河粮储')], limit=1) + + def update_your_own_unit(self): + selected_records = self.env["property.bank.statements"].browse( + self._context.get('active_ids', self._context.get('active_id')) + ) + for record in selected_records: + company_config = self.env['yuthon.property.company'].sudo().search( + [('rent_account', '=', record.your_own_account)], limit=1 + ) + if company_config and company_config.referred: + record.your_own_unit = company_config.referred + def update_record(self): selected_records = self.env["property.bank.statements"].browse( self._context.get('active_ids', self._context.get('active_id')) diff --git a/yuthon_property/views/property_bank_statements_views.xml b/yuthon_property/views/property_bank_statements_views.xml index 6a67acaf6..e0d967729 100644 --- a/yuthon_property/views/property_bank_statements_views.xml +++ b/yuthon_property/views/property_bank_statements_views.xml @@ -33,7 +33,7 @@
-
@@ -223,4 +223,11 @@ code action = model.update_company_id() + + 更新账号单位 + + + code + action = model.update_your_own_unit() + \ No newline at end of file diff --git a/yuthon_property/wizard/property_statements_wizard.py b/yuthon_property/wizard/property_statements_wizard.py index 98ee67206..91e8504bf 100644 --- a/yuthon_property/wizard/property_statements_wizard.py +++ b/yuthon_property/wizard/property_statements_wizard.py @@ -545,7 +545,6 @@ class PropertyStatementsWizard(models.Model): return False def classify_by_last_four(self, input_str): - """根据本方账号匹配 yuthon.property.company 中的收租公司账号,返回简称""" if not isinstance(input_str, str) or not input_str.strip(): return '' account = input_str.strip()