namespace CMSMicroservice.Domain.Enums;

/// <summary>
/// نوع حرکت انبار
/// </summary>
public enum StockMovementType
{
    // ========== ورودی ==========
    
    /// <summary>
    /// موجودی اولیه محصول
    /// </summary>
    InitialStock = 1,
    
    /// <summary>
    /// ورود کالا به انبار (خرید از تامین‌کننده)
    /// </summary>
    Restock = 2,
    
    /// <summary>
    /// برگشت کالا از مشتری
    /// </summary>
    Return = 3,
    
    /// <summary>
    /// انتقال کالا از انبار دیگر
    /// </summary>
    TransferIn = 4,
    
    // ========== خروجی ==========
    
    /// <summary>
    /// فروش کالا به مشتری
    /// </summary>
    Sale = 10,
    
    /// <summary>
    /// ضایعات (کالای خراب شده)
    /// </summary>
    Damaged = 11,
    
    /// <summary>
    /// مفقودی انبار
    /// </summary>
    Lost = 12,
    
    /// <summary>
    /// انتقال کالا به انبار دیگر
    /// </summary>
    TransferOut = 13,
    
    // ========== تعدیل ==========
    
    /// <summary>
    /// تعدیل افزایشی موجودی (انبارگردانی مثبت)
    /// </summary>
    AdjustmentPlus = 20,
    
    /// <summary>
    /// تعدیل کاهشی موجودی (انبارگردانی منفی)
    /// </summary>
    AdjustmentMinus = 21,
    
    // ========== رزرو ==========
    
    /// <summary>
    /// رزرو موجودی برای سفارش pending
    /// </summary>
    Reserved = 30,
    
    /// <summary>
    /// آزادسازی رزرو (لغو سفارش)
    /// </summary>
    Released = 31
}