Compare commits

..

1 Commits

Author SHA1 Message Date
eaf6fe5f0f - Poner un fondo a la opción en la que estoy cuando entro en trabajadores
- Imitar la forma de mostrar los años  y demás opciones del programa de gestión por ejemplo el "+" cuando tenga contenido + Año Nómina: 2025,
- Dentro de cada Año Nómina ordenar por mes decreciente
- Mostrar el contenido de la nómina sin necesidad de entrar en ella, estilo el programa de gestíon, ordenando los conceptos por el campo orden de Conceptos Generales y poner en rojo los conceptos que son deducciones.
2026-09-18 13:06:47 +02:00
8 changed files with 388 additions and 246 deletions

View File

@@ -56,6 +56,12 @@
</FooterTemplate>
</Modal>
@if (cargando)
{
<div id="cargando" class="loadingFrame">
<div class="loadingImg"></div>
</div>
}
<div class="datos-personales-container mt-3">
<div>
<div>
@@ -309,7 +315,7 @@
</div>
</div>
<div class="row">
<Tabs @ref=tabsDtsPer NavStyle="NavStyle.VerticalUnderline" Class="col-md-2" style="margin-top:25px; font-size:12px; gap:0; width:165px; overflow-y:auto" OnShown="@(args => OnTabShownAsync(args))">
<Tabs @ref=tabsDtsPer NavStyle="NavStyle.VerticalUnderline" Class="col-md-2 navInfoPers" style="margin-top:25px; font-size:12px; gap:0; width:165px; overflow-y:auto" OnShown="@(args => OnTabShownAsync(args))">
<Tab Title="Nóminas" Name="tabNominas">
<Content>
<NominaGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></NominaGrid>
@@ -440,6 +446,7 @@
[Parameter]
public string? cl { get; set; } = "";
public bool mostrar { get; set; } = true;
private bool cargando = true;
public bool mostrarBtn { get; set; } = false;
List<ENUMERACIONES> ListaSexos = new List<ENUMERACIONES>();
List<ENUMERACIONES> ListaTipos = new List<ENUMERACIONES>();
@@ -891,6 +898,7 @@
finally
{
mostrar = false;
cargando = false;
}
}
protected void volver() { Navigation.NavigateTo("/ListTrabajadores", forceLoad: true); }

View File

@@ -0,0 +1,145 @@
@using BlazorBootstrap
@using bdAntifraude.db
<div class="table-responsive mb-3">
<table class="table table-sm tablaRegPers nomina-resumen-detalle">
<thead>
<tr>
<th>Nómina</th><th>Total devengado</th><th>Total líquido</th><th>Grupo</th><th>Nivel</th>
<th>Días efectivos</th><th>Días enfermo</th><th>Días accidentes</th><th>Días falta</th>
<th>Días permisos sin retribuir</th><th>Días maternidad</th><th>Acumulada</th><th>Protegida</th>
<th>Pluriempleo</th><th>Nº pluriempleo</th><th>Total Seguridad Social</th><th>Prorrata paga extra</th>
<th>Prorrata productividad</th><th>Total deducciones</th><th>Total haberes</th><th>Otras deducciones</th>
<th>SS pago en especie</th><th>Total epígrafe 126</th><th>Total maternidad/paternidad</th>
<th>Total permiso sin retribuir</th><th>Sindicato</th><th>Reducción jornada</th>
<th>Trabajo tiempo parcial</th><th>Mutua</th><th>Días enfermedad al 60</th><th>Base enfermedad al 60</th>
<th>Días enfermedad al 75</th><th>Base accidentes</th><th>Días base pago directo</th><th>Base pago directo</th>
<th>Visible</th><th>Modificable</th><th>Mes nómina</th>
</tr>
</thead>
<tbody>
<tr>
<td>@Nomina.IDNOMINANavigation?.DESCRIPCION</td><td>@Nomina.TOTALDEVENGADO</td><td>@Nomina.TOTALLIQUIDO</td>
<td>@Nomina.IDGRUPOFUNCIONARIONavigation?.DESCRIPCION</td><td>@Nomina.NIVEL</td><td>@Nomina.DIASEFECTIVOS</td>
<td>@Nomina.DIASENFERMOS</td><td>@Nomina.DIASACCIDENTES</td><td>@Nomina.DIASFALTA</td>
<td>@Nomina.DIASPERMISOSSINRETRIBUIR</td><td>@Nomina.DIASMATERNIDAD</td><td>@(Nomina.ACUMULADA == true ? "Sí" : "No")</td>
<td>@(Nomina.PROTEGIDA == true ? "Sí" : "No")</td><td>@Nomina.PLURIEMPLEO</td><td>@Nomina.NUMEROPLURIEMPLEO</td>
<td>@Nomina.TOTALSEGURIDADSOCIAL</td><td>@Nomina.PRORRATAPAGAEXTRA</td><td>@Nomina.PRORRATAPRODUCTIVIDAD</td>
<td>@Nomina.TOTALDEDUCCIONES</td><td>@Nomina.TOTALHABERES</td><td>@Nomina.OTRASDEDUCCIONES</td>
<td>@Nomina.TOTALSEGURIDADSOCIALPAGOENESPECIE</td><td>@Nomina.TOTALEPIGRAFE126</td><td>@Nomina.TOTALMATERNIDADPATERNIDAD</td>
<td>@Nomina.TOTALPERMISOSINRETRIBUIR</td><td>@Nomina.SINDICATO1</td><td>@Nomina.REDUCCIONJORNADA</td>
<td>@Nomina.TRABAJOTIEMPOPARCIAL</td><td>@Nomina.MUTUA</td><td>@Nomina.DIASENFERMEDADAL60</td>
<td>@Nomina.BASEENFERMEDADAL60</td><td>@Nomina.DIASENFERMEDADAL75</td><td>@Nomina.BASEACCIDENTES</td>
<td>@Nomina.DIASBASEPAGODIRECTO</td><td>@Nomina.BASEPAGODIRECTO</td><td>@(Nomina.VISIBLE == true ? "Sí" : "No")</td>
<td>@(Nomina.MODIFICABLE == true ? "Sí" : "No")</td><td>@Nomina.MESNOMINA</td>
</tr>
</tbody>
</table>
</div>
<Tabs style="font-size:12px; gap:0;">
<Tab Title="Conceptos">
<Content>
<Grid TItem="NOMINATRABAJADORLINEA" Class="table tablaDetalle" Data="Nomina.NOMINATRABAJADORLINEA.OrderBy(x => x.IDCONCEPTOGENERALNavigation.ORDEN)"
AllowPaging="false" AllowSorting="true" Responsive="true" EmptyText="No se han encontrado datos"
RowClass="@(x => x.IDCONCEPTOGENERALNavigation.DEDUCCIONES ? "concepto-deduccion" : "")">
<GridColumns>
<GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Descripción">@context.DESCRIPCIONCONCEPTO</GridColumn>
<GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Cantidad">@context.CANTIDAD</GridColumn>
<GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Importe">@context.IMPORTE</GridColumn>
<GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Retribuciones">@context.TOTALRETRIBUCIONES</GridColumn>
<GridColumn TItem="NOMINATRABAJADORLINEA" HeaderText="Deducciones">@context.TOTALDEDUCCIONES</GridColumn>
</GridColumns>
</Grid>
</Content>
</Tab>
<Tab Title="Pagos en especie">
<Content>
<Grid TItem="NOMINATRABAJADORPAGOESPECIE" Class="table tablaDetalle" Data="Nomina.NOMINATRABAJADORPAGOESPECIE" AllowPaging="false" AllowSorting="true" Responsive="true" EmptyText="No se han encontrado datos">
<GridColumns>
<GridColumn TItem="NOMINATRABAJADORPAGOESPECIE" HeaderText="Descripción">@context.DESCRIPCION</GridColumn>
<GridColumn TItem="NOMINATRABAJADORPAGOESPECIE" HeaderText="Importe">@context.IMPORTE</GridColumn>
<GridColumn TItem="NOMINATRABAJADORPAGOESPECIE" HeaderText="Cuota">@context.CUOTA</GridColumn>
<GridColumn TItem="NOMINATRABAJADORPAGOESPECIE" HeaderText="Seguridad Social">@context.SEGURIDADSOCIAL</GridColumn>
</GridColumns>
</Grid>
</Content>
</Tab>
<Tab Title="Incidencias">
<Content>
<Grid TItem="INCIDENCIAS" Class="table tablaDetalle" Data="Nomina.INCIDENCIAS" AllowPaging="false" AllowSorting="true" Responsive="true" EmptyText="No se han encontrado datos">
<GridColumns>
<GridColumn TItem="INCIDENCIAS" HeaderText="Concepto">@context.IDCONCEPTONOMINANavigation?.DESCRIPCION</GridColumn>
<GridColumn TItem="INCIDENCIAS" HeaderText="Cantidad">@context.CANTIDAD</GridColumn>
<GridColumn TItem="INCIDENCIAS" HeaderText="Importe">@context.IMPORTE</GridColumn>
<GridColumn TItem="INCIDENCIAS" HeaderText="IRPF">@context.IRPF</GridColumn>
</GridColumns>
</Grid>
</Content>
</Tab>
<Tab Title="Periodos SILTRA">
<Content>
<div class="table-responsive">
@if (!Nomina.PERIODOSSILTRA.Any())
{
<p class="text-muted">No se han encontrado datos</p>
}
@foreach (var periodo in Nomina.PERIODOSSILTRA.OrderByDescending(x=>x.FECHAINICIO))
{
<details class="mb-2 border rounded">
<summary class="p-2 fw-bold">
<NavLink class="btn btn-link p-0" href="@PeriodoSiltraUrl(periodo)">
@periodo.FECHAINICIO?.ToString("dd/MM/yyyy") - @periodo.FECHAFIN?.ToString("dd/MM/yyyy")
</NavLink>
· @periodo.DIAS días · @periodo.IDTIPOPERIODOTRAMONavigation?.DESCRIPCION
</summary>
<div class="p-2">
<table class="table table-sm tablaDetalle mb-0">
<thead><tr><th>Tipo de tramo</th><th>Importe</th><th>% empresa</th><th>Importe empresa</th><th>% trabajador</th><th>Importe trabajador</th><th>Importe global</th></tr></thead>
<tbody>
@foreach (var tramo in periodo.TRAMOSSILTRA.OrderBy(x=>x.IDTIPOTRAMONavigation.CODIGO))
{
<tr>
<td>
@if (tramo.IDTIPOTRAMONavigation?.MODIFICABLE == false && tramo.IDTIPOTRAMONavigation?.SOLICITADOALUSUARIO == false)
{
<p style="color:red; font-weight:bold">@tramo.IDTIPOTRAMONavigation?.CODIGO - @tramo.IDTIPOTRAMONavigation?.DESCRIPCION</p>
}
@if (tramo.IDTIPOTRAMONavigation?.SOLICITADOALUSUARIO == true && tramo.IDTIPOTRAMONavigation?.MODIFICABLE == true)
{
<p style="color:blue; font-weight:bold">@tramo.IDTIPOTRAMONavigation?.CODIGO - @tramo.IDTIPOTRAMONavigation?.DESCRIPCION</p>
}
@if (tramo.IDTIPOTRAMONavigation?.SOLICITADOALUSUARIO == false && tramo.IDTIPOTRAMONavigation?.MODIFICABLE == true)
{
<p>@tramo.IDTIPOTRAMONavigation?.CODIGO - @tramo.IDTIPOTRAMONavigation?.DESCRIPCION</p>
}
</td>
<td>@tramo.IMPORTE</td><td>@tramo.PORCENTAJEEMPRESA</td><td>@tramo.IMPORTEEMPRESA</td>
<td>@tramo.PORCENTAJETRABAJADOR</td><td>@tramo.IMPORTETRABAJADOR</td><td>@tramo.IMPORTEGLOBAL</td>
</tr>
}
</tbody>
</table>
</div>
</details>
}
</div>
</Content>
</Tab>
</Tabs>
@code {
[Parameter] public NOMINATRABAJADORCABECERA Nomina { get; set; } = new();
private string PeriodoSiltraUrl(PERIODOSSILTRA periodo)
{
const string caracteres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*";
var idPeriodo = tsUtilidades.crypt.FEncS(periodo.IDPERIODOSILTRA.ToString(), caracteres, caracteres, 875421649);
var idPersona = tsUtilidades.crypt.FEncS(Nomina.IDPERSONA.ToString(), caracteres, caracteres, 875421649);
var idNomina = tsUtilidades.crypt.FEncS(Nomina.IDNOMINATRABAJADOR.ToString(), caracteres, caracteres, 875421649);
return $"/PeriodoSiltra?cl={idPeriodo}&idp={idPersona}&idn={idNomina}";
}
}

View File

@@ -1,184 +1,29 @@
@using System.Net.Http.Headers
@using System.Linq.Expressions
@using Newtonsoft.Json
@using System.Text
@using Serialize.Linq.Serializers
@using GestionPersonalWeb.Models
@using BlazorBootstrap
@using bdAntifraude.db
@using Microsoft.AspNetCore.Components
@rendermode InteractiveServer
@inject IJSRuntime JS
@inject NavigationManager NavigationManager
@inject IHttpClientFactory HttpClientFactory
@inject IHttpContextAccessor HttpContextAccessor
@inject UserState UserState
<div class= "tablaTabLateral">
<div class="tablaTabLateral">
<Accordion>
@for (var y = 0; y <= annos.Count - 1; y++)
@foreach (var anno in annos)
{
var listado = itmList.Where(x => x.IDNOMINANavigation.AÑO == annos[y]).ToList();
titulo = "Año Nómina: "+annos[y].ToString();
<AccordionItem Title="@titulo">
<AccordionItem Title="@($"Año Nómina: {anno}")">
<Content>
<div style="overflow-x:auto;" class="tablaDesk">
<Grid TItem="NOMINATRABAJADORCABECERA"
Class="table tablaRegPers"
Data="listado"
AllowFiltering="false"
PageSize="10"
AllowPaging="true"
AllowSorting="true"
EmptyText="No se han encontrado datos"
Height="100"
PageSizeSelectorVisible="false"
PageSizeSelectorItems="@(new int[] { 5, 10, 20, 50 })"
Responsive="true"
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
<GridColumns>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Nómina">
<NavLink class="btn btn-link" href="@HashRed(context)">@context.IDNOMINANavigation?.DESCRIPCION</NavLink>
@* @context.IDNOMINANavigation?.DESCRIPCION *@
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Devengado">
@context.TOTALDEVENGADO
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Liquido">
@context.TOTALLIQUIDO
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Grupo">
@context.IDGRUPOFUNCIONARIONavigation?.DESCRIPCION
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Nivel">
@context.NIVEL
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Efectivos">
@context.DIASEFECTIVOS
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Enfermo">
@context.DIASENFERMOS
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Accidentes">
@context.DIASACCIDENTES
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Falta">
@context.DIASFALTA
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Permisos Sin Retribuir">
@context.DIASPERMISOSSINRETRIBUIR
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Maternidad">
@context.DIASMATERNIDAD
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Acumulada">
@if (context.ACUMULADA == true)
<div class="nominas-lista">
@foreach (var nomina in itmList.Where(x => x.IDNOMINANavigation?.AÑO == anno).OrderByDescending(x => x.MESNOMINA))
{
<i class="fa-regular fa-square-check"></i>
<details class="nomina-acordeon">
<summary class="nomina-resumen">
<span class="nomina-expandir" aria-hidden="true">⌄</span>
<span class="nomina-dato nomina-titulo"><span class="nomina-etiqueta">Nómina</span><NavLink class="btn btn-link p-0" href="@HashRed(nomina)">@nomina.IDNOMINANavigation?.DESCRIPCION</NavLink></span>
<span class="nomina-dato"><span class="nomina-etiqueta">Total devengado</span>@nomina.TOTALDEVENGADO</span>
<span class="nomina-dato"><span class="nomina-etiqueta">Total líquido</span>@nomina.TOTALLIQUIDO</span>
<span class="nomina-dato"><span class="nomina-etiqueta">Grupo</span>@nomina.IDGRUPOFUNCIONARIONavigation?.DESCRIPCION</span>
<span class="nomina-dato"><span class="nomina-etiqueta">Nivel</span>@nomina.NIVEL</span>
</summary>
<div class="nomina-detalle mt-2 p-2 border rounded bg-light"><NominaDetalle Nomina="nomina" /></div>
</details>
}
else { }
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Protegida">
@if (context.PROTEGIDA == true)
{
<i class="fa-regular fa-square-check"></i>
}
else { }
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Pluriempleo">
@context.PLURIEMPLEO
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Nº Pluriempleo">
@context.NUMEROPLURIEMPLEO
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Seguridad Social">
@context.TOTALSEGURIDADSOCIAL
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Prorrata Paga Extra">
@context.PRORRATAPAGAEXTRA
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Prorrata Productividad">
@context.PRORRATAPRODUCTIVIDAD
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Deducciones">
@context.TOTALDEDUCCIONES
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Haberes">
@context.TOTALHABERES
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Otras Deducciones">
@context.OTRASDEDUCCIONES
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Seguridad social Pago en Especie">
@context.TOTALSEGURIDADSOCIALPAGOENESPECIE
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Epigrafe 126">
@context.TOTALEPIGRAFE126
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Maternidad Paternidad">
@context.TOTALMATERNIDADPATERNIDAD
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Total Permiso Sin Retribuir">
@context.TOTALPERMISOSINRETRIBUIR
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="SINDICATO">
@context.SINDICATO1
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Reducción Jornada">
@context.REDUCCIONJORNADA
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Trabajo Tiempo Parcial">
@context.TRABAJOTIEMPOPARCIAL
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Mutua">
@context.MUTUA
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Enfermedad al 60">
@context.DIASENFERMEDADAL60
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Base Enfermedad al 60">
@context.BASEENFERMEDADAL60
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Enfermadad al 75">
@context.DIASENFERMEDADAL75
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Accidentes">
@context.DIASACCIDENTES
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Base Accidentes">
@context.BASEACCIDENTES
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Días Base Pago Directo">
@context.DIASBASEPAGODIRECTO
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Base Pago Directo">
@context.BASEPAGODIRECTO
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Visible">
@if (context.VISIBLE == true)
{
<i class="fa-regular fa-square-check"></i>
}
else { }
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Modificable">
@if (context.MODIFICABLE == true)
{
<i class="fa-regular fa-square-check"></i>
}
else { }
</GridColumn>
<GridColumn TItem="NOMINATRABAJADORCABECERA" HeaderText="Mes Nomina">
@context.MESNOMINA
</GridColumn>
</GridColumns>
</Grid>
</div>
</Content>
</AccordionItem>
@@ -187,57 +32,19 @@
</div>
@code {
[Parameter]
public PERSONAS Persona{ get; set; } = new PERSONAS();
public int? idNom { get; set; }
[Parameter]
public EventCallback OnPersonaActualizada { get; set; }
private List<int> annos = new List<int>();
private string titulo { get; set; }
private List<NOMINATRABAJADORCABECERA> itmList = new List<NOMINATRABAJADORCABECERA>();
protected override async Task OnInitializedAsync()
{
try
{
var listnom = Persona.NOMINATRABAJADORCABECERA;
foreach (NOMINATRABAJADORCABECERA i in listnom)
{
itmList.Add(i);
}
for (var i = 0; i < itmList.Count; i++)
{
if (annos.Contains(itmList[i].IDNOMINANavigation.AÑO) == false)
{
annos.Add(itmList[i].IDNOMINANavigation.AÑO);
}
}
annos = annos.OrderDescending().ToList();
// for (var i = 0; i < Persona.NOMINATRABAJADORCABECERA.Count; i++)
// {
// NOMINATRABAJADORCABECERA nom = new NOMINATRABAJADORCABECERA();
// // nom = Persona.NOMINATRABAJADORCABECERA;
[Parameter] public PERSONAS Persona { get; set; } = new();
[Parameter] public EventCallback OnPersonaActualizada { get; set; }
private readonly List<int> annos = new();
private readonly List<NOMINATRABAJADORCABECERA> itmList = new();
// // itmList.Add(Persona.NOMINATRABAJADORCABECERA[i])
// }
}
catch (Exception e)
protected override void OnInitialized()
{
Console.WriteLine($"Error al obtener los datos: {e.Message}");
}
itmList.AddRange(Persona.NOMINATRABAJADORCABECERA);
annos.AddRange(itmList.Where(x => x.IDNOMINANavigation != null).Select(x => x.IDNOMINANavigation!.AÑO).Distinct().OrderDescending());
}
private string HashRed(NOMINATRABAJADORCABECERA nom)
{
string link = "/NomPers?cl=" + tsUtilidades.crypt.FEncS(
Persona.NIF + "-" + nom.IDNOMINA.ToString(),
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
875421649);
// + "&cn=" + tsUtilidades.crypt.FEncS(nom.IDNOMINA.ToString(),
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
// 875421649);
return link;
}
return "/NomPers?cl=" + tsUtilidades.crypt.FEncS(Persona.NIF + "-" + nom.IDNOMINA, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
}
}

View File

@@ -21,7 +21,7 @@
<h6><small><i class="fas fa-user"></i><b> Personas</b></small></h6>
</div>
@if (personas == null)
@if (cargando)
{
<div id="cargando" class="loadingFrame">
<div class="loadingImg"></div>
@@ -258,6 +258,7 @@
@code {
private List<PERSONAS> listPersonas = new List<PERSONAS>();
private List<PERSONAS> personas = new List<PERSONAS>();
private bool cargando = true;
private string textBtnTodos { get; set; }
private string _filter = "";
public string Filter
@@ -443,6 +444,7 @@
.ToList();
listPersonas = personas.Where(x => x.FECHABAJA == null).ToList();
cargando = false;
}
private async Task btnExportarPDF()
{

View File

@@ -19,6 +19,13 @@
@inject ProtectedSessionStorage ProtectedSessionStore
@inject UserState UserState
@if (cargando)
{
<div id="cargando" class="loadingFrame">
<div class="loadingImg"></div>
</div>
}
<div class="row mb-3 mt-4" style=" padding: 20px;border:solid 1px grey">
<div class="col-md-6">
<label for="txtApellidos" class="fw-bold widthLabel li-height50">Apellidos: </label>
@@ -630,6 +637,7 @@
private Modal popupConfirmacion = default!;
List<ToastMessage> mensajes = new List<ToastMessage>();
private EditContext editContext = default!;
private bool cargando = true;
List<FieldIdentifier> listaIdentificadores = new List<FieldIdentifier>();
private void EstablecerEditContext(NOMINATRABAJADORCABECERA nuevo)
{
@@ -703,6 +711,10 @@
errorMessage = ex.Message;
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
}
finally
{
cargando = false;
}
}
private string HashRed(string id)
{

View File

@@ -18,20 +18,18 @@
@inject UserState UserState
<div class="pagina">
@if (cargando)
{
<div id="cargando" class="loadingFrame">
<div class="loadingImg"></div>
</div>
}
<div class="Cabecera">
<h6><small><i class="fas fa-user"></i><b> Periodo Siltra</b></small></h6>
</div>
<div>
<input type="button" @onclick="GuardarPeriodoSILTRA" class="btnOAAFAzul mb-2" value="Guardar" />
</div>
@if (PeriodoSiltra == null)
{
<div id="cargando" class="loadingFrame">
<div class="loadingImg"></div>
</div>
}
else
{
<div class="row" style="border:solid 1px black; padding:10px">
<div class="col-md-2">
<label for="txtNIF" class="fw-bold widthLabel li-height50">Fecha inicio <span style="color:red">*</span>: </label>
@@ -185,11 +183,11 @@
</div>
}
}
</div>
@code {
private PERIODOSSILTRA PeriodoSiltra = new PERIODOSSILTRA();
private bool cargando = true;
public EventCallback<string> OnValidationStateChanged { get; set; }
private List<int> annos = new List<int>();
private string cl { get; set; }
@@ -260,6 +258,7 @@
lCuentaCoti = JsonConvert.DeserializeObject<List<CUENTASCOTIZACIONPATRONAL>>(rcCuentaCoti) ?? throw new Exception("Error al deserializar los datos.");
lEstados = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(client, "/api/ENUMERACIONES/EnumeracionesGrupo/MUT");
lTipPeriodo = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(client, "/api/ENUMERACIONES/EnumeracionesGrupo/TIPPERTRAM");
cargando = false;
}
private string _filter = "";
public string Filter

View File

@@ -217,7 +217,7 @@ body {
text-align:end;
}
.Cabecera {
margin-bottom: 3rem;
margin-bottom: 1.5rem;
}
.btnGris {
background-color: #eeeeee;
@@ -371,6 +371,18 @@ body {
font-weight:bold;
color:var(--AzulMuyOscuro)
}
.navInfoPers .nav-link {
color:var(--AzulOAAF);
padding: 5px
}
.navInfoPers .nav-link:hover {
background-color: var(--AzulOscuro);
color: white !important;
}
.navInfoPers .nav-link.active {
background-color: var(--AzulOscuro);
color: white !important
}
.navBar {
position:fixed;
left:0;
@@ -496,7 +508,7 @@ body {
color: white !important;
text-decoration: none !important;
padding: 20px;
padding-inline: 20px;
padding-inline: 10px;
overflow-inline: visible;
border-inline: solid 1px white;
width: auto;
@@ -513,18 +525,109 @@ body {
.tablaRegPers th a:hover {
opacity: 0.6;
}
.tablaRegPers td.text-start {
text-align: inherit !important;
}
.tablaRegPers td {
padding: 15px !important;
padding-inline: 30px !important;
padding: 5px !important;
padding-inline: 10px !important;
border: solid 1px black;
font-size: 14px !important;
font-size: 12px !important;
vertical-align: middle !important;
}
.tablaRegPers td a {
font-size:14px;
font-size:12px;
}
.tablaRegPers th {
text-align: center;
background-color: var(--AzulOscuro);
color: white !important;
text-decoration: none !important;
padding: 20px;
padding-inline: 10px;
overflow-inline: visible;
border-inline: solid 1px white;
width: auto;
white-space: nowrap;
font-size: 14px;
}
.tablaRegPers th .btn-link {
color:white;
}
.tablaRegPers th a {
color: white !important;
text-decoration: none !important;
}
.tablaRegPers th a:hover {
opacity: 0.6;
}
.tablaRegPers td.text-start {
text-align: inherit !important;
}
.tablaRegPers td {
padding: 5px !important;
padding-inline: 10px !important;
border: solid 1px black;
font-size: 12px !important;
vertical-align: middle !important;
}
.tablaRegPers td a {
font-size:12px;
}
/********/
.tablaDetalle th {
text-align: center;
background-color: var(--AzulOAAF);
color: white !important;
text-decoration: none !important;
padding: 20px;
padding-inline: 10px;
overflow-inline: visible;
border-inline: solid 1px white;
width: auto;
white-space: nowrap;
font-size: 14px;
}
.tablaDetalle th .btn-link {
color: white;
}
.tablaDetalle th a {
color: white !important;
text-decoration: none !important;
}
.tablaDetalle th a:hover {
opacity: 0.6;
}
.tablaDetalle td.text-start {
text-align: inherit !important;
}
.tablaDetalle td {
padding: 5px !important;
padding-inline: 10px !important;
border: solid 1px black;
font-size: 12px !important;
vertical-align: middle !important;
}
.tablaDetalle td a {
font-size: 12px;
}
/********/
.accordion-button:not(.collapsed){
background-color:var(--AzulOAAF);
color:white;
}
.linkNavActivo {
background-color: var(--AzulMuyOscuro) !important;
}
}
.table .card {
border: none !important;
}
@@ -675,8 +778,11 @@ body {
color: white;
font-size: 26px;
}
.page-link{
font-size:15px !important;
.tablaDetalle tr th {
background-color:var(--AzulOAAF) !important;
}
.page-link {
font-size: 15px !important;
}
.bb-grid-pagination-text {
display:none !important;
@@ -762,3 +868,62 @@ body {
}
.tablaRegPers td {
vertical-align: top;
}
.nomina-detalle {
display: block;
}
.nomina-acordeon {
border-bottom: 1px solid #b8b8b8;
}
.nomina-resumen {
display: grid;
grid-template-columns: 32px minmax(260px, 2fr) repeat(4, minmax(130px, 1fr));
align-items: center;
gap: 12px;
padding: 10px 8px;
cursor: pointer;
list-style: none;
}
.nomina-resumen::-webkit-details-marker {
display: none;
}
.nomina-expandir {
color: #0d6efd;
font-size: 22px;
text-align: center;
/*transition: transform .15s ease-in-out;*/
}
.nomina-acordeon[open] .nomina-expandir {
transform: rotate(180deg);
}
.concepto-deduccion{
color:red
}
.nomina-dato {
display: flex;
flex-direction: column;
min-width: 0;
}
.nomina-dato a {
text-align: start !important;
}
.nomina-etiqueta {
color: #666;
font-size: 11px;
font-weight: 600;
text-transform: uppercase;
margin-bottom: 2px;
}
.nomina-detalle {
/*margin-left: 32px;*/
}

View File

@@ -115,6 +115,10 @@ namespace SwaggerAntifraude.Controllers
.ThenInclude(pr => pr.PERIODOSSILTRA)
.ThenInclude(y => y.IDESTADONavigation)
.Include(n => n.NOMINATRABAJADORCABECERA)
.ThenInclude(pr => pr.PERIODOSSILTRA)
.ThenInclude(y => y.TRAMOSSILTRA)
.ThenInclude(y => y.IDTIPOTRAMONavigation)
.Include(n => n.NOMINATRABAJADORCABECERA)
.ThenInclude(y => y.IDSINDICATO1Navigation)
.Include(n => n.NOMINATRABAJADORCABECERA)
.ThenInclude(y => y.IDSINDICATO2Navigation)