namespace Domain.Dtos.Stock { /// /// DTO de lectura y de impresión para una Expedición (nota de entrega). /// Representa la cabecera + lista de ítems listos para renderizar en UI/PDF. /// public class ExpeditionDto { // ===== Identificación / numeración ===== /// /// Identificador interno de la expedición. /// public int Id { get; set; } /// /// Número de expedición (ej.: EX-00000001). /// Lo genera el servidor al emitir según la serie. /// public string Expeditionnumber { get; set; } = string.Empty; // ===== Fechas / estado ===== /// /// Fecha de emisión de la expedición. /// public DateTime Issuedate { get; set; } /// /// Estado numérico de la expedición (según enum del dominio). /// public int Status { get; set; } /// /// Etiqueta amigable del estado (ej.: Emitida, En tránsito, En destino, Retorno, Cerrada, Anulada). /// public string StatusLabel { get; set; } = string.Empty; // ===== Origen (depósito) ===== /// /// Id de la ubicación/depósito desde donde se despacha. /// public int LocationId { get; set; } /// /// Nombre de la ubicación/depósito (resuelto por join). /// public string? LocationName { get; set; } /// /// (Opcional) Dirección del depósito/origen, útil para impresión. /// public string? LocationAddress { get; set; } // ===== Destino / referencias externas ===== /// /// Nombre visible del destinatario (si se define para la impresión). /// public string? RecipientName { get; set; } /// /// Número o referencia externa asociada (si aplica). /// public string? ReferenceNumber { get; set; } /// /// Tipo de origen externo (ej.: surgery, demo, préstamo). /// public string? OriginType { get; set; } /// /// Referencia externa a otro módulo o sistema (ticket/orden). /// public string? ExternalReference { get; set; } /// /// Ticket quirúrgico asociado (si corresponde). /// public Guid? TicketId { get; set; } // ===== “Foto” (snapshot) de la cirugía/paciente (Extrainfo) ===== /// /// Información adicional en JSON tal como se almacenó (para trazabilidad). /// public string? ExtrainfoJson { get; set; } // ===== Observaciones / instrucciones ===== /// /// Observaciones generales de la expedición (libre). /// public string? Observations { get; set; } // ===== Auditoría de impresión ===== /// /// Cantidad de veces que se imprimió la nota (para mostrar "Reimpresión N"). /// public int Printcount { get; set; } /// /// Fecha de creación del registro (trazabilidad). /// public DateTime Createdat { get; set; } /// /// Fecha de última modificación del registro (trazabilidad). /// public DateTime? Modifiedat { get; set; } // ===== Ítems ===== /// /// Detalle de los ítems/productos de la expedición. /// public List Items { get; set; } = new(); // ===== Totales de conveniencia para la impresión ===== /// /// Total de renglones en la expedición (Items.Count). /// public int TotalItems => Items?.Count ?? 0; /// /// Suma de cantidades (para pie de impresión). /// public decimal TotalQuantity => Items?.Sum(i => i.Quantity) ?? 0m; /// /// Logo de la compañia. /// public string LogoBase64 { get; set; } = string.Empty; } }