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()