添加功能
This commit is contained in:
@@ -5,6 +5,7 @@ from odoo import models, fields, api, exceptions, _
|
||||
from datetime import datetime, timedelta, date
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from odoo.exceptions import UserError
|
||||
import calendar
|
||||
|
||||
|
||||
class PropertyLeaseRenewal(models.Model):
|
||||
@@ -44,7 +45,7 @@ class PropertyLeaseRenewal(models.Model):
|
||||
contact = fields.Char(string='联系人')
|
||||
phone = fields.Char(string='联系电话')
|
||||
card = fields.Char(string='身份证号')
|
||||
effective_date = fields.Date(string='生效日期')
|
||||
effective_date = fields.Date(string='生效日期', required=True)
|
||||
entity_type = fields.Selection([('person', '个人'), ('company', '企业')], string='承租方类型')
|
||||
reason = fields.Text(string='变更原因')
|
||||
fee = fields.Float(string='变更费用')
|
||||
@@ -84,50 +85,59 @@ class PropertyLeaseRenewal(models.Model):
|
||||
def end_approval(self):
|
||||
for rec in self:
|
||||
if rec.renewal_type == 'lease':
|
||||
rec.hide = True
|
||||
origin_contract = rec.contract_id
|
||||
original_lessee_id = origin_contract.lessee_id.id if origin_contract.lessee_id else False
|
||||
version_str = origin_contract.version.lstrip('V')
|
||||
main_version = version_str.split('.')[0]
|
||||
new_main_version = int(main_version) + 1
|
||||
new_version = f"V{new_main_version}.0"
|
||||
# 删除原承租方的物业合同信息
|
||||
contract_to_unlink = origin_contract.lessee_id.property_contract_ids.filtered(
|
||||
lambda line: line.lease_contract_id.id == rec.contract_id.id
|
||||
)
|
||||
if contract_to_unlink:
|
||||
contract_to_unlink.unlink()
|
||||
# 新增新承租方的物业合同信息
|
||||
property_contract_list = []
|
||||
origin_contract.write({
|
||||
'version': new_version,
|
||||
'lessee_id': rec.new_lessee_id.id
|
||||
})
|
||||
if original_lessee_id and origin_contract.id and rec.effective_date:
|
||||
origin_contract.is_lessee = True
|
||||
self.env['lessee.alteration.line'].create({
|
||||
contract_actual_end = origin_contract.actual_end_time if origin_contract else None
|
||||
|
||||
effective_date = fields.Date.to_date(rec.effective_date)
|
||||
last_day = calendar.monthrange(effective_date.year, effective_date.month)[1]
|
||||
month_end_date = date(effective_date.year, effective_date.month, last_day)
|
||||
|
||||
contract_actual_end_date = fields.Date.to_date(contract_actual_end) if contract_actual_end else None
|
||||
if not contract_actual_end_date or contract_actual_end_date >= month_end_date:
|
||||
rec.hide = True
|
||||
origin_contract = rec.contract_id
|
||||
original_lessee_id = origin_contract.lessee_id.id if origin_contract.lessee_id else False
|
||||
version_str = origin_contract.version.lstrip('V')
|
||||
main_version = version_str.split('.')[0]
|
||||
new_main_version = int(main_version) + 1
|
||||
new_version = f"V{new_main_version}.0"
|
||||
# 删除原承租方的物业合同信息
|
||||
contract_to_unlink = origin_contract.lessee_id.property_contract_ids.filtered(
|
||||
lambda line: line.lease_contract_id.id == rec.contract_id.id
|
||||
)
|
||||
if contract_to_unlink:
|
||||
contract_to_unlink.unlink()
|
||||
# 新增新承租方的物业合同信息
|
||||
property_contract_list = []
|
||||
if original_lessee_id and origin_contract.id and rec.effective_date and origin_contract.contact_state == 'ing':
|
||||
origin_contract.write({
|
||||
'version': new_version,
|
||||
'lessee_id': rec.new_lessee_id.id
|
||||
})
|
||||
origin_contract.is_lessee = True
|
||||
self.env['lessee.alteration.line'].create({
|
||||
'contract_id': origin_contract.id,
|
||||
'lessee_id': original_lessee_id,
|
||||
'start_date': origin_contract.actual_start_time,
|
||||
'end_date': rec.effective_date - relativedelta(days=1),
|
||||
})
|
||||
origin_contract._compute_contract_count()
|
||||
property_contract_list.append([0, 0, {
|
||||
'tenant_id': rec.new_lessee_id.id,
|
||||
'lease_contract_id': rec.contract_id.id,
|
||||
'rent': rec.contract_id.rent,
|
||||
}])
|
||||
rec.new_lessee_id.write({'property_contract_ids': property_contract_list})
|
||||
# 新增一条更名应收账单
|
||||
management_type_id = rec.env["yuthon.management.type"].search([('name', '=', '更名费')])
|
||||
if not management_type_id:
|
||||
management_type_id = rec.env["yuthon.management.type"].create({'name': '更名费'})
|
||||
self.env['property.accounts.receivable'].create({
|
||||
'contract_id': origin_contract.id,
|
||||
'lessee_id': original_lessee_id,
|
||||
'start_date': origin_contract.actual_start_time,
|
||||
'end_date': rec.effective_date - relativedelta(days=1),
|
||||
'original_amount': rec.fee,
|
||||
'management_type_id': management_type_id.id,
|
||||
'due_date': rec.effective_date,
|
||||
})
|
||||
origin_contract._compute_contract_count()
|
||||
property_contract_list.append([0, 0, {
|
||||
'tenant_id': rec.new_lessee_id.id,
|
||||
'lease_contract_id': rec.contract_id.id,
|
||||
'rent': rec.contract_id.rent,
|
||||
}])
|
||||
rec.new_lessee_id.write({'property_contract_ids': property_contract_list})
|
||||
# 新增一条更名应收账单
|
||||
management_type_id = rec.env["yuthon.management.type"].search([('name', '=', '更名费')])
|
||||
if not management_type_id:
|
||||
management_type_id = rec.env["yuthon.management.type"].create({'name': '更名费'})
|
||||
self.env['property.accounts.receivable'].create({
|
||||
'contract_id': origin_contract.id,
|
||||
'original_amount': rec.fee,
|
||||
'management_type_id': management_type_id.id,
|
||||
'due_date': rec.effective_date,
|
||||
})
|
||||
else:
|
||||
rec.contract_id.write({
|
||||
'actual_end_time': rec.early_quitting_date
|
||||
|
||||
Reference in New Issue
Block a user