fix(signals): обновление Stock после удаления партии Output в процессе отмены трансформации
This commit is contained in:
@@ -1652,10 +1652,20 @@ def rollback_transformation_on_cancel(sender, instance, **kwargs):
|
|||||||
# 1. Удаляем партии Output
|
# 1. Удаляем партии Output
|
||||||
for trans_output in instance.outputs.all():
|
for trans_output in instance.outputs.all():
|
||||||
if trans_output.stock_batch:
|
if trans_output.stock_batch:
|
||||||
# Восстанавливаем количество из партии в Stock (автоматически через сигналы)
|
# Сохраняем ссылки на товар и склад перед удалением партии
|
||||||
# Просто удаляем партию - остатки пересчитаются
|
output_product = trans_output.product
|
||||||
|
output_warehouse = instance.warehouse
|
||||||
batch = trans_output.stock_batch
|
batch = trans_output.stock_batch
|
||||||
batch.delete()
|
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.stock_batch = None
|
||||||
trans_output.save(update_fields=['stock_batch'])
|
trans_output.save(update_fields=['stock_batch'])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user