namespace Domain.Entities
{
    public class ELSStockEntry
    {
        /// <summary>
        /// Identificador único del ingreso de stock
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Producto ingresado al stock
        /// </summary>
        public int ProductId { get; set; }

        /// <summary>
        /// Cantidad ingresada del producto
        /// </summary>
        public decimal Quantity { get; set; }

        /// <summary>
        /// Precio unitario usado para valorizar el ingreso
        /// </summary>
        public decimal Unitprice { get; set; }

        /// <summary>
        /// Moneda utilizada en la valorización (ARS, USD, EUR)
        /// </summary>
        public string Currency { get; set; } = null!;

        /// <summary>
        /// Tasa de conversión de la moneda a ARS
        /// </summary>
        public decimal Exchangerate { get; set; }

        /// <summary>
        /// Fecha del ingreso de stock
        /// </summary>
        public DateTime Entrydate { get; set; }

        /// <summary>
        /// Referencia visible del movimiento (ej: factura, orden de compra)
        /// </summary>
        public string? Reference { get; set; }

        /// <summary>
        /// Tipo de origen del ingreso (purchase, return, manual, etc.)
        /// </summary>
        public string? Sourcetype { get; set; }

        /// <summary>
        /// ID de la entidad que generó el ingreso (ej: orden de compra)
        /// </summary>
        public int? SourceId { get; set; }

        /// <summary>
        /// Ubicación física donde se depositó el producto
        /// </summary>
        public int LocationId { get; set; }

        /// <summary>
        /// Lote del producto ingresado (si aplica trazabilidad)
        /// </summary>
        public string? Batch { get; set; }

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

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

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