Добавлена защита от повторного списания + команда исправления дубликатов

Проблема: Сигнал post_save срабатывает несколько раз,
создавая дубликаты Sale для одного заказа.

Решения:
1. Добавлена проверка Sale.objects.filter(order=instance).exists()
   перед созданием продаж (inventory/signals.py:74-75)
2. Создана management команда fix_duplicate_sales для исправления
   существующих дубликатов

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-30 22:15:33 +03:00
parent 24292b2e47
commit 920dbf4273
5 changed files with 381 additions and 0 deletions

View File

@@ -70,6 +70,10 @@ def create_sale_on_order_completion(sender, instance, created, **kwargs):
if instance.status.code != 'completed':
return # Только для статуса 'completed'
# Защита от повторного списания: проверяем, не созданы ли уже Sale для этого заказа
if Sale.objects.filter(order=instance).exists():
return # Продажи уже созданы, выходим
# Определяем склад (используем склад самовывоза из заказа или первый активный)
warehouse = instance.pickup_warehouse or Warehouse.objects.filter(is_active=True).first()