diff --git a/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py b/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py index 0ff6c6838..fe7670dc7 100644 --- a/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py +++ b/yuthon_hr_attendance/models/hr_attendance_detail_wechat.py @@ -130,6 +130,11 @@ class HrAttendanceDetail(models.Model): template_domain.append(('planning_name', '=', planning_name)) template_domain.append(('department_id', 'in', all_dept_ids)) template = self.env['planning.slot.template'].search(template_domain, limit=1) + # 如果模板里面找不到这个人 则还是往下判断(模板为空) + if employee.id not in template.role_id.resource_ids.employee_id.ids: + template = None + + if not template: role_templates = [ {'role_name': '厨卫(集团)', 'template': None}, @@ -145,12 +150,14 @@ class HrAttendanceDetail(models.Model): employee_list = list(employee_ids) if employee.id in employee_list: template = item['template'] - break + break + if not template: template = self.env['planning.slot.template'].search( [('role_id.name', '=', '集团行政')], limit=1 ) + next_day = current_data + timedelta(days=1) start_datetime = datetime.combine(current_data, datetime.min.time()) - timedelta(hours=8) # 判断是否需要包含次日记录 diff --git a/yuthon_property/models/property_meter_archives.py b/yuthon_property/models/property_meter_archives.py index ef7135a36..82c79fae9 100644 --- a/yuthon_property/models/property_meter_archives.py +++ b/yuthon_property/models/property_meter_archives.py @@ -269,11 +269,24 @@ class MeterArchivesLine(models.Model): else: record.current_meter = 0 - @api.onchange('line_loss', 'current_meter', 'unit') + @api.onchange('current_meter', 'unit') def onchange_receivables(self): for record in self: - if record.line_loss and record.current_meter and record.unit: - raw_value = record.current_meter * record.unit * (1 + record.line_loss) * record.gauge_magnification + # 因为current_meter 取不到值所有复制一遍 + if record.current_read >= record.last_read: + current_meter = record.current_read - record.last_read + else: + if record.current_read: + if record.maximum_count > 0: + max_value = 10 ** record.maximum_count - 1 + current_meter = max_value - record.last_read + record.current_read + else: + current_meter = 0 + else: + current_meter = 0 + + if current_meter and record.unit: + raw_value = current_meter * record.unit * (1 + record.line_loss) * record.gauge_magnification record.receivables = round(raw_value, 1) else: record.receivables = 0.0 diff --git a/yuthon_property/models/property_meter_water.py b/yuthon_property/models/property_meter_water.py index af87d3948..3e7febb28 100644 --- a/yuthon_property/models/property_meter_water.py +++ b/yuthon_property/models/property_meter_water.py @@ -238,11 +238,24 @@ class MeterWaterLine(models.Model): else: rec.meter_date_month = False - @api.onchange('line_loss', 'current_meter', 'unit') + @api.onchange('current_meter', 'unit') def onchange_receivables(self): for record in self: - if record.line_loss and record.current_meter and record.unit: - raw_value = record.current_meter * record.unit * (1 + record.line_loss) * record.gauge_magnification + # 因为current_meter 取不到值所有复制一遍 + if record.current_read >= record.last_read: + current_meter = record.current_read - record.last_read + else: + if record.current_read: + if record.maximum_count > 0: + max_value = 10 ** record.maximum_count - 1 + current_meter = max_value - record.last_read + record.current_read + else: + current_meter = 0 + else: + current_meter = 0 + + if current_meter and record.unit: + raw_value = current_meter * record.unit * (1 + record.line_loss) * record.gauge_magnification record.receivables = round(raw_value, 1) else: record.receivables = 0.0 diff --git a/yuthon_property/views/property_meter_archives_views.xml b/yuthon_property/views/property_meter_archives_views.xml index f72424250..5bd409bdc 100644 --- a/yuthon_property/views/property_meter_archives_views.xml +++ b/yuthon_property/views/property_meter_archives_views.xml @@ -99,7 +99,7 @@ - +