Files
2026-03-16 19:01:29 +08:00

136 lines
5.8 KiB
Python

from odoo import models, api, fields
from datetime import date
class ChoosePropertyWizard(models.Model):
_name = 'choose.property.wizard'
lease_contract_id = fields.Many2one('property.lease.contract', string="合同")
open_rent_id = fields.Many2one('property.open.rent', string="公开招租")
contract_sort = fields.Selection(related='lease_contract_id.contract_sort', string="资产类型")
property_ids2 = fields.Many2many(
'yuthon.property',
'choose_property_wizard_property_ids2_rel',
'wizard_id', 'property_id',
string="已选物业",
readonly=True
)
property_ids = fields.Many2many(
'yuthon.property',
string="物业信息",
)
def confirm(self):
# 公开招租审批的物业添加逻辑(保持不变)
if self.open_rent_id:
rec = self.open_rent_id
lease_name = []
lease_ids_to_add = []
for record in self.property_ids:
lease_name.append(record.name if record.name is not None else "")
lease_ids_to_add.append((0, 0, {
"open_rent_id": self.open_rent_id.id,
"address_id": record.id,
}))
existing_names = []
for lease in rec.lease_ids:
if lease.address_id:
existing_names.append(lease.address_id.name if lease.address_id.name else "无")
all_names = [name for name in list(set(existing_names + lease_name)) if name]
existing_lease_ids = [(4, lease.id) for lease in rec.lease_ids]
rec.lease_ids = existing_lease_ids + lease_ids_to_add
rec.write({
'property_name': ','.join(all_names),
})
return
rec = self.lease_contract_id
lease_name = []
lease_ids_to_add = []
title_deed = []
title_address = []
financial_address_list = []
total_management_area = 0.0
contract_start_date = rec.term_start_time or fields.Date.today()
for record in self.property_ids:
lease_name.append(record.name if record.name is not None else "")
title_addr_name = record.title_address.name if (record.title_address and record.title_address.name) else ""
title_address.append(title_addr_name)
if record.title_deed != '无产权' and record.title_deed:
title_deed.append(record.title_deed)
lease_ids_to_add.append((0, 0, {
"lease_id": self.lease_contract_id.id,
"address_id": record.id,
}))
manage_id = record.manage_information_ids[-1] if record.manage_information_ids else False
admin_id = False
company_id = False
precinct_id = False
if manage_id:
admin_id = manage_id.admin_id.id if manage_id.admin_id else False
company_id = manage_id.company_id.id if manage_id.company_id else False
precinct_id = manage_id.precinct_id.id if manage_id.precinct_id else False
rec.admin_id = admin_id
rec.company_id = company_id
rec.precinct_id = precinct_id
fin_addr = record.financial_address if record.financial_address else ""
if fin_addr: # 仅添加非空地址
financial_address_list.append(fin_addr)
manage_domain = [
('yuthon_property_id', '=', record.id),
('start_time', '<=', contract_start_date),
'|',
('end_date', '=', False),
('end_date', '>=', contract_start_date)
]
valid_manage_lines = self.env['manage.information.line'].search(
manage_domain,
order='start_time desc',
limit=1
)
if valid_manage_lines:
total_management_area += valid_manage_lines.rent_area or 0.0
existing_names = []
for lease in self.lease_contract_id.lease_ids:
if lease.address_id:
name_val = lease.address_id.name
existing_names.append(name_val if name_val is not None else "无")
fin_addr_exist = lease.address_id.financial_address if lease.address_id.financial_address else ""
if fin_addr_exist:
financial_address_list.append(fin_addr_exist)
title_name = []
for lease in self.lease_contract_id.lease_ids:
if lease.address_id:
addr_name = lease.address_id.title_address.name if (
lease.address_id.title_address and lease.address_id.title_address.name) else ""
title_name.append(str(addr_name))
all_names = [name for name in list(set(existing_names + lease_name)) if name]
title_address_combined = [addr for addr in list(set(title_address + title_name)) if addr]
use_address_combined = [addr for addr in list(set(financial_address_list)) if addr]
existing_lease_ids = [(4, lease.id) for lease in self.lease_contract_id.lease_ids]
self.lease_contract_id.lease_ids = existing_lease_ids + lease_ids_to_add
self.lease_contract_id.write({
'tenure_type': self.lease_contract_id.lease_ids[0].address_id.tenure_type,
'property_name': ','.join(all_names),
'title_address': ','.join(title_address_combined),
'lessor_id': self.lease_contract_id.lease_ids[0].address_id.company_id.id
if self.lease_contract_id.lease_ids else False,
'use_address': ','.join(use_address_combined),
'address_for_delivery': ','.join(all_names),
'total_area': total_management_area
})
self.lease_contract_id.onchange_lease_ids()
self.lease_contract_id.onchange_lessor_id()