Merge branch 'master' of gitee.com:jinan-pengyusen-data/gzth into dev
Signed-off-by: 李鹏宇 <9664676+pengyuthon@user.noreply.gitee.com>
This commit is contained in:
@@ -215,8 +215,8 @@ class AppletAttendance(Controller):
|
||||
"data": {
|
||||
"current_month": { // 当月考勤数据
|
||||
"holiday_data": { // 假期数据
|
||||
"holiday_list": ["2025年1月1日", "2025年1月2日"], // 法定节假日,调休休息日列表(日期字符串)
|
||||
"shift_days_list": ["2025年2月10日", "2025年2月11日"] // 调休补班日列表(日期字符串)
|
||||
"holiday_list": ["2025-01-01", "2025-01-02"], // 法定节假日,调休休息日列表(日期字符串)
|
||||
"shift_days_list": ["2025-02-10", "2025-02-11"] // 调休补班日列表(日期字符串)
|
||||
},
|
||||
"banner_rote": { // 异常统计
|
||||
"is_no_card": 2, // 缺卡次数
|
||||
@@ -352,8 +352,8 @@ class AppletAttendance(Controller):
|
||||
check_out_color = 'red' if check_out_status in ['迟到', '早退', '缺卡'] else 'green'
|
||||
# 添加到记录列表
|
||||
records.append({
|
||||
'date': att.current_data.strftime('%Y-%m-%d'),
|
||||
'class': [f"{att.shift_name}", f"{standard_check_in_str}-{standard_check_out_str}"],
|
||||
'date': att.current_data.strftime('%Y/%m/%d'),
|
||||
'class': [f"{att.shift_name}",f"{standard_check_in_str}-{standard_check_out_str}"],
|
||||
'user_id': user_id,
|
||||
'check_in': check_in_str,
|
||||
'check_out': check_out_str,
|
||||
@@ -407,7 +407,7 @@ class AppletAttendance(Controller):
|
||||
day = start_date_obj + timedelta(days=i)
|
||||
# 只添加年份和月份匹配的日期
|
||||
if day.year == target_year and day.month == target_month:
|
||||
formatted_date = f"{day.month}月{day.day}日"
|
||||
formatted_date = f"{day.year}/{day.month}/{day.day}"
|
||||
holidays_list.append(formatted_date)
|
||||
|
||||
# 处理调班补班
|
||||
@@ -419,7 +419,7 @@ class AppletAttendance(Controller):
|
||||
day = int(day_str)
|
||||
# 只添加月份匹配的日期
|
||||
if month == target_month:
|
||||
formatted_date = f"{month}月{day}日"
|
||||
formatted_date = f"{target_year}/{month}/{day}"
|
||||
shift_days_list.append(formatted_date)
|
||||
|
||||
return {
|
||||
@@ -427,8 +427,7 @@ class AppletAttendance(Controller):
|
||||
"shift_days_list": shift_days_list,
|
||||
}
|
||||
|
||||
# 水电表接口
|
||||
|
||||
# 水电表接口
|
||||
@route('/yuthon/meter/reading', methods=['POST'], type='http', auth='none', cors='*', csrf=False)
|
||||
def yuthon_meter_reading(self, **kw):
|
||||
"""
|
||||
|
||||
@@ -24,7 +24,7 @@ class PropertyMeterArchives(models.Model):
|
||||
last_meter = fields.Date(string='上次抄表日期')
|
||||
current_meter = fields.Float(string='本次用量', tracking=True)
|
||||
ratio = fields.Float(string='倍率')
|
||||
archives_state = fields.Selection([('stop', '停用'), ('use', '使用'), ('rent', '出租')], 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='已推送')
|
||||
start_time = fields.Date(string="安装日期")
|
||||
@@ -33,6 +33,36 @@ class PropertyMeterArchives(models.Model):
|
||||
standards_id = fields.Many2one('yuthon.electricity.setting', string='标准')
|
||||
yuthon_property_id = fields.Many2one('yuthon.property', string='关联物业信息')
|
||||
|
||||
@api.depends('lessee_id')
|
||||
def _compute_archives_state(self):
|
||||
for record in self:
|
||||
if record.lessee_id:
|
||||
record.archives_state = 'rent'
|
||||
else:
|
||||
record.archives_state = 'use'
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
record = super().create(vals)
|
||||
if record.lessee_id:
|
||||
record.archives_state = 'rent'
|
||||
else:
|
||||
record.archives_state = 'use'
|
||||
return record
|
||||
|
||||
def button_archives_state(self):
|
||||
archives_ids = self.env["property.meter.archives"].browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in archives_ids:
|
||||
record.archives_state = 'stop'
|
||||
|
||||
def update_meter(self):
|
||||
meter_ids = self.env["property.meter.archives"].browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in meter_ids:
|
||||
if record.lessee_id:
|
||||
record.archives_state = 'rent'
|
||||
else:
|
||||
record.archives_state = 'use'
|
||||
|
||||
@api.onchange('current_meter')
|
||||
def _onchange_current_meter(self):
|
||||
current_date = fields.Date.today()
|
||||
|
||||
@@ -28,10 +28,41 @@ class PropertyMeterWater(models.Model):
|
||||
start_time = fields.Date(string="安装日期")
|
||||
end_time = fields.Date(string="拆除日期")
|
||||
last_reading_time = fields.Date(string="最后读数时间")
|
||||
water_state = fields.Selection([('stop', '停用'), ('use', '使用'), ('rent', '出租')], string='状态')
|
||||
water_state = fields.Selection([('stop', '停用'), ('use', '使用'), ('rent', '出租')], string='状态', compute='_compute_water_state', store=True)
|
||||
standards_id = fields.Many2one('yuthon.electricity.setting', string='标准')
|
||||
yuthon_property_id = fields.Many2one('yuthon.property', string='关联物业信息')
|
||||
|
||||
@api.depends('lessee_id')
|
||||
def _compute_water_state(self):
|
||||
for record in self:
|
||||
if record.lessee_id:
|
||||
record.water_state = 'rent'
|
||||
else:
|
||||
record.water_state = 'use'
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
record = super().create(vals)
|
||||
if record.lessee_id:
|
||||
record.water_state = 'rent'
|
||||
else:
|
||||
record.water_state = 'use'
|
||||
return record
|
||||
|
||||
def button_water_state(self):
|
||||
archives_ids = self.env["property.meter.water"].browse(
|
||||
self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in archives_ids:
|
||||
record.water_state = 'stop'
|
||||
|
||||
def update_meter(self):
|
||||
meter_ids = self.env["property.meter.water"].browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in meter_ids:
|
||||
if record.lessee_id:
|
||||
record.water_state = 'rent'
|
||||
else:
|
||||
record.water_state = 'use'
|
||||
|
||||
@api.onchange('current_meter')
|
||||
def _onchange_current_meter(self):
|
||||
current_date = fields.Date.today()
|
||||
|
||||
@@ -93,59 +93,6 @@ class YuthonProperty(models.Model):
|
||||
annual_increase_amount = fields.Float(string='递增金额', igits=(6, 2))
|
||||
rent_unit = fields.Float(string='租金单价', igits=(6, 2))
|
||||
|
||||
@api.onchange('energy_meter_ids')
|
||||
def _onchange_energy_meter_ids(self):
|
||||
for record in self:
|
||||
today = fields.Date.today()
|
||||
electricity_list = []
|
||||
if record.energy_meter_ids and record.is_electricity_meter:
|
||||
water_fee_id = self.env['property.lease.contract.line'].search([('address_id', '=', record.id)])
|
||||
contract_id = water_fee_id.lease_id
|
||||
if water_fee_id:
|
||||
active_meters = record.energy_meter_ids.filtered(
|
||||
lambda meter: not meter.demolition_date or meter.demolition_date >= today
|
||||
)
|
||||
|
||||
for water_fee in active_meters:
|
||||
electricity_list.append({'fees_id': water_fee.standard_id.id,
|
||||
'contract_id': contract_id.id,
|
||||
'proportional': water_fee.rate,
|
||||
}
|
||||
)
|
||||
|
||||
self.env['property.electric.fee.line'].search([('address_id', '=', record.id)]).unlink()
|
||||
if electricity_list:
|
||||
self.env['property.electric.fee.line'].create(electricity_list)
|
||||
# else:
|
||||
# self.env['property.electric.fee.line'].search([('address_id', '=', record.id)]).unlink()
|
||||
|
||||
|
||||
@api.onchange('water_meter_ids')
|
||||
def _onchange_water_meter_ids(self):
|
||||
for record in self:
|
||||
today = fields.Date.today()
|
||||
water_list = []
|
||||
if record.water_meter_ids and record.is_meter:
|
||||
water_fee_id = self.env['property.lease.contract.line'].search([('address_id', '=', record.id.origin)], limit=1)
|
||||
contract_id = water_fee_id.lease_id
|
||||
if water_fee_id:
|
||||
contract_id.is_water = True
|
||||
active_meters = record.water_meter_ids.filtered(
|
||||
lambda meter: not meter.demolition_date or meter.demolition_date >= today
|
||||
)
|
||||
|
||||
for water_fee in active_meters:
|
||||
water_list.append({'fees_id': water_fee.standard_id.id,
|
||||
'contract_id': contract_id.id,
|
||||
'proportional': water_fee.rate,
|
||||
}
|
||||
)
|
||||
self.env['property.water.fee.line'].search([('address_id', '=', record.id)]).unlink()
|
||||
if water_list:
|
||||
self.env['property.water.fee.line'].create(water_list)
|
||||
# else:
|
||||
# self.env['property.water.fee.line'].search([('address_id', '=', record.id)]).unlink()
|
||||
|
||||
@api.onchange('reference_ids')
|
||||
def _onchange_reference_ids(self):
|
||||
for record in self:
|
||||
|
||||
@@ -100,26 +100,26 @@
|
||||
sequence="99"
|
||||
name="配置"
|
||||
parent="yuthon_property_meter_menu"/>
|
||||
<menuitem id="yuthon_electricity_setting_menu"
|
||||
parent="yuthon_property_archives_setting_meu"
|
||||
name="电费标准"
|
||||
action="view_yuthon_electricity_setting_action"
|
||||
sequence="1"/>
|
||||
<menuitem id="yuthon_water_setting_menu"
|
||||
parent="yuthon_property_archives_setting_meu"
|
||||
name="水费标准"
|
||||
action="view_yuthon_water_setting_action"
|
||||
sequence="3"/>
|
||||
<menuitem id="yuthon_property_archives_power_menu"
|
||||
sequence="10"
|
||||
<menuitem id="yuthon_property_archives_power_menu"
|
||||
sequence="1"
|
||||
name="电表库"
|
||||
parent="yuthon_property_archives_setting_meu"
|
||||
action="action_property_meter_archives"/>
|
||||
<menuitem id="yuthon_property_archives_water_menu"
|
||||
sequence="15"
|
||||
sequence="5"
|
||||
name="水表库"
|
||||
parent="yuthon_property_archives_setting_meu"
|
||||
action="action_property_meter_water"/>
|
||||
<menuitem id="yuthon_electricity_setting_menu"
|
||||
parent="yuthon_property_archives_setting_meu"
|
||||
name="电费标准"
|
||||
action="view_yuthon_electricity_setting_action"
|
||||
sequence="10"/>
|
||||
<menuitem id="yuthon_water_setting_menu"
|
||||
parent="yuthon_property_archives_setting_meu"
|
||||
name="水费标准"
|
||||
action="view_yuthon_water_setting_action"
|
||||
sequence="15"/>
|
||||
|
||||
<!-- <menuitem id="yuthon_property_science_menu"-->
|
||||
<!-- sequence="13"-->
|
||||
|
||||
@@ -4,9 +4,11 @@
|
||||
<field name="name">property.meter.archives.tree</field>
|
||||
<field name="model">property.meter.archives</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="电表库" limit="20" create="False" editable="bottom" decoration-success="is_push">
|
||||
<tree string="电表库" limit="20" create="False" editable="bottom" decoration-success="is_push"
|
||||
decoration-danger="archives_state == 'stop'">
|
||||
<header>
|
||||
<button class="oe_highlight" name="batch_reading_push" string="推送" type="object"/>
|
||||
<button class="oe_highlight" name="button_archives_state" string="停用" type="object"/>
|
||||
</header>
|
||||
<field name="name"/>
|
||||
<field name="lessee_id" options="{'no_create': True}"/>
|
||||
@@ -24,8 +26,8 @@
|
||||
<field name="dosage"/>
|
||||
<field name="start_time"/>
|
||||
<field name="end_time"/>
|
||||
<field name="archives_state"/>
|
||||
<field name="is_push" column_invisible="1"/>
|
||||
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
|
||||
<field name="maximum_count"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -35,15 +37,16 @@
|
||||
<field name="model">property.meter.archives</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="电表抄表" limit="20" create="False" editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="yuthon_property_id" string="地址"/>
|
||||
<field name="lessee_id" options="{'no_create': True}"/>
|
||||
<field name="meter_date" />
|
||||
<field name="last_meter" />
|
||||
<field name="last_dosage"/>
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="yuthon_property_id" string="地址" readonly="1"/>
|
||||
<field name="lessee_id" options="{'no_create': True}" readonly="1"/>
|
||||
<field name="meter_date" readonly="1"/>
|
||||
<field name="last_meter" readonly="1"/>
|
||||
<field name="last_dosage" readonly="1"/>
|
||||
<field name="current_meter"/>
|
||||
<field name="dosage"/>
|
||||
<field name="dosage" readonly="1"/>
|
||||
<field name="archives_state"/>
|
||||
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}" readonly="1"/>
|
||||
<field name="is_push" column_invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -80,4 +83,11 @@
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.action_property_meter_wizard()</field>
|
||||
</record>
|
||||
<record id="all_update_meter_archives" model="ir.actions.server">
|
||||
<field name="name">更新状态</field>
|
||||
<field name="model_id" ref="yuthon_property.model_property_meter_archives"/>
|
||||
<field name="binding_model_id" ref="yuthon_property.model_property_meter_archives"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.update_meter()</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -5,9 +5,11 @@
|
||||
<field name="model">property.meter.water</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="水表库" limit="20" create="False" editable="bottom"
|
||||
decoration-success="is_push">
|
||||
decoration-danger="water_state == 'stop'">
|
||||
decoration-success="is_push">
|
||||
<header>
|
||||
<button class="oe_highlight" name="batch_reading_water_push" string="推送" type="object"/>
|
||||
<button class="oe_highlight" name="button_water_state" string="停用" type="object"/>
|
||||
</header>
|
||||
<field name="name"/>
|
||||
<field name="lessee_id" options="{'no_create': True}"/>
|
||||
@@ -25,6 +27,7 @@
|
||||
<field name="dosage"/>
|
||||
<field name="start_time"/>
|
||||
<field name="end_time"/>
|
||||
<field name="water_state"/>
|
||||
<field name="is_push" column_invisible="1"/>
|
||||
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}"/>
|
||||
<field name="maximum_count"/>
|
||||
@@ -36,15 +39,15 @@
|
||||
<field name="model">property.meter.water</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="水表抄表" limit="20" create="False" editable="bottom">
|
||||
<field name="name"/>
|
||||
<field name="yuthon_property_id" string="地址"/>
|
||||
<field name="lessee_id" options="{'no_create': True}"/>
|
||||
<field name="meter_date" />
|
||||
<field name="last_meter" />
|
||||
<field name="last_dosage"/>
|
||||
<field name="name" readonly="1"/>
|
||||
<field name="yuthon_property_id" string="地址" readonly="1"/>
|
||||
<field name="lessee_id" options="{'no_create': True}" readonly="1"/>
|
||||
<field name="meter_date" readonly="1"/>
|
||||
<field name="last_meter" readonly="1"/>
|
||||
<field name="last_dosage" readonly="1"/>
|
||||
<field name="current_meter"/>
|
||||
<field name="dosage"/>
|
||||
<field name="water_state"/>
|
||||
<field name="dosage" readonly="1"/>
|
||||
<field name="employee_ids" widget="many2many_tags" options="{'no_create': True}" readonly="1"/>
|
||||
<field name="is_push" column_invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
@@ -80,4 +83,11 @@
|
||||
<field name="binding_model_id" ref="yuthon_property.model_property_meter_water"/>
|
||||
<field name="state">code</field>
|
||||
</record>
|
||||
<record id="all_update_meter" 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.update_meter()</field>
|
||||
</record>
|
||||
</odoo>
|
||||
@@ -24,6 +24,18 @@ class YuthonProperty(models.Model):
|
||||
else:
|
||||
continue
|
||||
|
||||
def update_lessee_id(self):
|
||||
property_ids = self.env["yuthon.property"].browse(
|
||||
self._context.get('active_ids', self._context.get('active_id')))
|
||||
for rec in property_ids:
|
||||
if rec.property_contract_ids:
|
||||
rec.lessee_id = rec.property_contract_ids[-1].lessee_id
|
||||
|
||||
@api.onchange('property_contract_ids')
|
||||
def _onchange_property_contract_ids(self):
|
||||
if self.property_contract_ids:
|
||||
self.lessee_id = self.property_contract_ids[-1].lessee_id
|
||||
|
||||
# 银行流水
|
||||
class PropertyBankStatements(models.Model):
|
||||
_inherit = 'property.bank.statements'
|
||||
|
||||
@@ -150,8 +150,8 @@ class PropertyLeaseContract(models.Model):
|
||||
use_address = fields.Char(string="财务专用地址")
|
||||
not_tax_amount = fields.Float(string="不含税价")
|
||||
tax = fields.Float(string="税金")
|
||||
is_water = fields.Boolean(string="是否有水费")
|
||||
is_electricity = fields.Boolean(string="是否有电费")
|
||||
is_water = fields.Boolean(string="是否有水费", compute='_compute_lease_ids')
|
||||
is_electricity = fields.Boolean(string="是否有电费", compute='_compute_lease_ids')
|
||||
is_mange = fields.Boolean(string="是否有管理费")
|
||||
miscellaneous = fields.Text(string="其他约定")
|
||||
number = fields.Integer(string="次数", default=0)
|
||||
@@ -170,8 +170,8 @@ class PropertyLeaseContract(models.Model):
|
||||
lease_ids = fields.One2many('property.lease.contract.line', 'lease_id',string="物业信息明细行")
|
||||
subset_ids = fields.One2many('property.subset.contract', 'subset_id',string="子集明细")
|
||||
breakdown_ids = fields.One2many('property.rent.breakdown.line', 'breakdown_id', string="物业租金明细行")
|
||||
water_fee_ids = fields.One2many('property.water.fee.line', 'contract_id', string="物业水费明细行")
|
||||
electricity_fee_ids = fields.One2many('property.electric.fee.line', 'contract_id', string="物业电费明细行")
|
||||
water_fee_ids = fields.One2many('property.water.fee.line', 'contract_id', string="物业水费明细行", compute='_compute_lease_ids', store=True)
|
||||
electricity_fee_ids = fields.One2many('property.electric.fee.line', 'contract_id', string="物业电费明细行", compute='_compute_lease_ids', store=True)
|
||||
mange_fee_ids = fields.One2many('property.manage.fee.line', 'contract_id', string="物业管理费明细行")
|
||||
other_ids = fields.One2many('property.other.fee.line', 'other_id', string="其他费用明细行")
|
||||
rent_list_ids = fields.One2many('property.rent.list', 'contract_id', string="租金明细行")
|
||||
@@ -206,8 +206,8 @@ class PropertyLeaseContract(models.Model):
|
||||
|
||||
license_name = fields.Char(string="营业执照名称", compute='_compute_attachment_names', store=True)
|
||||
legal_entity_name = fields.Char(string="身份证名称", compute='_compute_attachment_names', store=True)
|
||||
asset_valuation_name = fields.Char(string="资产评估结果明细表名称", compute='_compute_attachment_names',store=True)
|
||||
lease_contract_name = fields.Char(string="租赁合同(住宅)名称", compute='_compute_attachment_names', store=True)
|
||||
asset_valuation_name = fields.Char(string="资产评估结果明细表名称", compute='_compute_attachment_names')
|
||||
lease_contract_name = fields.Char(string="租赁合同(住宅)名称", compute='_compute_attachment_names')
|
||||
confirmation_transaction_name = fields.Char(string="成交确认书名称", compute='_compute_attachment_names',
|
||||
store=True)
|
||||
responsibility_book_name = fields.Char(string="安全生产责任书(住宅)名称", compute='_compute_attachment_names',
|
||||
@@ -239,10 +239,49 @@ class PropertyLeaseContract(models.Model):
|
||||
rec.admin_id = rec.lease_ids[0].admin_line_id.id
|
||||
|
||||
@api.depends('lease_ids')
|
||||
def _compute_admin_id(self):
|
||||
def _compute_lease_ids(self):
|
||||
for rec in self:
|
||||
if rec.lease_ids:
|
||||
rec.admin_id = rec.lease_ids[0].admin_line_id.id
|
||||
rec.is_water = False
|
||||
rec.is_electricity = False
|
||||
|
||||
rec.water_fee_ids = [(5, 0, 0)]
|
||||
rec.electricity_fee_ids = [(5, 0, 0)]
|
||||
|
||||
water_fee_values = []
|
||||
electricity_fee_values = []
|
||||
|
||||
for lease in rec.lease_ids:
|
||||
if lease.address_id:
|
||||
if lease.address_id.is_meter:
|
||||
rec.is_water = True
|
||||
# 获取未拆除的水表(demolition_date 为空或大于今天)
|
||||
active_water_meters = lease.address_id.water_meter_ids.filtered(
|
||||
lambda m: not m.demolition_date or m.demolition_date > fields.Date.today()
|
||||
)
|
||||
for meter in active_water_meters:
|
||||
water_fee_values.append([0, 0, {
|
||||
'contract_id': rec.id,
|
||||
'property_meter_water_id': meter.property_meter_water_id.id,
|
||||
}])
|
||||
|
||||
if lease.address_id.is_electricity_meter:
|
||||
rec.is_electricity = True
|
||||
active_electric_meters = lease.address_id.energy_meter_ids.filtered(
|
||||
lambda m: not m.demolition_date or m.demolition_date > fields.Date.today()
|
||||
)
|
||||
for meter in active_electric_meters:
|
||||
electricity_fee_values.append([0, 0, {
|
||||
'contract_id': rec.id,
|
||||
'property_meter_archives_id': meter.property_meter_archives_id.id,
|
||||
}])
|
||||
|
||||
if water_fee_values:
|
||||
rec.water_fee_ids = water_fee_values
|
||||
if electricity_fee_values:
|
||||
rec.electricity_fee_ids = electricity_fee_values
|
||||
|
||||
|
||||
@api.depends(
|
||||
'license_id.name',
|
||||
@@ -1061,80 +1100,6 @@ class PropertyLeaseContract(models.Model):
|
||||
rec.electricity_fee_ids = electricity_list
|
||||
rec.mange_fee_ids = fee_list
|
||||
|
||||
|
||||
@api.model_create_multi
|
||||
def create(self, vals_list):
|
||||
# 初始化上下文变量,避免循环中重复创建
|
||||
yuthon_property_env = self.env['yuthon.property']
|
||||
for vals in vals_list:
|
||||
lease_ids = vals.get('lease_ids', [])
|
||||
lease_name = []
|
||||
electricity_list = []
|
||||
title_address = []
|
||||
fee_list = []
|
||||
# 处理每条租赁记录
|
||||
for lease_info in lease_ids:
|
||||
if isinstance(lease_info, tuple) and lease_info[0] == 4: # 引用已有记录
|
||||
lease_id = lease_info[1]
|
||||
lease_record = self.env['property.lease.contract.line'].browse(lease_id) # 替换为实际的租赁模型
|
||||
if lease_record.address_id and lease_record.address_id.title_address:
|
||||
lease_name.append(lease_record.address_id.name)
|
||||
title_address.append(lease_record.address_id.title_address.name)
|
||||
# 更新vals中的字段
|
||||
vals['name'] = ','.join(lease_name)
|
||||
vals['use_address'] = ','.join(lease_name)
|
||||
vals['title_address'] = ','.join(title_address)
|
||||
# 查找物业记录
|
||||
property_id = yuthon_property_env.search([('id', '=', lease_record.address_id.id)], limit=1)
|
||||
if property_id:
|
||||
# 处理电表信息
|
||||
if property_id.energy_meter_ids:
|
||||
vals['is_electricity'] = True
|
||||
for electricity_id in property_id.energy_meter_ids:
|
||||
electricity_list.append([0, 0, {
|
||||
'fees_id': electricity_id.standard_id.id,
|
||||
'proportional': electricity_id.rate,
|
||||
}])
|
||||
else:
|
||||
vals['is_electricity'] = False
|
||||
|
||||
# 处理管理费信息
|
||||
if property_id.is_message_fee:
|
||||
vals['is_mange'] = True
|
||||
standard_id = property_id.message_standard_id
|
||||
fee_list.append([0, 0, {
|
||||
'fees_id': standard_id.id,
|
||||
'proportional': standard_id.amount,
|
||||
}])
|
||||
else:
|
||||
vals['is_mange'] = False
|
||||
# 设置其他字段
|
||||
if lease_ids:
|
||||
first_lease = self.env['property.lease.contract.line'].browse(lease_ids[0][1]) if isinstance(lease_ids[0],
|
||||
tuple) else None
|
||||
if first_lease:
|
||||
vals['admin_id'] = first_lease.admin_line_id.id if first_lease.admin_line_id else False
|
||||
vals['tenure_type'] = first_lease.address_id.tenure_type if first_lease.address_id else ''
|
||||
vals[
|
||||
'lessor_id'] = first_lease.address_id.company_id.id if first_lease.address_id and first_lease.address_id.company_id else False
|
||||
vals[
|
||||
'precinct_id'] = first_lease.address_id.precinct_id.id if first_lease.address_id and first_lease.address_id.precinct_id else False
|
||||
|
||||
# 计算总面积
|
||||
total_area = 0
|
||||
for lease_info in lease_ids:
|
||||
if isinstance(lease_info, tuple) and lease_info[0] == 4:
|
||||
lease = self.env['your.lease.model'].browse(lease_info[1])
|
||||
total_area += lease.property_area if lease.property_area else 0
|
||||
vals['total_area'] = total_area
|
||||
|
||||
# 设置费用明细
|
||||
vals['electricity_fee_ids'] = [(5, 0, 0)] + electricity_list
|
||||
vals['mange_fee_ids'] = [(5, 0, 0)] + fee_list
|
||||
|
||||
records = super().create(vals_list)
|
||||
return records
|
||||
|
||||
def trigger_lease_ids(self):
|
||||
property_ids = self.env["property.lease.contract"].browse(self._context.get('active_ids', self._context.get('active_id')))
|
||||
for record in property_ids:
|
||||
@@ -1591,20 +1556,24 @@ class PropertyWaterFeeLine(models.Model):
|
||||
_description = '物业水费明细行'
|
||||
|
||||
contract_id = fields.Many2one('property.lease.contract', string="关联租赁合同审批")
|
||||
address_id = fields.Many2one('yuthon.property', string="物业地址")
|
||||
charges = fields.Char(string="收费项")
|
||||
fees_id = fields.Many2one('yuthon.water.setting', string="收费标准")
|
||||
proportional = fields.Float(string="赔率/比例")
|
||||
|
||||
property_meter_water_id = fields.Many2one('property.meter.water', string="水表库")
|
||||
rate = fields.Float(related='property_meter_water_id.gauge_magnification', string="倍率", store=True)
|
||||
standard_id = fields.Many2one(related='property_meter_water_id.standards_id', string="标准", store=True)
|
||||
installation_date = fields.Date(related='property_meter_water_id.start_time', string="安装日期")
|
||||
demolition_date = fields.Date(related='property_meter_water_id.end_time', string="拆除日期")
|
||||
location = fields.Char(related='property_meter_water_id.installation_location', string="位置")
|
||||
|
||||
class PropertyElectricFeeLine(models.Model):
|
||||
_name = 'property.electric.fee.line'
|
||||
_description = '物业电费明细行'
|
||||
|
||||
contract_id = fields.Many2one('property.lease.contract', string="关联租赁合同审批")
|
||||
charges = fields.Char(string="收费项")
|
||||
fees_id = fields.Many2one('yuthon.electricity.setting', string="收费标准")
|
||||
proportional = fields.Float(string="倍率/比例")
|
||||
property_meter_archives_id = fields.Many2one('property.meter.archives', string="电表库")
|
||||
rate = fields.Float(related='property_meter_archives_id.gauge_magnification', string="倍率", store=True)
|
||||
standard_id = fields.Many2one(related='property_meter_archives_id.standards_id', string="标准", store=True)
|
||||
installation_date = fields.Date(related='property_meter_archives_id.start_time', string="安装日期")
|
||||
demolition_date = fields.Date(related='property_meter_archives_id.end_time', string="拆除日期")
|
||||
location = fields.Char(related='property_meter_archives_id.installation_location', string="位置")
|
||||
|
||||
|
||||
class PropertyManageFeeLine(models.Model):
|
||||
|
||||
@@ -21,6 +21,13 @@
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
<record id="all_update_lessee_id" model="ir.actions.server">
|
||||
<field name="name">更新承租方</field>
|
||||
<field name="model_id" ref="yuthon_property.model_yuthon_property"/>
|
||||
<field name="binding_model_id" ref="yuthon_property.model_yuthon_property"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">action = model.update_lessee_id()</field>
|
||||
</record>
|
||||
<!--租金-->
|
||||
<record id="view_property_rent_list_search" model="ir.ui.view">
|
||||
<field name="name">property.rent.list.search</field>
|
||||
|
||||
@@ -285,9 +285,12 @@
|
||||
<field name="water_fee_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="contract_id" column_invisible="1"/>
|
||||
<field name="charges"/>
|
||||
<field name="fees_id"/>
|
||||
<field name="proportional"/>
|
||||
<field name="property_meter_water_id"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard_id"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="location"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
@@ -295,9 +298,12 @@
|
||||
<field name="electricity_fee_ids" string=" ">
|
||||
<tree editable="bottom">
|
||||
<field name="contract_id" column_invisible="1"/>
|
||||
<field name="charges"/>
|
||||
<field name="fees_id"/>
|
||||
<field name="proportional"/>
|
||||
<field name="property_meter_archives_id"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard_id"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="location"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
@@ -692,23 +698,29 @@
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="水费" invisible="not is_water">
|
||||
<page string="水费" invisible="not is_water">
|
||||
<field name="water_fee_ids" string=" ">
|
||||
<tree editable="bottom" delete="false">
|
||||
<tree editable="bottom">
|
||||
<field name="contract_id" column_invisible="1"/>
|
||||
<field name="charges"/>
|
||||
<field name="fees_id"/>
|
||||
<field name="proportional"/>
|
||||
<field name="property_meter_water_id"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard_id"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="location"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
<page string="电费" invisible="not is_electricity">
|
||||
<field name="electricity_fee_ids" string=" ">
|
||||
<tree editable="bottom" delete="false">
|
||||
<tree editable="bottom">
|
||||
<field name="contract_id" column_invisible="1"/>
|
||||
<field name="charges"/>
|
||||
<field name="fees_id"/>
|
||||
<field name="proportional"/>
|
||||
<field name="property_meter_archives_id"/>
|
||||
<field name="rate"/>
|
||||
<field name="standard_id"/>
|
||||
<field name="installation_date"/>
|
||||
<field name="demolition_date"/>
|
||||
<field name="location"/>
|
||||
</tree>
|
||||
</field>
|
||||
</page>
|
||||
|
||||
@@ -271,12 +271,12 @@
|
||||
|
||||
<menuitem id="yuthon_property_electric_reading_menu"
|
||||
sequence="1"
|
||||
name="电表抄表任务"
|
||||
name="电表任务"
|
||||
parent="yuthon_property.yuthon_property_meter_menu"
|
||||
action="yuthon_property.action_property_meter_archives1"/>
|
||||
<menuitem id="yuthon_property_water_reading_menu"
|
||||
sequence="3"
|
||||
name="水表抄表任务"
|
||||
name="水表任务"
|
||||
parent="yuthon_property.yuthon_property_meter_menu"
|
||||
action="yuthon_property.action_property_meter_water1"/>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user