Files
2026-10-06 10:03:22 +03:30

39 lines
8.1 KiB
HTML

{% extends 'payments/base.html' %}{% load static %}
{% block title %}{{ heading }}{% endblock %}
{% block content %}
<section class="chaharsu pay-workspace pay-form-workspace">
<a class="pay-back" href="{% if form.bank %}{% url 'staff_payments:banks' %}{% else %}{% url 'staff_payments:desk' %}{% endif %}">{% include 'payments/_icon.html' with name='chevron' %}{% if form.bank %}بانک‌ها و حساب‌ها{% else %}اعلامیه‌ها و فیش‌ها{% endif %}</a>
<header class="pay-page-head"><div class="pay-page-title"><span class="pay-page-icon">{% if form.bank %}{% include 'payments/_icon.html' with name='bank' %}{% else %}{% include 'payments/_icon.html' with name='receipt' %}{% endif %}</span><div><h1>{{ heading }}</h1><p>{% if form.bank %}اطلاعات حساب و دسترسی هر پنل را مشخص کنید.{% elif form.subject %}حساب مقصد و جزئیات واریز را برای مشتری اعلام کنید.{% else %}ابتدا مشتری را انتخاب کنید؛ در مرحله بعد اطلاعات فیش را وارد می‌کنید.{% endif %}</p></div></div></header>
<form method="post" class="pay-card pay-form pay-staff-form">
{% csrf_token %}
{% if form.non_field_errors %}<div class="pay-errors" role="alert"><strong>اطلاعات را دوباره بررسی کنید</strong>{{ form.non_field_errors }}</div>{% endif %}
{% for field in form.hidden_fields %}{% if field.name != 'customer' %}{{ field }}{% if field.errors %}<div class="field-error" role="alert">{{ field.errors }}</div>{% endif %}{% endif %}{% endfor %}
{% if form.bank %}
<fieldset class="pay-form-section"><legend>مشخصات حساب</legend><p class="pay-section-help">نام نمایشی، همان نامی است که کارشناسان و مشتریان هنگام انتخاب حساب می‌بینند.</p><div class="pay-form-grid">
{% include 'payments/_field.html' with field=form.name %}{% include 'payments/_field.html' with field=form.bank %}
{% include 'payments/_field.html' with field=form.holder wide=True %}
{% include 'payments/_field.html' with field=form.account_number %}{% include 'payments/_field.html' with field=form.card_number %}
{% include 'payments/_field.html' with field=form.iban wide=True hint='شبا را با IR و بدون فاصله وارد کنید.' %}
</div><p class="pay-inline-note">حداقل یکی از شماره حساب، شبا یا شماره کارت را وارد کنید.</p></fieldset>
<fieldset class="pay-form-section"><legend>تنظیمات و دسترسی‌ها</legend><p class="pay-section-help">فعال‌بودن کلی حساب، شرط استفاده از آن در هر دو پنل است.</p><div class="pay-check-grid">
<label class="pay-check-card">{{ form.is_active }}<span><strong>فعال‌بودن کلی حساب</strong><small>با غیرفعال‌کردن، حساب در هیچ پنلی قابل انتخاب نیست.</small>{{ form.is_active.errors }}</span></label>
<label class="pay-check-card">{{ form.requires_deposit_id }}<span><strong>شناسه واریز الزامی است</strong><small>کارشناس باید شناسه واریز مشتری را هنگام صدور اعلامیه وارد کند.</small>{{ form.requires_deposit_id.errors }}</span></label>
<label class="pay-check-card">{{ form.available_to_staff }}<span><strong>قابل انتخاب کارشناسان</strong><small>این حساب برای ایجاد اعلامیه واریز نمایش داده شود.</small>{{ form.available_to_staff.errors }}</span></label>
<label class="pay-check-card">{{ form.available_to_customers }}<span><strong>قابل انتخاب مشتریان</strong><small>این حساب برای ثبت واریز مستقل در چهارسو نمایش داده شود.</small>{{ form.available_to_customers.errors }}</span></label>
</div><div class="pay-sort-field">{% include 'payments/_field.html' with field=form.sort_order label='ترتیب نمایش' hint='عدد کوچک‌تر، حساب را بالاتر در فهرست قرار می‌دهد.' %}</div></fieldset>
{% elif form.subject %}
<fieldset class="pay-form-section"><legend>مشتری و حساب مقصد</legend><div class="pay-form-grid">{% include 'payments/_customer_picker.html' %}{% include 'payments/_field.html' with field=form.account wide=True %}</div></fieldset>
<fieldset class="pay-form-section"><legend>جزئیات واریز</legend><div class="pay-form-grid">
{% include 'payments/_field.html' with field=form.subject wide=True %}{% include 'payments/_field.html' with field=form.amount %}{% include 'payments/_field.html' with field=form.invoice_number %}
<div class="pay-field pay-field-wide {% if form.deposit_id.errors %}has-error{% endif %}"><label for="{{ form.deposit_id.id_for_label }}">{{ form.deposit_id.label }}</label><div class="pay-identifier-control">{{ form.deposit_id }}<button type="button" class="pay-button secondary" id="generate-deposit-identifier" data-url="{% url 'staff_payments:generate_identifier' %}" aria-describedby="identifier-generation-status" disabled>{% include 'payments/_icon.html' with name='plus' %}تولید خودکار شناسه</button></div><p id="identifier-generation-status" class="pay-field-hint" role="status" aria-live="polite">ابتدا مشتری را انتخاب کنید؛ شناسه بر اساس شماره موبایل او تولید می‌شود.</p><div id="identifier-replacement" class="pay-supplement" hidden><p>شناسه پیشنهادی: <bdi id="identifier-candidate"></bdi></p><p class="pay-field-hint">شناسه فعلی حفظ شده است. برای جایگزینی، تأیید کنید.</p><div class="pay-actions"><button type="button" class="pay-button secondary" id="apply-deposit-identifier">جایگزینی شناسه</button><button type="button" class="pay-text-link" id="cancel-deposit-identifier">انصراف</button></div></div><p id="identifier-help" class="pay-field-hint" role="status">برای حساب‌های شناسه‌دار، شناسه واریز مشتری الزامی است.</p>{% if form.deposit_id.errors %}<div class="field-error" role="alert">{{ form.deposit_id.errors }}</div>{% endif %}</div>
{% include 'payments/_field.html' with field=form.description wide=True hint='توضیحات این بخش برای مشتری قابل مشاهده است.' %}
</div><p class="pay-inline-note">پس از صدور اعلامیه، پیامک اطلاع‌رسانی برای مشتری در صف ارسال قرار می‌گیرد.</p></fieldset>
{% else %}<fieldset class="pay-form-section"><legend>انتخاب مشتری</legend><div class="pay-form-grid">{% include 'payments/_customer_picker.html' %}</div></fieldset>{% endif %}
<div class="pay-form-footer"><button class="pay-button" type="submit">{{ submit_label }}</button><a class="pay-button secondary" href="{% if form.bank %}{% url 'staff_payments:banks' %}{% else %}{% url 'staff_payments:desk' %}{% endif %}">انصراف</a></div>
</form>
{% if bank_account %}<details class="pay-delete-panel"><summary>حذف حساب</summary><form method="post" action="{% url 'staff_payments:bank_delete' bank_account.public_id %}">{% csrf_token %}<p>حساب «{{ bank_account.name }}» فقط در صورت نداشتن سابقه مالی حذف می‌شود. برای توقف استفاده، آن را غیرفعال کنید.</p><button class="pay-button pay-danger" type="submit">حذف حساب بدون سابقه</button></form></details>{% endif %}
{% if identifier_accounts %}{{ identifier_accounts|json_script:'identifier-accounts' }}{% endif %}
</section>
{% endblock %}
{% block extra_scripts %}{{ block.super }}{% if form.subject %}<script defer src="{% static 'js/chaharsu/deposit-identifier.js' %}?v={{ static_asset_version }}"></script>{% endif %}{% if form.amount %}<script defer src="{% static 'js/chaharsu/receipt-amount.js' %}?v={{ static_asset_version }}"></script>{% endif %}{% if form.customer %}<script defer src="{% static 'js/chaharsu/customer-picker.js' %}?v={{ static_asset_version }}"></script>{% endif %}{% endblock %}