Исправление конфликта сигналов при отмене трансформации
Исправлена проблема, когда при отмене проведенной трансформации оба сигнала выполнялись последовательно:
- 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:
@@ -747,6 +747,23 @@ class TransformationOutputForm(forms.Form):
|
||||
# Проверяем что товар еще не добавлен
|
||||
if self.transformation and self.transformation.outputs.filter(product=product).exists():
|
||||
raise ValidationError(f'Товар "{product.name}" уже добавлен в качестве выходного')
|
||||
|
||||
# Проверяем что сумма выходных не превышает сумму входных
|
||||
if self.transformation:
|
||||
total_input = sum(
|
||||
trans_input.quantity for trans_input in self.transformation.inputs.all()
|
||||
)
|
||||
total_output_existing = sum(
|
||||
trans_output.quantity for trans_output in self.transformation.outputs.all()
|
||||
)
|
||||
total_output_new = total_output_existing + quantity
|
||||
|
||||
if total_output_new > total_input:
|
||||
raise ValidationError(
|
||||
f'Сумма выходных количеств ({total_output_new}) не может превышать '
|
||||
f'сумму входных количеств ({total_input}). '
|
||||
f'Максимально можно добавить: {total_input - total_output_existing}'
|
||||
)
|
||||
|
||||
return cleaned_data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user