diff --git a/myproject/inventory/signals.py b/myproject/inventory/signals.py index e027c66..c619720 100644 --- a/myproject/inventory/signals.py +++ b/myproject/inventory/signals.py @@ -1652,10 +1652,20 @@ def rollback_transformation_on_cancel(sender, instance, **kwargs): # 1. Удаляем партии Output for trans_output in instance.outputs.all(): if trans_output.stock_batch: - # Восстанавливаем количество из партии в Stock (автоматически через сигналы) - # Просто удаляем партию - остатки пересчитаются + # Сохраняем ссылки на товар и склад перед удалением партии + output_product = trans_output.product + output_warehouse = instance.warehouse batch = trans_output.stock_batch batch.delete() + + # ВАЖНО: Обновляем Stock после удаления партии Output + # Сигнал post_delete для StockBatch не обновляет Stock, только себестоимость + stock, _ = Stock.objects.get_or_create( + product=output_product, + warehouse=output_warehouse + ) + stock.refresh_from_batches() + trans_output.stock_batch = None trans_output.save(update_fields=['stock_batch'])