Защита удаления заказов и улучшение интерфейса клиентов
Orders: - Удаление разрешено только для черновиков (draft) - Запрет удаления заказов с оплатой (amount_paid > 0) - Кнопка "Удалить" скрыта для недопустимых заказов Customers: - Inline-редактирование полей клиента - Улучшен дизайн карточки клиента - Добавлена история заказов и кошелька 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -26,9 +26,11 @@
|
||||
<a href="{% url 'orders:order-update' order.order_number %}" class="btn btn-primary">
|
||||
<i class="bi bi-pencil"></i> Редактировать
|
||||
</a>
|
||||
{% if order.status and order.status.code == 'draft' and order.amount_paid == 0 %}
|
||||
<a href="{% url 'orders:order-delete' order.order_number %}" class="btn btn-danger">
|
||||
<i class="bi bi-trash"></i> Удалить
|
||||
</a>
|
||||
{% endif %}
|
||||
<a href="{% url 'orders:order-list' %}" class="btn btn-secondary">
|
||||
<i class="bi bi-arrow-left"></i> К списку
|
||||
</a>
|
||||
|
||||
@@ -413,13 +413,31 @@ def order_update(request, order_number):
|
||||
|
||||
|
||||
def order_delete(request, order_number):
|
||||
"""Удаление заказа с подтверждением"""
|
||||
"""Удаление заказа с подтверждением (только для черновиков без оплаты)"""
|
||||
order = get_object_or_404(Order, order_number=order_number)
|
||||
|
||||
# Проверка: удалять можно только черновики
|
||||
if not order.status or order.status.code != 'draft':
|
||||
messages.error(
|
||||
request,
|
||||
f'Удаление невозможно. Удалять можно только заказы в статусе "Черновик". '
|
||||
f'Текущий статус: {order.status.name if order.status else "не задан"}'
|
||||
)
|
||||
return redirect('orders:order-detail', order_number=order.order_number)
|
||||
|
||||
# Проверка: нельзя удалять заказы с оплатой
|
||||
if order.amount_paid > 0:
|
||||
messages.error(
|
||||
request,
|
||||
f'Удаление невозможно. Заказ имеет оплату ({order.amount_paid} руб.). '
|
||||
f'Сначала оформите возврат платежа.'
|
||||
)
|
||||
return redirect('orders:order-detail', order_number=order.order_number)
|
||||
|
||||
if request.method == 'POST':
|
||||
order_number = order.order_number
|
||||
order_number_saved = order.order_number
|
||||
order.delete()
|
||||
messages.success(request, f'Заказ #{order_number} успешно удален.')
|
||||
messages.success(request, f'Заказ #{order_number_saved} успешно удален.')
|
||||
return redirect('orders:order-list')
|
||||
|
||||
context = {
|
||||
|
||||
Reference in New Issue
Block a user