Compare commits
1 Commits
8fd141abaa
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| eaf6fe5f0f |
@@ -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); }
|
||||
|
||||
@@ -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}";
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
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 class="nominas-lista">
|
||||
@foreach (var nomina in itmList.Where(x => x.IDNOMINANavigation?.AÑO == anno).OrderByDescending(x => x.MESNOMINA))
|
||||
{
|
||||
<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>
|
||||
}
|
||||
</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()
|
||||
[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();
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
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;
|
||||
|
||||
|
||||
// // itmList.Add(Persona.NOMINATRABAJADORCABECERA[i])
|
||||
// }
|
||||
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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()
|
||||
{
|
||||
@@ -521,4 +523,4 @@
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
};
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
@@ -359,4 +358,4 @@
|
||||
OnValidationStateChanged.InvokeAsync(fieldName);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
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;
|
||||
@@ -761,4 +867,63 @@ 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;*/
|
||||
}
|
||||
|
||||
@@ -114,6 +114,10 @@ namespace SwaggerAntifraude.Controllers
|
||||
.Include(n => n.NOMINATRABAJADORCABECERA)
|
||||
.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)
|
||||
|
||||
Reference in New Issue
Block a user