@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); }
}
}
}