@using Domain.Dtos.Sales @if (Visible && Summary != null) {
Detalle Remito @HeaderNumber
@HeaderStatus
@if (Loading) {
Cargando detalle...
} else if (activeTab == "Datos") {
@HeaderNumber
@HeaderIssueDate.ToString("dd/MM/yyyy")
@HeaderCustomerName
@HeaderQuoteNumber
@HeaderStatus
@HeaderPrintCount
@(Detail?.SalesInvoiceId?.ToString() ?? "—")
@(Detail?.ModifiedAt?.ToString("dd/MM/yyyy HH:mm") ?? "—")
@(string.IsNullOrWhiteSpace(Detail?.Observations) ? "—" : Detail!.Observations)
} else { @if (Detail?.Items == null || !Detail.Items.Any()) {

No hay ítems para este remito.

} else {
@foreach (var item in Detail.Items.OrderBy(i => i.LineNumber)) { }
Línea Descripción Cantidad Origen Notas
@item.LineNumber @item.Description @item.Quantity @GetOriginLabel(item.OriginType) @(string.IsNullOrWhiteSpace(item.Notes) ? "—" : item.Notes)
} }
} @code { [Parameter] public bool Visible { get; set; } [Parameter] public EventCallback VisibleChanged { get; set; } [Parameter] public DeliveryNoteSummaryDto? Summary { get; set; } [Parameter] public DeliveryNoteDto? Detail { get; set; } [Parameter] public bool Loading { get; set; } private string activeTab = "Datos"; private int? lastDeliveryNoteId; private string HeaderNumber => Detail?.DeliveryNoteNumber ?? Summary?.DeliveryNoteNumber ?? "—"; private string HeaderStatus => Detail?.Status ?? Summary?.Status ?? "—"; private DateTime HeaderIssueDate => Detail?.IssueDate ?? Summary?.IssueDate ?? DateTime.MinValue; private string HeaderCustomerName => string.IsNullOrWhiteSpace(Summary?.CustomerName) ? "—" : Summary!.CustomerName; private string HeaderQuoteNumber => string.IsNullOrWhiteSpace(Summary?.QuoteNumber) ? "—" : Summary!.QuoteNumber!; private int HeaderPrintCount => Detail?.PrintCount ?? Summary?.PrintCount ?? 0; protected override void OnParametersSet() { if (Summary?.Id != lastDeliveryNoteId) { activeTab = "Datos"; lastDeliveryNoteId = Summary?.Id; } } private async Task Close() { await VisibleChanged.InvokeAsync(false); } private string GetStatusBadge(string status) => status switch { "Anulado" => "bg-danger text-white", "Emitido" => "bg-primary text-white", "Aprobado" => "bg-success", "Cerrado" => "bg-dark text-white", _ => "bg-light text-dark" }; private string GetOriginLabel(byte originType) => originType switch { 1 => "Presupuesto", 2 => "Manual", _ => originType.ToString() }; }