Улучшено: оптимизация сигнала обновления Stock
- Добавлено 'quantity_base' в список полей, влияющих на Stock - Теперь Stock пересчитывается при изменении quantity_base - Обновлена документация сигнала update_stock_on_reservation_change
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user