添加功能
This commit is contained in:
@@ -233,6 +233,13 @@ class MeterArchivesLine(models.Model):
|
||||
# 当前记录没有抄表日期,无法计算上次用量
|
||||
line.last_dosage = 0.0
|
||||
|
||||
def update_date(self):
|
||||
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
|
||||
|
||||
class PropertyElectricReading(models.Model):
|
||||
_name = 'property.electric.reading'
|
||||
current_meter = fields.Float(string='本次用量', tracking=True)
|
||||
|
||||
@@ -58,16 +58,6 @@ class PropertyMeterWater(models.Model):
|
||||
if record.line_loss and record.current_meter and record.unit:
|
||||
record.receivables = record.current_meter * record.unit * (1 + record.line_loss) * record.gauge_magnification
|
||||
|
||||
def format_update(self):
|
||||
insurances_ids = self.env["property.meter.water"].browse(
|
||||
self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in insurances_ids:
|
||||
value = record.unit_number
|
||||
if isinstance(value, str) and value.replace('.', '', 1).isdigit():
|
||||
unit_number = int(float(value))
|
||||
record.write({'unit_number': unit_number})
|
||||
record.write({'maximum_count': 99999,
|
||||
})
|
||||
|
||||
@api.depends('lessee_id')
|
||||
def _compute_water_state(self):
|
||||
@@ -221,6 +211,13 @@ class MeterWaterLine(models.Model):
|
||||
# 当前记录没有抄表日期,无法计算上次用量
|
||||
line.last_dosage = 0.0
|
||||
|
||||
def update_date(self):
|
||||
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
|
||||
|
||||
|
||||
class PropertyWaterReading(models.Model):
|
||||
_name = 'property.water.reading'
|
||||
|
||||
@@ -108,6 +108,9 @@
|
||||
<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="更新日期" dclass="oe_highlight"/>
|
||||
</header>
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="epitope_values"/>
|
||||
<field name="unit_number"/>
|
||||
@@ -142,6 +145,21 @@
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="meter_archives_line_search" model="ir.ui.view">
|
||||
<field name="name">meter.archives.line.search</field>
|
||||
<field name="model">meter.archives.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="电表任务">
|
||||
<field name="name"/>
|
||||
<field name="yuthon_property_ids"/>
|
||||
<field name="lessee_id"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="仪表编号" name="group_by_name" domain="[]" context="{'group_by': 'name'}"/>
|
||||
<filter string="按月" name="group_by_meter_date_month" domain="[]" context="{'group_by': 'meter_date:month'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_property_meter_archives" model="ir.actions.act_window">
|
||||
<field name="name">电表库</field>
|
||||
<field name="res_model">property.meter.archives</field>
|
||||
@@ -153,7 +171,9 @@
|
||||
<record id="action_property_meter_archives1" model="ir.actions.act_window">
|
||||
<field name="name">电表任务</field>
|
||||
<field name="res_model">meter.archives.line</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_mode">tree,search</field>
|
||||
<field name="context">{'search_default_group_by_meter_date_month': True, 'search_default_group_by_name': True}</field>
|
||||
<field name="search_view_id" ref="yuthon_property.meter_archives_line_search"/>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_property.view_meter_archives_line_tree')})]"/>
|
||||
</record>
|
||||
|
||||
@@ -112,6 +112,9 @@
|
||||
<field name="arch" type="xml">
|
||||
<tree string="水表任务" create="False" editable="bottom" js_clasee="custom_water_button"
|
||||
decoration-success="not current_read">
|
||||
<header>
|
||||
<button name="update_date" type="object" string="更新日期" dclass="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"/>
|
||||
@@ -143,6 +146,21 @@
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="meter_water_line_search" model="ir.ui.view">
|
||||
<field name="name">meter.water.line.search</field>
|
||||
<field name="model">meter.water.line</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="水表">
|
||||
<field name="name"/>
|
||||
<field name="yuthon_property_ids"/>
|
||||
<field name="lessee_id"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter string="仪表编号" name="group_by_name" domain="[]" context="{'group_by': 'name'}"/>
|
||||
<filter string="按月" name="group_by_meter_date_month" domain="[]" context="{'group_by': 'meter_date:month'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_property_meter_water" model="ir.actions.act_window">
|
||||
<field name="name">水表库</field>
|
||||
<field name="res_model">property.meter.water</field>
|
||||
@@ -154,7 +172,9 @@
|
||||
<record id="action_property_meter_water1" model="ir.actions.act_window">
|
||||
<field name="name">水表任务</field>
|
||||
<field name="res_model">meter.water.line</field>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_mode">tree,search</field>
|
||||
<field name="context">{'search_default_group_by_meter_date_month': True, 'search_default_group_by_name': True}</field>
|
||||
<field name="search_view_id" ref="yuthon_property.meter_water_line_search"/>
|
||||
<field name="view_ids" eval="[(5, 0, 0),
|
||||
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_property.view_meter_water_line_tree')})]"/>
|
||||
</record>
|
||||
@@ -172,11 +192,4 @@
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.update_meter()</field>
|
||||
</record>
|
||||
<record id="all_format_update" model="ir.actions.server">
|
||||
<field name="name">格式更新</field>
|
||||
<field name="model_id" ref="yuthon_property.model_property_meter_water"/>
|
||||
<field name="binding_model_id" ref="yuthon_property.model_property_meter_water"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.format_update()</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -11,18 +11,71 @@ class ElectricWaterWizard(models.TransientModel):
|
||||
water_ids = fields.Many2many('property.meter.water', string='水表库')
|
||||
|
||||
def confirm(self):
|
||||
self.ensure_one()
|
||||
if not self.push_date:
|
||||
raise ValidationError('请选择推送日期')
|
||||
push_year = self.push_date.year
|
||||
push_month = self.push_date.month
|
||||
|
||||
# 处理电表推送
|
||||
if self.meter_ids:
|
||||
for meter in self.meter_ids:
|
||||
meter.write({'meter_date': self.push_date,
|
||||
'is_push': True
|
||||
})
|
||||
meter.last_dosage += meter.current_meter
|
||||
meter.current_meter = 0
|
||||
# 查找是否存在该推送日期的明细行
|
||||
existing_line = meter.line_ids.filtered(
|
||||
lambda l: l.meter_date and
|
||||
l.meter_date.year == push_year and
|
||||
l.meter_date.month == push_month
|
||||
)
|
||||
if not existing_line:
|
||||
meter.line_ids.create({
|
||||
'archives_id': meter.id,
|
||||
'name': meter.name,
|
||||
'epitope_values': meter.epitope_values,
|
||||
'lessee_id': meter.lessee_id.id,
|
||||
'yuthon_property_ids': [(6, 0, meter.yuthon_property_ids.ids)],
|
||||
'last_read': meter.last_read,
|
||||
'current_read': meter.current_read,
|
||||
'last_dosage': meter.last_dosage,
|
||||
'current_meter': 0,
|
||||
'unit_number': meter.unit_number,
|
||||
'gauge_magnification': meter.gauge_magnification,
|
||||
'last_reading_time': self.push_date,
|
||||
'meter_date': self.push_date,
|
||||
'type': meter.type,
|
||||
'start_time': meter.start_time,
|
||||
'end_time': meter.end_time,
|
||||
'archives_state': meter.archives_state,
|
||||
'maximum_count': meter.maximum_count,
|
||||
'is_push': True
|
||||
})
|
||||
|
||||
# 处理水表推送
|
||||
if self.water_ids:
|
||||
for water in self.water_ids:
|
||||
water.write({'meter_date': self.push_date,
|
||||
'is_push': True
|
||||
})
|
||||
water.last_dosage += water.current_meter
|
||||
water.current_meter = 0
|
||||
# 查找是否存在该推送日期的明细行
|
||||
existing_line = water.line_ids.filtered(
|
||||
lambda l: l.last_meter == self.push_date
|
||||
)
|
||||
|
||||
if not existing_line:
|
||||
water.line_ids.create({
|
||||
'water_id': water.id,
|
||||
'name': water.name,
|
||||
'epitope_values': water.epitope_values,
|
||||
'lessee_id': water.lessee_id.id,
|
||||
'yuthon_property_ids': [(6, 0, water.yuthon_property_ids.ids)],
|
||||
'last_read': water.last_read,
|
||||
'current_read': water.current_read,
|
||||
'last_dosage': water.last_dosage,
|
||||
'current_meter': 0,
|
||||
'unit_number': water.unit_number,
|
||||
'gauge_magnification': water.gauge_magnification,
|
||||
'meter_date': self.push_date,
|
||||
'type': water.type,
|
||||
'start_time': water.start_time,
|
||||
'end_time': water.end_time,
|
||||
'water_state': water.water_state,
|
||||
'maximum_count': water.maximum_count,
|
||||
'employee_ids': [(6, 0, water.employee_ids.ids)],
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user