Files
customerTicket/templates/payments/receipt_detail.html
T
2026-10-06 10:03:22 +03:30

30 lines
8.7 KiB
HTML

{% extends 'payments/base.html' %}
{% load jalali humanize %}
{% block title %}فیش {{ receipt.number }}{% endblock %}
{% block content %}
<section class="chaharsu {% if staff_detail %}pay-workspace pay-detail-workspace{% else %}customer-finance customer-receipt-detail{% endif %}">
{% include 'payments/_link_status.html' %}
{% if not staff_detail %}<nav class="pay-breadcrumb" aria-label="مسیر صفحه"><a href="{% if payment_link_access %}{% url 'payments:receipt_list' %}{% else %}{% url 'payments:notices' %}{% endif %}">{% if payment_link_access %}فیش‌های این لینک{% else %}واریزهای شما{% endif %}</a><span>/</span><span aria-current="page">جزئیات فیش</span></nav>{% endif %}
{% if staff_detail %}<a class="pay-back" href="{% url 'staff_payments:desk' %}">{% include 'payments/_icon.html' with name='chevron' %}فیش‌های واریزی</a>{% endif %}
<header class="pay-page-head"><div class="pay-page-title"><span class="pay-page-icon">{% include 'payments/_icon.html' with name='receipt' %}</span><div><h1>فیش <bdi>{{ receipt.number }}</bdi></h1>{% if staff_detail %}{% include 'payments/_customer_identity.html' with customer=receipt.customer %}<p class="pay-field-hint">نسخه {{ revision.version }}</p>{% endif %}</div></div><span class="pay-status {{ receipt.status|lower }}">{{ receipt.get_status_display }}</span></header>
{% if revision.destination_mismatch %}<p class="pay-warning">حساب مقصد با اعلامیه متفاوت است؛ بررسی مغایرت لازم است.</p>{% endif %}
{% if duplicate_image %}<p class="pay-warning">تصویر مشابه روی فیش دیگری ثبت شده است؛ پیش از تصمیم بررسی کنید.</p>{% endif %}
<div class="{% if staff_detail %}pay-detail-grid{% endif %}">
<div>
<article class="pay-card"><div class="pay-receipt-total"><span>مبلغ پرداخت‌شده</span><h2>{{ revision.amount|intcomma:False }} <small>ریال</small></h2><p>تاریخ پرداخت: {{ revision.paid_date|jalali_date }}</p></div>
<dl class="pay-facts"><div><dt>حساب مقصد</dt><dd>{{ revision.account_snapshot.name }}</dd></div><div><dt>بانک مقصد</dt><dd>{{ revision.account_snapshot.bank }}</dd></div><div><dt>صاحب حساب</dt><dd>{{ revision.account_snapshot.holder }}</dd></div><div><dt>شناسه واریز</dt><dd><bdi>{{ revision.deposit_id|default:'اعلام نشده' }}</bdi></dd></div>{% if revision.origin_bank %}<div><dt>بانک مبدأ</dt><dd>{{ revision.origin_bank.name }}{% if revision.origin_other %} · {{ revision.origin_other }}{% endif %}</dd></div>{% endif %}{% if revision.tracking_number %}<div><dt>شماره پیگیری</dt><dd><bdi>{{ revision.tracking_number }}</bdi></dd></div>{% endif %}</dl>
{% if staff_detail %}<h3 class="pay-section-title">اطلاعات مقصد ثبت‌شده</h3><dl class="pay-facts">{% if revision.account_snapshot.account_number %}<div><dt>شماره حساب مقصد ثبت‌شده</dt><dd dir="ltr">{{ revision.account_snapshot.account_number }}</dd></div>{% endif %}{% if revision.account_snapshot.iban %}<div><dt>شبای مقصد ثبت‌شده</dt><dd dir="ltr">{{ revision.account_snapshot.iban }}</dd></div>{% endif %}{% if revision.account_snapshot.card_number %}<div><dt>کارت مقصد ثبت‌شده</dt><dd dir="ltr">{{ revision.account_snapshot.card_number }}</dd></div>{% endif %}</dl><p class="pay-section-help">شماره‌های ثبت‌شده را با تصویر فیش تطبیق دهید.</p>{% endif %}
<section class="pay-supplement">{% if receipt.notice %}<h3>اعلامیه مرتبط</h3><p>{% if staff_detail %}<a href="{% url 'staff_payments:notice_detail' receipt.notice.public_id %}">{{ receipt.notice.number }}</a>{% else %}<a href="{% url 'payments:notice_detail' receipt.notice.public_id %}">{{ receipt.notice.number }}</a>{% endif %} · مبلغ اعلام‌شده: {{ receipt.notice.amount|intcomma:False }} ریال{% if receipt.notice.invoice_number %} · فاکتور {{ receipt.notice.invoice_number }}{% endif %}</p>{% else %}<p>واریز مستقل</p>{% endif %}{% if revision.description %}<h3>توضیحات پرداخت</h3><p>{{ revision.description|linebreaksbr }}</p>{% endif %}</section>
</article>
<article class="pay-card pay-image-card"><div class="pay-card-title"><h2>تصویر فیش واریز</h2><a class="pay-button secondary" href="{% url 'payments:receipt_image' receipt.public_id %}?version={{ revision.version }}&download=1">دریافت تصویر</a></div><a href="{% url 'payments:receipt_image' receipt.public_id %}?version={{ revision.version }}" target="_blank" rel="noopener"><img class="receipt-preview" src="{% url 'payments:receipt_image' receipt.public_id %}?version={{ revision.version }}" alt="تصویر فیش واریز"></a><p class="pay-section-help">برای مشاهده تصویر در اندازه اصلی، روی آن بزنید.</p></article>
</div>
<aside class="pay-detail-aside">
{% if can_assign %}<form method="post" action="{% url 'staff_payments:assign_policy' receipt.public_id %}" class="pay-card">{% csrf_token %}<h2>تعیین تأییدکنندگان</h2><p class="pay-section-help">سیاست فعال تأیید را به این فیش اختصاص دهید.</p><button class="pay-button">اعمال سیاست فعال تأیید</button></form>{% endif %}
{% if receipt.status == 'PENDING' or receipt.status == 'PARTIAL' %}{% if can_approve or can_senior %}<form class="pay-card pay-form pay-decision-form" method="post" action="{% url 'staff_payments:decision' receipt.public_id %}">{% csrf_token %}<input type="hidden" name="version" value="{{ revision.version }}"><h2>ثبت نتیجه بررسی</h2><p class="pay-section-help">پس از تطبیق مبلغ، حساب و تصویر فیش، تصمیم خود را ثبت کنید.</p><div class="pay-field"><label for="decision-reason">توضیحات و دلیل تأیید یا رد</label><textarea name="reason" id="decision-reason" aria-describedby="decision-help"></textarea><p id="decision-help" class="pay-field-hint">برای تأیید می‌توانید توضیح بنویسید؛ برای رد، تأیید ارشد و مغایرت حساب، دلیل الزامی است.</p></div><p class="pay-inline-note">تأیید من تا پایان بررسی‌های لازم، تأیید نهایی نیست.</p><div class="pay-decision-actions">{% if can_approve %}<button class="pay-button" name="action" value="APPROVE">ثبت تأیید من</button>{% endif %}{% if can_approve or can_senior %}<button class="pay-button pay-danger secondary" name="action" value="REJECT">رد فیش</button>{% endif %}{% if can_senior %}<button class="pay-button" name="action" value="SENIOR_APPROVE">تأیید نهایی ارشد</button>{% endif %}</div></form>{% endif %}{% endif %}
{% if receipt.status == 'REJECTED' and not staff_detail %}<a class="pay-button" href="{% url 'payments:receipt_revise' receipt.public_id %}">اصلاح و ارسال دوباره فیش</a>{% endif %}
<article class="pay-card"><h2>سوابق بررسی</h2><div class="pay-timeline">{% for vote in decisions %}<div class="pay-timeline-item"><strong>{{ vote.actor_name }}</strong><span>{{ vote.get_action_display }} · نسخه {{ vote.cycle.revision.version }}</span><time>{{ vote.created_at|jalali_datetime }}</time>{% if vote.reason %}<p>{{ vote.reason|linebreaksbr }}</p>{% else %}<p class="pay-field-hint">توضیحی ثبت نشده است.</p>{% endif %}</div>{% empty %}<p class="pay-section-help">هنوز تصمیمی ثبت نشده است.</p>{% endfor %}</div><h3 class="pay-section-title">نسخه‌های مدرک</h3>{% for item in versions %}<div class="pay-version-row"><a href="{% url 'payments:receipt_image' receipt.public_id %}?version={{ item.version }}">نسخه {{ item.version }}</a><div><time>{{ item.created_at|jalali_datetime }}</time><p class="pay-field-hint">{{ item.amount|intcomma:False }} ریال · واریز {{ item.paid_date|jalali_date }} · {{ item.cycle.get_status_display }}</p></div></div>{% endfor %}{% if revision_events %}<h3 class="pay-section-title">سوابق ارسال و اصلاح</h3>{% for event in revision_events %}<div class="pay-timeline-item"><strong>{{ event.actor_name }}</strong><span>{% if event.action == 'RECEIPT_REVISED' %}اصلاح و ارسال نسخه {{ event.details.version }}{% else %}ارسال فیش{% endif %}</span><time>{{ event.created_at|jalali_datetime }}</time></div>{% endfor %}{% endif %}{% if cycle.finalized_at %}<div class="pay-supplement"><h3>نهایی‌کننده</h3><p>{{ cycle.finalized_by.username }}</p><time>{{ cycle.finalized_at|jalali_datetime }}</time></div>{% endif %}</article>
</aside>
</div>
</section>
{% endblock %}