Исправление конфликта сигналов при отмене трансформации
Исправлена проблема, когда при отмене проведенной трансформации оба сигнала выполнялись последовательно:
- rollback_transformation_on_cancel возвращал резервы в 'reserved'
- release_reservations_on_draft_cancel ошибочно освобождал их в 'released'
Изменена проверка в release_reservations_on_draft_cancel: вместо проверки наличия партий Output (которые уже удалены) теперь проверяется статус резервов ('converted_to_transformation') или наличие поля converted_at, что работает независимо от порядка выполнения сигналов.
This commit is contained in:
@@ -218,6 +218,20 @@ class TransformationService:
|
||||
if not transformation.outputs.exists():
|
||||
raise ValidationError("Добавьте хотя бы один выходной товар")
|
||||
|
||||
# Проверяем что сумма входных количеств равна сумме выходных
|
||||
total_input_quantity = sum(
|
||||
trans_input.quantity for trans_input in transformation.inputs.all()
|
||||
)
|
||||
total_output_quantity = sum(
|
||||
trans_output.quantity for trans_output in transformation.outputs.all()
|
||||
)
|
||||
|
||||
if total_input_quantity != total_output_quantity:
|
||||
raise ValidationError(
|
||||
f"Сумма входных количеств ({total_input_quantity}) должна быть равна "
|
||||
f"сумме выходных количеств ({total_output_quantity})"
|
||||
)
|
||||
|
||||
# Проверяем наличие всех входных товаров
|
||||
for trans_input in transformation.inputs.all():
|
||||
stock = Stock.objects.filter(
|
||||
|
||||
Reference in New Issue
Block a user