Merge remote-tracking branch 'origin/fix_installer' into production
This commit is contained in:
commit
61bac19da8
10 changed files with 147 additions and 258 deletions
|
|
@ -54,30 +54,21 @@
|
||||||
<div class="row" style="font-size: 14px;">
|
<div class="row" style="font-size: 14px;">
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<div>موقعیت مکانی (UTM): X: {{ latest_report.utm_x|default:'-' }} , Y: {{ latest_report.utm_y|default:'-' }}</div>
|
<div>موقعیت مکانی (UTM): X: {{ latest_report.utm_x|default:'-' }} , Y: {{ latest_report.utm_y|default:'-' }}</div>
|
||||||
<div>نیرو محرکه چاه: {{ latest_report.driving_force|default:'-' }}</div>
|
<div>نوع پمپ: {{ latest_report.get_pump_type_display|default:'-' }}</div>
|
||||||
<div>نوع کنتور: {{ latest_report.get_meter_type_display|default:'-' }}</div>
|
<div> نوع کنتور: {{ latest_report.get_meter_type_display|default:'-' }}</div>
|
||||||
{% if latest_report.meter_type == 'smart' %}
|
<div>نام شرکت کنتورساز: {{ latest_report.water_meter_manufacturer.name|default:'-' }}</div>
|
||||||
<div>مدل کنتور: {{ latest_report.get_meter_model_display|default:'-' }}</div>
|
<div>قطر لوله آبده (اینچ): {{ latest_report.discharge_pipe_diameter|default:'-' }}</div>
|
||||||
{% else %}
|
|
||||||
<div>سایز کنتور: {{ latest_report.meter_size|default:'-' }}</div>
|
|
||||||
{% endif %}
|
|
||||||
<div>نوع مصرف: {{ latest_report.get_usage_type_display|default:'-' }}</div>
|
<div>نوع مصرف: {{ latest_report.get_usage_type_display|default:'-' }}</div>
|
||||||
<div>شماره سیمکارت: {{ latest_report.sim_number|default:'-' }}</div>
|
<div>توان مصرفی (کیلووات): {{ latest_report.motor_power|default:'-' }}</div>
|
||||||
<div>شارژ کنتور (متر مکعب): {{ latest_report.meter_charge|default:'-' }}</div>
|
|
||||||
<div>پایان اعتبار شارژ: {{ latest_report.meter_charge_expiration_date|to_jalali|default:'-' }}</div>
|
|
||||||
<div>شماره سریال کنتور: {{ instance.well.water_meter_serial_number|default:'-' }}</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<div>قطر لوله آبده (اینچ): {{ latest_report.discharge_pipe_diameter|default:'-' }}</div>
|
<div>دبی بعد از کالیبراسیون (لیتر بر ثانیه): {{ latest_report.flow_rate|default:'-' }}</div>
|
||||||
|
<div>ساعت کارکرد پروانه: {{ latest_report.licence_working_hour|default:'-' }}</div>
|
||||||
|
<div>شماره پلمپ: {{ latest_report.seal_number|default:'-' }}</div>
|
||||||
<div>شماره پروانه بهرهبرداری چاه: {{ latest_report.exploitation_license_number|default:'-' }}</div>
|
<div>شماره پروانه بهرهبرداری چاه: {{ latest_report.exploitation_license_number|default:'-' }}</div>
|
||||||
<div>قدرت موتور (کیلووات ساعت): {{ latest_report.motor_power|default:'-' }}</div>
|
<div>پایان اعتبار شارژ: {{ latest_report.meter_charge_expiration_date|to_jalali|default:'-' }}</div>
|
||||||
<div>دبی (لیتر بر ثانیه): {{ latest_report.flow_rate|default:'-' }}</div>
|
<div>سریال کنتور: {{ instance.well.water_meter_serial_number|default:'-' }}</div>
|
||||||
<div>عدد کنتور (متر مکعب): {{ latest_report.meter_reading|default:'-' }}</div>
|
|
||||||
<div>پلمپ تابلو: {{ latest_report.is_panel_sealed|yesno:'دارد,ندارد' }}</div>
|
|
||||||
<div>تابلو قطع: {{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}</div>
|
<div>تابلو قطع: {{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}</div>
|
||||||
<div>انجام عملیات قطع: {{ latest_report.is_disconnection_done|yesno:'دارد,ندارد' }}</div>
|
|
||||||
<div>نام شرکت کنتورساز: {{ latest_report.water_meter_manufacturer.name|default:'-' }}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4">
|
<div class="col-4">
|
||||||
<!-- Signature -->
|
<!-- Signature -->
|
||||||
|
|
|
||||||
|
|
@ -75,29 +75,23 @@
|
||||||
<div class="row g-2 small">
|
<div class="row g-2 small">
|
||||||
<div class="col-12 col-md-6">
|
<div class="col-12 col-md-6">
|
||||||
<div class="d-flex gap-2"><span class="text-muted">موقعیت مکانی (UTM):</span><span class="fw-medium">X: {{ latest_report.utm_x|default:'-' }} , Y: {{ latest_report.utm_y|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">موقعیت مکانی (UTM):</span><span class="fw-medium">X: {{ latest_report.utm_x|default:'-' }} , Y: {{ latest_report.utm_y|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">نیرو محرکه چاه:</span><span class="fw-medium">{{ latest_report.driving_force|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">نوع پمپ:</span><span class="fw-medium">{{ latest_report.get_pump_type_display|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">نوع کنتور:</span><span class="fw-medium">{{ latest_report.get_meter_type_display|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">نوع کنتور:</span><span class="fw-medium">{{ latest_report.get_meter_type_display|default:'-' }}</span></div>
|
||||||
{% if latest_report.meter_type == 'smart' %}
|
<div class="d-flex gap-2"><span class="text-muted">نام شرکت کنتورساز:</span><span class="fw-medium">{{ latest_report.water_meter_manufacturer.name|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">مدل کنتور:</span><span class="fw-medium">{{ latest_report.get_meter_model_display|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">قطر لوله آبده (اینچ):</span><span class="fw-medium">{{ latest_report.discharge_pipe_diameter|default:'-' }}</span></div>
|
||||||
{% else %}
|
|
||||||
<div class="d-flex gap-2"><span class="text-muted">سایز کنتور:</span><span class="fw-medium">{{ latest_report.meter_size|default:'-' }}</span></div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="d-flex gap-2"><span class="text-muted">نوع مصرف:</span><span class="fw-medium">{{ latest_report.get_usage_type_display|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">نوع مصرف:</span><span class="fw-medium">{{ latest_report.get_usage_type_display|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">شماره سیمکارت:</span><span class="fw-medium">{{ latest_report.sim_number|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">توان مصرفی (کیلووات):</span><span class="fw-medium">{{ latest_report.motor_power|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">شارژ کنتور (متر مکعب):</span><span class="fw-medium">{{ latest_report.meter_charge|default:'-' }}</span></div>
|
|
||||||
<div class="d-flex gap-2"><span class="text-muted">پایان اعتبار شارژ:</span><span class="fw-medium">{{ latest_report.meter_charge_expiration_date|to_jalali|default:'-' }}</span></div>
|
|
||||||
<div class="d-flex gap-2"><span class="text-muted">شماره سریال کنتور:</span><span class="fw-medium">{{ instance.well.water_meter_serial_number|default:'-' }}</span></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-6">
|
<div class="col-12 col-md-6">
|
||||||
<div class="d-flex gap-2"><span class="text-muted">قطر لوله آبده (اینچ):</span><span class="fw-medium">{{ latest_report.discharge_pipe_diameter|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">دبی بعد از کالیبراسیون (لیتر بر ثانیه):</span><span class="fw-medium">{{ latest_report.flow_rate|default:'-' }}</span></div>
|
||||||
|
<div class="d-flex gap-2"><span class="text-muted">ساعت کارکرد پروانه:</span><span class="fw-medium">{{ latest_report.licence_working_hour|default:'-' }}</span></div>
|
||||||
|
<div class="d-flex gap-2"><span class="text-muted">شماره پلمپ:</span><span class="fw-medium">{{ latest_report.seal_number|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">شماره پروانه بهرهبرداری چاه:</span><span class="fw-medium">{{ latest_report.exploitation_license_number|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">شماره پروانه بهرهبرداری چاه:</span><span class="fw-medium">{{ latest_report.exploitation_license_number|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">قدرت موتور (کیلووات ساعت):</span><span class="fw-medium">{{ latest_report.motor_power|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">پایان اعتبار شارژ:</span><span class="fw-medium">{{ latest_report.meter_charge_expiration_date|to_jalali|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">دبی (لیتر بر ثانیه):</span><span class="fw-medium">{{ latest_report.flow_rate|default:'-' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">سریال کنتور:</span><span class="fw-medium">{{ instance.well.water_meter_serial_number|default:'-' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">عدد کنتور (متر مکعب):</span><span class="fw-medium">{{ latest_report.meter_reading|default:'-' }}</span></div>
|
|
||||||
<div class="d-flex gap-2"><span class="text-muted">پلمپ تابلو:</span><span class="fw-medium">{{ latest_report.is_panel_sealed|yesno:'دارد,ندارد' }}</span></div>
|
|
||||||
<div class="d-flex gap-2"><span class="text-muted">تابلو قطع:</span><span class="fw-medium">{{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}</span></div>
|
<div class="d-flex gap-2"><span class="text-muted">تابلو قطع:</span><span class="fw-medium">{{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}</span></div>
|
||||||
<div class="d-flex gap-2"><span class="text-muted">انجام عملیات قطع:</span><span class="fw-medium">{{ latest_report.is_disconnection_done|yesno:'دارد,ندارد' }}</span></div>
|
|
||||||
<div class="d-flex gap-2"><span class="text-muted">نام شرکت کنتورساز:</span><span class="fw-medium">{{ latest_report.water_meter_manufacturer.name|default:'-' }}</span></div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="signature-section d-flex justify-content-end">
|
<div class="signature-section d-flex justify-content-end">
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ def certificate_step(request, instance_id, step_id):
|
||||||
messages.error(request, 'مانده فاکتور باید صفر باشد')
|
messages.error(request, 'مانده فاکتور باید صفر باشد')
|
||||||
return redirect('processes:request_list')
|
return redirect('processes:request_list')
|
||||||
|
|
||||||
template = CertificateTemplate.objects.filter(is_active=True).order_by('-created').first()
|
template = CertificateTemplate.objects.filter(is_active=True, company=instance.broker.company).order_by('-created').first()
|
||||||
if not template:
|
if not template:
|
||||||
return render(request, 'certificates/missing.html', {})
|
return render(request, 'certificates/missing.html', {})
|
||||||
|
|
||||||
|
|
|
||||||
BIN
db.sqlite3
Normal file
BIN
db.sqlite3
Normal file
Binary file not shown.
|
|
@ -25,11 +25,12 @@ class InstallationReportAdmin(admin.ModelAdmin):
|
||||||
'assignment', 'visited_date', 'meter_type', 'meter_size', 'water_meter_manufacturer',
|
'assignment', 'visited_date', 'meter_type', 'meter_size', 'water_meter_manufacturer',
|
||||||
'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number',
|
'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number',
|
||||||
'motor_power', 'flow_rate', 'meter_reading', 'meter_charge', 'meter_charge_expiration_date',
|
'motor_power', 'flow_rate', 'meter_reading', 'meter_charge', 'meter_charge_expiration_date',
|
||||||
|
'pump_type', 'licence_working_hour',
|
||||||
'new_water_meter_serial', 'seal_number', 'sim_number',
|
'new_water_meter_serial', 'seal_number', 'sim_number',
|
||||||
'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done',
|
'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done',
|
||||||
'is_meter_suspicious', 'approved', 'created'
|
'is_meter_suspicious', 'approved', 'created'
|
||||||
)
|
)
|
||||||
list_filter = ('is_meter_suspicious', 'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done', 'approved', 'visited_date', 'meter_type', 'usage_type', 'water_meter_manufacturer')
|
list_filter = ('is_meter_suspicious', 'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done', 'approved', 'visited_date', 'meter_type', 'pump_type', 'usage_type', 'water_meter_manufacturer')
|
||||||
search_fields = (
|
search_fields = (
|
||||||
'assignment__process_instance__code', 'new_water_meter_serial', 'seal_number', 'exploitation_license_number', 'sim_number'
|
'assignment__process_instance__code', 'new_water_meter_serial', 'seal_number', 'exploitation_license_number', 'sim_number'
|
||||||
)
|
)
|
||||||
|
|
@ -50,7 +51,7 @@ class InstallationReportAdmin(admin.ModelAdmin):
|
||||||
'fields': ('usage_type', 'exploitation_license_number')
|
'fields': ('usage_type', 'exploitation_license_number')
|
||||||
}),
|
}),
|
||||||
('توان و محرکه', {
|
('توان و محرکه', {
|
||||||
'fields': ('driving_force', 'motor_power')
|
'fields': ('driving_force', 'motor_power', 'pump_type', 'licence_working_hour')
|
||||||
}),
|
}),
|
||||||
('وضعیت تابلو/قطع', {
|
('وضعیت تابلو/قطع', {
|
||||||
'fields': ('is_panel_sealed', 'is_panel_cut', 'is_disconnection_done')
|
'fields': ('is_panel_sealed', 'is_panel_cut', 'is_disconnection_done')
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,12 @@ class InstallationReportForm(forms.ModelForm):
|
||||||
model = InstallationReport
|
model = InstallationReport
|
||||||
fields = [
|
fields = [
|
||||||
'visited_date', 'new_water_meter_serial', 'seal_number',
|
'visited_date', 'new_water_meter_serial', 'seal_number',
|
||||||
'utm_x', 'utm_y', 'meter_type', 'meter_size', 'meter_model',
|
'utm_x', 'utm_y', 'meter_type',
|
||||||
'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number',
|
'discharge_pipe_diameter', 'usage_type', 'exploitation_license_number',
|
||||||
'motor_power', 'flow_rate', 'meter_reading', 'meter_charge', 'meter_charge_expiration_date',
|
'motor_power', 'flow_rate', 'meter_charge_expiration_date',
|
||||||
'is_panel_sealed', 'is_panel_cut', 'is_disconnection_done',
|
'pump_type', 'licence_working_hour',
|
||||||
'water_meter_manufacturer', 'sim_number', 'driving_force',
|
'is_panel_cut',
|
||||||
|
'water_meter_manufacturer',
|
||||||
'is_meter_suspicious', 'description'
|
'is_meter_suspicious', 'description'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -60,16 +61,7 @@ class InstallationReportForm(forms.ModelForm):
|
||||||
('smart', 'هوشمند (آب و برق)'),
|
('smart', 'هوشمند (آب و برق)'),
|
||||||
('volumetric', 'حجمی')
|
('volumetric', 'حجمی')
|
||||||
]),
|
]),
|
||||||
'meter_size': forms.TextInput(attrs={
|
# meter_size and meter_model removed from form UI
|
||||||
'class': 'form-control'
|
|
||||||
}),
|
|
||||||
'meter_model': forms.Select(attrs={
|
|
||||||
'class': 'form-select'
|
|
||||||
}, choices=[
|
|
||||||
('', 'انتخاب کنید'),
|
|
||||||
('direct', 'مستقیم'),
|
|
||||||
('indirect', 'غیرمستقیم')
|
|
||||||
]),
|
|
||||||
'discharge_pipe_diameter': forms.NumberInput(attrs={
|
'discharge_pipe_diameter': forms.NumberInput(attrs={
|
||||||
'class': 'form-control',
|
'class': 'form-control',
|
||||||
'required': True
|
'required': True
|
||||||
|
|
@ -96,16 +88,7 @@ class InstallationReportForm(forms.ModelForm):
|
||||||
'min': '0',
|
'min': '0',
|
||||||
'step': '0.0001',
|
'step': '0.0001',
|
||||||
}),
|
}),
|
||||||
'meter_reading': forms.NumberInput(attrs={
|
# meter_reading and meter_charge removed from form UI
|
||||||
'class': 'form-control',
|
|
||||||
'min': '0',
|
|
||||||
'step': '0.0001',
|
|
||||||
}),
|
|
||||||
'meter_charge': forms.NumberInput(attrs={
|
|
||||||
'class': 'form-control',
|
|
||||||
'min': '0',
|
|
||||||
'step': '0.0001',
|
|
||||||
}),
|
|
||||||
'meter_charge_expiration_date': forms.DateInput(attrs={
|
'meter_charge_expiration_date': forms.DateInput(attrs={
|
||||||
'type': 'date',
|
'type': 'date',
|
||||||
'class': 'form-control',
|
'class': 'form-control',
|
||||||
|
|
@ -115,27 +98,26 @@ class InstallationReportForm(forms.ModelForm):
|
||||||
'id': 'id_water_meter_manufacturer',
|
'id': 'id_water_meter_manufacturer',
|
||||||
'required': True
|
'required': True
|
||||||
}),
|
}),
|
||||||
'sim_number': forms.TextInput(attrs={
|
# sim_number and driving_force removed from form UI
|
||||||
'class': 'form-control',
|
'pump_type': forms.Select(attrs={
|
||||||
|
'class': 'form-select',
|
||||||
'required': True
|
'required': True
|
||||||
}),
|
}),
|
||||||
'driving_force': forms.TextInput(attrs={
|
'licence_working_hour': forms.NumberInput(attrs={
|
||||||
'class': 'form-control',
|
'class': 'form-control',
|
||||||
|
'min': '0',
|
||||||
|
'step': '1',
|
||||||
'required': True
|
'required': True
|
||||||
}),
|
}),
|
||||||
'is_meter_suspicious': forms.CheckboxInput(attrs={
|
'is_meter_suspicious': forms.CheckboxInput(attrs={
|
||||||
'class': 'form-check-input',
|
'class': 'form-check-input',
|
||||||
'id': 'id_is_meter_suspicious',
|
'id': 'id_is_meter_suspicious',
|
||||||
}),
|
}),
|
||||||
'is_panel_sealed': forms.CheckboxInput(attrs={
|
# is_panel_sealed removed from form UI
|
||||||
'class': 'form-check-input',
|
|
||||||
}),
|
|
||||||
'is_panel_cut': forms.CheckboxInput(attrs={
|
'is_panel_cut': forms.CheckboxInput(attrs={
|
||||||
'class': 'form-check-input',
|
'class': 'form-check-input',
|
||||||
}),
|
}),
|
||||||
'is_disconnection_done': forms.CheckboxInput(attrs={
|
# is_disconnection_done removed from form UI
|
||||||
'class': 'form-check-input',
|
|
||||||
}),
|
|
||||||
'description': forms.Textarea(attrs={
|
'description': forms.Textarea(attrs={
|
||||||
'class': 'form-control',
|
'class': 'form-control',
|
||||||
'rows': 3
|
'rows': 3
|
||||||
|
|
@ -144,27 +126,22 @@ class InstallationReportForm(forms.ModelForm):
|
||||||
|
|
||||||
labels = {
|
labels = {
|
||||||
'visited_date': 'تاریخ مراجعه',
|
'visited_date': 'تاریخ مراجعه',
|
||||||
'new_water_meter_serial': 'سریال کنتور جدید',
|
'new_water_meter_serial': 'سریال کنتور',
|
||||||
'seal_number': 'شماره پلمپ',
|
'seal_number': 'شماره پلمپ',
|
||||||
'utm_x': 'UTM X',
|
'utm_x': 'UTM X',
|
||||||
'utm_y': 'UTM Y',
|
'utm_y': 'UTM Y',
|
||||||
'meter_type': 'نوع کنتور',
|
'meter_type': 'نوع کنتور',
|
||||||
'meter_size': 'سایز کنتور',
|
|
||||||
'discharge_pipe_diameter': 'قطر لوله آبده (اینچ)',
|
'discharge_pipe_diameter': 'قطر لوله آبده (اینچ)',
|
||||||
'usage_type': 'نوع مصرف',
|
'usage_type': 'نوع مصرف',
|
||||||
'exploitation_license_number': 'شماره پروانه بهرهبرداری',
|
'exploitation_license_number': 'شماره پروانه بهرهبرداری',
|
||||||
'motor_power': 'قدرت موتور (کیلووات ساعت)',
|
'motor_power': 'توان مصرفی (کیلووات)',
|
||||||
'flow_rate': 'دبی (لیتر بر ثانیه)',
|
'flow_rate': 'دبی بعد از کالیبراسیون (لیتر بر ثانیه)',
|
||||||
'meter_reading': 'عدد کنتور (متر مکعب)',
|
|
||||||
'meter_charge': 'شارژ کنتور (متر مکعب)',
|
|
||||||
'meter_charge_expiration_date': 'تاریخ پایان اعتبار شارژ',
|
'meter_charge_expiration_date': 'تاریخ پایان اعتبار شارژ',
|
||||||
|
'pump_type': 'نوع پمپ',
|
||||||
|
'licence_working_hour': 'ساعت کارکرد پروانه',
|
||||||
'water_meter_manufacturer': 'شرکت سازنده کنتور',
|
'water_meter_manufacturer': 'شرکت سازنده کنتور',
|
||||||
'sim_number': 'شماره سیمکارت',
|
|
||||||
'driving_force': 'نیرو محرکه چاه',
|
|
||||||
'is_meter_suspicious': 'کنتور مشکوک است',
|
'is_meter_suspicious': 'کنتور مشکوک است',
|
||||||
'is_panel_sealed': 'پلمپ تابلو',
|
|
||||||
'is_panel_cut': 'تابلو قطع',
|
'is_panel_cut': 'تابلو قطع',
|
||||||
'is_disconnection_done': 'انجام عملیات قطع',
|
|
||||||
'description': 'توضیحات'
|
'description': 'توضیحات'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,38 @@
|
||||||
|
# Generated by Django 5.2.4 on 2025-11-23 08:57
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('installations', '0013_remove_installationreport_post_calibration_flow_rate_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='installationreport',
|
||||||
|
name='licence_working_hour',
|
||||||
|
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='ساعت کارکرد پروانه'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='installationreport',
|
||||||
|
name='pump_type',
|
||||||
|
field=models.CharField(blank=True, choices=[('shaft_sleeve', 'شفت و غلاف'), ('submersible', 'شناور')], max_length=20, null=True, verbose_name='نوع پمپ'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='installationreport',
|
||||||
|
name='flow_rate',
|
||||||
|
field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='installationreport',
|
||||||
|
name='motor_power',
|
||||||
|
field=models.DecimalField(blank=True, decimal_places=4, max_digits=10, null=True, verbose_name='(کیلووات)توان مصرفی'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='installationreport',
|
||||||
|
name='new_water_meter_serial',
|
||||||
|
field=models.CharField(blank=True, max_length=50, null=True, verbose_name='سریال کنتور'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -41,7 +41,7 @@ class InstallationReport(BaseModel):
|
||||||
related_name='reports', verbose_name='اختصاص'
|
related_name='reports', verbose_name='اختصاص'
|
||||||
)
|
)
|
||||||
visited_date = models.DateField(null=True, blank=True, verbose_name='تاریخ مراجعه')
|
visited_date = models.DateField(null=True, blank=True, verbose_name='تاریخ مراجعه')
|
||||||
new_water_meter_serial = models.CharField(max_length=50, null=True, blank=True, verbose_name='سریال کنتور جدید')
|
new_water_meter_serial = models.CharField(max_length=50, null=True, blank=True, verbose_name='سریال کنتور')
|
||||||
seal_number = models.CharField(max_length=50, null=True, blank=True, verbose_name='شماره پلمپ')
|
seal_number = models.CharField(max_length=50, null=True, blank=True, verbose_name='شماره پلمپ')
|
||||||
is_meter_suspicious = models.BooleanField(default=False, verbose_name='کنتور مشکوک است؟')
|
is_meter_suspicious = models.BooleanField(default=False, verbose_name='کنتور مشکوک است؟')
|
||||||
METER_TYPE_CHOICES = [
|
METER_TYPE_CHOICES = [
|
||||||
|
|
@ -61,6 +61,12 @@ class InstallationReport(BaseModel):
|
||||||
is_panel_sealed = models.BooleanField(default=False, verbose_name='پلمپ تابلو')
|
is_panel_sealed = models.BooleanField(default=False, verbose_name='پلمپ تابلو')
|
||||||
is_panel_cut = models.BooleanField(default=False, verbose_name='تابلو قطع')
|
is_panel_cut = models.BooleanField(default=False, verbose_name='تابلو قطع')
|
||||||
is_disconnection_done = models.BooleanField(default=False, verbose_name='انجام عملیات قطع')
|
is_disconnection_done = models.BooleanField(default=False, verbose_name='انجام عملیات قطع')
|
||||||
|
PUMP_TYPE_CHOICES = [
|
||||||
|
('shaft_sleeve', 'شفت و غلاف'),
|
||||||
|
('submersible', 'شناور'),
|
||||||
|
]
|
||||||
|
pump_type = models.CharField(max_length=20, choices=PUMP_TYPE_CHOICES, null=True, blank=True, verbose_name='نوع پمپ')
|
||||||
|
licence_working_hour = models.PositiveIntegerField(null=True, blank=True, verbose_name='ساعت کارکرد پروانه')
|
||||||
discharge_pipe_diameter = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='قطر لوله آبده (اینچ)')
|
discharge_pipe_diameter = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='قطر لوله آبده (اینچ)')
|
||||||
USAGE_TYPE_CHOICES = [
|
USAGE_TYPE_CHOICES = [
|
||||||
('domestic', 'شرب و خدمات'),
|
('domestic', 'شرب و خدمات'),
|
||||||
|
|
@ -69,8 +75,8 @@ class InstallationReport(BaseModel):
|
||||||
]
|
]
|
||||||
usage_type = models.CharField(max_length=20, choices=USAGE_TYPE_CHOICES, null=True, verbose_name='نوع مصرف')
|
usage_type = models.CharField(max_length=20, choices=USAGE_TYPE_CHOICES, null=True, verbose_name='نوع مصرف')
|
||||||
exploitation_license_number = models.CharField(max_length=50, verbose_name='شماره پروانه بهرهبرداری چاه')
|
exploitation_license_number = models.CharField(max_length=50, verbose_name='شماره پروانه بهرهبرداری چاه')
|
||||||
motor_power = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(کیلووات ساعت) قدرت موتور')
|
motor_power = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(کیلووات)توان مصرفی')
|
||||||
flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی')
|
flow_rate = models.DecimalField(max_digits=10, decimal_places=4, null=True, blank=True, verbose_name='(لیتر بر ثانیه)دبی بعد از کالیبراسیون')
|
||||||
water_meter_manufacturer = models.ForeignKey('wells.WaterMeterManufacturer', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت سازنده کنتور آب')
|
water_meter_manufacturer = models.ForeignKey('wells.WaterMeterManufacturer', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت سازنده کنتور آب')
|
||||||
sim_number = models.CharField(max_length=20, null=True, blank=True, verbose_name='شماره سیمکارت')
|
sim_number = models.CharField(max_length=20, null=True, blank=True, verbose_name='شماره سیمکارت')
|
||||||
driving_force = models.CharField(max_length=50, null=True, blank=True, verbose_name='نیرو محرکه چاه')
|
driving_force = models.CharField(max_length=50, null=True, blank=True, verbose_name='نیرو محرکه چاه')
|
||||||
|
|
|
||||||
|
|
@ -146,33 +146,23 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-calendar-event bx-sm me-2"></i>تاریخ مراجعه: {{ report.visited_date|to_jalali|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-calendar-event bx-sm me-2"></i>تاریخ مراجعه: {{ report.visited_date|to_jalali|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال جدید: {{ report.new_water_meter_serial|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال کنتور: {{ report.new_water_meter_serial|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-lock-alt bx-sm me-2"></i>شماره پلمپ: {{ report.seal_number|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-lock-alt bx-sm me-2"></i>شماره پلمپ: {{ report.seal_number|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>نوع کنتور: {{ report.get_meter_type_display|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>نوع کنتور: {{ report.get_meter_type_display|default:'-' }}</p>
|
||||||
{% if report.meter_type == 'smart' %}
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>مدل کنتور: {{ report.get_meter_model_display|default:'-' }}</p>
|
|
||||||
{% else %}
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-ruler bx-sm me-2"></i>سایز کنتور: {{ report.meter_size|default:'-' }}</p>
|
|
||||||
{% endif %}
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-tachometer bx-sm me-2"></i>قطر لوله آبده (اینچ): {{ report.discharge_pipe_diameter|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-tachometer bx-sm me-2"></i>قطر لوله آبده (اینچ): {{ report.discharge_pipe_diameter|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-building bx-sm me-2"></i>سازنده کنتور: {{ report.water_meter_manufacturer|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-building bx-sm me-2"></i>شرکت سازنده کنتور: {{ report.water_meter_manufacturer.name|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-mobile bx-sm me-2"></i>شماره سیمکارت: {{ report.sim_number|default:'-' }}</p>
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-cog bx-sm me-2"></i>نیرو محرکه چاه: {{ report.driving_force|default:'-' }}</p>
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-battery bx-sm me-2"></i>شارژ کنتور (متر مکعب): {{ report.meter_charge|default:'-' }}</p>
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-calendar-exclamation bx-sm me-2"></i>پایان اعتبار شارژ: {{ report.meter_charge_expiration_date|to_jalali|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-calendar-exclamation bx-sm me-2"></i>پایان اعتبار شارژ: {{ report.meter_charge_expiration_date|to_jalali|default:'-' }}</p>
|
||||||
|
<p class="text-nowrap mb-2"><i class="bx bx-help-circle bx-sm me-2"></i>کنتور مشکوک: {{ report.is_meter_suspicious|yesno:'بله,خیر' }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-help-circle bx-sm me-2"></i>کنتور مشکوک: {{ report.is_meter_suspicious|yesno:'بله,خیر' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-map bx-sm me-2"></i>UTM X: {{ report.utm_x|default:'-' }} Y: {{ report.utm_y|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-map bx-sm me-2"></i>UTM X: {{ report.utm_x|default:'-' }}</p>
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-map-pin bx-sm me-2"></i>UTM Y: {{ report.utm_y|default:'-' }}</p>
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-category bx-sm me-2"></i>نوع مصرف: {{ report.get_usage_type_display|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-category bx-sm me-2"></i>نوع مصرف: {{ report.get_usage_type_display|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-id-card bx-sm me-2"></i>شماره پروانه بهرهبرداری: {{ report.exploitation_license_number|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-id-card bx-sm me-2"></i>شماره پروانه بهرهبرداری: {{ report.exploitation_license_number|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-bolt-circle bx-sm me-2"></i>قدرت موتور (کیلووات ساعت): {{ report.motor_power|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-bolt-circle bx-sm me-2"></i>توان مصرفی (کیلووات): {{ report.motor_power|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی (لیتر/ثانیه): {{ report.flow_rate|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی بعد از کالیبراسیون (لیتر بر ثانیه): {{ report.flow_rate|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-pen bx-sm me-2"></i>عدد کنتور (متر مکعب): {{ report.meter_reading|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-cycling bx-sm me-2"></i>نوع پمپ: {{ report.get_pump_type_display|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-lock-open-alt bx-sm me-2"></i>پلمپ تابلو: {{ report.is_panel_sealed|yesno:'بله,خیر' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-time-five bx-sm me-2"></i>ساعت کارکرد پروانه: {{ report.licence_working_hour|default:'-' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-power-off bx-sm me-2"></i>تابلو قطع: {{ report.is_panel_cut|yesno:'بله,خیر' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-power-off bx-sm me-2"></i>تابلو قطع: {{ report.is_panel_cut|yesno:'بله,خیر' }}</p>
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-cut bx-sm me-2"></i>انجام عملیات قطع: {{ report.is_disconnection_done|yesno:'بله,خیر' }}</p>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -351,20 +341,7 @@
|
||||||
<div class="invalid-feedback">{{ form.meter_type.errors.0 }}</div>
|
<div class="invalid-feedback">{{ form.meter_type.errors.0 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3" id="meter_size_wrapper">
|
<!-- meter_size and meter_model removed from form UI -->
|
||||||
{{ form.meter_size.label_tag }}
|
|
||||||
{{ form.meter_size }}
|
|
||||||
{% if form.meter_size.errors %}
|
|
||||||
<div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3" id="meter_model_wrapper">
|
|
||||||
{{ form.meter_model.label_tag }}
|
|
||||||
{{ form.meter_model }}
|
|
||||||
{% if form.meter_model.errors %}
|
|
||||||
<div class="invalid-feedback">{{ form.meter_size.errors.0 }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{{ form.discharge_pipe_diameter.label_tag }}
|
{{ form.discharge_pipe_diameter.label_tag }}
|
||||||
{{ form.discharge_pipe_diameter }}
|
{{ form.discharge_pipe_diameter }}
|
||||||
|
|
@ -400,20 +377,7 @@
|
||||||
<div class="invalid-feedback">{{ form.flow_rate.errors.0 }}</div>
|
<div class="invalid-feedback">{{ form.flow_rate.errors.0 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<!-- meter_reading and meter_charge removed from form UI -->
|
||||||
{{ form.meter_reading.label_tag }}
|
|
||||||
{{ form.meter_reading }}
|
|
||||||
{% if form.meter_reading.errors %}
|
|
||||||
<div class="invalid-feedback">{{ form.meter_reading.errors.0 }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3">
|
|
||||||
{{ form.meter_charge.label_tag }}
|
|
||||||
{{ form.meter_charge }}
|
|
||||||
{% if form.meter_charge.errors %}
|
|
||||||
<div class="invalid-feedback">{{ form.meter_charge.errors.0 }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{{ form.meter_charge_expiration_date.label_tag }}
|
{{ form.meter_charge_expiration_date.label_tag }}
|
||||||
<input type="text" id="id_meter_charge_expiration_date_display" class="form-control{% if form.meter_charge_expiration_date.errors %} is-invalid{% endif %}" placeholder="انتخاب تاریخ" {% if not user_is_installer %}disabled{% endif %} readonly value="{% if report and edit_mode and report.meter_charge_expiration_date %}{{ report.meter_charge_expiration_date|date:'Y/m/d' }}{% elif form.meter_charge_expiration_date.value %}{{ form.meter_charge_expiration_date.value|date:'Y/m/d' }}{% endif %}">
|
<input type="text" id="id_meter_charge_expiration_date_display" class="form-control{% if form.meter_charge_expiration_date.errors %} is-invalid{% endif %}" placeholder="انتخاب تاریخ" {% if not user_is_installer %}disabled{% endif %} readonly value="{% if report and edit_mode and report.meter_charge_expiration_date %}{{ report.meter_charge_expiration_date|date:'Y/m/d' }}{% elif form.meter_charge_expiration_date.value %}{{ form.meter_charge_expiration_date.value|date:'Y/m/d' }}{% endif %}">
|
||||||
|
|
@ -423,7 +387,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{{ form.water_meter_manufacturer.label_tag }}حجمی
|
{{ form.water_meter_manufacturer.label_tag }}
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
{{ form.water_meter_manufacturer }}
|
{{ form.water_meter_manufacturer }}
|
||||||
{{ form.new_manufacturer }}
|
{{ form.new_manufacturer }}
|
||||||
|
|
@ -438,18 +402,19 @@
|
||||||
<div class="invalid-feedback">{{ form.new_manufacturer.errors.0 }}</div>
|
<div class="invalid-feedback">{{ form.new_manufacturer.errors.0 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
<!-- sim_number and driving_force removed from form UI -->
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{{ form.sim_number.label_tag }}
|
{{ form.pump_type.label_tag }}
|
||||||
{{ form.sim_number }}
|
{{ form.pump_type }}
|
||||||
{% if form.sim_number.errors %}
|
{% if form.pump_type.errors %}
|
||||||
<div class="invalid-feedback">{{ form.sim_number.errors.0 }}</div>
|
<div class="invalid-feedback">{{ form.pump_type.errors.0 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
{{ form.driving_force.label_tag }}
|
{{ form.licence_working_hour.label_tag }}
|
||||||
{{ form.driving_force }}
|
{{ form.licence_working_hour }}
|
||||||
{% if form.driving_force.errors %}
|
{% if form.licence_working_hour.errors %}
|
||||||
<div class="invalid-feedback">{{ form.driving_force.errors.0 }}</div>
|
<div class="invalid-feedback">{{ form.licence_working_hour.errors.0 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="row mt-3">
|
<div class="row mt-3">
|
||||||
|
|
@ -462,15 +427,7 @@
|
||||||
<div class="invalid-feedback">{{ form.is_meter_suspicious.errors.0 }}</div>
|
<div class="invalid-feedback">{{ form.is_meter_suspicious.errors.0 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 d-flex align-items-end">
|
<!-- is_panel_sealed removed from form UI -->
|
||||||
<div class="form-check">
|
|
||||||
{{ form.is_panel_sealed }}
|
|
||||||
{{ form.is_panel_sealed.label_tag }}
|
|
||||||
</div>
|
|
||||||
{% if form.is_panel_sealed.errors %}
|
|
||||||
<div class="invalid-feedback">{{ form.is_panel_sealed.errors.0 }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 d-flex align-items-end">
|
<div class="col-md-3 d-flex align-items-end">
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
{{ form.is_panel_cut }}
|
{{ form.is_panel_cut }}
|
||||||
|
|
@ -480,15 +437,7 @@
|
||||||
<div class="invalid-feedback">{{ form.is_panel_cut.errors.0 }}</div>
|
<div class="invalid-feedback">{{ form.is_panel_cut.errors.0 }}</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-3 d-flex align-items-end">
|
<!-- is_disconnection_done removed from form UI -->
|
||||||
<div class="form-check">
|
|
||||||
{{ form.is_disconnection_done }}
|
|
||||||
{{ form.is_disconnection_done.label_tag }}
|
|
||||||
</div>
|
|
||||||
{% if form.is_disconnection_done.errors %}
|
|
||||||
<div class="invalid-feedback">{{ form.is_disconnection_done.errors.0 }}</div>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="my-3">
|
<div class="my-3">
|
||||||
|
|
@ -868,23 +817,14 @@
|
||||||
if (!$select.length || !$btn.length) return;
|
if (!$select.length || !$btn.length) return;
|
||||||
$btn.on('click', function(){
|
$btn.on('click', function(){
|
||||||
if ($select.is(':visible')) {
|
if ($select.is(':visible')) {
|
||||||
$select.hide();
|
// Switch to input mode: disable select required, enable input required
|
||||||
$input.show().focus();
|
$select.prop('disabled', true).prop('required', false).hide();
|
||||||
|
$input.prop('required', true).show().focus();
|
||||||
$btn.html('<i class="bx bx-check"></i>');
|
$btn.html('<i class="bx bx-check"></i>');
|
||||||
} else {
|
} else {
|
||||||
// When switching back, if input has value, append it as selected option
|
// Back to select mode: remove input required, enable select required
|
||||||
const val = ($input.val() || '').trim();
|
$input.prop('required', false).hide();
|
||||||
if (val) {
|
$select.prop('disabled', false).prop('required', true).show();
|
||||||
// Add a temporary option with value prefixed 'new:' to be handled server-side
|
|
||||||
const exists = $select.find('option').filter(function(){ return $(this).text().trim() === val; }).length > 0;
|
|
||||||
if (!exists) {
|
|
||||||
const opt = $('<option></option>').val('').text(val);
|
|
||||||
$select.append(opt);
|
|
||||||
}
|
|
||||||
$select.val('');
|
|
||||||
}
|
|
||||||
$input.hide();
|
|
||||||
$select.show();
|
|
||||||
$btn.html('<i class="bx bx-plus"></i>');
|
$btn.html('<i class="bx bx-plus"></i>');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -913,46 +853,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dynamic meter field visibility based on meter type
|
// meter_size/meter_model dynamic handling removed
|
||||||
(function() {
|
|
||||||
const meterTypeSelect = document.getElementById('{{ form.meter_type.id_for_label }}');
|
|
||||||
const meterSizeWrapper = document.getElementById('meter_size_wrapper');
|
|
||||||
const meterModelWrapper = document.getElementById('meter_model_wrapper');
|
|
||||||
|
|
||||||
function updateMeterFields() {
|
|
||||||
if (!meterTypeSelect) return;
|
|
||||||
|
|
||||||
const selectedType = meterTypeSelect.value;
|
|
||||||
|
|
||||||
if (selectedType === 'smart') {
|
|
||||||
// Show meter_model, hide meter_size
|
|
||||||
meterModelWrapper.style.display = '';
|
|
||||||
meterSizeWrapper.style.display = 'none';
|
|
||||||
// Clear meter_size value when hidden
|
|
||||||
const meterSizeInput = meterSizeWrapper.querySelector('input, select');
|
|
||||||
if (meterSizeInput) meterSizeInput.value = '';
|
|
||||||
} else if (selectedType === 'volumetric') {
|
|
||||||
// Show meter_size, hide meter_model
|
|
||||||
meterSizeWrapper.style.display = '';
|
|
||||||
meterModelWrapper.style.display = 'none';
|
|
||||||
// Clear meter_model value when hidden
|
|
||||||
const meterModelSelect = meterModelWrapper.querySelector('select');
|
|
||||||
if (meterModelSelect) meterModelSelect.value = '';
|
|
||||||
} else {
|
|
||||||
// No selection: hide both
|
|
||||||
meterSizeWrapper.style.display = 'none';
|
|
||||||
meterModelWrapper.style.display = 'none';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initial update on page load
|
|
||||||
updateMeterFields();
|
|
||||||
|
|
||||||
// Update on change
|
|
||||||
if (meterTypeSelect) {
|
|
||||||
meterTypeSelect.addEventListener('change', updateMeterFields);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -122,11 +122,11 @@
|
||||||
</div>
|
</div>
|
||||||
{% if installation_assignment.scheduled_date %}
|
{% if installation_assignment.scheduled_date %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-calendar-star bx-sm me-2"></i>تاریخ برنامهریزی: {{ installation_assignment.scheduled_date|to_jalali }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-calendar-star bx-sm me-2"></i>تاریخ تعیین شده: {{ installation_assignment.scheduled_date|to_jalali }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال کنتور جدید: {{ latest_report.new_water_meter_serial|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-purchase-tag bx-sm me-2"></i>سریال کنتور: {{ latest_report.new_water_meter_serial|default:'-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-lock-alt bx-sm me-2"></i>شماره پلمپ: {{ latest_report.seal_number|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-lock-alt bx-sm me-2"></i>شماره پلمپ: {{ latest_report.seal_number|default:'-' }}</p>
|
||||||
|
|
@ -134,28 +134,16 @@
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-help-circle bx-sm me-2"></i>کنتور مشکوک: {{ latest_report.is_meter_suspicious|yesno:'بله,خیر' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-help-circle bx-sm me-2"></i>کنتور مشکوک: {{ latest_report.is_meter_suspicious|yesno:'بله,خیر' }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% if latest_report.sim_number %}
|
{# sim_number removed from summary UI #}
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-mobile bx-sm me-2"></i>شماره سیمکارت: {{ latest_report.sim_number }}</p>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if latest_report.meter_type %}
|
{% if latest_report.meter_type %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-category bx-sm me-2"></i>نوع کنتور: {{ latest_report.get_meter_type_display }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-category bx-sm me-2"></i>نوع کنتور: {{ latest_report.get_meter_type_display }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% if latest_report.meter_type == 'smart' %}
|
{# meter model/size removed from summary UI #}
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-chip bx-sm me-2"></i>مدل کنتور: {{ latest_report.get_meter_model_display|default:'-' }}</p>
|
|
||||||
</div>
|
|
||||||
{% else %}
|
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-ruler bx-sm me-2"></i>سایز کنتور: {{ latest_report.meter_size }}</p>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if latest_report.water_meter_manufacturer %}
|
{% if latest_report.water_meter_manufacturer %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-buildings bx-sm me-2"></i>سازنده: {{ latest_report.water_meter_manufacturer.name }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-buildings bx-sm me-2"></i>شرکت سازنده کنتور: {{ latest_report.water_meter_manufacturer.name }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if latest_report.discharge_pipe_diameter %}
|
{% if latest_report.discharge_pipe_diameter %}
|
||||||
|
|
@ -168,14 +156,10 @@
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-droplet bx-sm me-2"></i>نوع مصرف: {{ latest_report.get_usage_type_display }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-droplet bx-sm me-2"></i>نوع مصرف: {{ latest_report.get_usage_type_display }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if latest_report.driving_force %}
|
{# driving_force removed from summary UI #}
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-car bx-sm me-2"></i>نیرو محرکه: {{ latest_report.driving_force }}</p>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if latest_report.motor_power %}
|
{% if latest_report.motor_power %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-tag bx-sm me-2"></i>قدرت موتور: {{ latest_report.motor_power }} کیلووات ساعت</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-tag bx-sm me-2"></i>توان مصرفی (کیلووات): {{ latest_report.motor_power }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if latest_report.exploitation_license_number %}
|
{% if latest_report.exploitation_license_number %}
|
||||||
|
|
@ -185,33 +169,30 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if latest_report.flow_rate %}
|
{% if latest_report.flow_rate %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی: {{ latest_report.flow_rate }} لیتر/ثانیه</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-water bx-sm me-2"></i>دبی بعد از کالیبراسیون (لیتر بر ثانیه): {{ latest_report.flow_rate }}</p>
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if latest_report.meter_reading %}
|
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-pen bx-sm me-2"></i>عدد کنتور: {{ latest_report.meter_reading }} متر مکعب</p>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
{% if latest_report.meter_charge %}
|
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-battery bx-sm me-2"></i>شارژ کنتور: {{ latest_report.meter_charge }} متر مکعب</p>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{# meter_reading and meter_charge removed from summary UI #}
|
||||||
{% if latest_report.meter_charge_expiration_date %}
|
{% if latest_report.meter_charge_expiration_date %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-calendar-exclamation bx-sm me-2"></i>پایان اعتبار شارژ: {{ latest_report.meter_charge_expiration_date|to_jalali }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-calendar-exclamation bx-sm me-2"></i>پایان اعتبار شارژ: {{ latest_report.meter_charge_expiration_date|to_jalali }}</p>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="col-12 col-md-4">
|
{# is_panel_sealed removed from summary UI #}
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-lock-open-alt bx-sm me-2"></i>پلمپ تابلو: {{ latest_report.is_panel_sealed|yesno:'دارد,ندارد' }}</p>
|
|
||||||
</div>
|
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-power-off bx-sm me-2"></i>تابلو قطع: {{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-power-off bx-sm me-2"></i>تابلو قطع: {{ latest_report.is_panel_cut|yesno:'دارد,ندارد' }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
{# is_disconnection_done removed from summary UI #}
|
||||||
|
{% if latest_report.pump_type %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-cut bx-sm me-2"></i>انجام عملیات قطع: {{ latest_report.is_disconnection_done|yesno:'دارد,ندارد' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-cycling bx-sm me-2"></i>نوع پمپ: {{ latest_report.get_pump_type_display }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if latest_report.licence_working_hour %}
|
||||||
|
<div class="col-12 col-md-4">
|
||||||
|
<p class="text-nowrap mb-2"><i class="bx bx-time-five bx-sm me-2"></i>ساعت کارکرد پروانه: {{ latest_report.licence_working_hour }}</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<p class="text-nowrap mb-2"><i class="bx bx-map bx-sm me-2"></i>UTM X: {{ latest_report.utm_x|default:'-' }}</p>
|
<p class="text-nowrap mb-2"><i class="bx bx-map bx-sm me-2"></i>UTM X: {{ latest_report.utm_x|default:'-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue