添加功能

This commit is contained in:
李鹏宇
2025-09-20 19:40:35 +08:00
parent ea23e1533d
commit 35a8b68485
5 changed files with 119 additions and 29 deletions
@@ -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)
+7 -10
View File
@@ -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>
+63 -10
View File
@@ -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)],
})