添加功能
This commit is contained in:
@@ -143,7 +143,7 @@ class MeterArchivesLine(models.Model):
|
||||
archives_id = fields.Many2one('property.meter.archives', string='电表库', required=True, ondelete='cascade')
|
||||
name = fields.Char(string='仪表编号')
|
||||
epitope_values = fields.Char(string='表位置')
|
||||
lessee_id = fields.Many2one('property.tenant.information', string='承租方', compute='_compute_lessee_id')
|
||||
lessee_id = fields.Many2one('property.tenant.information', string='承租方')
|
||||
yuthon_property_ids = fields.Many2many('yuthon.property', string='物业信息')
|
||||
last_meter = fields.Date(string='上次抄表日期')
|
||||
last_dosage = fields.Float(string='上次用量', compute="compute_meter_values")
|
||||
@@ -208,8 +208,8 @@ class MeterArchivesLine(models.Model):
|
||||
else:
|
||||
line.last_dosage = 0.0
|
||||
|
||||
@api.depends('yuthon_property_ids')
|
||||
def _compute_lessee_id(self):
|
||||
@api.onchange('yuthon_property_ids')
|
||||
def onchange_lessee_id(self):
|
||||
for record in self:
|
||||
if record.yuthon_property_ids:
|
||||
record.lessee_id = record.yuthon_property_ids[0].lessee_id
|
||||
@@ -220,8 +220,7 @@ class MeterArchivesLine(models.Model):
|
||||
meter_ids = self.env["meter.archives.line"].browse(
|
||||
self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in meter_ids:
|
||||
if record.last_meter:
|
||||
record.meter_date = record.last_meter
|
||||
record.onchange_lessee_id()
|
||||
|
||||
class PropertyElectricReading(models.Model):
|
||||
_name = 'property.electric.reading'
|
||||
|
||||
@@ -114,7 +114,7 @@ class MeterWaterLine(models.Model):
|
||||
water_id = fields.Many2one('property.meter.water', string='水表库', required=True, ondelete='cascade')
|
||||
name = fields.Char(string='仪表编号')
|
||||
epitope_values = fields.Char(string='表位置')
|
||||
lessee_id = fields.Many2one('property.tenant.information', string='承租方', compute='_compute_lessee_id')
|
||||
lessee_id = fields.Many2one('property.tenant.information', string='承租方')
|
||||
yuthon_property_ids = fields.Many2many('yuthon.property', string='物业信息')
|
||||
last_meter = fields.Date(string='上次抄表日期')
|
||||
last_dosage = fields.Float(string='上次用量', compute="compute_meter_values")
|
||||
@@ -184,9 +184,8 @@ class MeterWaterLine(models.Model):
|
||||
else:
|
||||
line.last_dosage = 0.0
|
||||
|
||||
|
||||
@api.depends('yuthon_property_ids')
|
||||
def _compute_lessee_id(self):
|
||||
@api.onchange('yuthon_property_ids')
|
||||
def onchange_lessee_id(self):
|
||||
for record in self:
|
||||
if record.yuthon_property_ids:
|
||||
record.lessee_id = record.yuthon_property_ids[0].lessee_id
|
||||
@@ -197,9 +196,7 @@ class MeterWaterLine(models.Model):
|
||||
meter_ids = self.env["meter.water.line"].browse(
|
||||
self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in meter_ids:
|
||||
if record.last_meter:
|
||||
record.meter_date = record.last_meter
|
||||
|
||||
record.onchange_lessee_id()
|
||||
|
||||
class PropertyWaterReading(models.Model):
|
||||
_name = 'property.water.reading'
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<field name="name">property.bank.statements.tree</field>
|
||||
<field name="model">property.bank.statements</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="银行流水" editable="bottom" js_class="custom_bank_statements_button" edit="false" delete="false">
|
||||
<tree string="银行流水" editable="bottom" js_class="custom_bank_statements_button" edit="false" delete="false" default_order="start_time desc">
|
||||
<field name="your_own_account" optional="hide"/>
|
||||
<field name="your_own_unit" optional="hide"/>
|
||||
<header>
|
||||
|
||||
@@ -94,9 +94,9 @@
|
||||
<field name="model">meter.archives.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="电表任务" create="False" editable="bottom" js_class="custom_meter_button" decoration-success="not current_read" >
|
||||
<header>
|
||||
<button name="update_date" type="object" string="更新日期" class="oe_highlight"/>
|
||||
</header>
|
||||
<!-- <header>-->
|
||||
<!-- <button name="update_date" type="object" string="更新合同" class="oe_highlight"/>-->
|
||||
<!-- </header>-->
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="epitope_values"/>
|
||||
<field name="unit_number"/>
|
||||
|
||||
@@ -98,9 +98,9 @@
|
||||
<field name="model">meter.water.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="水表任务" create="0" editable="bottom" js_class="custom_water_button" decoration-success="not current_read" >
|
||||
<header>
|
||||
<button name="update_date" type="object" string="更新日期" class="oe_highlight"/>
|
||||
</header>
|
||||
<!-- <header>-->
|
||||
<!-- <button name="update_date" type="object" string="更新" class="oe_highlight"/>-->
|
||||
<!-- </header>-->
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="yuthon_property_ids" string="地址" readonly="1" widget="many2many_tags" />
|
||||
<field name="lessee_id" options="{'no_create': True}" readonly="1"/>
|
||||
|
||||
@@ -86,6 +86,7 @@
|
||||
<field name="title_deed" invisible="1"/>
|
||||
<field name="purpose_id" invisible="1"/>
|
||||
<field name="admin_id" invisible="1"/>
|
||||
<field name="lessee_id" invisible="1"/>
|
||||
<field name="house_type_id"/>
|
||||
<field name="property_source"/>
|
||||
<field name="district"/>
|
||||
|
||||
@@ -58,25 +58,48 @@ class PropertyBankStatements(models.Model):
|
||||
rec.start_time = rec.start_time - timedelta(hours=8)
|
||||
|
||||
def revocation(self):
|
||||
for rec in self:
|
||||
for modify in rec.receivable_modify_ids:
|
||||
if modify.is_write:
|
||||
new_delivered = modify.receivable_id.delivered1 - modify.amount
|
||||
modify.receivable_id.delivered1 = max(new_delivered, 0)
|
||||
modify.receivable_id.is_reconciliation = False
|
||||
modify.receivable_id.reconciliation_time = False
|
||||
modify.receivable_id.payout_date = False
|
||||
if not modify.is_penalty:
|
||||
modify.receivable_id.remark = None
|
||||
else:
|
||||
modify.receivable_id.unlink()
|
||||
if rec.receivable_modify_ids:
|
||||
rec.receivable_modify_ids.unlink()
|
||||
rec.bank_state = 'not_reconciled'
|
||||
rec.registered = 0
|
||||
rec.no_amount = rec.original_amount
|
||||
rec.yes_amount = 0
|
||||
rec.reconciliation_time = None
|
||||
self.ensure_one()
|
||||
current_rec = self[0]
|
||||
domain = [
|
||||
('your_own_unit', '=', current_rec.your_own_unit),
|
||||
('bank_state', '=', 'reconciled'),
|
||||
('name', '=', current_rec.name)
|
||||
]
|
||||
same_group_records = self.env[self._name].search(domain)
|
||||
|
||||
# 按start_time倒序排序,找到最近的记录
|
||||
sorted_records = sorted(
|
||||
same_group_records,
|
||||
key=lambda r: r.start_time or '',
|
||||
reverse=True
|
||||
)
|
||||
latest_record = sorted_records[0]
|
||||
|
||||
# 检查当前记录是否是最近的一条
|
||||
if current_rec.id != latest_record.id:
|
||||
raise UserError(
|
||||
f"只能从最近的记录开始撤销!\n"
|
||||
f"当前记录时间: {current_rec.start_time + timedelta(hours=8)}\n"
|
||||
f"最近记录时间: {latest_record.start_time + timedelta(hours=8)}"
|
||||
)
|
||||
for modify in self.receivable_modify_ids:
|
||||
if modify.is_write:
|
||||
new_delivered = modify.receivable_id.delivered1 - modify.amount
|
||||
modify.receivable_id.delivered1 = max(new_delivered, 0)
|
||||
modify.receivable_id.is_reconciliation = False
|
||||
modify.receivable_id.reconciliation_time = False
|
||||
modify.receivable_id.payout_date = False
|
||||
if not modify.is_penalty:
|
||||
modify.receivable_id.remark = None
|
||||
else:
|
||||
modify.receivable_id.unlink()
|
||||
if self.receivable_modify_ids:
|
||||
self.receivable_modify_ids.unlink()
|
||||
self.bank_state = 'not_reconciled'
|
||||
self.registered = 0
|
||||
self.no_amount = self.original_amount
|
||||
self.yes_amount = 0
|
||||
self.reconciliation_time = None
|
||||
|
||||
def binding_information(self):
|
||||
return {
|
||||
|
||||
@@ -483,7 +483,7 @@ class PropertyLeaseContract(models.Model):
|
||||
('yuthon_property_id', '=', property_addr.id),
|
||||
('lease_contract_id', '=', contract.id)
|
||||
], limit=1)
|
||||
|
||||
property_addr.lessee_id = contract.lessee_id.id
|
||||
# 准备要写入的数据
|
||||
contract_data = {
|
||||
'yuthon_property_id': property_addr.id,
|
||||
@@ -503,6 +503,47 @@ class PropertyLeaseContract(models.Model):
|
||||
'property_contract_ids': [(0, 0, contract_data)]
|
||||
})
|
||||
|
||||
contract_lines = self.env['property.contract.line'].search([
|
||||
('lease_contract_id', '=', contract.id)
|
||||
])
|
||||
|
||||
for line in contract_lines:
|
||||
# 从明细行中获取关键信息
|
||||
start_time = line.start_time
|
||||
end_date = line.end_date
|
||||
yuthon_property_id = line.yuthon_property_id.id
|
||||
|
||||
if not (start_time and yuthon_property_id):
|
||||
continue
|
||||
|
||||
# 获取当前物业记录
|
||||
property_addr = self.env['yuthon.property'].browse(yuthon_property_id)
|
||||
if not property_addr:
|
||||
continue
|
||||
|
||||
date_domain = [
|
||||
('meter_date', '>=', start_time)
|
||||
]
|
||||
if end_date:
|
||||
date_domain.append(('meter_date', '<=', end_date))
|
||||
|
||||
# 处理水表
|
||||
if property_addr.is_meter:
|
||||
water_lines = self.env['meter.water.line'].search([
|
||||
('yuthon_property_ids', 'in', [yuthon_property_id]),
|
||||
*date_domain
|
||||
])
|
||||
for water_line in water_lines:
|
||||
water_line.write({'lessee_id': line.lessee_id.id})
|
||||
|
||||
if property_addr.is_electricity_meter:
|
||||
electric_lines = self.env['meter.archives.line'].search([
|
||||
('yuthon_property_ids', 'in', [yuthon_property_id]),
|
||||
*date_domain
|
||||
])
|
||||
for electric_line in electric_lines:
|
||||
electric_line.write({'lessee_id': line.lessee_id.id})
|
||||
|
||||
@api.onchange('lessee_id')
|
||||
def _onchange_lessee_id(self):
|
||||
for record in self:
|
||||
|
||||
Reference in New Issue
Block a user