Merge pull request !1284 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2025-01-11 09:53:53 +00:00
committed by Gitee
11 changed files with 186 additions and 8 deletions
+1
View File
@@ -49,6 +49,7 @@
'wizard/yuthon_property_wizard_views.xml',
'wizard/property_meter_wizard_views.xml',
'wizard/property_tenant_wizard_views.xml',
'wizard/property_water_wizard_views.xml',
'views/menuitem.xml',
],
'assets': {
@@ -52,3 +52,11 @@ class PropertyMeterWater(models.Model):
property_id.water_meter_ids = meter_list
def action_property_water_wizard(self):
return {
"type": "ir.actions.act_window",
"name": "批量导入物业电表",
"res_model": "property.water.wizard",
"view_mode": "form",
"target": "new",
}
+2 -1
View File
@@ -56,4 +56,5 @@ access_yuthon_property_wizard,yuthon_property_wizard,model_yuthon_property_wizar
access_yuthon_property_company,yuthon_property_company,model_yuthon_property_company,base.group_user,1,1,1,1
access_property_meter_wizard,property_meter_wizard,model_property_meter_wizard,base.group_user,1,1,1,1
access_yuthon_industry_setting,yuthon_industry_setting,model_yuthon_industry_setting,base.group_user,1,1,1,1
access_property_tenant_wizard,property_tenant_wizard,model_property_tenant_wizard,base.group_user,1,1,1,1
access_property_tenant_wizard,property_tenant_wizard,model_property_tenant_wizard,base.group_user,1,1,1,1
access_property_water_wizard,property_water_wizard,model_property_water_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
56 access_yuthon_property_company yuthon_property_company model_yuthon_property_company base.group_user 1 1 1 1
57 access_property_meter_wizard property_meter_wizard model_property_meter_wizard base.group_user 1 1 1 1
58 access_yuthon_industry_setting yuthon_industry_setting model_yuthon_industry_setting base.group_user 1 1 1 1
59 access_property_tenant_wizard property_tenant_wizard model_property_tenant_wizard base.group_user 1 1 1 1
60 access_property_water_wizard property_water_wizard model_property_water_wizard base.group_user 1 1 1 1
@@ -78,4 +78,11 @@
<field name="res_model">property.meter.water</field>
<field name="view_mode">tree,form</field>
</record>
<record id="all_data_meter_water_property" 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.action_property_water_wizard()</field>
</record>
</odoo>
@@ -57,8 +57,6 @@
<field name="street"/>
<field name="life_timer"/>
<field name="effective_date"/>
<field name="is_electricity_meter" string="电表"/>
<field name="is_meter" string="水表"/>
</group>
<group>
<field name="company_id" invisible="1"/>
@@ -80,9 +78,19 @@
<field name="is_done_merge" invisible="1"/>
<field name="property_use_time"/>
<field name="end_date"/>
</group>
</group>
<group col="3">
<group>
<field name="is_message_fee" string="管理费"/>
<field name="message_standard_id" invisible="not is_message_fee"/>
</group>
<group>
<field name="is_electricity_meter" string="电表"/>
</group>
<group>
<field name="is_meter" string="水表"/>
</group>
</group>
<notebook>
<page string="产权信息" name="information_info">
+2 -1
View File
@@ -1,3 +1,4 @@
from . import yuthon_property_wizard
from . import property_meter_wizard
from . import property_tenant_wizard
from . import property_tenant_wizard
from . import property_water_wizard
@@ -29,14 +29,25 @@ class PropertyMeterWizard(models.Model):
def property_meter_data(self,row):
name = row[0].value
unit_number = row[1].value
property_id = self.env['yuthon.property'].search([('name', '=', row[2].value)])
installation_location = row[2].value
if row[4].value:
gauge_magnification = float(row[4].value)
else:
gauge_magnification = None
property_id = self.env['yuthon.property'].search([('name', '=', row[8].value)])
meter_list = []
type_dict = {'公共':'public', '收费':'fees', '':''}
type = type_dict.get(row[3].value)
type = type_dict.get(row[6].value)
state_dict = {'启用': 1, '停用': 0, '': ''}
is_state = state_dict.get(row[7].value)
meter_data = {
'name': name,
'unit_number': unit_number,
'type': type
'installation_location': installation_location,
'type': type,
'gauge_magnification': gauge_magnification,
'yuthon_property_id':property_id.id if property_id else None,
'is_state':is_state
}
meter_id = self.env['property.meter.archives'].create(meter_data)
if property_id:
@@ -46,4 +57,5 @@ class PropertyMeterWizard(models.Model):
property_id.write({
'is_electricity_meter' : True,
})
property_id.energy_meter_ids = [(5, 0, 0)]
property_id.energy_meter_ids = meter_list
@@ -0,0 +1,61 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _, SUPERUSER_ID
from odoo.exceptions import ValidationError, UserError
from pypinyin import pinyin, Style
import xlrd
import base64
import datetime
from datetime import datetime
class PropertyWaterWizard(models.Model):
_name = 'property.water.wizard'
excel_file = fields.Binary(string="上传Excel表")
excel_name = fields.Char(string="文件名")
def confirm(self):
"""
导入excel文件,按行读取数据并处理
"""
if not self.excel_file:
raise ValidationError('请上传文件。')
book = xlrd.open_workbook(file_contents=base64.decodebytes(self.excel_file))
sh = book.sheet_by_index(0)
for rx in range(1, sh.nrows):
row = sh.row(rx)
self.property_water_data(row)
def property_water_data(self,row):
name = row[0].value
unit_number = row[1].value
installation_location = row[2].value
if row[4].value:
gauge_magnification = float(row[4].value)
else:
gauge_magnification = None
property_id = self.env['yuthon.property'].search([('name', '=', row[8].value)])
water_list = []
type_dict = {'公共':'public', '收费':'fees', '':''}
type = type_dict.get(row[6].value)
state_dict = {'启用':1, '停用':0, '':''}
is_state = state_dict.get(row[7].value)
water_data = {
'name': name,
'unit_number': unit_number,
'installation_location': installation_location,
'type': type,
'gauge_magnification': gauge_magnification,
'yuthon_property_id':property_id.id if property_id else None,
'is_state':is_state
}
water_id = self.env['property.meter.water'].create(water_data)
if property_id:
water_list.append((0, 0, {
'property_meter_water_id': water_id.id,
}))
property_id.write({
'is_meter' : True,
})
property_id.water_meter_ids = [(5, 0, 0)]
property_id.water_meter_ids = water_list
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<record id="property_water_template_downloads_tian_he_action" model="ir.actions.act_url">
<field name="name">电仪表模板 下载</field>
<field name="target">self</field>
<field name="url">.</field>
</record>
<record id="property_water_wizard_form" model="ir.ui.view">
<field name="name">审批意见弹窗</field>
<field name="model">property.water.wizard</field>
<field name="arch" type="xml">
<form>
<sheet>
<header>
<button name="%(property_water_template_downloads_tian_he_action)d" string="模板下载" type="action"
class="btn btn-primary"/>
</header>
<group>
<group>
<field name="excel_file" filename="excel_name"/>
<field name="excel_name" invisible="1"/>
</group>
<group>
</group>
</group>
</sheet>
<footer>
<button name="confirm" string="确认" type="object" class="oe_highlight"/>
<button string="返回" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
</odoo>
@@ -868,7 +868,7 @@ class PropertyLeaseContract(models.Model):
rec.is_electricity = True
for electricity_id in property_id.energy_meter_ids:
electricity_list.append([0, 0, {
'fees_id': electricity_id.id,
'fees_id': electricity_id.standard_id.id,
'proportional':electricity_id.rate,
}])
else:
@@ -8,12 +8,57 @@ class ChoosePropertyWizard(models.Model):
property_ids = fields.Many2many('yuthon.property', string="物业信息")
def confirm(self):
rec = self.lease_contract_id
self.lease_contract_id.lease_ids.unlink()
lease_name = []
lease_ids_to_add = []
electricity_list = []
water_list = []
fee_list = []
for record in self.property_ids:
lease_name.append(record.name)
lease_ids_to_add.append((0, 0, {
"lease_id": self.lease_contract_id.id,
"address_id": record.id,
}))
if record.is_electricity_meter:
rec.is_electricity = True
for electricity_id in record.energy_meter_ids:
electricity_list.append([0, 0, {
'fees_id': electricity_id.standard_id.id,
'proportional': electricity_id.rate,
}])
else:
rec.is_electricity = False
if record.is_meter:
rec.is_water = True
for electricity_id in record.water_meter_ids:
water_list.append([0, 0, {
'fees_id': electricity_id.standard_id.id,
'proportional': electricity_id.rate,
}])
else:
rec.is_water = False
if record.is_message_fee:
rec.is_mange = True
standard_id = record.message_standard_id
fee_list.append([0, 0, {
'fees_id': standard_id.id,
'proportional': standard_id.amount}])
else:
rec.is_mange = False
rec.electricity_fee_ids = [(5, 0, 0)]
rec.mange_fee_ids = [(5, 0, 0)]
rec.water_fee_ids = [(5, 0, 0)]
rec.admin_id = rec.lease_ids[0].admin_id.id if rec.lease_ids else ''
rec.company_id = rec.lease_ids[0].address_id.company_id.id if rec.lease_ids else ''
rec.precinct_id = rec.lease_ids[0].address_id.precinct_id.id if rec.lease_ids else ''
rec.electricity_fee_ids = electricity_list
rec.water_fee_ids = water_list
rec.mange_fee_ids = fee_list
self.lease_contract_id.write({'name': ','.join(lease_name),
'use_address':','.join(lease_name),
'address_for_delivery':','.join(lease_name)})
self.lease_contract_id.lease_ids = lease_ids_to_add