using System;
using System.Collections.Generic;

namespace Models.Models;

public partial class PhLsmExpeditionDetail
{
    /// <summary>
    /// Identificador interno del ítem de expedición
    /// </summary>
    public int Id { get; set; }

    /// <summary>
    /// Referencia a la cabecera de expedición (PhLSM_ExpeditionHeaders)
    /// </summary>
    public int ExpeditionId { get; set; }

    /// <summary>
    /// Producto médico a despachar
    /// </summary>
    public int ProductId { get; set; }

    /// <summary>
    /// Referencia a StockItem (PhLSM_StockItem)
    /// </summary>
    public int StockitemId { get; set; }

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

    /// <summary>
    /// Ubicación específica desde donde se despacha este ítem
    /// </summary>
    public int LocationId { get; set; }

    /// <summary>
    /// Número de lote (si aplica trazabilidad)
    /// </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 del producto (si aplica trazabilidad)
    /// </summary>
    public DateOnly? Expiration { get; set; }

    /// <summary>
    /// Descripción libre del ítem (uso interno o impresión)
    /// </summary>
    public string? Description { get; set; }

    /// <summary>
    /// Precio estimado unitario del producto (sin efecto contable)
    /// </summary>
    public decimal? EstimatedUnitprice { get; set; }

    /// <summary>
    /// Moneda del precio estimado (ej: ARS, USD)
    /// </summary>
    public string? EstimatedCurrency { get; set; }

    /// <summary>
    /// Tipo de cambio aplicado al precio estimado
    /// </summary>
    public decimal? EstimatedExchangerate { get; set; }

    public virtual PhLsmExpeditionHeader Expedition { get; set; } = null!;

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

    public virtual PhLsmStockItem Stockitem { get; set; } = null!;
}
