@page "/personal/comisiones" @attribute [Authorize] @inject IPersonnelService PersonnelSvc @inject IDialogService DialogSvc @inject ISnackbar Snackbar Comisiones - AutoTaller ERP PENDIENTES S/. @comisiones.Where(c => !c.Pagada).Sum(c => c.MontoComision).ToString("N2") @comisiones.Count(c => !c.Pagada) comisión(es) PAGADAS S/. @comisiones.Where(c => c.Pagada).Sum(c => c.MontoComision).ToString("N2") @comisiones.Count(c => c.Pagada) comisión(es) TOTAL S/. @comisiones.Sum(c => c.MontoComision).ToString("N2") @comisiones.Count comisión(es) en total
Todos @foreach (var t in tecnicos) { @t.NombreCompleto } Todos Pendientes Pagadas
Fecha Técnico OT Base % Comisión Estado Acciones @context.Fecha.ToString("dd/MM/yyyy") @context.Tecnico @(context.NumeroOT ?? "—") S/. @context.MontoBase.ToString("N2") @context.Porcentaje.ToString("N2")% S/. @context.MontoComision.ToString("N2") @if (context.Pagada) { Pagada @if (context.FechaPago.HasValue) { @context.FechaPago.Value.ToString("dd/MM/yyyy") } } else { Pendiente } @if (!context.Pagada) { Marcar pagada } No hay comisiones registradas
@code { private int? tecnicoFiltro; private bool? estadoFiltro; private DateTime? desde = DateTime.Today.AddDays(-30); private DateTime? hasta = DateTime.Today; private List comisiones = new(); private List tecnicos = new(); private bool cargando = true; protected override async Task OnInitializedAsync() { tecnicos = await PersonnelSvc.ListarTecnicosAsync(); await CargarAsync(); } private async Task CargarAsync() { cargando = true; comisiones = await PersonnelSvc.ListarComisionesAsync(tecnicoFiltro, estadoFiltro, desde, hasta); cargando = false; } private async Task NuevaComision() { var parametros = new DialogParameters { ["Comision"] = new ComisionFormDto(), ["Tecnicos"] = tecnicos.Where(t => t.Activo).ToList() }; var opciones = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.Small, FullWidth = true }; var dialog = await DialogSvc.ShowAsync("Registrar comisión", parametros, opciones); var r = await dialog.Result; if (r is { Canceled: false }) { Snackbar.Add("Comisión registrada", Severity.Success); await CargarAsync(); } } private async Task MarcarPagada(ComisionListDto c) { var confirmar = await DialogSvc.ShowMessageBox("Confirmar pago", $"¿Marcar como pagada la comisión de S/. {c.MontoComision:N2} a {c.Tecnico}?", yesText: "Sí, marcar pagada", cancelText: "Cancelar"); if (confirmar == true) { try { await PersonnelSvc.MarcarComisionPagadaAsync(c.Id); Snackbar.Add("Comisión marcada como pagada", Severity.Success); await CargarAsync(); } catch (Exception ex) { Snackbar.Add(ex.Message, Severity.Error); } } } }