Уточнение UI возвратов: пометка метода кошелька и корректный текст предупреждения

Изменения:
- Добавлена пометка '(кошелёк клиента)' к методу оплаты с кодом account_balance в селектах платежа и возврата
- Обновлён текст предупреждения о возврате: теперь явно указано, что зачисление в кошелёк происходит только при выборе метода 'кошелёк клиента'
- Для всех остальных методов (наличные, карта и т.п.) возврат — это информационная метка для истории, без фактического движения средств

Цель:
- Устранить путаницу операторов относительно поведения возвратов
- Чётко разделить возврат клиенту (внешними способами) и зачисление в кошелёк (только для account_balance)
- UI теперь соответствует фактической серверной логике в Transaction.save()

Защита от переплаты:
- Серверная валидация в TransactionService.create_refund проверяет amount <= order.amount_paid
- UI ограничение max на поле ввода суммы возврата
- ValidationError с понятным сообщением при попытке превысить лимит
This commit is contained in:
2025-11-29 15:47:47 +03:00
parent 2ec6d1935d
commit 312cd808e6

View File

@@ -732,7 +732,7 @@
{% load orders_tags %} {% load orders_tags %}
{% get_payment_methods as payment_methods %} {% get_payment_methods as payment_methods %}
{% for pm in payment_methods %} {% for pm in payment_methods %}
<option value="{{ pm.id }}">{{ pm.name }}</option> <option value="{{ pm.id }}">{{ pm.name }}{% if pm.code == 'account_balance' %} (кошелёк клиента){% endif %}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>
@@ -771,7 +771,7 @@
<div class="alert alert-warning mb-3"> <div class="alert alert-warning mb-3">
<i class="bi bi-exclamation-triangle"></i> <i class="bi bi-exclamation-triangle"></i>
<strong>Возврат средств клиенту</strong><br> <strong>Возврат средств клиенту</strong><br>
<small>Можно вернуть любую сумму до {{ order.amount_paid|floatformat:2 }} руб. Возврат на кошелёк произойдёт автоматически при выборе соответствующего способа оплаты.</small> <small>Можно вернуть любую сумму до {{ order.amount_paid|floatformat:2 }} руб. Выберите способ возврата (обычно соответствует способу оплаты). Зачисление в кошелёк клиента произойдёт только при выборе метода «кошелёк клиента».</small>
</div> </div>
<div class="row align-items-end"> <div class="row align-items-end">
<div class="col-12 mb-2"> <div class="col-12 mb-2">
@@ -781,7 +781,7 @@
{% load orders_tags %} {% load orders_tags %}
{% get_payment_methods as payment_methods %} {% get_payment_methods as payment_methods %}
{% for pm in payment_methods %} {% for pm in payment_methods %}
<option value="{{ pm.id }}">{{ pm.name }}</option> <option value="{{ pm.id }}">{{ pm.name }}{% if pm.code == 'account_balance' %} (кошелёк клиента){% endif %}</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>