namespace Domain.Entities
{
    public partial class ELSExpeditionHeader
    {
        /// <summary>
        /// Identificador interno de la expedición
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Referencia al ticket quirúrgico (si aplica)
        /// </summary>
        public Guid? TicketId { get; set; }

        /// <summary>
        /// Número de expedición (formato EX-00000001)
        /// </summary>
        public string Expeditionnumber { get; set; } = string.Empty!;

        /// <summary>
        /// Ubicación (depósito) desde donde se despacha
        /// </summary>
        public int LocationId { get; set; }

        /// <summary>
        /// Fecha de emisión de la expedición
        /// </summary>
        public DateTime Issuedate { get; set; }

        /// <summary>
        /// Estado de la expedición (1=Borrador, 2=Confirmada, etc.)
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// Nombre del destinatario visible en la impresión
        /// </summary>
        public string? RecipientName { get; set; }

        /// <summary>
        /// Número o referencia externa asociada
        /// </summary>
        public string? ReferenceNumber { get; set; }

        /// <summary>
        /// Tipo de origen externo (ej: surgery, demo, préstamo)
        /// </summary>
        public string? OriginType { get; set; }

        /// <summary>
        /// ID externo relacionado a otro módulo (ej: ticket, orden)
        /// </summary>
        public string? ExternalReference { get; set; }

        /// <summary>
        /// Observaciones generales de la expedición
        /// </summary>
        public string? Observations { get; set; }

        /// <summary>
        /// Información adicional en formato JSON (ej: paciente, médico, etc.)
        /// </summary>
        public string? ExtrainfoJson { get; set; }

        /// <summary>
        /// Cantidad de veces que se imprimió la nota de expedición
        /// </summary>
        public int Printcount { 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 ICollection<ELSExpeditionDetail> PhLsmExpeditionDetails { get; set; } = new List<ELSExpeditionDetail>();

    }
}
