46 lines
1.6 KiB
Python
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,
|
|
})
|
|
|
|
|