fix: StockMovement CHECK constraint violation — store Quantity as negative for reduce operations, pass correct MovementType from RecordLoss
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
Build and Deploy to Kubernetes / build-and-deploy (push) Has been cancelled
This commit is contained in:
+5
-1
@@ -1,7 +1,7 @@
|
||||
namespace CMSMicroservice.Application.InventoryItemCQ.Commands.ReduceInventory;
|
||||
|
||||
/// <summary>
|
||||
/// Command برای کم کردن موجودی (فروش)
|
||||
/// Command برای کم کردن موجودی (فروش، خسارت، مفقودی و ...)
|
||||
/// </summary>
|
||||
public record ReduceInventoryCommand : IRequest<ReduceInventoryResponseDto>
|
||||
{
|
||||
@@ -19,4 +19,8 @@ public record ReduceInventoryCommand : IRequest<ReduceInventoryResponseDto>
|
||||
public long? PerformedByUserId { get; init; }
|
||||
/// <summary>آیا از موجودی رزرو شده کم شود؟</summary>
|
||||
public bool FromReserved { get; init; } = true;
|
||||
/// <summary>نوع حرکت انبار (پیشفرض: فروش)</summary>
|
||||
public Domain.Enums.StockMovementType MovementType { get; init; } = Domain.Enums.StockMovementType.Sale;
|
||||
/// <summary>توضیحات</summary>
|
||||
public string? Note { get; init; }
|
||||
}
|
||||
|
||||
+3
-3
@@ -53,11 +53,11 @@ public class ReduceInventoryCommandHandler : IRequestHandler<ReduceInventoryComm
|
||||
var stockMovement = new StockMovement
|
||||
{
|
||||
InventoryItemId = item.Id,
|
||||
MovementType = StockMovementType.Sale,
|
||||
Quantity = request.Quantity,
|
||||
MovementType = request.MovementType,
|
||||
Quantity = -request.Quantity, // منفی — CHECK constraint: QuantityAfter = QuantityBefore + Quantity
|
||||
QuantityBefore = previousQuantity,
|
||||
QuantityAfter = item.Quantity,
|
||||
Note = "Sale confirmed",
|
||||
Note = request.Note ?? request.MovementType.ToString(),
|
||||
ReferenceNumber = request.ReferenceNumber ?? $"SALE-{DateTime.UtcNow:yyyyMMddHHmmss}",
|
||||
OrderId = request.OrderId,
|
||||
DiscountOrderId = request.DiscountOrderId,
|
||||
|
||||
@@ -181,7 +181,9 @@ public class InventoryService : InventoryContract.InventoryContractBase
|
||||
Id = inventoryItem.Id,
|
||||
Quantity = Math.Abs(difference),
|
||||
FromReserved = false,
|
||||
ReferenceNumber = request.ReferenceNumber
|
||||
ReferenceNumber = request.ReferenceNumber,
|
||||
MovementType = Domain.Enums.StockMovementType.AdjustmentMinus,
|
||||
Note = "Stock adjustment (decrease)"
|
||||
},
|
||||
context.CancellationToken);
|
||||
|
||||
@@ -332,7 +334,9 @@ public class InventoryService : InventoryContract.InventoryContractBase
|
||||
Id = inventoryItem.Id,
|
||||
Quantity = request.Quantity,
|
||||
FromReserved = false,
|
||||
ReferenceNumber = request.ReferenceNumber ?? $"LOSS-{DateTime.UtcNow:yyyyMMddHHmmss}"
|
||||
ReferenceNumber = request.ReferenceNumber ?? $"LOSS-{DateTime.UtcNow:yyyyMMddHHmmss}",
|
||||
MovementType = (Domain.Enums.StockMovementType)request.LossType,
|
||||
Note = string.IsNullOrWhiteSpace(request.Reason) ? null : request.Reason
|
||||
},
|
||||
context.CancellationToken);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user