Files
gzth/yuthon_property/models/property_evaluation_plan.py
T
2025-08-13 14:29:26 +08:00

87 lines
3.8 KiB
Python

# -*- coding: utf-8 -*-
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
class PropertyEvaluationPlan(models.Model):
_name = 'property.evaluation.plan'
_description = '物业评估方案'
name = fields.Char(string='物业名称')
evaluation_area = fields.Float(string='评估面积(m²)')
property_ids = fields.Many2many('yuthon.property', string='物业')
assessment_category = fields.Selection([('rent_money', '租金'), ('value', '价值')], string="评估类别", default='rent_money')
owner_id = fields.Many2one('yuthon.owner.message', string="权属人")
registered_id = fields.Many2one('yuthon.purpose.evidence', string='证载用途')
registered_id2 = fields.Many2one('yuthon.purpose.evidence', string='设定用途')
rent_id = fields.Many2one('rent.free.setting', string="办法")
lease_period = fields.Integer(string='租赁期限(<=)')
first_years_begin = fields.Integer(string='第几年开始')
increments_few_years = fields.Integer(string='每几年递增')
lease_form = fields.Selection([('sublease', '分租'), ('whole', '整租')], string="租赁形式", compute='compute_lease_form')
annual_increase_percentage = fields.Float(string='递增百分比', igits=(6, 2))
annual_increase_amount = fields.Float(string='递增金额', igits=(6, 2))
rent_unit = fields.Float(string='递增单价', igits=(6, 2))
remake = fields.Text(string='备注')
property_state = fields.Selection([('to', '待审批'), ('done', '已审批')], string="状态", default='to')
@api.depends('property_ids')
def compute_lease_form(self):
for record in self:
if record.property_ids:
if len(record.property_ids) > 1:
record.lease_form = 'sublease'
else:
record.lease_form = 'whole'
else:
record.lease_form = False
def put_assessment_approval(self):
property_evaluation_ids = self.env["property.evaluation.plan"].browse(
self._context.get('active_ids', self._context.get('active_id')))
form_id = self.env.ref('yuthon_property_approval.property_evaluate_application_form').id
property_list = []
for i in property_evaluation_ids:
if i.property_state == 'done':
raise UserError('该方案不可提交')
property_list.append([0, 0, {
'property_evaluation_id': i.id,
}])
i.write({'property_state': 'done'})
return {
'name': '提交物业评估',
'view_mode': 'form',
'res_model': 'property.evaluate.application',
'type': 'ir.actions.act_window',
'views': [(form_id, 'form')],
"context": {
'default_property_ids': property_list,
}
}
def button_source(self):
domain = [('id', 'in', self.property_ids.ids)]
return {
"name": "物业",
"type": "ir.actions.act_window",
"view_mode": "tree",
"res_model": "yuthon.property",
'tree_view_ref': 'yuthon_property.view_property_evaluation_plan_tree1',
"domain": domain,
"target": "new",
}
def update_message(self):
property_evaluation_ids = self.env["property.evaluation.plan"].browse(
self._context.get('active_ids', self._context.get('active_id')))
for record in property_evaluation_ids:
property_id = self.sudo().env['yuthon.property'].search([('name', '=', record.name)])
if property_id:
record.write({
'owner_id': property_id.owner_id,
'lease_period': property_id.lease_period,
'registered_id': property_id.registered_id,
})