136 lines
5.8 KiB
Python
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()
|