From 1f8fd54c10dd80263d8df50b6a64ab32ac78b7e1 Mon Sep 17 00:00:00 2001 From: Andrey Smakotin Date: Mon, 29 Dec 2025 00:37:27 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D1=82=D1=80=D0=B0=D0=BD=D0=B7=D0=B0=D0=BA?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BA=D0=BE=D1=88=D0=B5=D0=BB=D1=8C=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=80=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D0=B7=D0=B0=D0=BA=D0=B0=D0=B7=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Удаление заказа теперь блокируется если есть связанные WalletTransaction (on_delete=PROTECT). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- myproject/orders/templates/orders/order_detail.html | 2 +- myproject/orders/views.py | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/myproject/orders/templates/orders/order_detail.html b/myproject/orders/templates/orders/order_detail.html index 232986f..3283771 100644 --- a/myproject/orders/templates/orders/order_detail.html +++ b/myproject/orders/templates/orders/order_detail.html @@ -26,7 +26,7 @@ Редактировать - {% if order.status and order.status.code == 'draft' and order.amount_paid == 0 %} + {% if order.status and order.status.code == 'draft' and order.amount_paid == 0 and not order.wallet_transactions.exists %} Удалить diff --git a/myproject/orders/views.py b/myproject/orders/views.py index 26cfc08..d502432 100644 --- a/myproject/orders/views.py +++ b/myproject/orders/views.py @@ -434,6 +434,15 @@ def order_delete(request, order_number): ) return redirect('orders:order-detail', order_number=order.order_number) + # Проверка: нельзя удалять заказы с транзакциями кошелька + if order.wallet_transactions.exists(): + messages.error( + request, + 'Удаление невозможно. Заказ имеет транзакции кошелька клиента. ' + 'Сначала удалите связанные транзакции.' + ) + return redirect('orders:order-detail', order_number=order.order_number) + if request.method == 'POST': order_number_saved = order.order_number order.delete()