This commit is contained in:
李鹏宇
2026-04-02 17:45:43 +08:00
8 changed files with 79 additions and 47 deletions
@@ -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)
+18 -13
View File
@@ -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 {
@@ -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
+16 -14
View File
@@ -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):
@@ -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
@@ -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'))
@@ -33,7 +33,7 @@
<field name="your_own_account" optional="hide"/>
<field name="your_own_unit" optional="hide"/>
<header>
<button name="other" type="object" class="oe_highlight" string="其他"/>
<button name="other" type="object" class="oe_highlight" string="其他"/>
</header>
<field name="name_account"/>
<field name="bank_branch"/>
@@ -223,4 +223,11 @@
<field name="state">code</field>
<field name="code">action = model.update_company_id()</field>
</record>
<record id="all_update_your_own_unit" model="ir.actions.server">
<field name="name">更新账号单位</field>
<field name="model_id" ref="yuthon_property.model_property_bank_statements"/>
<field name="binding_model_id" ref="yuthon_property.model_property_bank_statements"/>
<field name="state">code</field>
<field name="code">action = model.update_your_own_unit()</field>
</record>
</odoo>
@@ -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()