diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py
index f134cd0e8..22f647f45 100644
--- a/yuthon_hr_attendance/models/hr_attendance.py
+++ b/yuthon_hr_attendance/models/hr_attendance.py
@@ -286,10 +286,10 @@ class HrAttendance(models.Model):
'department': user.department_id.name, })
self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name)
- # 工程部 - 白班 白值
+ # 工程部 - 白班
def gc_white_in_remind(self):
ba_up_users = self.env['planning.slot'].search(
- [('role_id.name', '=', '工程部'), ('template_id.planning_name', 'in', ['白班', '白值'])])
+ [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白班')])
for user in ba_up_users:
if user.start_datetime.date() == fields.date.today():
self.env['card.remind.form'].create({
@@ -313,7 +313,7 @@ class HrAttendance(models.Model):
def gc_white_out_remind(self):
ba_up_users = self.env['planning.slot'].search(
- [('role_id.name', '=', '工程部'), ('template_id.planning_name', 'in', ['白班', '白值'])])
+ [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白班')])
for user in ba_up_users:
if user.start_datetime.date() == fields.date.today():
self.env['card.remind.form'].create({
@@ -323,6 +323,31 @@ class HrAttendance(models.Model):
'department': user.department_id.name, })
self.card_out_comment(user.resource_id.employee_id,user.template_id.planning_name)
+ # 工程部 - 白值
+ def gc_white_remind_in(self):
+ ba_up_users = self.env['planning.slot'].search(
+ [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白值')])
+ for user in ba_up_users:
+ if user.start_datetime.date() == fields.date.today():
+ self.env['card.remind.form'].create({
+ 'name': user.resource_id.employee_id.name,
+ 'start_time': datetime.now(),
+ 'shift': user.template_id.planning_name,
+ 'department': user.department_id.name, })
+ self.card_in_comment(user.resource_id, user.template_id.planning_name)
+
+ def gc_white_remind_out(self):
+ ba_up_users = self.env['planning.slot'].search(
+ [('role_id.name', '=', '工程部'), ('template_id.planning_name', '=', '白值')])
+ for user in ba_up_users:
+ if user.start_datetime.date() == fields.date.today():
+ self.env['card.remind.form'].create({
+ 'name': user.resource_id.employee_id.name,
+ 'start_time': datetime.now(),
+ 'shift': user.template_id.planning_name,
+ 'department': user.department_id.name, })
+ self.card_out_comment(user.resource_id.employee_id, user.template_id.planning_name)
+
# 工程部-中值夜
def gc_night_remind_in(self):
ba_up_users = self.env['planning.slot'].search(
diff --git a/yuthon_issue/views/issue_library_views.xml b/yuthon_issue/views/issue_library_views.xml
index fbbe7a1be..ec4bc15aa 100644
--- a/yuthon_issue/views/issue_library_views.xml
+++ b/yuthon_issue/views/issue_library_views.xml
@@ -2673,7 +2673,7 @@
issue.library
tree,form
diff --git a/yuthon_property/models/property_deposit_list.py b/yuthon_property/models/property_deposit_list.py
index 4073aa170..d940dda74 100644
--- a/yuthon_property/models/property_deposit_list.py
+++ b/yuthon_property/models/property_deposit_list.py
@@ -6,4 +6,4 @@ class PropertyDepositList(models.Model):
_description = '押金列表'
property_id = fields.Many2one('yuthon.property', string='物业')
- lessee_id = fields.Many2one(related='property_id.lessee_id', string='承租方')
\ No newline at end of file
+ lessee_id = fields.Many2one('property.tenant.information', string='承租方')
\ No newline at end of file
diff --git a/yuthon_property/models/property_electric_reading.py b/yuthon_property/models/property_electric_reading.py
index 347f5943d..73414855f 100644
--- a/yuthon_property/models/property_electric_reading.py
+++ b/yuthon_property/models/property_electric_reading.py
@@ -11,7 +11,7 @@ class PropertyElectricReading(models.Model):
position = fields.Char(string='单元编号')
property_id = fields.Many2one('yuthon.property', string='地址')
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
- lessee_id = fields.Many2one(related='property_id.lessee_id', string="承租方")
+ lessee_id = fields.Many2one('property.tenant.information', string='承租方')
state = fields.Char(string='状态')
employee_ids = fields.Many2many('hr.employee', string='抄表人')
meter_type = fields.Selection([('electric', '电表'), ('water', '水表')], string='仪表类型')
@@ -19,13 +19,14 @@ class PropertyElectricReading(models.Model):
other = fields.Char(string='其他')
billing_period = fields.Date(string='账期')
meter_date= fields.Date(string='抄表年月')
- last_meter = fields.Date(string='上次')
+ last_dosage = fields.Float(string='上次')
+ last_meter = fields.Date(string='上次抄表日期')
current_meter = fields.Float(string='本次', tracking=True)
- apply_standards = fields.Char(string='应用标准')
+ fee_id = fields.Many2one('yuthon.water.setting', string="收费标准")
price_unit = fields.Float(string='单价')
ratio = fields.Float(string='倍率')
amount_wastage = fields.Float(string='损耗量')
- dosage = fields.Float(string='用量')
+ dosage = fields.Float(string='用量', compute='_compute_dosage')
is_push = fields.Boolean(string='已推送')
generate_charges = fields.Float(string='生成费用')
type = fields.Selection([('public', '公共'), ('fees', '收费')], string='收费类型')
@@ -61,8 +62,13 @@ class PropertyElectricReading(models.Model):
raise UserError(f"该仪表已经推送,不能重复推送")
self.env["property.tariff.list"].create({
'code': rec.name,
- 'property_id': rec.yuthon_property_id.id if rec.yuthon_property_id else None,
- 'ratio': rec.gauge_magnification,
- 'position': rec.unit_number,
- 'type': rec.type,
- })
\ No newline at end of file
+ 'property_id': rec.yuthon_property_id.id if rec.yuthon_property_id else None,
+ 'ratio': rec.gauge_magnification,
+ 'position': rec.unit_number,
+ 'type': rec.type,
+ })
+
+ @api.depends('last_dosage', 'current_meter')
+ def _compute_dosage(self):
+ for record in self:
+ record.dosage = record.current_meter - record.last_meter
\ No newline at end of file
diff --git a/yuthon_property/models/property_rent_list.py b/yuthon_property/models/property_rent_list.py
index 063fde13a..c43900bfd 100644
--- a/yuthon_property/models/property_rent_list.py
+++ b/yuthon_property/models/property_rent_list.py
@@ -6,7 +6,7 @@ class PropertyRentList(models.Model):
_description = '租金列表'
property_id = fields.Many2one('yuthon.property', string='物业')
- lessee_id = fields.Many2one(related='property_id.lessee_id', string='承租方')
+ lessee_id = fields.Many2one('property.tenant.information', string='承租方')
admin_id = fields.Many2one(related='property_id.admin_id', string="片区管理员")
company_id = fields.Many2one(related='property_id.company_id', string="所属公司")
rent_month = fields.Float(string='当月租金')
diff --git a/yuthon_property/models/property_tariff_list.py b/yuthon_property/models/property_tariff_list.py
index eebce76db..9ef7fedb2 100644
--- a/yuthon_property/models/property_tariff_list.py
+++ b/yuthon_property/models/property_tariff_list.py
@@ -13,7 +13,7 @@ class PropertyTariffList(models.Model):
year = fields.Char(string='所属年')
month = fields.Char(string='所属月')
tariff_meter_reading = fields.Float(string='电费读数')
- tariff_fee_standard = fields.Float(string='电费标准')
+ fee_id = fields.Many2one('yuthon.water.setting', string="收费标准")
original_amount = fields.Float(string='金额')
deduction_amount = fields.Float(string='减免金额')
remarks = fields.Text(string='备注')
diff --git a/yuthon_property/models/property_water_list.py b/yuthon_property/models/property_water_list.py
index 8b0475e84..7a72a2a6b 100644
--- a/yuthon_property/models/property_water_list.py
+++ b/yuthon_property/models/property_water_list.py
@@ -13,8 +13,8 @@ class PropertyWaterList(models.Model):
year = fields.Char(string='所属年')
month = fields.Char(string='所属月')
water_meter_reading = fields.Float(string='水表读数')
- water_fee_standard = fields.Float(string='水费标准')
- original_amount = fields.Float(string='原金额')
+ fee_id = fields.Many2one('yuthon.water.setting', string="水费标准")
+ original_amount = fields.Float(string='金额')
deduction_amount = fields.Float(string='减免金额')
remarks = fields.Text(string='备注')
is_cancel = fields.Boolean(string='作废')
diff --git a/yuthon_property/models/property_water_reading.py b/yuthon_property/models/property_water_reading.py
index bc2027162..f15b75cf2 100644
--- a/yuthon_property/models/property_water_reading.py
+++ b/yuthon_property/models/property_water_reading.py
@@ -1,4 +1,5 @@
from odoo import models, fields, api
+from odoo.odoo.tools.populate import compute
class PropertyWaterReading(models.Model):
@@ -11,7 +12,7 @@ class PropertyWaterReading(models.Model):
property_id = fields.Many2one('yuthon.property', string='地址')
users_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user.id)
contract = fields.Char(string='合同')
- lessee_id = fields.Many2one(related='property_id.lessee_id', string="承租方")
+ lessee_id = fields.Many2one('property.tenant.information', string='承租方')
state = fields.Char(string='状态')
employee_ids = fields.Many2many('hr.employee', string='抄表人')
meter_type = fields.Selection([('electric', '电表'), ('water', '水表')], string='仪表类型')
@@ -19,13 +20,14 @@ class PropertyWaterReading(models.Model):
other = fields.Char(string='其他')
billing_period = fields.Date(string='账期')
meter_date= fields.Date(string='抄表年月')
- last_meter = fields.Date(string='上次')
+ last_dosage = fields.Float(string='上次')
+ last_meter = fields.Date(string='上次抄表日期')
current_meter = fields.Float(string='本次', tracking=True)
- apply_standards = fields.Char(string='应用标准')
+ fee_id = fields.Many2one('yuthon.water.setting', string="收费标准")
price_unit = fields.Float(string='单价')
ratio = fields.Float(string='倍率')
amount_wastage = fields.Float(string='损耗量')
- dosage = fields.Float(string='用量')
+ dosage = fields.Float(string='用量', compute='_compute_dosage')
is_push = fields.Boolean(string='已推送')
generate_charges = fields.Float(string='生成费用')
type = fields.Selection([('public', '公共'), ('fees', '收费')], string='收费类型')
@@ -43,6 +45,11 @@ class PropertyWaterReading(models.Model):
description="您有抄表待处理,请及时处理",
url=str, btntxt="详细信息")
+ @api.depends('last_dosage', 'current_meter')
+ def _compute_dosage(self):
+ for record in self:
+ record.dosage = record.current_meter - record.last_meter
+
def button_details(self):
return {
'name': '抄表详情',
diff --git a/yuthon_property/models/yuthon_resource_mgmt_config.py b/yuthon_property/models/yuthon_resource_mgmt_config.py
index 5b40ba804..37d26fe16 100644
--- a/yuthon_property/models/yuthon_resource_mgmt_config.py
+++ b/yuthon_property/models/yuthon_resource_mgmt_config.py
@@ -70,6 +70,7 @@ class YuthonElectricitySetting(models.Model):
_description = '电费标准配置'
name = fields.Char(string="电费标准")
+ amount = fields.Float(string="金额")
class YuthonWaterSetting(models.Model):
@@ -77,6 +78,7 @@ class YuthonWaterSetting(models.Model):
_description = '水费标准配置'
name = fields.Char(string="水费标准")
+ amount = fields.Float(string="金额")
class YuthonPropertySetting(models.Model):
diff --git a/yuthon_property/views/property_electric_reading_views.xml b/yuthon_property/views/property_electric_reading_views.xml
index 483644fa2..644257af1 100644
--- a/yuthon_property/views/property_electric_reading_views.xml
+++ b/yuthon_property/views/property_electric_reading_views.xml
@@ -9,14 +9,16 @@
+
-
+
+
-
+
@@ -53,7 +55,7 @@
-
+
diff --git a/yuthon_property/views/property_tariff_list_views.xml b/yuthon_property/views/property_tariff_list_views.xml
index d8b6cedde..5233a15a9 100644
--- a/yuthon_property/views/property_tariff_list_views.xml
+++ b/yuthon_property/views/property_tariff_list_views.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/yuthon_property/views/property_water_list_views.xml b/yuthon_property/views/property_water_list_views.xml
index b805acf3f..7486decce 100644
--- a/yuthon_property/views/property_water_list_views.xml
+++ b/yuthon_property/views/property_water_list_views.xml
@@ -11,7 +11,7 @@
-
+
diff --git a/yuthon_property/views/property_water_reading_views.xml b/yuthon_property/views/property_water_reading_views.xml
index 302d55da4..b3d2a14cb 100644
--- a/yuthon_property/views/property_water_reading_views.xml
+++ b/yuthon_property/views/property_water_reading_views.xml
@@ -14,9 +14,10 @@
-
+
+
-
+
@@ -53,7 +54,7 @@
-
+
diff --git a/yuthon_property/views/yuthon_resource_mgmt_config_views.xml b/yuthon_property/views/yuthon_resource_mgmt_config_views.xml
index 5ec5474ae..2b6bad568 100644
--- a/yuthon_property/views/yuthon_resource_mgmt_config_views.xml
+++ b/yuthon_property/views/yuthon_resource_mgmt_config_views.xml
@@ -138,6 +138,7 @@
+
@@ -152,6 +153,7 @@
+
diff --git a/yuthon_property_approval/models/property_lease_contract.py b/yuthon_property_approval/models/property_lease_contract.py
index 44800de78..60467220f 100644
--- a/yuthon_property_approval/models/property_lease_contract.py
+++ b/yuthon_property_approval/models/property_lease_contract.py
@@ -57,6 +57,7 @@ class PropertyTariffList(models.Model):
contract_id = fields.Many2one('property.lease.contract', string="关联租赁合同审批")
+
class PropertyWaterList(models.Model):
_inherit = 'property.water.list'
@@ -68,23 +69,82 @@ class PropertyElectricReading(models.Model):
contract_id = fields.Many2one('property.lease.contract', string="关联租赁合同审批")
def button_push_electric(self):
- pass
-
+ for rec in self:
+ if rec.is_push:
+ raise UserError("该抄表已经推送,不能重复推送")
+ self.env["property.tariff.list"].create({
+ 'tariff_meter_number': rec.code,
+ 'property_id': rec.property_id.id if rec.property_id else None,
+ 'contract_id': rec.contract_id.id if rec.contract_id else None,
+ 'lessee_id':rec.contract_id.lessee_id.id if rec.contract_id.lessee_id else None,
+ 'fee_id': rec.fee_id.id if rec.fee_id else None,
+ 'due_date': rec.meter_date,
+ 'original_amount':rec.fee_id.amount * rec.dosage if rec.fee_id.amount else 0,
+ 'tariff_meter_reading': rec.dosage
+ })
+ rec.write({
+ 'is_push': True,
+ })
def batch_reading_electric(self):
- pass
-
-
+ archives_ids = self.env["property.electric.reading"].browse(
+ self._context.get('active_ids', self._context.get('active_id')))
+ for record in archives_ids:
+ if record.is_push:
+ raise UserError(f"该{record.name}仪表已经推送,不能重复推送")
+ self.env["property.water.list"].create({
+ 'tariff_meter_number': record.code,
+ 'property_id': record.property_id.id if record.property_id else None,
+ 'contract_id': record.contract_id.id if record.contract_id else None,
+ 'lessee_id': record.contract_id.lessee_id.id if record.contract_id.lessee_id else None,
+ 'fee_id': record.fee_id.id if record.fee_id else None,
+ 'due_date': record.meter_date,
+ 'original_amount': record.fee_id.amount * record.dosage if record.fee_id.amount else 0,
+ 'tariff_meter_reading': record.dosage
+ })
+ record.write({
+ 'is_push': True,
+ })
class PropertyWaterReading(models.Model):
_inherit = 'property.water.reading'
contract_id = fields.Many2one('property.lease.contract', string="关联租赁合同审批")
def button_push_water(self):
- pass
-
+ for rec in self:
+ if rec.is_push:
+ raise UserError("该抄表已经推送,不能重复推送")
+ self.env["property.water.list"].create({
+ 'water_meter_number': rec.code,
+ 'property_id': rec.property_id.id if rec.property_id else None,
+ 'fee_id': rec.fee_id.id if rec.fee_id else None,
+ 'lessee_id': rec.contract_id.lessee_id.id if rec.contract_id.lessee_id else None,
+ 'contract_id': rec.contract_id.id if rec.contract_id else None,
+ 'original_amount': rec.fee_id.amount * rec.dosage if rec.fee_id.amount else 0,
+ 'due_date': rec.meter_date,
+ 'water_meter_reading':rec.dosage
+ })
+ rec.write({
+ 'is_push': True,
+ })
def batch_reading_water(self):
- pass
-
+ archives_ids = self.env["property.water.reading"].browse(
+ self._context.get('active_ids', self._context.get('active_id')))
+ for record in archives_ids:
+ if record.is_push:
+ raise UserError(f"该{record.name}仪表已经推送,不能重复推送")
+ self.env["property.water.list"].create({
+ 'water_meter_number': record.code,
+ 'property_id': record.property_id.id if record.property_id else None,
+ 'contract_id': record.contract_id.id if record.contract_id else None,
+ 'lessee_id': record.contract_id.lessee_id.id if record.contract_id.lessee_id else None,
+ 'fee_id': record.fee_id.id if record.fee_id else None,
+ 'due_date': record.meter_date,
+ 'original_amount': record.fee_id.amount * record.dosage if record.fee_id.amount else 0,
+ 'water_meter_reading':record.dosage
+ })
+ record.write({
+ 'is_push': True,
+ })
class PropertyMeterArchives(models.Model):
_inherit = 'property.meter.archives'
@@ -101,36 +161,41 @@ class PropertyMeterArchives(models.Model):
def button_reading_push(self):
for rec in self:
- rec.write({
- 'is_push': True,
- })
if rec.is_push:
raise UserError("该仪表已经推送,不能重复推送")
self.env["property.electric.reading"].create({
'code': rec.name,
'property_id': rec.yuthon_property_id.id if rec.yuthon_property_id else None,
+ 'fee_id': rec.fee_id.id if rec.standards_id else None,
+ 'lessee_id': rec.contract_id.lessee_id.id if rec.contract_id.lessee_id else None,
'ratio': rec.gauge_magnification,
'position': rec.unit_number,
'type': rec.type,
'contract_id':rec.contract_id.id
})
+ rec.write({
+ 'is_push': True,
+ })
def batch_reading_push(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.write({
- 'is_push': True,
- })
if record.is_push:
raise UserError(f"该{record.name}仪表已经推送,不能重复推送")
self.env["property.electric.reading"].create({
'code': record.name,
'property_id': record.yuthon_property_id.id if record.yuthon_property_id else None,
+ 'fee_id': record.standards_id.id if record.standards_id else None,
+ 'lessee_id': record.contract_id.lessee_id.id if record.contract_id.lessee_id else None,
'ratio': record.gauge_magnification,
'position': record.unit_number,
'type': record.type,
'contract_id':record.contract_id.id
})
+ record.write({
+ 'is_push': True,
+ })
+
class PropertyMeterWater(models.Model):
_inherit = 'property.meter.water'
@@ -139,19 +204,21 @@ class PropertyMeterWater(models.Model):
def button_reading_water_push(self):
for rec in self:
- rec.write({
- 'is_push': True,
- })
if rec.is_push:
raise UserError(f"该仪表已经推送,不能重复推送")
self.env["property.water.reading"].create({
'code': rec.name ,
'property_id': rec.yuthon_property_id.id if rec.yuthon_property_id else None,
'ratio': rec.gauge_magnification,
+ 'fee_id': rec.standards_id.id if rec.standards_id else None,
+ 'lessee_id': rec.contract_id.lessee_id.id if rec.contract_id.lessee_id else None,
'position': rec.unit_number ,
'type': rec.type,
'contract_id': rec.contract_id.id
})
+ rec.write({
+ 'is_push': True,
+ })
def batch_reading_water_push(self):
water_ids = self.env["property.meter.water"].browse(self._context.get('active_ids', self._context.get('active_id')))
@@ -164,6 +231,8 @@ class PropertyMeterWater(models.Model):
self.env["property.water.reading"].create({
'code': record.name,
'property_id': record.yuthon_property_id.id if record.yuthon_property_id else None,
+ 'fee_id': record.standards_id.id if record.standards_id else None,
+ 'lessee_id': record.contract_id.lessee_id.id if record.contract_id.lessee_id else None,
'ratio': record.gauge_magnification,
'position': record.unit_number,
'type': record.type,
@@ -187,7 +256,7 @@ class PropertyContractLine(models.Model):
yuthon_property_id = fields.Many2one('yuthon.property', string="关联物业信息")
lease_contract_id = fields.Many2one('property.lease.contract', string="合同名称")
- lessee_id = fields.Many2one(related='yuthon_property_id.lessee_id', string="承租方")
+ lessee_id = fields.Many2one('property.tenant.information', string='承租方')
start_time = fields.Date(string="生效日期")
end_date = fields.Date(string="失效日期")