@@ -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",
|
||||
}
|
||||
@@ -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
|
||||
|
@@ -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">
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user