SECURITY: Защита критичных полей системных статусов от редактирования

Заблокировал изменение полей is_positive_end и is_negative_end для
системных статусов заказов, так как эти флаги используются в сигналах
inventory для управления резервированием и списанием товаров со склада.

Что изменено:
- OrderStatusForm: Добавлена блокировка (disabled=True) для полей
  is_positive_end и is_negative_end при редактировании системных статусов
- status_form.html: Заменено информационное предупреждение на красное
  с детальным описанием заблокированных полей и их влияния на систему

Почему это критично:
Эти флаги проверяются в 3 сигналах inventory/signals.py:
1. rollback_sale_on_status_change - откатывает продажи при уходе от 'completed'
2. release_reservations_on_cancellation - освобождает резервы при отмене
3. reserve_stock_on_uncancellation - резервирует при восстановлении заказа

Случайное изменение флагов может привести к:
- Неправильному освобождению резервов товара
- Двойному резервированию
- Блокировке товара навсегда
- Списанию товара для отмененных заказов

Разрешено редактировать для системных статусов: name, label, color, description

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-03 01:07:15 +03:00
parent eaa0b5bd3c
commit dcfb76121d
2 changed files with 19 additions and 2 deletions

View File

@@ -15,8 +15,14 @@
{% endif %}
</h1>
{% if is_system %}
<div class="alert alert-info mt-2">
<i class="fas fa-info-circle"></i> Это системный статус. Некоторые поля не могут быть изменены.
<div class="alert alert-danger mt-2">
<i class="fas fa-exclamation-triangle"></i>
<strong>ВНИМАНИЕ!</strong> Это системный статус, используемый в бизнес-логике системы.
<ul class="mb-0 mt-2">
<li><strong>Код статуса</strong> — заблокирован (используется в коде для проверок)</li>
<li><strong>Положительный/Отрицательный исход</strong> — заблокированы (управляют резервированием и списанием товаров со склада)</li>
<li>Разрешено изменять: название, метку, цвет и описание</li>
</ul>
</div>
{% endif %}
</div>