From f853ad9784e84e53fdafea620895f5a004602ed7 Mon Sep 17 00:00:00 2001 From: aminhashemi92 Date: Fri, 3 Oct 2025 21:56:25 +0330 Subject: [PATCH] main flow checked --- accounts/forms.py | 3 +- ...storicalprofile_phone_number_1_and_more.py | 25 +++++ accounts/models.py | 2 - certificates/views.py | 39 +++++-- db.sqlite3 | Bin 3571712 -> 3719168 bytes .../installation_report_step.html | 8 +- installations/views.py | 41 ++++--- invoices/templates/invoices/quote_print.html | 12 +- invoices/templates/invoices/quote_step.html | 2 +- invoices/views.py | 72 ++++++++---- processes/admin.py | 10 +- ...r_stepapproval_unique_together_and_more.py | 34 ++++++ ...7_remove_stepapproval_decision_and_more.py | 22 ++++ processes/models.py | 14 +-- .../templates/processes/instance_summary.html | 103 ++++++++++++++++-- .../templates/processes/request_list.html | 2 + processes/views.py | 18 ++- templates/navbars/admin.html | 6 + wells/forms.py | 2 + ...005_alter_historicalwell_utm_x_and_more.py | 35 ++++++ wells/models.py | 4 - 21 files changed, 365 insertions(+), 89 deletions(-) create mode 100644 accounts/migrations/0008_alter_historicalprofile_phone_number_1_and_more.py create mode 100644 processes/migrations/0006_alter_stepapproval_unique_together_and_more.py create mode 100644 processes/migrations/0007_remove_stepapproval_decision_and_more.py create mode 100644 wells/migrations/0005_alter_historicalwell_utm_x_and_more.py diff --git a/accounts/forms.py b/accounts/forms.py index a5d493b..e5f3b90 100644 --- a/accounts/forms.py +++ b/accounts/forms.py @@ -39,7 +39,8 @@ class CustomerForm(forms.ModelForm): }), 'phone_number_1': forms.TextInput(attrs={ 'class': 'form-control', - 'placeholder': '09123456789' + 'placeholder': '09123456789', + 'required': True }), 'phone_number_2': forms.TextInput(attrs={ 'class': 'form-control', diff --git a/accounts/migrations/0008_alter_historicalprofile_phone_number_1_and_more.py b/accounts/migrations/0008_alter_historicalprofile_phone_number_1_and_more.py new file mode 100644 index 0000000..a005ff8 --- /dev/null +++ b/accounts/migrations/0008_alter_historicalprofile_phone_number_1_and_more.py @@ -0,0 +1,25 @@ +# Generated by Django 5.2.4 on 2025-10-02 09:32 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0007_historicalprofile_company_name_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='historicalprofile', + name='phone_number_1', + field=models.CharField(default=1, max_length=11, verbose_name='شماره تماس ۱'), + preserve_default=False, + ), + migrations.AlterField( + model_name='profile', + name='phone_number_1', + field=models.CharField(default=1, max_length=11, verbose_name='شماره تماس ۱'), + preserve_default=False, + ), + ] diff --git a/accounts/models.py b/accounts/models.py index 348304e..f6ccf3d 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -78,9 +78,7 @@ class Profile(BaseModel): ) phone_number_1 = models.CharField( max_length=11, - null=True, verbose_name="شماره تماس ۱", - blank=True ) phone_number_2 = models.CharField( max_length=11, diff --git a/certificates/views.py b/certificates/views.py index 9a8f1de..5bdcade 100644 --- a/certificates/views.py +++ b/certificates/views.py @@ -4,6 +4,8 @@ from django.contrib import messages from django.http import JsonResponse from django.urls import reverse from django.utils import timezone +from django.template import Template, Context +from django.utils.safestring import mark_safe from processes.models import ProcessInstance, StepInstance from invoices.models import Invoice @@ -28,20 +30,33 @@ def _render_template(template: CertificateTemplate, instance: ProcessInstance): well = instance.well rep = instance.representative latest_report = InstallationReport.objects.filter(assignment__process_instance=instance).order_by('-created').first() + individual = True if rep.profile and rep.profile.user_type == 'individual' else False + customer_company_name = rep.profile.company_name if rep.profile and rep.profile.user_type == 'legal' else None + city = template.company.broker.affairs.county.city.name if template.company and template.company.broker and template.company.broker.affairs and template.company.broker.affairs.county and template.company.broker.affairs.county.city else None + county = template.company.broker.affairs.county.name if template.company and template.company.broker and template.company.broker.affairs and template.company.broker.affairs.county else None + ctx = { - 'today_jalali': _to_jalali(timezone.now().date()), - 'request_code': instance.code, - 'company_name': (template.company.name if template.company else '') or '', - 'customer_full_name': rep.get_full_name() if rep else '', - 'water_subscription_number': getattr(well, 'water_subscription_number', '') or '', - 'address': getattr(well, 'county', '') or '', - 'visit_date_jalali': _to_jalali(getattr(latest_report, 'visited_date', None)) if latest_report else '', + 'today_jalali': mark_safe(f"{_to_jalali(timezone.now().date())}"), + 'request_code': mark_safe(f"{instance.code}"), + 'company_name': mark_safe(f"{(template.company.name if template.company else '') or ''}"), + 'customer_full_name': mark_safe(f"{rep.get_full_name() if rep else ''}"), + 'water_subscription_number': mark_safe(f"{getattr(well, 'water_subscription_number', '') or ''}"), + 'address': mark_safe(f"{getattr(well, 'county', '') or ''}"), + 'visit_date_jalali': mark_safe(f"{_to_jalali(getattr(latest_report, 'visited_date', None)) if latest_report else ''}"), + 'city': mark_safe(f"{city or ''}"), + 'county': mark_safe(f"{county or ''}"), + 'customer_company_name': mark_safe(f"{customer_company_name or ''}"), + 'individual': individual, } - title = (template.title or '').format(**ctx) - body = (template.body or '') - # Render body placeholders with bold values - for k, v in ctx.items(): - body = body.replace(f"{{{{ {k} }}}}", f"{str(v)}") + + # Render title using Django template engine + title_template = Template(template.title or '') + title = title_template.render(Context(ctx)) + + # Render body using Django template engine + body_template = Template(template.body or '') + body = body_template.render(Context(ctx)) + return title, body diff --git a/db.sqlite3 b/db.sqlite3 index 194dde7a0f9fa9e329cb58923212b69cc204a763..d2eb7a19f68a1cc41569d33a92a3108899397ecb 100644 GIT binary patch delta 174223 zcmeFa2Ygk<);PL*Ic4vYoP_k`oD_P(KK-1~fN#-f4fz=X z{(rHm@1FB|8wcy$q_{>nEfX!Bty}Dg+5_spw1wJ1-LIPN71{)K)8P(@!U#UXqPyR6 z#PLNlmTh7?UY_WQ=lNW&WLnXz$+IUEmCT$vYr>4#lexG}6Fat*re$~K2eIgpdtwsN z(31{@wQYK&V}Ef@`_BBxO?P)nLA5_xENt2)cc%0DRodx!XO~*R-5w66~ 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 J+EvW7{tw$w(JKG| delta 55878 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 diff --git a/installations/templates/installations/installation_report_step.html b/installations/templates/installations/installation_report_step.html index df12a29..9ff6c20 100644 --- a/installations/templates/installations/installation_report_step.html +++ b/installations/templates/installations/installation_report_step.html @@ -99,9 +99,9 @@

UTM Y: {{ report.utm_y|default:'-' }}

نوع مصرف: {{ report.get_usage_type_display|default:'-' }}

شماره پروانه بهره‌برداری: {{ report.exploitation_license_number|default:'-' }}

-

(کیلووات ساعت)قدرت موتور: {{ report.motor_power|default:'-' }}

-

(لیتر/ثانیه) دبی قبل کالیبراسیون: {{ report.pre_calibration_flow_rate|default:'-' }}

-

(لیتر/ثانیه) دبی بعد کالیبراسیون: {{ report.post_calibration_flow_rate|default:'-' }}

+

قدرت موتور(کیلووات ساعت): {{ report.motor_power|default:'-' }}

+

دبی قبل کالیبراسیون(لیتر/ثانیه): {{ report.pre_calibration_flow_rate|default:'-' }}

+

دبی بعد کالیبراسیون(لیتر/ثانیه): {{ report.post_calibration_flow_rate|default:'-' }}

@@ -157,7 +157,7 @@ تغییری ثبت نشده است {% endfor %} - + nvoices/instance/69/step/3/payments/ diff --git a/installations/views.py b/installations/views.py index 177ccc3..367edac 100644 --- a/installations/views.py +++ b/installations/views.py @@ -320,15 +320,29 @@ def installation_report_step(request, instance_id, step_id): can_approve_reject = False user_can_approve = can_approve_reject approvals_list = list(step_instance.approvals.select_related('role', 'approved_by').filter(is_deleted=False)) + rejections_list = list(step_instance.rejections.select_related('role', 'rejected_by').filter(is_deleted=False)) approvals_by_role = {a.role_id: a for a in approvals_list} - approver_statuses = [ - { + rejections_by_role = {r.role_id: r for r in rejections_list} + approver_statuses = [] + for r in reqs: + appr = approvals_by_role.get(r.role_id) + rejection = rejections_by_role.get(r.role_id) + + if appr: + status = 'approved' + reason = appr.reason + elif rejection: + status = 'rejected' + reason = rejection.reason + else: + status = None + reason = '' + + approver_statuses.append({ 'role': r.role, - 'status': (approvals_by_role.get(r.role_id).decision if approvals_by_role.get(r.role_id) else None), - 'reason': (approvals_by_role.get(r.role_id).reason if approvals_by_role.get(r.role_id) else ''), - } - for r in reqs - ] + 'status': status, + 'reason': reason, + }) # Determine if current user has already approved/rejected (to disable buttons) current_user_has_decided = False @@ -356,10 +370,11 @@ def installation_report_step(request, instance_id, step_id): if action == 'approve': # Record this user's approval for their role - StepApproval.objects.update_or_create( + StepApproval.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'approved', 'reason': ''} + approved_by=request.user, + reason='' ) # Only mark report approved when ALL required roles have approved if step_instance.is_fully_approved(): @@ -386,12 +401,8 @@ def installation_report_step(request, instance_id, step_id): if not reason: messages.error(request, 'لطفاً علت رد شدن را وارد کنید.') return redirect('processes:step_detail', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( - step_instance=step_instance, - role=matching_role, - defaults={'approved_by': request.user, 'decision': 'rejected', 'reason': reason} - ) - StepRejection.objects.create(step_instance=step_instance, rejected_by=request.user, reason=reason) + # Only create StepRejection for rejections, not StepApproval + StepRejection.objects.create(step_instance=step_instance, role=matching_role, rejected_by=request.user, reason=reason) existing_report.approved = False existing_report.save() # If current step moved ahead of this step, reset it back for correction (align with invoices) diff --git a/invoices/templates/invoices/quote_print.html b/invoices/templates/invoices/quote_print.html index bbf7a97..fc445a6 100644 --- a/invoices/templates/invoices/quote_print.html +++ b/invoices/templates/invoices/quote_print.html @@ -145,7 +145,17 @@
-
اطلاعات مشترک
+
+ {% if instance.representative.profile.user_type == 'legal' %} + اطلاعات مشترک (حقوقی) + {% else %} + اطلاعات مشترک (حقیقی) + {% endif %} +
+ {% if instance.representative.profile.user_type == 'legal' %} +
نام شرکت: {{ instance.representative.profile.company_name|default:"-" }}
+
شناسه ملی: {{ instance.representative.profile.company_national_id|default:"-" }}
+ {% endif %}
نام: {{ quote.customer.get_full_name }}
{% if instance.representative.profile and instance.representative.profile.national_code %}
کد ملی: {{ instance.representative.profile.national_code }}
diff --git a/invoices/templates/invoices/quote_step.html b/invoices/templates/invoices/quote_step.html index 404cf14..853f250 100644 --- a/invoices/templates/invoices/quote_step.html +++ b/invoices/templates/invoices/quote_step.html @@ -57,7 +57,7 @@
پیش‌فاکتور موجود
{{ existing_quote.name }} | - مبلغ کل: {{ existing_quote.final_amount|floatformat:0|intcomma:False }} تومان | + مبلغ کل (با احتساب مالیات): {{ existing_quote.final_amount|floatformat:0|intcomma:False }} تومان | وضعیت: {{ existing_quote.get_status_display_with_color|safe }}
diff --git a/invoices/views.py b/invoices/views.py index 6e467b9..0df8191 100644 --- a/invoices/views.py +++ b/invoices/views.py @@ -358,14 +358,28 @@ def quote_payment_step(request, instance_id, step_id): user_roles_qs = getattr(getattr(request.user, 'profile', None), 'roles', None) user_roles = list(user_roles_qs.all()) if user_roles_qs is not None else [] approvals_list = list(step_instance.approvals.select_related('role', 'approved_by').filter(is_deleted=False)) + rejections_list = list(step_instance.rejections.select_related('role', 'rejected_by').filter(is_deleted=False)) approvals_by_role = {a.role_id: a for a in approvals_list} + rejections_by_role = {r.role_id: r for r in rejections_list} approver_statuses = [] for r in reqs: appr = approvals_by_role.get(r.role_id) + rejection = rejections_by_role.get(r.role_id) + + if appr: + status = 'approved' + reason = appr.reason + elif rejection: + status = 'rejected' + reason = rejection.reason + else: + status = None + reason = '' + approver_statuses.append({ 'role': r.role, - 'status': (appr.decision if appr else None), - 'reason': (appr.reason if appr else ''), + 'status': status, + 'reason': reason, }) # dynamic permission: who can approve/reject this step (based on requirements) @@ -398,10 +412,11 @@ def quote_payment_step(request, instance_id, step_id): action = request.POST.get('action') if action == 'approve': - StepApproval.objects.update_or_create( + StepApproval.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'approved', 'reason': ''} + approved_by=request.user, + reason='' ) if step_instance.is_fully_approved(): step_instance.status = 'completed' @@ -422,12 +437,12 @@ def quote_payment_step(request, instance_id, step_id): if not reason: messages.error(request, 'علت رد شدن را وارد کنید') return redirect('invoices:quote_payment_step', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( + StepRejection.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'rejected', 'reason': reason} - ) - StepRejection.objects.create(step_instance=step_instance, rejected_by=request.user, reason=reason) + rejected_by=request.user, + reason=reason + ) # If current step is ahead of this step, reset it back to this step try: if instance.current_step and instance.current_step.order > step.order: @@ -928,15 +943,29 @@ def final_settlement_step(request, instance_id, step_id): # Build approver statuses for template (include reason to display in UI) reqs = list(step.approver_requirements.select_related('role').all()) approvals = list(step_instance.approvals.select_related('role').all()) + rejections = list(step_instance.rejections.select_related('role').all()) approvals_by_role = {a.role_id: a for a in approvals} - approver_statuses = [ - { + rejections_by_role = {r.role_id: r for r in rejections} + approver_statuses = [] + for r in reqs: + appr = approvals_by_role.get(r.role_id) + rejection = rejections_by_role.get(r.role_id) + + if appr: + status = 'approved' + reason = appr.reason + elif rejection: + status = 'rejected' + reason = rejection.reason + else: + status = None + reason = '' + + approver_statuses.append({ 'role': r.role, - 'status': (approvals_by_role.get(r.role_id).decision if approvals_by_role.get(r.role_id) else None), - 'reason': (approvals_by_role.get(r.role_id).reason if approvals_by_role.get(r.role_id) else ''), - } - for r in reqs - ] + 'status': status, + 'reason': reason, + }) # dynamic permission to control approve/reject UI try: user_roles_qs = getattr(getattr(request.user, 'profile', None), 'roles', Role.objects.none()) @@ -971,10 +1000,11 @@ def final_settlement_step(request, instance_id, step_id): if invoice.remaining_amount != 0: messages.error(request, f"تا زمانی که مانده فاکتور صفر نشده امکان تایید نیست (مانده فعلی: {invoice.remaining_amount})") return redirect('invoices:final_settlement_step', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( + StepApproval.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'approved', 'reason': ''} + approved_by=request.user, + reason='' ) if step_instance.is_fully_approved(): step_instance.status = 'completed' @@ -993,12 +1023,12 @@ def final_settlement_step(request, instance_id, step_id): if not reason: messages.error(request, 'علت رد شدن را وارد کنید') return redirect('invoices:final_settlement_step', instance_id=instance.id, step_id=step.id) - StepApproval.objects.update_or_create( + StepRejection.objects.create( step_instance=step_instance, role=matching_role, - defaults={'approved_by': request.user, 'decision': 'rejected', 'reason': reason} - ) - StepRejection.objects.create(step_instance=step_instance, rejected_by=request.user, reason=reason) + rejected_by=request.user, + reason=reason + ) # If current step is ahead of this step, reset it back to this step (align behavior with other steps) try: if instance.current_step and instance.current_step.order > step.order: diff --git a/processes/admin.py b/processes/admin.py index 4739742..42d4bca 100644 --- a/processes/admin.py +++ b/processes/admin.py @@ -162,9 +162,9 @@ class StepInstanceAdmin(SimpleHistoryAdmin): @admin.register(StepRejection) class StepRejectionAdmin(SimpleHistoryAdmin): - list_display = ['step_instance', 'rejected_by', 'reason_short', 'created_at', 'is_deleted'] - list_filter = ['rejected_by', 'created_at', 'step_instance__step__process'] - search_fields = ['step_instance__step__name', 'rejected_by__username', 'reason'] + list_display = ['step_instance', 'role', 'rejected_by', 'reason_short', 'created_at', 'is_deleted'] + list_filter = ['role', 'rejected_by', 'created_at', 'step_instance__step__process'] + search_fields = ['step_instance__step__name', 'rejected_by__username', 'reason', 'role__name'] readonly_fields = ['created_at'] ordering = ['-created_at'] @@ -182,6 +182,6 @@ class StepApproverRequirementAdmin(admin.ModelAdmin): @admin.register(StepApproval) class StepApprovalAdmin(admin.ModelAdmin): - list_display = ("step_instance", "role", "decision", "approved_by", "created_at", "is_deleted") - list_filter = ("decision", "role", "step_instance__step__process") + list_display = ("step_instance", "role", "approved_by", "created_at", "is_deleted") + list_filter = ("role", "step_instance__step__process") search_fields = ("step_instance__process_instance__code", "role__name", "approved_by__username") diff --git a/processes/migrations/0006_alter_stepapproval_unique_together_and_more.py b/processes/migrations/0006_alter_stepapproval_unique_together_and_more.py new file mode 100644 index 0000000..f4cb896 --- /dev/null +++ b/processes/migrations/0006_alter_stepapproval_unique_together_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 5.2.4 on 2025-10-02 09:32 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0008_alter_historicalprofile_phone_number_1_and_more'), + ('processes', '0005_alter_historicalstepinstance_status_and_more'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='stepapproval', + unique_together=set(), + ), + migrations.AddField( + model_name='historicalsteprejection', + name='role', + field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='accounts.role', verbose_name='نقش'), + ), + migrations.AddField( + model_name='steprejection', + name='role', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='accounts.role', verbose_name='نقش'), + ), + migrations.AlterField( + model_name='stepapproval', + name='role', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='accounts.role', verbose_name='نقش'), + ), + ] diff --git a/processes/migrations/0007_remove_stepapproval_decision_and_more.py b/processes/migrations/0007_remove_stepapproval_decision_and_more.py new file mode 100644 index 0000000..d97d16b --- /dev/null +++ b/processes/migrations/0007_remove_stepapproval_decision_and_more.py @@ -0,0 +1,22 @@ +# Generated by Django 5.2.4 on 2025-10-02 09:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('processes', '0006_alter_stepapproval_unique_together_and_more'), + ] + + operations = [ + migrations.RemoveField( + model_name='stepapproval', + name='decision', + ), + migrations.AlterField( + model_name='stepapproval', + name='reason', + field=models.TextField(blank=True, verbose_name='توضیحات'), + ), + ] diff --git a/processes/models.py b/processes/models.py index 391fd26..19b612d 100644 --- a/processes/models.py +++ b/processes/models.py @@ -387,7 +387,7 @@ class StepInstance(models.Model): def approvals_by_role(self): decisions = {} for a in self.approvals.select_related('role').order_by('created_at'): - decisions[a.role_id] = a.decision + decisions[a.role_id] = 'approved' return decisions def is_fully_approved(self) -> bool: @@ -409,6 +409,7 @@ class StepRejection(models.Model): related_name='rejections', verbose_name="نمونه مرحله" ) + role = models.ForeignKey(Role, on_delete=models.SET_NULL, blank=True, null=True, verbose_name="نقش") rejected_by = models.ForeignKey( User, on_delete=models.CASCADE, @@ -431,7 +432,7 @@ class StepRejection(models.Model): ordering = ['-created_at'] def __str__(self): - return f"رد شدن {self.step_instance} توسط {self.rejected_by.get_full_name()}" + return f"رد شدن {self.step_instance} توسط {self.rejected_by.get_full_name()} ({self.role.name})" def save(self, *args, **kwargs): """ذخیره با تغییر وضعیت مرحله""" @@ -447,7 +448,6 @@ class StepRejection(models.Model): self.save() - class StepApproverRequirement(models.Model): """Required approver roles for a step.""" step = models.ForeignKey(ProcessStep, on_delete=models.CASCADE, related_name='approver_requirements', verbose_name="مرحله") @@ -466,15 +466,13 @@ class StepApproverRequirement(models.Model): class StepApproval(models.Model): """Approvals per role for a concrete step instance.""" step_instance = models.ForeignKey(StepInstance, on_delete=models.CASCADE, related_name='approvals', verbose_name="نمونه مرحله") - role = models.ForeignKey(Role, on_delete=models.CASCADE, verbose_name="نقش") + role = models.ForeignKey(Role, on_delete=models.SET_NULL, blank=True, null=True, verbose_name="نقش") approved_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="تاییدکننده") - decision = models.CharField(max_length=8, choices=[('approved', 'تایید'), ('rejected', 'رد')], verbose_name='نتیجه') - reason = models.TextField(blank=True, verbose_name='علت (برای رد)') + reason = models.TextField(blank=True, verbose_name='توضیحات') created_at = models.DateTimeField(auto_now_add=True, verbose_name='تاریخ') is_deleted = models.BooleanField(default=False, verbose_name='حذف شده') class Meta: - unique_together = ('step_instance', 'role') verbose_name = 'تایید مرحله' verbose_name_plural = 'تاییدهای مرحله' @@ -487,4 +485,4 @@ class StepApproval(models.Model): def __str__(self): - return f"{self.step_instance} - {self.role} - {self.decision}" + return f"{self.step_instance} - {self.role} - تایید شده" diff --git a/processes/templates/processes/instance_summary.html b/processes/templates/processes/instance_summary.html index ad84b59..a8529c6 100644 --- a/processes/templates/processes/instance_summary.html +++ b/processes/templates/processes/instance_summary.html @@ -95,32 +95,113 @@
گزارش نصب
- {% if latest_report and latest_report.assignment and latest_report.assignment.installer %} - نصاب: {{ latest_report.assignment.installer.get_full_name|default:latest_report.assignment.installer.username }} - {% endif %} +
+ {% if installation_delay_days > 0 %} + + {{ installation_delay_days }} روز تاخیر + + {% elif installation_assignment and latest_report %} + + به موقع + + {% endif %} + {% if latest_report and latest_report.assignment and latest_report.assignment.installer %} + نصاب: {{ latest_report.assignment.installer.get_full_name|default:latest_report.assignment.installer.username }} + {% endif %} +
{% if latest_report %} -
-
-

تاریخ مراجعه: {{ latest_report.visited_date|to_jalali|default:'-' }}

+ +
+
+

تاریخ مراجعه: {{ latest_report.visited_date|to_jalali|default:'-' }}

+
+ {% if installation_assignment.scheduled_date %} +
+

تاریخ برنامه‌ریزی: {{ installation_assignment.scheduled_date|to_jalali }}

+
+ {% endif %} +

سریال کنتور جدید: {{ latest_report.new_water_meter_serial|default:'-' }}

+
+

شماره پلمپ: {{ latest_report.seal_number|default:'-' }}

-
+

کنتور مشکوک: {{ latest_report.is_meter_suspicious|yesno:'بله,خیر' }}

+
+ {% if latest_report.sim_number %} +
+

شماره سیمکارت: {{ latest_report.sim_number }}

+
+ {% endif %} + {% if latest_report.meter_type %} +
+

نوع کنتور: {{ latest_report.get_meter_type_display }}

+
+ {% endif %} + {% if latest_report.meter_size %} +
+

سایز کنتور: {{ latest_report.meter_size }}

+
+ {% endif %} + {% if latest_report.water_meter_manufacturer %} +
+

سازنده: {{ latest_report.water_meter_manufacturer.name }}

+
+ {% endif %} + {% if latest_report.discharge_pipe_diameter %} +
+

قطر لوله آبده: {{ latest_report.discharge_pipe_diameter }} اینچ

+
+ {% endif %} + {% if latest_report.usage_type %} +
+

نوع مصرف: {{ latest_report.get_usage_type_display }}

+
+ {% endif %} + {% if latest_report.driving_force %} +
+

نیرو محرکه: {{ latest_report.driving_force }}

+
+ {% endif %} + {% if latest_report.motor_power %} +
+

قدرت موتور: {{ latest_report.motor_power }} کیلووات ساعت

+
+ {% endif %} + {% if latest_report.exploitation_license_number %} +
+

شماره پروانه: {{ latest_report.exploitation_license_number }}

+
+ {% endif %} + {% if latest_report.pre_calibration_flow_rate %} +
+

دبی قبل از کالیبراسیون: {{ latest_report.pre_calibration_flow_rate }} لیتر/ثانیه

+
+ {% endif %} + {% if latest_report.post_calibration_flow_rate %} +
+

دبی بعد از کالیبراسیون: {{ latest_report.post_calibration_flow_rate }} لیتر/ثانیه

+
+ {% endif %} +

UTM X: {{ latest_report.utm_x|default:'-' }}

+
+

UTM Y: {{ latest_report.utm_y|default:'-' }}

+ {% if latest_report.description %} -
-

توضیحات:

+
+
توضیحات
{{ latest_report.description }}
{% endif %} -
-
عکس‌ها
+ +
عکس‌ها
{% for p in latest_report.photos.all %}
photo
diff --git a/processes/templates/processes/request_list.html b/processes/templates/processes/request_list.html index 5640425..9ec7e92 100644 --- a/processes/templates/processes/request_list.html +++ b/processes/templates/processes/request_list.html @@ -37,12 +37,14 @@
+ {% if not request.user|is_installer %} + {% endif %} {% if request.user|is_broker %}