Files
gzth/yuthon_property/wizard/meter_price_wizard.py
T
2025-08-26 18:47:52 +08:00

46 lines
1.6 KiB
Python

from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
class MeterPriceWizard(models.TransientModel):
_name = 'meter.price.wizard'
_description = '电表修改单价弹窗'
price_date = fields.Date(string='日期', default=fields.Datetime.today())
price = fields.Float(string='单价')
line_loss = fields.Float(string='线损', default=0.02)
def confirm(self):
meter_ids = self.env['property.meter.archives'].search([('is_push', '=', True)])
for meter in meter_ids:
if not meter.installation_location:
continue
valid_contract_lines = self.env['property.contract.line'].search([
('yuthon_property_id', '=', meter.yuthon_property_id.id),
('start_time', '<=', self.price_date),
('end_date', '>=', self.price_date),
], limit=1)
if valid_contract_lines and valid_contract_lines.lease_contract_id:
lease_contract = valid_contract_lines.lease_contract_id
if lease_contract.ele_price > 0:
unit = lease_contract.ele_price
else:
unit = self.price
else:
unit = self.price
meter.write({
'unit': unit,
'meter_date': self.price_date,
'line_loss': self.line_loss
})
self.env['hydropower.logs'].create({
'meter_type': 'electric',
'logs_date': self.price_date,
'price': self.price,
'line_loss': self.line_loss,
})