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