Improve the frontend modals
This commit is contained in:
@@ -81,16 +81,25 @@ class TransformationService:
|
||||
source_reservations
|
||||
)
|
||||
|
||||
# Consume source stock and create movements
|
||||
# Get current stock level before source consumption
|
||||
current_source_stock = await stock_repo.get_total_stock_by_ingredient(tenant_id, UUID(transformation_data.source_ingredient_id))
|
||||
running_stock_level = current_source_stock['total_available']
|
||||
|
||||
# Consume source stock and create movements with progressive tracking
|
||||
consumed_items = []
|
||||
for reservation in source_reservations:
|
||||
stock_id = UUID(reservation['stock_id'])
|
||||
reserved_qty = reservation['reserved_quantity']
|
||||
|
||||
# Calculate before/after for this specific batch
|
||||
batch_quantity_before = running_stock_level
|
||||
batch_quantity_after = running_stock_level - reserved_qty
|
||||
running_stock_level = batch_quantity_after # Update for next iteration
|
||||
|
||||
# Consume from reserved stock
|
||||
await stock_repo.consume_stock(stock_id, reserved_qty, from_reserved=True)
|
||||
|
||||
# Create movement record
|
||||
# Create movement record for source consumption with progressive tracking
|
||||
movement_data = StockMovementCreate(
|
||||
ingredient_id=transformation_data.source_ingredient_id,
|
||||
stock_id=str(stock_id),
|
||||
@@ -99,7 +108,7 @@ class TransformationService:
|
||||
reference_number=transformation.transformation_reference,
|
||||
notes=f"Transformation: {transformation_data.source_stage.value} → {transformation_data.target_stage.value}"
|
||||
)
|
||||
await movement_repo.create_movement(movement_data, tenant_id, user_id)
|
||||
await movement_repo.create_movement(movement_data, tenant_id, user_id, batch_quantity_before, batch_quantity_after)
|
||||
|
||||
consumed_items.append({
|
||||
'stock_id': str(stock_id),
|
||||
@@ -124,6 +133,11 @@ class TransformationService:
|
||||
|
||||
target_stock = await stock_repo.create_stock_entry(target_stock_data, tenant_id)
|
||||
|
||||
# Get current stock level before target addition
|
||||
current_target_stock = await stock_repo.get_total_stock_by_ingredient(tenant_id, UUID(transformation_data.target_ingredient_id))
|
||||
target_quantity_before = current_target_stock['total_available']
|
||||
target_quantity_after = target_quantity_before + transformation_data.target_quantity
|
||||
|
||||
# Create target stock movement
|
||||
target_movement_data = StockMovementCreate(
|
||||
ingredient_id=transformation_data.target_ingredient_id,
|
||||
@@ -133,7 +147,7 @@ class TransformationService:
|
||||
reference_number=transformation.transformation_reference,
|
||||
notes=f"Transformation result: {transformation_data.source_stage.value} → {transformation_data.target_stage.value}"
|
||||
)
|
||||
await movement_repo.create_movement(target_movement_data, tenant_id, user_id)
|
||||
await movement_repo.create_movement(target_movement_data, tenant_id, user_id, target_quantity_before, target_quantity_after)
|
||||
|
||||
# Convert to response schema
|
||||
response = ProductTransformationResponse(**transformation.to_dict())
|
||||
@@ -329,4 +343,4 @@ class TransformationService:
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Failed to get transformation summary", error=str(e), tenant_id=tenant_id)
|
||||
raise
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user