添加功能

This commit is contained in:
zhou
2025-08-26 11:09:38 +08:00
parent 09d46d36b0
commit 183fb76eae
13 changed files with 137 additions and 9 deletions
+2
View File
@@ -59,6 +59,8 @@
'wizard/evaluation_plan_wizard_views.xml',
'wizard/property_water_wizard_views.xml',
'wizard/receivable_log_wizard_views.xml',
'wizard/water_price_wizard.xml',
'wizard/meter_price_wizard.xml',
'wizard/property_statements_wizard_views.xml',
'views/menuitem.xml',
],
@@ -19,11 +19,13 @@ class PropertyMeterArchives(models.Model):
meter_type = fields.Selection([('electric', '电表'), ('water', '水表')], string='仪表类型')
other = fields.Char(string='其他')
meter_date = fields.Date(string='抄表年月')
last_dosage = fields.Float(string='上次读数')
last_dosage = fields.Float(string='上次用量')
last_read = fields.Float(string='上次读数')
last_meter = fields.Date(string='上次抄表日期')
current_meter = fields.Float(string='本次读数', tracking=True)
current_meter = fields.Float(string='本次用量', tracking=True)
current_read = fields.Float(string='本次读数', tracking=True)
ratio = fields.Float(string='倍率')
unit = fields.Float(string='单价')
unit = fields.Float(string='当月单价')
archives_state = fields.Selection([('stop', '停用'), ('use', '正常'), ('rent', '出租')], string='状态', compute='_compute_archives_state', store=True, default='use')
dosage = fields.Float(string='用量')
is_push = fields.Boolean(string='已推送')
@@ -131,6 +133,20 @@ class PropertyMeterArchives(models.Model):
record.last_dosage += record.current_meter
record.current_meter = 0
def meter_price_wizard(self):
meter_ids = self.env["property.meter.archives"].browse(
self._context.get('active_ids', self._context.get('active_id')))
return {
'name': '电表价格调整',
'type': 'ir.actions.act_window',
'res_model': 'meter.price.wizard',
'view_mode': 'form',
'target': 'new',
"context": {
"default_meter_ids": meter_ids.ids,
}
}
class PropertyElectricReading(models.Model):
_name = 'property.electric.reading'
current_meter = fields.Float(string='本次用量', tracking=True)
+19 -3
View File
@@ -18,10 +18,12 @@ class PropertyMeterWater(models.Model):
meter_type = fields.Selection([('electric', '电表'), ('water', '水表')], string='仪表类型')
other = fields.Char(string='其他')
meter_date = fields.Date(string='抄表年月')
last_dosage = fields.Float(string='上次读数')
last_dosage = fields.Float(string='上次用量')
last_read = fields.Float(string='上次读数')
last_meter = fields.Date(string='上次抄表日期')
unit = fields.Float(string='单价')
current_meter = fields.Float(string='本次读数', tracking=True)
unit = fields.Float(string='当月单价')
current_meter = fields.Float(string='本次用量', tracking=True)
current_read = fields.Float(string='本次读数', tracking=True)
ratio = fields.Float(string='倍率')
dosage = fields.Float(string='用量')
is_push = fields.Boolean(string='已推送')
@@ -123,6 +125,20 @@ class PropertyMeterWater(models.Model):
record.last_dosage += record.current_meter
record.current_meter = 0
def water_price_wizard(self):
water_ids = self.env["property.meter.water"].browse(
self._context.get('active_ids', self._context.get('active_id')))
return {
"type": "ir.actions.act_window",
"name": "修改水表单价弹窗",
"res_model": "property.water.wizard",
"view_mode": "form",
"target": "new",
"context": {
"default_water_ids": water_ids.ids,
}
}
class PropertyWaterReading(models.Model):
_name = 'property.water.reading'
current_meter = fields.Float(string='本次用量', tracking=True)
+4 -1
View File
@@ -87,4 +87,7 @@ access_evaluation_company,evaluation_company,model_evaluation_company,base.group
access_evaluation_plan_wizard,evaluation_plan_wizard,model_evaluation_plan_wizard,base.group_user,1,1,1,1
access_receivable_log_wizard, receivable.log.wizard,model_receivable_log_wizard,base.group_user,1,1,1,1
access_amount_way,amount_way,model_amount_way,base.group_user,1,1,1,1
access_property_summary_report, property_summary_report,model_property_summary_report,base.group_user,1,1,1,1
access_property_summary_report, property_summary_report,model_property_summary_report,base.group_user,1,1,1,1
access_meter_price_wizard, meter_price_wizard,model_meter_price_wizard,base.group_user,1,1,1,1
access_water_price_wizard, water_price_wizard,model_water_price_wizard,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
87 access_evaluation_plan_wizard evaluation_plan_wizard model_evaluation_plan_wizard base.group_user 1 1 1 1
88 access_receivable_log_wizard receivable.log.wizard model_receivable_log_wizard base.group_user 1 1 1 1
89 access_amount_way amount_way model_amount_way base.group_user 1 1 1 1
90 access_property_summary_report property_summary_report model_property_summary_report base.group_user 1 1 1 1
91 access_meter_price_wizard meter_price_wizard model_meter_price_wizard base.group_user 1 1 1 1
92 access_water_price_wizard water_price_wizard model_water_price_wizard base.group_user 1 1 1 1
93
@@ -16,7 +16,9 @@
<!-- <field name="meter_date" />-->
<field name="last_meter" />
<field name="last_dosage"/>
<field name="last_read"/>
<field name="current_meter"/>
<field name="current_read"/>
<field name="unit_number"/>
<field name="gauge_magnification"/>
<field name="last_reading_time"/>
@@ -36,6 +38,9 @@
<field name="model">property.meter.archives</field>
<field name="arch" type="xml">
<tree string="电表抄表" create="False" editable="bottom">
<header>
<button class="oe_highlight" name="meter_price_wizard" string="单价修改" type="object"/>
</header>
<field name="name" readonly="1"/>
<field name="yuthon_property_id" string="地址" readonly="1"/>
<field name="lessee_id" options="{'no_create': True}" readonly="1"/>
@@ -69,7 +74,7 @@
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_property.view_property_meter_archives_tree')})]"/>
</record>
<record id="action_property_meter_archives1" model="ir.actions.act_window">
<field name="name">电表抄表</field>
<field name="name">电表任务</field>
<field name="res_model">property.meter.archives</field>
<field name="view_mode">tree,search</field>
<field name="domain">[('is_push', '=', True)]</field>
@@ -17,7 +17,9 @@
<!-- <field name="meter_date" />-->
<field name="last_meter" />
<field name="last_dosage"/>
<field name="last_read"/>
<field name="current_meter"/>
<field name="current_read"/>
<field name="unit_number"/>
<field name="gauge_magnification"/>
<field name="last_reading_time"/>
@@ -38,6 +40,9 @@
<field name="model">property.meter.water</field>
<field name="arch" type="xml">
<tree string="水表抄表" create="False" editable="bottom">
<header>
<button class="oe_highlight" name="water_price_wizard" string="单价修改" type="object"/>
</header>
<field name="name" readonly="1"/>
<field name="yuthon_property_id" string="地址" readonly="1"/>
<field name="lessee_id" options="{'no_create': True}" readonly="1"/>
@@ -70,7 +75,7 @@
(0, 0, {'view_mode': 'tree', 'view_id': ref('yuthon_property.view_property_meter_water_tree')})]"/>
</record>
<record id="action_property_meter_water1" model="ir.actions.act_window">
<field name="name">水表抄表</field>
<field name="name">水表任务</field>
<field name="res_model">property.meter.water</field>
<field name="view_mode">tree,search</field>
<field name="domain">[('is_push', '=', True)]</field>
+2
View File
@@ -5,3 +5,5 @@ from . import property_water_wizard
from . import property_statements_wizard
from . import evaluation_plan_wizard
from . import receivable_log_wizard
from . import meter_price_wizard
from . import water_price_wizard
@@ -0,0 +1,15 @@
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
class MeterPriceWizard(models.TransientModel):
_name = 'meter.price.wizard'
_description = '电表修改单价弹窗'
meter_ids = fields.Many2many('property.meter.archives', string='关联电表')
price = fields.Float(string='修改单价')
def confirm(self):
for meter in self.meter_ids:
meter.unit = self.price
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="wizard_meter_price_form" model="ir.ui.view">
<field name="name">meter.price.wizard.form</field>
<field name="model">meter.price.wizard</field>
<field name="arch" type="xml">
<form sting="电表修改单价弹窗">
<group>
<field name="meter_ids" widget="many2many_tags" invisible="1"/>
<field name="price"/>
</group>
<footer>
<button name="confirm" string="确定" type="object" class="oe_highlight"/>
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>
@@ -0,0 +1,16 @@
from odoo import models, fields, api
from odoo.exceptions import UserError, ValidationError
class WaterPriceWizard(models.TransientModel):
_name = 'water.price.wizard'
_description = '水表修改单价弹窗'
water_ids = fields.Many2many('property.meter.water', string='关联电表')
price = fields.Float(string='修改单价')
def confirm(self):
for water in self.water_ids:
water.unit = self.price
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="wizard_water_price_form" model="ir.ui.view">
<field name="name">water.price.wizard.form</field>
<field name="model">water.price.wizard</field>
<field name="arch" type="xml">
<form sting="水表修改单价弹窗">
<group>
<field name="water_ids" widget="many2many_tags" invisible="1"/>
<field name="price"/>
</group>
<footer>
<button name="confirm" string="确定" type="object" class="oe_highlight"/>
<button string="取消" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>
@@ -153,6 +153,8 @@ class PropertyLeaseContract(models.Model):
is_electricity = fields.Boolean(string="是否有电费", compute='_compute_lease_ids')
is_mange = fields.Boolean(string="是否有管理费")
miscellaneous = fields.Text(string="其他约定")
water_price = fields.Float(string="水费单价")
ele_price = fields.Float(string="电费单价")
number = fields.Integer(string="次数", default=0)
total_area = fields.Float(string="总面积", digits=(16, 4))
not_received = fields.Float(string="未收", compute="_compute_not_received", store=True)
@@ -242,6 +242,8 @@
</group>
<group>
<field name="miscellaneous"/>
<field name="water_price"/>
<field name="ele_price"/>
</group>
<notebook>
<page string="租金明细" invisible="state in ['协办', '分管领导', '总经理', '二部协办']">
@@ -660,6 +662,8 @@
</group>
<group>
<field name="miscellaneous"/>
<field name="water_price"/>
<field name="ele_price"/>
</group>
<notebook>
<page string="租金明细">