namespace Domain.Entities
{
    public class ELSStockItem
    {
        /// <summary>
        /// Identificador único del ítem de stock físico
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Producto vinculado al ítem de stock
        /// </summary>
        public int ProductId { get; set; }

        /// <summary>
        /// Ubicación física del stock (depósito, valija, etc.)
        /// </summary>
        public int LocationId { get; set; }

        /// <summary>
        /// Cantidad actual disponible en esta unidad de stock
        /// </summary>
        public decimal Quantity { get; set; }

        /// <summary>
        /// Cantidad comprometida o reservada para expediciones futuras
        /// </summary>
        public decimal ReservedQuantity { get; set; }

        /// <summary>
        /// Código de lote (si aplica)
        /// </summary>
        public string? Batch { get; set; }

        /// <summary>
        /// Número de serie de la unidad individual, según etiqueta de trazabilidad del fabricante.
        /// </summary>
        public string? Serial { get; set; }

        /// <summary>
        /// Fecha de vencimiento (si aplica)
        /// </summary>
        public DateOnly? Expiration { get; set; }

        /// <summary>
        /// Estado del ítem (1=Disponible, 2=Reservado, 3=Vencido, etc.)
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// Comentario libre u observación sobre este ítem de stock
        /// </summary>
        public string? Description { get; set; }

        /// <summary>
        /// Fecha de creación del registro
        /// </summary>
        public DateTime Createdat { get; set; }

        /// <summary>
        /// Fecha de última modificación del registro
        /// </summary>
        public DateTime? Modifiedat { get; set; }

        //public virtual PhLsmStockLocation Location { get; set; } = null!;

        //public virtual PhLsmProduct Product { get; set; } = null!;
    }
}
