feat(inventory): учитывать коэффициент конверсии при резервировании компонентов комплектов
Добавлены поля original_sales_unit и conversion_factor в KitItemSnapshot для хранения единиц продажи и коэффициентов конверсии на момент создания снимка. Обновлена логика резервирования запасов для корректного расчета количества в базовых единицах. Изменения в шаблоне редактирования комплектов для сохранения выбранных единиц продажи при обновлении списка опций. BREAKING CHANGE: Изменена структура данных в KitItemSnapshot, требуется миграция базы данных.
This commit is contained in:
@@ -222,9 +222,14 @@ def reserve_stock_on_item_create(sender, instance, created, **kwargs):
|
||||
|
||||
for kit_item in instance.kit_snapshot.items.select_related('original_product'):
|
||||
if kit_item.original_product:
|
||||
# Суммируем количество: qty компонента * qty комплектов в заказе
|
||||
# Рассчитываем количество одного компонента в базовых единицах
|
||||
component_qty_base = kit_item.quantity
|
||||
if kit_item.conversion_factor and kit_item.conversion_factor > 0:
|
||||
component_qty_base = kit_item.quantity / kit_item.conversion_factor
|
||||
|
||||
# Суммируем количество: qty компонента (base) * qty комплектов в заказе
|
||||
product_quantities[kit_item.original_product_id] += (
|
||||
kit_item.quantity * Decimal(str(instance.quantity))
|
||||
component_qty_base * Decimal(str(instance.quantity))
|
||||
)
|
||||
|
||||
# Создаём по одному резерву на каждый уникальный товар
|
||||
|
||||
Reference in New Issue
Block a user