namespace CMSMicroservice.Application.InventoryItemCQ.Commands.ReduceInventory;
///
/// Command برای کم کردن موجودی (فروش، خسارت، مفقودی و ...)
///
public record ReduceInventoryCommand : IRequest
{
/// شناسه آیتم موجودی
public long Id { get; init; }
/// تعداد کاهش
public int Quantity { get; init; }
/// شناسه سفارش عادی
public long? OrderId { get; init; }
/// شناسه سفارش تخفیفی
public long? DiscountOrderId { get; init; }
/// شماره مرجع
public string? ReferenceNumber { get; init; }
/// شناسه کاربر انجامدهنده
public long? PerformedByUserId { get; init; }
/// آیا از موجودی رزرو شده کم شود؟
public bool FromReserved { get; init; } = true;
/// نوع حرکت انبار (پیشفرض: فروش)
public Domain.Enums.StockMovementType MovementType { get; init; } = Domain.Enums.StockMovementType.Sale;
/// توضیحات
public string? Note { get; init; }
}