Улучшено: оптимизация сигнала обновления Stock

- Добавлено 'quantity_base' в список полей, влияющих на Stock

- Теперь Stock пересчитывается при изменении quantity_base

- Обновлена документация сигнала update_stock_on_reservation_change
This commit is contained in:
2026-01-02 14:47:16 +03:00
parent d2b49cca56
commit 4ee7c0d23b

View File

@@ -1267,7 +1267,8 @@ def update_stock_on_reservation_change(sender, instance, created, **kwargs):
ОПТИМИЗАЦИЯ: Обновляем Stock только если изменились поля, влияющие на резервы:
- status (reserved/converted_to_sale/released)
- quantity (количество резерва)
- quantity (количество резерва в единицах продажи)
- quantity_base (количество резерва в базовых единицах)
- created (новый резерв)
Процесс:
@@ -1292,9 +1293,9 @@ def update_stock_on_reservation_change(sender, instance, created, **kwargs):
update_fields = kwargs.get('update_fields', None)
# Если update_fields указаны (вызов через save(update_fields=[...]))
# проверяем, есть ли среди них 'status' или 'quantity'
# проверяем, есть ли среди них 'status', 'quantity' или 'quantity_base'
if update_fields is not None:
fields_affecting_stock = {'status', 'quantity'}
fields_affecting_stock = {'status', 'quantity', 'quantity_base'}
if not fields_affecting_stock.intersection(update_fields):
# Изменились другие поля (например, дата) - не обновляем Stock
return