- Edición de todas las tablas y campos dentro de infoPers
- Controladores varios para poder hacer estas ediciones
This commit is contained in:
2
.serena/.gitignore
vendored
Normal file
2
.serena/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
/cache
|
||||
/project.local.yml
|
||||
169
.serena/project.yml
Normal file
169
.serena/project.yml
Normal file
@@ -0,0 +1,169 @@
|
||||
# the name by which the project can be referenced within Serena/when chatting with the LLM.
|
||||
project_name: "ANTIFRAUDE.NET"
|
||||
|
||||
# list of language servers to start when using the LSP backend; choose from:
|
||||
# ada al angular ansible bash
|
||||
# bsl clojure cpp cpp_ccls crystal
|
||||
# csharp csharp_omnisharp cue dart deno
|
||||
# elixir elm erlang fortran fsharp
|
||||
# gdscript gleam go groovy haskell
|
||||
# haxe hlsl html java json
|
||||
# julia kotlin latex lean4 lua
|
||||
# luau markdown matlab msl nextflow
|
||||
# nix ocaml pascal perl php
|
||||
# php_phpactor php_phpantom powershell python python_basedpyright
|
||||
# python_jedi python_pyrefly python_ty qml r
|
||||
# rego ruby ruby_solargraph rust scala
|
||||
# scss solidity svelte swift systemverilog
|
||||
# terraform toml typescript typescript_vts vue
|
||||
# wolfram yaml zig
|
||||
# (This list may be outdated; generated with scripts/print_language_list.py;
|
||||
# For the current list, see values of the LanguageServerId enum here:
|
||||
# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py)
|
||||
# For some languages, there are several alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
|
||||
# Note:
|
||||
# - For C, use cpp
|
||||
# - For JavaScript, use typescript
|
||||
# - For Angular projects, use angular (subsumes typescript+html; requires `npm install` in the project root)
|
||||
# - For Svelte projects, use svelte (subsumes typescript/javascript for .svelte projects; requires npm)
|
||||
# - For Deno projects, use deno (serves the same .ts/.js files as typescript; requires the deno CLI on PATH)
|
||||
# - For SCSS / Sass / plain CSS, use scss (some-sass-language-server handles all three)
|
||||
# - For Free Pascal/Lazarus, use pascal
|
||||
# Special requirements:
|
||||
# Some language servers require additional setup/installations.
|
||||
# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
|
||||
# When using multiple language servers, the first language server that supports a given file will be used for that file.
|
||||
# The first language server is the default language and the respective language server will be used as a fallback.
|
||||
# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
|
||||
language_servers:
|
||||
- csharp
|
||||
|
||||
# the encoding used by text files in the project
|
||||
# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
|
||||
encoding: "utf-8"
|
||||
|
||||
# optional shell command to run before the language backend (LSP or JetBrains) is initialised.
|
||||
# the command runs in the project root directory and is only executed if the project is trusted
|
||||
# (see trusted_project_path_patterns in the global configuration).
|
||||
# serena waits for the command to exit: a non-zero exit code is logged as an error but does not
|
||||
# abort activation. a per-project timeout (activation_command_timeout, default 180s) is the safety
|
||||
# backstop for non-terminating commands; on expiry the process is killed and activation continues.
|
||||
# example: activation_command: "npx nx run-many -t build"
|
||||
activation_command:
|
||||
|
||||
# maximum time in seconds to wait for activation_command to complete before killing it (default 180s).
|
||||
# must be a positive number.
|
||||
activation_command_timeout: 180.0
|
||||
|
||||
# line ending convention to use when writing source files.
|
||||
# Possible values: unset (use global setting), "lf", "crlf", or "native" (platform default)
|
||||
# This does not affect Serena's own files (e.g. memories and configuration files), which always use native line endings.
|
||||
line_ending:
|
||||
|
||||
# The language backend to use for this project.
|
||||
# If not set, the global setting from serena_config.yml is used.
|
||||
# Valid values: LSP, JetBrains
|
||||
# Note: the backend is fixed at startup. If a project with a different backend
|
||||
# is activated post-init, an error will be returned.
|
||||
language_backend:
|
||||
|
||||
# whether to use project's .gitignore files to ignore files
|
||||
ignore_all_files_in_gitignore: true
|
||||
|
||||
# advanced configuration option allowing to configure language server-specific options.
|
||||
# Maps the language key to the options.
|
||||
# The settings are considered only if the project is trusted (see global configuration to define trusted projects).
|
||||
# See https://oraios.github.io/serena/02-usage/050_configuration.html#language-server-specific-settings
|
||||
ls_specific_settings: {}
|
||||
|
||||
# list of workspace folder paths (LSP backend only).
|
||||
# These folders will be used to build up Serena's symbol index.
|
||||
# Paths must be within the project root and should thus be relative to the project root.
|
||||
# Furthermore, the paths should not be filtered by ignore settings.
|
||||
# Default setting: The entire project root folder (".") is considered.
|
||||
# In (large) monorepos, this can be used to index only subfolders of the project root, e.g.
|
||||
# ls_workspace_folders:
|
||||
# - "./subproject1"
|
||||
# - "./subproject2"
|
||||
ls_workspace_folders:
|
||||
- "."
|
||||
|
||||
# list of additional workspace folder paths for cross-package reference support.
|
||||
# Paths can be absolute or relative to the project root.
|
||||
# Each folder is registered as an LSP workspace folder, enabling language servers to discover
|
||||
# symbols and references across package boundaries, but these folders are not indexed by Serena,
|
||||
# i.e. the respective symbols will not be found using Serena's symbol search tools.
|
||||
# Example:
|
||||
# additional_workspace_folders:
|
||||
# - ../sibling-package
|
||||
# - ../shared-lib
|
||||
ls_additional_workspace_folders: []
|
||||
|
||||
# list of additional paths to ignore in this project.
|
||||
# Same syntax as gitignore, so you can use * and **.
|
||||
# Important: quote patterns that start with `*`, otherwise YAML treats them as aliases.
|
||||
# Example:
|
||||
# ignored_paths:
|
||||
# - "examples/**"
|
||||
# - ".worktrees/**"
|
||||
# - "**/bin/**"
|
||||
# - "**/obj/**"
|
||||
# Note: global ignored_paths from serena_config.yml are also applied additively.
|
||||
ignored_paths: []
|
||||
|
||||
# whether the project is in read-only mode
|
||||
# If set to true, all editing tools will be disabled and attempts to use them will result in an error
|
||||
# Added on 2025-04-18
|
||||
read_only: false
|
||||
|
||||
# list of tool names to exclude.
|
||||
# This extends the existing exclusions (e.g. from the global configuration)
|
||||
# Find the list of tools here: https://oraios.github.io/serena/01-about/035_tools.html
|
||||
excluded_tools: []
|
||||
|
||||
# list of tools to include that would otherwise be disabled (particularly optional tools that are disabled by default).
|
||||
# This extends the existing inclusions (e.g. from the global configuration).
|
||||
# Find the list of tools here: https://oraios.github.io/serena/01-about/035_tools.html
|
||||
included_optional_tools: []
|
||||
|
||||
# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools.
|
||||
# This cannot be combined with non-empty excluded_tools or included_optional_tools.
|
||||
# Find the list of tools here: https://oraios.github.io/serena/01-about/035_tools.html
|
||||
fixed_tools: []
|
||||
|
||||
# list of mode names that are to be activated by default, overriding the setting in the global configuration.
|
||||
# The full set of modes to be activated is base_modes (from global config) + default_modes + added_modes.
|
||||
# If the setting is undefined/empty, the default_modes from the global configuration (serena_config.yml) apply.
|
||||
# Otherwise, this overrides the setting from the global configuration (serena_config.yml).
|
||||
# Therefore, you can set this to [] if you do not want the default modes defined in the global config to apply
|
||||
# for this project.
|
||||
# This setting can, in turn, be overridden by CLI parameters (--mode).
|
||||
# See https://oraios.github.io/serena/02-usage/050_configuration.html#modes
|
||||
default_modes:
|
||||
|
||||
# list of mode names to be activated additionally for this project, e.g. ["query-projects"]
|
||||
# The full set of modes to be activated is base_modes (from global config) + default_modes + added_modes.
|
||||
# See https://oraios.github.io/serena/02-usage/050_configuration.html#modes
|
||||
added_modes:
|
||||
|
||||
# initial prompt for the project. It will always be given to the LLM upon activating the project
|
||||
# (contrary to the memories, which are loaded on demand).
|
||||
initial_prompt: ""
|
||||
|
||||
# time budget (seconds) per tool call for the retrieval of additional symbol information
|
||||
# such as docstrings or parameter information.
|
||||
# This overrides the corresponding setting in the global configuration; see the documentation there.
|
||||
# If null or missing, use the setting from the global configuration.
|
||||
symbol_info_budget:
|
||||
|
||||
# list of regex patterns which, when matched, mark a memory entry as read‑only.
|
||||
# Extends the list from the global configuration, merging the two lists.
|
||||
read_only_memory_patterns: []
|
||||
|
||||
# list of regex patterns for memories to completely ignore.
|
||||
# Matching memories will not appear in list_memories or activate_project output
|
||||
# and cannot be accessed via read_memory or write_memory.
|
||||
# To access ignored memory files, use the read_file tool on the raw file path.
|
||||
# Extends the list from the global configuration, merging the two lists.
|
||||
# Example: ["_archive/.*", "_episodes/.*"]
|
||||
ignored_memory_patterns: []
|
||||
@@ -312,42 +312,42 @@
|
||||
<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))">
|
||||
<Tab Title="Nóminas" Name="tabNominas">
|
||||
<Content>
|
||||
<NominaGrid Persona="persona"></NominaGrid>
|
||||
<NominaGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></NominaGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Incidencias" Name="tabIncidencias">
|
||||
<Content>
|
||||
<IncidenciaGrid Persona="persona"></IncidenciaGrid>
|
||||
<IncidenciaGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></IncidenciaGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Enfermedades" Name="tabEnfermedades">
|
||||
<Content>
|
||||
<EnfermedadesGrid Persona="persona"></EnfermedadesGrid>
|
||||
<EnfermedadesGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></EnfermedadesGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Maternidades/Riesgo Embarazo" Name="tabMaternidades">
|
||||
<Content>
|
||||
<MaternidadesGrid Persona="persona"></MaternidadesGrid>
|
||||
<MaternidadesGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></MaternidadesGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Diferencia Pago Delegado" Name="tabDiferencia">
|
||||
<Content>
|
||||
<DiferenciaGrid Persona="persona"></DiferenciaGrid>
|
||||
<DiferenciaGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></DiferenciaGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Permisos sin Retribución" Name="tabPermSinRet">
|
||||
<Content>
|
||||
<PermisosSinRetriGrid Persona="persona"></PermisosSinRetriGrid>
|
||||
<PermisosSinRetriGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></PermisosSinRetriGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Huelgas" Name="tabHuelgas">
|
||||
<Content>
|
||||
<HuelgasGrid Persona="persona"></HuelgasGrid>
|
||||
<HuelgasGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></HuelgasGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Puestos Trabajo" Name="tabPuestos">
|
||||
<Content>
|
||||
<PuestosTrabajoGrid Persona="persona"></PuestosTrabajoGrid>
|
||||
<PuestosTrabajoGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></PuestosTrabajoGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Otros Datos" Name="tabOtrosDatos">
|
||||
@@ -357,57 +357,57 @@
|
||||
</Tab>
|
||||
<Tab Title="Reducciones Jornada" Name="tabRedJorn">
|
||||
<Content>
|
||||
<ReduccionesJornadaGrid Persona="persona"></ReduccionesJornadaGrid>
|
||||
<ReduccionesJornadaGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></ReduccionesJornadaGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Trabajadores a Tiempo Parcial" Name="tabTrabTiempoPar">
|
||||
<Content>
|
||||
<TrabajadoresTiempoParcialGrid Persona="persona"></TrabajadoresTiempoParcialGrid>
|
||||
<TrabajadoresTiempoParcialGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></TrabajadoresTiempoParcialGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Sexenios y Quintenios" Name="tabSexeQuinte">
|
||||
<Content>
|
||||
<SexeniosQuinqueniosGrid Persona="persona"></SexeniosQuinqueniosGrid>
|
||||
<SexeniosQuinqueniosGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></SexeniosQuinqueniosGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Trienios y C. Carrera" Name="tabTriCar">
|
||||
<Content>
|
||||
<TrieniosCarreraGrid Persona="persona"></TrieniosCarreraGrid>
|
||||
<TrieniosCarreraGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></TrieniosCarreraGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Diferencia de Trienios" Name="tabDifTri">
|
||||
<Content>
|
||||
<DiferenciaTrieniosGrid Persona="persona"></DiferenciaTrieniosGrid>
|
||||
<DiferenciaTrieniosGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></DiferenciaTrieniosGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Préstamos" Name="tabPrestamos">
|
||||
<Content>
|
||||
<PrestamosGrid Persona="persona"></PrestamosGrid>
|
||||
<PrestamosGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></PrestamosGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Retenciones Judiciales" Name="tabRetJudiciales">
|
||||
<Content>
|
||||
<RetencionesJudicialesGrid Persona="persona"></RetencionesJudicialesGrid>
|
||||
<RetencionesJudicialesGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></RetencionesJudicialesGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Productividad" Name="tabProductividad">
|
||||
<Content>
|
||||
<ProductividadGrid Persona="persona"></ProductividadGrid>
|
||||
<ProductividadGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></ProductividadGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Hijos" Name="tabHijos">
|
||||
<Content>
|
||||
<HijosGrid Persona="persona"></HijosGrid>
|
||||
<HijosGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></HijosGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Ascendientes" Name="tabAscendientes">
|
||||
<Content>
|
||||
<AscendientesGrid Persona="persona"></AscendientesGrid>
|
||||
<AscendientesGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></AscendientesGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Otras Retribuciones" Name="tabOtrasRet">
|
||||
<Content>
|
||||
<OtrasRetribucionesGrid Persona="persona"></OtrasRetribucionesGrid>
|
||||
<OtrasRetribucionesGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></OtrasRetribucionesGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="IRPF (Situación actual)" Name="tabIRPFAct">
|
||||
@@ -417,17 +417,17 @@
|
||||
</Tab>
|
||||
<Tab Title="IRPF (Historial Regularizaciones)" Name="tabIRPFhist">
|
||||
<Content>
|
||||
<IRPFHistGrid Persona="persona"></IRPFHistGrid>
|
||||
<IRPFHistGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></IRPFHistGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Expedientes" Name="tabExpedientes">
|
||||
<Content>
|
||||
<ExpedientesGrid Persona="persona"></ExpedientesGrid>
|
||||
<ExpedientesGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></ExpedientesGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
<Tab Title="Permisos" Name="tabPermisos">
|
||||
<Content>
|
||||
<PermisosGrid Persona="persona"></PermisosGrid>
|
||||
<PermisosGrid Persona="persona" OnPersonaActualizada="ActualizarPersonaDesdeHijo"></PermisosGrid>
|
||||
</Content>
|
||||
</Tab>
|
||||
</Tabs>
|
||||
@@ -771,6 +771,30 @@
|
||||
}
|
||||
|
||||
}
|
||||
private async Task ActualizarPersonaDesdeHijo()
|
||||
{
|
||||
try
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
var nifDesencriptado = tsUtilidades.crypt.FEncS(cl,
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
||||
-875421649);
|
||||
var response = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{nifDesencriptado}");
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
var contenido = await response.Content.ReadAsStringAsync();
|
||||
persona = JsonConvert.DeserializeObject<PERSONAS>(contenido)
|
||||
?? throw new InvalidOperationException("No se pudo actualizar la persona.");
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Error al actualizar la persona después de guardar: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CerrarConfirmacion()
|
||||
{
|
||||
await popupConfirmacion.HideAsync();
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nuevo Ascendiente" @onclick="@(() => abrirPopupModificacion(new ASCENDIENTES(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="ASCENDIENTES"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,7 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="ASCENDIENTES" HeaderText="Editar" FilterButtonCSSClass="hidden"><button class="btnOAAFAzul" @onclick="@(() => abrirPopupModificacion(context, false))">Editar</button></GridColumn>
|
||||
<GridColumn TItem="ASCENDIENTES" HeaderText="Nombre">
|
||||
@context.NOMBRE
|
||||
</GridColumn>
|
||||
@@ -54,6 +56,13 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false"><BodyTemplate><div class="row">
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Nombre</label><input class="form-control" @bind-value="ItemEnEdicion.NOMBRE" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Fecha Nacimiento</label><input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHANACIMIENTO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Convivencia</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.CONVIVENCIA" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Discapacidad (ID)</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.IDDISCAPACIDAD" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Movilidad Reducida</label><input type="checkbox" class="form-check" @bind="ItemEnEdicion.MOVILIDADREDUCIDA" /></div>
|
||||
</div></BodyTemplate><FooterTemplate><Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button><Button Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(ItemEnEdicion.IDASCENDIENTES == 0))">@(ItemEnEdicion.IDASCENDIENTES == 0 ? "Crear" : "Modificar")</Button></FooterTemplate></Modal>
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
@@ -61,16 +70,25 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<ASCENDIENTES> itmList = new List<ASCENDIENTES>();
|
||||
private Modal popupGestionDatos = default!;
|
||||
private ASCENDIENTES ItemEnEdicion { get; set; } = new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.ASCENDIENTES;
|
||||
foreach (ASCENDIENTES i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
itmList = Persona.ASCENDIENTES?.ToList() ?? new List<ASCENDIENTES>();
|
||||
}
|
||||
private async Task abrirPopupModificacion(ASCENDIENTES objeto, bool esNuevo) { ItemEnEdicion = objeto; if (esNuevo) ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await popupGestionDatos.ShowAsync(); }
|
||||
private async Task cerrarPopupModificacion() => await popupGestionDatos.HideAsync();
|
||||
private async Task GestionarDatos(bool esNuevo) { if (esNuevo) { ItemEnEdicion.IDASCENDIENTES = 0; ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await Utilidades.NuevoObjeto(cliente, "/api/ASCENDIENTES/", ItemEnEdicion); } else await Utilidades.ActualizarObjeto(cliente, "/api/ASCENDIENTES/" + ItemEnEdicion.IDASCENDIENTES, ItemEnEdicion); await cerrarPopupModificacion(); await OnPersonaActualizada.InvokeAsync(); }
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
@inject IHttpClientFactory HttpClientFactory
|
||||
@inject IHttpContextAccessor HttpContextAccessor
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="row">
|
||||
@if (Puesto != null){
|
||||
<div class="row" style="width:calc(100% - 100px); margin-inline:auto; margin-top:50px">
|
||||
<div class="col-md-3">
|
||||
<label for="txtLuNac" class="fw-bold">Fecha Inicio: </label>
|
||||
<input class="form-control" type="date" id="txtLuNac" @bind-value="@Puesto.FECHAINICIO" />
|
||||
@@ -35,26 +35,204 @@
|
||||
<option data-value="@con.IDTIPOPUESTO">@con.DESCRIPCION</option>
|
||||
}
|
||||
|
||||
|
||||
</datalist>
|
||||
<input class="form-control" id="txtLuNac" @bind-value="@Puesto.IDTIPOPUESTOTRABAJONavigation.DESCRIPCION" />
|
||||
@* <input class="form-control" id="txtLuNac" @bind-value="@Puesto.IDTIPOPUESTOTRABAJONavigation.DESCRIPCION" /> *@
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label for="txtLuNac" class="fw-bold">Grupo: </label>
|
||||
<input list="listGrupo" id="selCon" @bind-value="@itmGrupPuesto" type="text" style="width:100%" class="form-control" placeholder="Grupo" />
|
||||
<datalist id="listGrupo">
|
||||
@foreach (ENUMERACIONES con in lGrupo)
|
||||
{
|
||||
<option data-value="@con.IDENUMERACION">@con.DESCRIPCION</option>
|
||||
}
|
||||
</datalist>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label for="txtLuNac" class="fw-bold">Nivel: </label>
|
||||
<input class="form-control" type="text" id="txtLuNac" @bind-value="@Puesto.NIVEL" />
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label for="txtLuNac" class="fw-bold">Epigrafe: </label>
|
||||
<input class="form-control" type="text" id="txtLuNac" @bind-value="@Puesto.EPIGRAFE" />
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label for="txtLuNac" class="fw-bold">Grupo tarifa: </label>
|
||||
<input class="form-control" type="text" id="txtLuNac" @bind-value="@Puesto.GRUPOTARIFA" />
|
||||
</div>
|
||||
<div class="col-md-2 d-flex" style="gap:15px">
|
||||
<label for="txtLuNac" class="fw-bold" style="line-height:5">Liquida paga: </label>
|
||||
<input class="" type="checkbox" checked="@chbLiquida" id="chbLiquida" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
@* <input type="button" value="" @onclick="@(() => abrirPopupModificacion(new ENFERMEDADES(), true))" class="mb-2 btnOAAFBlack" /> *@
|
||||
<Grid TItem="CONCEPTOSPUESTOSDETRABAJO"
|
||||
Class="table tablaRegPers"
|
||||
Data="@lConceptosPuestos"
|
||||
AllowFiltering="false"
|
||||
AllowPaging="false"
|
||||
AllowSorting="true"
|
||||
EmptyText="No se han encontrado datos"
|
||||
Height="80"
|
||||
PageSizeSelectorVisible="false"
|
||||
Responsive="true"
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
<GridColumns>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Editar" PropertyName="NOMBRE" FilterButtonCSSClass="hidden">
|
||||
|
||||
<button @onclick="@(() => abrirPopupModificacion(context, false))" class="btnOAAFAzul">Editar</button>
|
||||
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Nombre" PropertyName="NOMBRE" FilterButtonCSSClass="hidden" SortKeySelector="item => item.NOMBRE">
|
||||
@context.NOMBRE
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Descripción" PropertyName="DESCRIPCION" SortKeySelector="item => item.DESCRIPCION">
|
||||
@context.DESCRIPCION
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Importe" PropertyName="IMPORTE" SortKeySelector="item => item.IMPORTE">
|
||||
@context.IMPORTE
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Concep. Apl. Presupuest." PropertyName="CONCEPTOAPLPRES" SortKeySelector="item => item.CONCEPTOAPLPRES">
|
||||
@context.CONCEPTOAPLPRES
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Apl. Presupuestaria" PropertyName="APLICACIONPRESUPUESTARIA" SortKeySelector="item => item.APLICACIONPRESUPUESTARIA">
|
||||
@context.APLICACIONPRESUPUESTARIA
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Retribuciones" PropertyName="RETRIBUCIONES" SortKeySelector="item => item.RETRIBUCIONES">
|
||||
@if (context.RETRIBUCIONES == true)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Deduccion" PropertyName="DEDUCCIONES" FilterButtonCSSClass="hidden" SortKeySelector="item => item.DEDUCCIONES">
|
||||
@if (context.DEDUCCIONES == true)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Cotiza S.S." PropertyName="COTIZASEGURIDADSOCIAL" FilterButtonCSSClass="hidden" SortKeySelector="item => item.COTIZASEGURIDADSOCIAL">
|
||||
@if (context.COTIZASEGURIDADSOCIAL == true)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Cotiza IRPF" PropertyName="COTIZAIRPF" FilterButtonCSSClass="hidden" SortKeySelector="item => item.COTIZAIRPF">
|
||||
@if (context.COTIZAIRPF == true)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
</GridColumn>
|
||||
<GridColumn TItem="CONCEPTOSPUESTOSDETRABAJO" HeaderText="Extra" PropertyName="EXTRA" FilterButtonCSSClass="hidden" SortKeySelector="item => item.EXTRA">
|
||||
@if (context.EXTRA == true)
|
||||
{
|
||||
<i class="fa-regular fa-square-check"></i>
|
||||
}
|
||||
</GridColumn>
|
||||
</GridColumns>
|
||||
</Grid>
|
||||
</div>
|
||||
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||
<BodyTemplate>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Nombre</label>
|
||||
<input class="form-control" type="text" @bind-value="ItemEnEdicion.NOMBRE" />
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Descripción</label>
|
||||
<input class="form-control" type="text" @bind-value="ItemEnEdicion.DESCRIPCION" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">Importe</label>
|
||||
<input class="form-control" type="number" @bind-value="@ItemEnEdicion.IMPORTE" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">Concep. Apl. Presupuest.</label>
|
||||
<input class="form-control" type="number" @bind-value="@ItemEnEdicion.CONCEPTOAPLPRES" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">Apl. Presupuestaria</label>
|
||||
<input class="form-control" type="number" @bind-value="@ItemEnEdicion.APLICACIONPRESUPUESTARIA" />
|
||||
</div>
|
||||
<div class="col-md-12" style="display:flex; justify-content:space-between">
|
||||
<label for="txtEDesc" class="fw-bold">Retribuciones</label>
|
||||
<input class="" type="checkbox" id="chbRetribuciones" checked="@ItemEnEdicion.RETRIBUCIONES" />
|
||||
|
||||
<label for="txtEDesc" class="fw-bold">Deducción</label>
|
||||
<input class="" type="checkbox" id="chbDeduccion" checked="@ItemEnEdicion.DEDUCCIONES" />
|
||||
|
||||
</div>
|
||||
<div class="col-md-12" style="display:flex; justify-content:space-between">
|
||||
|
||||
<label for="txtEDesc" class="fw-bold">Cotiza S.S.</label>
|
||||
<input class="" type="checkbox" id="chbCotizaSS" checked="@ItemEnEdicion.COTIZASEGURIDADSOCIAL" />
|
||||
|
||||
<label for="txtEDesc" class="fw-bold">Cotiza IRPF</label>
|
||||
<input class="" type="checkbox" id="chbCotizaIRPF" checked="@ItemEnEdicion.COTIZAIRPF" />
|
||||
|
||||
<label for="txtEDesc" class="fw-bold">Extra</label>
|
||||
<input class="" type="checkbox" id="chbExtra" checked="@ItemEnEdicion.EXTRA" />
|
||||
</div>
|
||||
</div>
|
||||
</BodyTemplate>
|
||||
<FooterTemplate>
|
||||
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||
@if (ItemEnEdicion.IDCONCEPTOSPUESTOSDETRABAJO != 0)
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(false))">Modificar</Button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(true))">Crear</Button>
|
||||
}
|
||||
</FooterTemplate>
|
||||
</Modal>
|
||||
|
||||
}
|
||||
@code {
|
||||
[Parameter]
|
||||
public string? cl { get; set; } = "";
|
||||
private Modal popupGestionDatos = default;
|
||||
private CONCEPTOSPUESTOSDETRABAJO ItemEnEdicion { get; set; } = new CONCEPTOSPUESTOSDETRABAJO();
|
||||
private PUESTOSTRABAJO Puesto { get; set; } = new PUESTOSTRABAJO();
|
||||
private List<TIPOSPUESTOSTRABAJO> lPuestos = new List<TIPOSPUESTOSTRABAJO>();
|
||||
private List<ENUMERACIONES> lGrupo = new List<ENUMERACIONES>();
|
||||
private List<CONCEPTOSPUESTOSDETRABAJO> lConceptosPuestos = new List<CONCEPTOSPUESTOSDETRABAJO>();
|
||||
private string itmDescripPuesto { get; set; }
|
||||
private string itmGrupPuesto { get; set; }
|
||||
private bool chbRetribuciones { get; set; }
|
||||
private bool chbDeduccion { get; set; }
|
||||
private bool chbCotizaSS { get; set; }
|
||||
private bool chbCotizaIRPF { get; set; }
|
||||
private bool chbExtra { get; set; }
|
||||
private bool chbLiquida { get; set; }
|
||||
private HttpClient cliente = new HttpClient();
|
||||
|
||||
private async Task cerrarPopupModificacion()
|
||||
{
|
||||
await popupGestionDatos.HideAsync();
|
||||
}
|
||||
private async Task abrirPopupModificacion(CONCEPTOSPUESTOSDETRABAJO objeto, bool esNuevo)
|
||||
{
|
||||
ItemEnEdicion = objeto;
|
||||
chbRetribuciones = ItemEnEdicion.RETRIBUCIONES;
|
||||
chbDeduccion= ItemEnEdicion.DEDUCCIONES;
|
||||
chbCotizaSS= ItemEnEdicion.COTIZASEGURIDADSOCIAL;
|
||||
chbCotizaIRPF= ItemEnEdicion.COTIZAIRPF;
|
||||
chbExtra= ItemEnEdicion.EXTRA;
|
||||
await popupGestionDatos.ShowAsync();
|
||||
}
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
}
|
||||
|
||||
private async Task CargarListas()
|
||||
{
|
||||
try
|
||||
@@ -66,7 +244,13 @@
|
||||
}
|
||||
var idPuesto = Utilidades.Desencriptar(cl);
|
||||
Puesto = await Utilidades.ObtenerObjeto<PUESTOSTRABAJO>(cliente, "/api/PUESTOSTRABAJO/" + idPuesto);
|
||||
itmDescripPuesto = Puesto.IDTIPOPUESTOTRABAJONavigation.DESCRIPCION;
|
||||
lPuestos = await Utilidades.ObtenerObjeto<List<TIPOSPUESTOSTRABAJO>>(cliente, "/api/TIPOSPUESTOSTRABAJO/");
|
||||
foreach(CONCEPTOSPUESTOSDETRABAJO pues in Puesto.CONCEPTOSPUESTOSDETRABAJO)
|
||||
{
|
||||
lConceptosPuestos.Add(pues);
|
||||
}
|
||||
chbLiquida = Puesto.LIQUIDAPAGA;
|
||||
StateHasChanged();
|
||||
|
||||
}
|
||||
@@ -75,5 +259,43 @@
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
private async Task GestionarDatos(bool tipo)
|
||||
{
|
||||
var inci = ItemEnEdicion;
|
||||
if (tipo == true)
|
||||
{
|
||||
inci.IDCONCEPTOSPUESTOSDETRABAJO = 0;
|
||||
}
|
||||
inci.IDPUESTOSDETRABAJO = Puesto.IDPUESTOSTRABAJO;
|
||||
|
||||
string chbRetri = "chbRetribuciones";
|
||||
inci.RETRIBUCIONES = await JS.InvokeAsync<bool>("obtenerCheck", chbRetri);
|
||||
string chbDeduc = "chbDeduccion";
|
||||
inci.DEDUCCIONES = await JS.InvokeAsync<bool>("obtenerCheck", chbDeduc);
|
||||
string chbCotizaSS = "chbCotizaSS";
|
||||
inci.COTIZASEGURIDADSOCIAL = await JS.InvokeAsync<bool>("obtenerCheck", chbCotizaSS);
|
||||
string chbCotizaIRPF = "chbCotizaIRPF";
|
||||
inci.COTIZAIRPF = await JS.InvokeAsync<bool>("obtenerCheck", chbCotizaIRPF);
|
||||
string chbExtra = "chbExtra";
|
||||
inci.EXTRA = await JS.InvokeAsync<bool>("obtenerCheck", chbExtra);
|
||||
|
||||
|
||||
if (inci.IDCONCEPTOSPUESTOSDETRABAJO != 0)
|
||||
{
|
||||
var response = await Utilidades.ActualizarObjeto(cliente, "/api/CONCEPTOSPUESTOSDETRABAJO/" + inci.IDCONCEPTOSPUESTOSDETRABAJO, inci);
|
||||
}
|
||||
else
|
||||
{
|
||||
var response = await Utilidades.NuevoObjeto(cliente, "/api/CONCEPTOSPUESTOSDETRABAJO/", inci);
|
||||
}
|
||||
await cerrarPopupModificacion();
|
||||
await CargarListas();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
<script>
|
||||
function obtenerCheck(id){
|
||||
return $("#"+id)[0].checked
|
||||
}
|
||||
</script>
|
||||
@@ -101,6 +101,7 @@
|
||||
private DIFERENCIAPAGODELEGADO ItemEnEdicion { get; set; } = new DIFERENCIAPAGODELEGADO();
|
||||
// private List<int?> meses = new List<int?>();
|
||||
private List<DIFERENCIAPAGODELEGADO> itmList = new List<DIFERENCIAPAGODELEGADO>();
|
||||
protected override void OnParametersSet() => itmList = Persona.DIFERENCIAPAGODELEGADO?.ToList() ?? new();
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
@@ -115,7 +116,6 @@
|
||||
try
|
||||
{
|
||||
var listnom = Persona.DIFERENCIAPAGODELEGADO;
|
||||
foreach (DIFERENCIAPAGODELEGADO i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -153,6 +153,7 @@
|
||||
var resultContent = await response1.Content.ReadAsStringAsync();
|
||||
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nueva Diferencia de Trienios" @onclick="@(() => abrirPopupModificacion(new DIFERENCIATRIENIOS(), true))" class="mb-2 btnOAAFBlack" />
|
||||
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="DIFERENCIATRIENIOS"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +33,11 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="DIFERENCIATRIENIOS" HeaderText="Editar" FilterButtonCSSClass="hidden">
|
||||
|
||||
<button @onclick="@(() => abrirPopupModificacion(context, false))" class="btnOAAFAzul">Editar</button>
|
||||
|
||||
</GridColumn>
|
||||
<GridColumn TItem="DIFERENCIATRIENIOS" HeaderText="Número Trienios">
|
||||
@context.NUMEROTRIENIOS
|
||||
</GridColumn>
|
||||
@@ -51,23 +58,109 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||
<BodyTemplate>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Número Trienios</label>
|
||||
<input class="form-control" type="number" @bind-value="ItemEnEdicion.NUMEROTRIENIOS" />
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Descripción</label>
|
||||
<input class="form-control" type="text" @bind-value="ItemEnEdicion.DESCRIPCION" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">Tipo</label>
|
||||
<input class="form-control" type="text" @bind-value="@ItemEnEdicion.TIPO" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">Fecha Alta</label>
|
||||
<input class="form-control" type="date" @bind-value="@ItemEnEdicion.FECHAALTA" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">Fecha Baja</label>
|
||||
<input class="form-control" type="date" @bind-value="@ItemEnEdicion.FECHABAJA" />
|
||||
</div>
|
||||
</div>
|
||||
</BodyTemplate>
|
||||
<FooterTemplate>
|
||||
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||
@if (ItemEnEdicion.IDDIFERENCIASTRIENIOS != 0)
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(false))">Modificar</Button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(true))">Crear</Button>
|
||||
}
|
||||
</FooterTemplate>
|
||||
</Modal>
|
||||
|
||||
|
||||
|
||||
|
||||
@code {
|
||||
private Modal popupGestionDatos = default;
|
||||
private DIFERENCIATRIENIOS ItemEnEdicion { get; set; } = new DIFERENCIATRIENIOS();
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
private HttpClient cliente = new HttpClient();
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<DIFERENCIATRIENIOS> itmList = new List<DIFERENCIATRIENIOS>();
|
||||
protected override void OnParametersSet() => itmList = Persona.DIFERENCIATRIENIOS?.ToList() ?? new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
|
||||
|
||||
}
|
||||
private async Task CargarListas()
|
||||
{
|
||||
try
|
||||
{
|
||||
var listnom = Persona.DIFERENCIATRIENIOS;
|
||||
foreach (DIFERENCIATRIENIOS i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
private async Task cerrarPopupModificacion()
|
||||
{
|
||||
await popupGestionDatos.HideAsync();
|
||||
}
|
||||
private async Task abrirPopupModificacion(DIFERENCIATRIENIOS objeto, bool esNuevo)
|
||||
{
|
||||
ItemEnEdicion = objeto;
|
||||
|
||||
await popupGestionDatos.ShowAsync();
|
||||
}
|
||||
private async Task GestionarDatos(bool tipo)
|
||||
{
|
||||
var inci = ItemEnEdicion;
|
||||
if (tipo == true)
|
||||
{
|
||||
inci.IDDIFERENCIASTRIENIOS= 0;
|
||||
inci.IDPERSONA = Persona.IDPERSONA;
|
||||
}
|
||||
|
||||
if (inci.IDDIFERENCIASTRIENIOS != 0)
|
||||
{
|
||||
var response = await Utilidades.ActualizarObjeto(cliente, "/api/DIFERENCIATRIENIOS/" + inci.IDDIFERENCIASTRIENIOS, inci);
|
||||
}
|
||||
else
|
||||
{
|
||||
var response = await Utilidades.NuevoObjeto(cliente, "/api/DIFERENCIATRIENIOS/", inci);
|
||||
}
|
||||
await cerrarPopupModificacion();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private string itmTipo { get; set; }
|
||||
private List<ENFERMEDADES> itmList = new List<ENFERMEDADES>();
|
||||
protected override void OnParametersSet() => itmList = Persona.ENFERMEDADES?.ToList() ?? new();
|
||||
private List<ENUMERACIONES> lTipo = new List<ENUMERACIONES>();
|
||||
private ENFERMEDADES ItemEnEdicion { get; set; } = new ENFERMEDADES();
|
||||
|
||||
@@ -223,6 +224,7 @@
|
||||
var resultContent = await response1.Content.ReadAsStringAsync();
|
||||
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nuevo Expediente" @onclick="@(() => abrirPopup(new EXPEDIENTESPERSONAS(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="EXPEDIENTESPERSONAS"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,7 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="EXPEDIENTESPERSONAS" HeaderText="Editar" FilterButtonCSSClass="hidden"><button class="btnOAAFAzul" @onclick="@(() => abrirPopup(context, false))">Editar</button></GridColumn>
|
||||
<GridColumn TItem="EXPEDIENTESPERSONAS" HeaderText="Fecha Cálculo">
|
||||
@context.FECHA?.ToString("dd/MM/yyyy")
|
||||
</GridColumn>
|
||||
@@ -46,6 +48,11 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
<Modal @ref="popup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false"><BodyTemplate><div class="row">
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Fecha Cálculo</label><input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHA" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Tipo (ID)</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.TIPO" /></div>
|
||||
<div class="col-md-12 mb-2"><label class="fw-bold">Descripción</label><textarea class="form-control" @bind="ItemEnEdicion.DESCRIPCION"></textarea></div>
|
||||
</div></BodyTemplate><FooterTemplate><Button Color="ButtonColor.Secondary" @onclick="cerrarPopup">Cerrar</Button><Button Color="ButtonColor.Primary" @onclick="Guardar">@(ItemEnEdicion.IDEXPEDIENTESPERSONAS == 0 ? "Crear" : "Modificar")</Button></FooterTemplate></Modal>
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
@@ -53,16 +60,22 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<EXPEDIENTESPERSONAS> itmList = new List<EXPEDIENTESPERSONAS>();
|
||||
private Modal popup = default!;
|
||||
private EXPEDIENTESPERSONAS ItemEnEdicion { get; set; } = new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.EXPEDIENTESPERSONAS;
|
||||
foreach (EXPEDIENTESPERSONAS i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
protected override void OnParametersSet() => itmList = Persona.EXPEDIENTESPERSONAS?.ToList() ?? new();
|
||||
private async Task abrirPopup(EXPEDIENTESPERSONAS item, bool nuevo) { ItemEnEdicion = item; if (nuevo) ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await popup.ShowAsync(); }
|
||||
private async Task cerrarPopup() => await popup.HideAsync();
|
||||
private async Task Guardar() { if (ItemEnEdicion.IDEXPEDIENTESPERSONAS == 0) { ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await Utilidades.NuevoObjeto(cliente, "/api/EXPEDIENTESPERSONAS/", ItemEnEdicion); } else await Utilidades.ActualizarObjeto(cliente, "/api/EXPEDIENTESPERSONAS/" + ItemEnEdicion.IDEXPEDIENTESPERSONAS, ItemEnEdicion); await cerrarPopup(); await OnPersonaActualizada.InvokeAsync(); }
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nuevo Hijo" @onclick="@(() => abrirPopupModificacion(new HIJOS(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="HIJOS"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,7 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="HIJOS" HeaderText="Editar" FilterButtonCSSClass="hidden"><button class="btnOAAFAzul" @onclick="@(() => abrirPopupModificacion(context, false))">Editar</button></GridColumn>
|
||||
<GridColumn TItem="HIJOS" HeaderText="Nombre">
|
||||
@context.NOMBRE
|
||||
</GridColumn>
|
||||
@@ -63,6 +65,15 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false"><BodyTemplate><div class="row">
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Nombre</label><input class="form-control" @bind-value="ItemEnEdicion.NOMBRE" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Sexo</label><input class="form-control" @bind-value="ItemEnEdicion.SEXO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Fecha Nacimiento</label><input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHANACIMIENTO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Fecha Adopción</label><input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAADOPCION" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Discapacidad (ID)</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.IDDISCAPACIDAD" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Entero IRPF</label><input type="checkbox" class="form-check" @bind="ItemEnEdicion.ENTEROIRPF" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Movilidad Reducida</label><input type="checkbox" class="form-check" @bind="ItemEnEdicion.MOVILIDADREDUCIDA" /></div>
|
||||
</div></BodyTemplate><FooterTemplate><Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button><Button Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(ItemEnEdicion.IDHIJO == 0))">@(ItemEnEdicion.IDHIJO == 0 ? "Crear" : "Modificar")</Button></FooterTemplate></Modal>
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
@@ -70,16 +81,25 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<HIJOS> itmList = new List<HIJOS>();
|
||||
private Modal popupGestionDatos = default!;
|
||||
private HIJOS ItemEnEdicion { get; set; } = new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.HIJOS;
|
||||
foreach (HIJOS i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
itmList = Persona.HIJOS?.ToList() ?? new List<HIJOS>();
|
||||
}
|
||||
private async Task abrirPopupModificacion(HIJOS objeto, bool esNuevo) { ItemEnEdicion = objeto; if (esNuevo) ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await popupGestionDatos.ShowAsync(); }
|
||||
private async Task cerrarPopupModificacion() => await popupGestionDatos.HideAsync();
|
||||
private async Task GestionarDatos(bool esNuevo) { if (esNuevo) { ItemEnEdicion.IDHIJO = 0; ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await Utilidades.NuevoObjeto(cliente, "/api/HIJOS/", ItemEnEdicion); } else await Utilidades.ActualizarObjeto(cliente, "/api/HIJOS/" + ItemEnEdicion.IDHIJO, ItemEnEdicion); await cerrarPopupModificacion(); await OnPersonaActualizada.InvokeAsync(); }
|
||||
}
|
||||
|
||||
@@ -140,12 +140,14 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<HUELGAS> itmList = new List<HUELGAS>();
|
||||
protected override void OnParametersSet() => itmList = Persona.HUELGAS?.ToList() ?? new();
|
||||
private List<NOMINAS> lNominas = new List<NOMINAS>();
|
||||
private HUELGAS ItemEnEdicion { get; set; } = new HUELGAS();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
|
||||
private async Task CargarListas()
|
||||
@@ -154,7 +156,6 @@
|
||||
try
|
||||
{
|
||||
var listnom = Persona.HUELGAS;
|
||||
foreach (HUELGAS i in listnom) { itmList.Add(i); }
|
||||
var lNomi = await Utilidades.ObtenerObjeto<List<NOMINAS>>(cliente, "/api/NOMINAS");
|
||||
lNominas = lNomi.OrderBy(x => x.FECHAINICIO).ToList();
|
||||
}
|
||||
|
||||
@@ -15,14 +15,15 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="col-md-10" style="margin-inline:auto;">
|
||||
<div class="mb-2"><button type="button" class="btnOAAFAzul" @onclick="Guardar">Guardar IRPF actual</button></div>
|
||||
|
||||
<p class="tituloCaja">Discapacidad</p>
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
@* % Discapacidad *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtPorDis" class="fw-bold widthLabel">% Discapacidad: </label>
|
||||
<label for="txtPorDis" class="fw-bold widthLabel" style="height:auto">% Discapacidad: </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null && @Persona.IDSITUACIONACTUALIRPFNavigation.IDDISCAPACIDADNavigation != null){
|
||||
<input class="form-control" disabled id="txtPorDis" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDDISCAPACIDADNavigation.DESCRIPCION" />
|
||||
<input class="form-control" type="number" id="txtPorDis" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDDISCAPACIDAD" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -31,10 +32,10 @@
|
||||
</div>
|
||||
@* Necesita Ayuda 3º Persona *@
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="txtAyuda" class="fw-bold widthLabel">Ingreso Administración : </label>
|
||||
<label for="txtAyuda" class="fw-bold widthLabel" style="height:auto">Ingreso Administración : </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null)
|
||||
{
|
||||
<input type="checkbox" class="form-control" disabled id="txtAyuda" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.NECEAYUDATERCPERSOMOVILRED" />
|
||||
<input type="checkbox" class="form-check" id="txtAyuda" @bind="Persona.IDSITUACIONACTUALIRPFNavigation.NECEAYUDATERCPERSOMOVILRED" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -48,10 +49,10 @@
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
@* Situación *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtIngrAdmin" class="fw-bold widthLabel">Situación: </label>
|
||||
<label for="txtIngrAdmin" class="fw-bold widthLabel" style="height:auto">Situación: </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null)
|
||||
{
|
||||
<input class="form-control" disabled id="txtIngrAdmin" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDSITUACIONFAMILIARNavigation.DESCRIPCION" />
|
||||
<input class="form-control" type="number" id="txtIngrAdmin" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDSITUACIONFAMILIAR" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -60,10 +61,10 @@
|
||||
</div>
|
||||
@* Ingreso Administración Estado *@
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="txtIngrAdminEst" class="fw-bold widthLabel">: </label>
|
||||
<label for="txtIngrAdminEst" class="fw-bold widthLabel" style="height:auto">NIF conyuge: </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null)
|
||||
{
|
||||
<input type="checkbox" class="form-control" disabled id="txtIngrAdminEst" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.NIFCONYUGE" />
|
||||
<input class="form-control" id="txtIngrAdminEst" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.NIFCONYUGE" />
|
||||
}
|
||||
else { <input type="checkbox" class="form-control" disabled id="txtIngrAdminEst" /> }
|
||||
|
||||
@@ -82,10 +83,10 @@
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
@* Situación *@
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="txtSLSitu" class="fw-bold widthLabel">Situación: </label>
|
||||
<label for="txtSLSitu" class="fw-bold widthLabel" style="height:auto">Situación: </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null)
|
||||
{
|
||||
<input class="form-control" disabled id="txtSLSitu" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDSITUACIONLABORALNavigation.DESCRIPCION" />
|
||||
<input class="form-control" type="number" id="txtSLSitu" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDSITUACIONLABORAL" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -93,10 +94,10 @@
|
||||
}
|
||||
</div>
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="txtCLCR" class="fw-bold widthLabel">Contrato o Relación: </label>
|
||||
<label for="txtCLCR" class="fw-bold widthLabel" style="height:auto">Contrato o Relación: </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null && Persona.IDSITUACIONACTUALIRPFNavigation.IDCONTRATOORELACIONNavigation != null)
|
||||
{
|
||||
<input class="form-control" disabled id="txtSLCR" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDCONTRATOORELACIONNavigation.DESCRIPCION" />
|
||||
<input class="form-control" type="number" id="txtSLCR" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.IDCONTRATOORELACION" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -104,10 +105,10 @@
|
||||
}
|
||||
</div>
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="txtSLSitu" class="fw-bold widthLabel">Movilidad Geografica: </label>
|
||||
<label for="txtSLSitu" class="fw-bold widthLabel" style="height:auto">Movilidad Geografica: </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null)
|
||||
{
|
||||
<input type="checkbox" class="form-control" disabled id="txtSLSitu" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.MOVILIDADGEOGRAFICA" />
|
||||
<input type="checkbox" class="form-check" id="txtSLSitu" @bind="Persona.IDSITUACIONACTUALIRPFNavigation.MOVILIDADGEOGRAFICA" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -116,10 +117,10 @@
|
||||
|
||||
</div>
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="chbProVL" class="fw-bold widthLabel">Prolongación Vida Laboral: </label>
|
||||
<label for="chbProVL" class="fw-bold widthLabel" style="height:auto">Prolongación Vida Laboral: </label>
|
||||
@if (Persona.IDSITUACIONACTUALIRPFNavigation != null)
|
||||
{
|
||||
<input type="checkbox" class="form-control" disabled id="chbProVL" @bind-value="@Persona.IDSITUACIONACTUALIRPFNavigation.PROLONGACTLABORAL" />
|
||||
<input type="checkbox" class="form-check" id="chbProVL" @bind="Persona.IDSITUACIONACTUALIRPFNavigation.PROLONGACTLABORAL" />
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -137,4 +138,12 @@
|
||||
private HttpClient cliente = new HttpClient();
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private async Task Guardar()
|
||||
{
|
||||
if (Persona.IDSITUACIONACTUALIRPFNavigation is null)
|
||||
return;
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await Utilidades.ActualizarObjeto(cliente, "/api/SITUACIONACTUALIRPF/" + Persona.IDSITUACIONACTUALIRPFNavigation.IDSITUACIONACTUALIRPF, Persona.IDSITUACIONACTUALIRPFNavigation);
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nuevo Histórico IRPF" @onclick="@(() => abrirPopup(new HISTORICOIRPF(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="HISTORICOIRPF"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,7 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="HISTORICOIRPF" HeaderText="Editar" FilterButtonCSSClass="hidden"><button class="btnOAAFAzul" @onclick="@(() => abrirPopup(context, false))">Editar</button></GridColumn>
|
||||
<GridColumn TItem="HISTORICOIRPF" HeaderText="Fecha Cálculo">
|
||||
@context.FECHACALCULO?.ToString("dd/MM/yyyy")
|
||||
</GridColumn>
|
||||
@@ -46,6 +48,14 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
<Modal @ref="popup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false"><BodyTemplate><div class="row">
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Fecha Cálculo</label><input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHACALCULO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Año</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.ANNO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Tipo Retención Calculado</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.TIPODERETENCIONCALCULADO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Tipo Retención a Aplicar</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.TIPODERETENCIONAAPLICAR" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Importe Anual Retenciones</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.IMPORTEANUALRETENCIONES" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Conservar Tipo</label><input type="checkbox" class="form-check" @bind="ItemEnEdicion.CONSERVATIPO" /></div>
|
||||
</div></BodyTemplate><FooterTemplate><Button Color="ButtonColor.Secondary" @onclick="cerrarPopup">Cerrar</Button><Button Color="ButtonColor.Primary" @onclick="Guardar">@(ItemEnEdicion.IDHISTORICOIRPF == 0 ? "Crear" : "Modificar")</Button></FooterTemplate></Modal>
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
@@ -53,16 +63,22 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<HISTORICOIRPF> itmList = new List<HISTORICOIRPF>();
|
||||
private Modal popup = default!;
|
||||
private HISTORICOIRPF ItemEnEdicion { get; set; } = new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.HISTORICOIRPF;
|
||||
foreach (HISTORICOIRPF i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
protected override void OnParametersSet() => itmList = Persona.HISTORICOIRPF?.ToList() ?? new();
|
||||
private async Task abrirPopup(HISTORICOIRPF item, bool nuevo) { ItemEnEdicion = item; if (nuevo) ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await popup.ShowAsync(); }
|
||||
private async Task cerrarPopup() => await popup.HideAsync();
|
||||
private async Task Guardar() { if (ItemEnEdicion.IDHISTORICOIRPF == 0) { ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await Utilidades.NuevoObjeto(cliente, "/api/HISTORICOIRPF/", ItemEnEdicion); } else await Utilidades.ActualizarObjeto(cliente, "/api/HISTORICOIRPF/" + ItemEnEdicion.IDHISTORICOIRPF, ItemEnEdicion); await cerrarPopup(); await OnPersonaActualizada.InvokeAsync(); }
|
||||
}
|
||||
|
||||
@@ -241,6 +241,7 @@
|
||||
private List<int?> annos = new List<int?>();
|
||||
// private List<int?> meses = new List<int?>();
|
||||
private List<INCIDENCIAS> itmList = new List<INCIDENCIAS>();
|
||||
protected override void OnParametersSet() => itmList = Persona.INCIDENCIAS?.Where(x => !x.ESDELIQUIDACION).ToList() ?? new();
|
||||
private List<String> nombMeses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];
|
||||
private List<NOMINAS> lNom = new List<NOMINAS>();
|
||||
private List<CONCEPTOSGENERALES> lConceptos = new List<CONCEPTOSGENERALES>();
|
||||
@@ -277,10 +278,11 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
itmList.Clear();
|
||||
itmList = Persona.INCIDENCIAS?
|
||||
.Where(x => !x.ESDELIQUIDACION)
|
||||
.ToList()
|
||||
?? new List<INCIDENCIAS>();
|
||||
annos.Clear();
|
||||
var listnom = Persona.INCIDENCIAS.Where(x => x.ESDELIQUIDACION == false).ToList();
|
||||
foreach (INCIDENCIAS i in listnom){ itmList.Add(i); }
|
||||
for (var i = 0; i < itmList.Count; i++)
|
||||
{
|
||||
int? year = itmList[i].AÑONOMINA;
|
||||
@@ -352,6 +354,7 @@
|
||||
var resultContent = await response1.Content.ReadAsStringAsync();
|
||||
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,10 +128,12 @@
|
||||
private MATERNIDADES ItemEnEdicion { get; set; } = new MATERNIDADES();
|
||||
// private List<int?> meses = new List<int?>();
|
||||
private List<MATERNIDADES> itmList = new List<MATERNIDADES>();
|
||||
protected override void OnParametersSet() => itmList = Persona.MATERNIDADES?.ToList() ?? new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
private async Task CargarListas()
|
||||
{
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nueva Otra Retribución" @onclick="@(() => abrirPopup(new OTRASRETRIBUCIONES(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="OTRASRETRIBUCIONES"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,7 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="OTRASRETRIBUCIONES" HeaderText="Editar" FilterButtonCSSClass="hidden"><button class="btnOAAFAzul" @onclick="@(() => abrirPopup(context, false))">Editar</button></GridColumn>
|
||||
<GridColumn TItem="OTRASRETRIBUCIONES" HeaderText="Mes">
|
||||
@context.MES
|
||||
</GridColumn>
|
||||
@@ -62,6 +64,15 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
<Modal @ref="popup" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false"><BodyTemplate><div class="row">
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Mes</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.MES" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Año</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.AÑO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Importe</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.IMPORTE" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">CRA</label><input class="form-control" @bind-value="ItemEnEdicion.CRA" /></div>
|
||||
<div class="col-md-12 mb-2"><label class="fw-bold">Descripción</label><input class="form-control" @bind-value="ItemEnEdicion.DESCRIPCION" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Seguridad Social</label><input type="checkbox" class="form-check" @bind="ItemEnEdicion.SEGURIDADSOCIAL" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">IRPF</label><input type="checkbox" class="form-check" @bind="ItemEnEdicion.IRPF" /></div>
|
||||
</div></BodyTemplate><FooterTemplate><Button Color="ButtonColor.Secondary" @onclick="cerrarPopup">Cerrar</Button><Button Color="ButtonColor.Primary" @onclick="Guardar">@(ItemEnEdicion.IDOTRASRETRIBUCIONES == 0 ? "Crear" : "Modificar")</Button></FooterTemplate></Modal>
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
@@ -69,16 +80,22 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<OTRASRETRIBUCIONES> itmList = new List<OTRASRETRIBUCIONES>();
|
||||
private Modal popup = default!;
|
||||
private OTRASRETRIBUCIONES ItemEnEdicion { get; set; } = new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.OTRASRETRIBUCIONES;
|
||||
foreach (OTRASRETRIBUCIONES i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
protected override void OnParametersSet() => itmList = Persona.OTRASRETRIBUCIONES?.ToList() ?? new();
|
||||
private async Task abrirPopup(OTRASRETRIBUCIONES item, bool nuevo) { ItemEnEdicion = item; if (nuevo) ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await popup.ShowAsync(); }
|
||||
private async Task cerrarPopup() => await popup.HideAsync();
|
||||
private async Task Guardar() { if (ItemEnEdicion.IDOTRASRETRIBUCIONES == 0) { ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await Utilidades.NuevoObjeto(cliente, "/api/OTRASRETRIBUCIONES/", ItemEnEdicion); } else await Utilidades.ActualizarObjeto(cliente, "/api/OTRASRETRIBUCIONES/" + ItemEnEdicion.IDOTRASRETRIBUCIONES, ItemEnEdicion); await cerrarPopup(); await OnPersonaActualizada.InvokeAsync(); }
|
||||
}
|
||||
|
||||
@@ -15,36 +15,58 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="col-md-10" style="margin-inline:auto;">
|
||||
<input type="button" value="Guardar" @onclick="GestionarDatos" class="mb-2 btnOAAFBlack" />
|
||||
<p class="tituloCaja">Varios</p>
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
@* Mutua *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtMutua" class="fw-bold widthLabel li-height50">Mutua: </label>
|
||||
@if (Persona.IDMUTUANavigation != null){
|
||||
<input class="form-control" disabled id="txtMutua" @bind-value="@Persona.IDMUTUANavigation.DESCRIPCION" />
|
||||
}
|
||||
else
|
||||
|
||||
|
||||
@*Meter combo Mutuas*@
|
||||
<InputSelect @bind-Value="@Persona.IDMUTUA" class="form-select">
|
||||
<option value="">Seleccionar</option>
|
||||
@if (lMutuas != null)
|
||||
{
|
||||
<input class="form-control" disabled id="txtMutua" />
|
||||
@foreach (var enumera in lMutuas)
|
||||
{
|
||||
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||
}
|
||||
}
|
||||
</InputSelect>
|
||||
|
||||
</div>
|
||||
@* Mutua2 *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtMutua2" class="fw-bold widthLabel li-height50">Mutua 2: </label>
|
||||
@if (Persona.IDMUTUA2Navigation != null)
|
||||
<InputSelect @bind-Value="@Persona.IDMUTUA2" class="form-select">
|
||||
<option value="">Seleccionar</option>
|
||||
@if (lMutuas != null)
|
||||
{
|
||||
<input class="form-control" disabled id="txtMutua2" @bind-value="@Persona.IDMUTUA2Navigation.DESCRIPCION" />
|
||||
}
|
||||
else
|
||||
@foreach (var enumera in lMutuas)
|
||||
{
|
||||
<input class="form-control" disabled id="txtMutua2" />
|
||||
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||
}
|
||||
}
|
||||
</InputSelect>
|
||||
@*Meter combo Mutuas*@
|
||||
|
||||
</div>
|
||||
@* Puesto Trabajo Oposición *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtPuestOp" class="fw-bold widthLabel">Puesto Trabajo Oposición: </label>
|
||||
@if (Persona.IDPUESTOTRABAJOOPOSICIONNavigation != null)
|
||||
@*Meter combo puestoTrabajoOposicion*@
|
||||
<InputSelect @bind-Value="@Persona.IDPUESTOTRABAJOOPOSICION" class="form-select">
|
||||
<option value="">Seleccionar</option>
|
||||
@if (lPuestosTrabajo != null)
|
||||
{
|
||||
@foreach (var enumera in lPuestosTrabajo)
|
||||
{
|
||||
<option value="@enumera.IDTIPOPUESTO">@enumera.DESCRIPCION</option>
|
||||
}
|
||||
}
|
||||
</InputSelect>
|
||||
@* @if (Persona.IDPUESTOTRABAJOOPOSICIONNavigation != null)
|
||||
{
|
||||
<input class="form-control" disabled id="txtPuestOp" @bind-value="@Persona.IDPUESTOTRABAJOOPOSICIONNavigation.DESCRIPCION" />
|
||||
}
|
||||
@@ -52,117 +74,125 @@
|
||||
{
|
||||
<input class="form-control" disabled id="txtPuestOp" />
|
||||
}
|
||||
</div>
|
||||
*@ </div>
|
||||
@* Nº Afiliación *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtNuAfi" class="fw-bold widthLabel li-height50">Nº Afiliciación: </label>
|
||||
<input class="form-control" disabled id="txtNuAfi" @bind-value="@Persona.NUMEROAFILIACIONMUTUA" />
|
||||
<input class="form-control" id="txtNuAfi" @bind-value="@Persona.NUMEROAFILIACIONMUTUA" />
|
||||
</div>
|
||||
@* Nº Afiliación 2 *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtNuAfi2" class="fw-bold widthLabel li-height50">Nº Afiliciación 2: </label>
|
||||
<input class="form-control" disabled id="txtNuAfi2" @bind-value="@Persona.NUMEROAFILIACIONMUTUA2" />
|
||||
<input class="form-control" id="txtNuAfi2" @bind-value="@Persona.NUMEROAFILIACIONMUTUA2" />
|
||||
</div>
|
||||
@* Tratamiento *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtTratamiento" class="fw-bold widthLabel li-height50">Tratamiento: </label>
|
||||
<input class="form-control" disabled id="txtTratamiento" @bind-value="@Persona.TRATAMIENTO" />
|
||||
<input class="form-control" id="txtTratamiento" @bind-value="@Persona.TRATAMIENTO" />
|
||||
</div>
|
||||
@* Importe Seguro Accidentes *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtImpSeguro" class="fw-bold widthLabel">Importe Seguro Accidentes: </label>
|
||||
<input class="form-control" disabled id="txtImpSeguro" @bind-value="@Persona.SEGUROACCIDENTE" />
|
||||
<input class="form-control" id="txtImpSeguro" @bind-value="@Persona.SEGUROACCIDENTE" />
|
||||
</div>
|
||||
@* Cuenta Bancaria *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtCuentaBancaria" class="fw-bold widthLabel li-height50">Cuenta Bancaria: </label>
|
||||
<input class="form-control" disabled id="txtCuentaBancaria" @bind-value="@Persona.CUENTABANCARIA" />
|
||||
<input class="form-control" id="txtCuentaBancaria" @bind-value="@Persona.CUENTABANCARIA" />
|
||||
</div>
|
||||
@* Nº Pluriempleo*@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtPluriempleo" class="fw-bold widthLabel li-height50">Nº Pluriempleo: </label>
|
||||
<input class="form-control" disabled id="txtPluriempleo" @bind-value="@Persona.PLURIEMPLEO" />
|
||||
<input class="form-control" id="txtPluriempleo" @bind-value="@Persona.PLURIEMPLEO" />
|
||||
</div>
|
||||
@* Base Seguridad Social Junio 2010 *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtBaSeSo2010" class="fw-bold widthLabel">Base Seguridad Social Junio 2010: </label>
|
||||
<input class="form-control" disabled id="txtBaSeSo2010" @bind-value="@Persona.BASESSJUN2010" />
|
||||
<input class="form-control" id="txtBaSeSo2010" @bind-value="@Persona.BASESSJUN2010" />
|
||||
</div>
|
||||
@* Formación Academica *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtFormacion" class="fw-bold widthLabel li-height50">Formación Academica: </label>
|
||||
<input class="form-control" disabled id="txtFormacion" @bind-value="@Persona.FORMACIONACADEMICA" />
|
||||
<input class="form-control" id="txtFormacion" @bind-value="@Persona.FORMACIONACADEMICA" />
|
||||
</div>
|
||||
@* Base Mes Anterior *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtBaseMesAnterior" class="fw-bold widthLabel li-height50">Base Mes Anterior: </label>
|
||||
<input class="form-control" disabled id="txtBaseMesAnterior" @bind-value="@Persona.BASEMESANTERIOR" />
|
||||
<input class="form-control" id="txtBaseMesAnterior" @bind-value="@Persona.BASEMESANTERIOR" />
|
||||
</div>
|
||||
@* Fecha Alta *@
|
||||
|
||||
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtFechaAlta" class="fw-bold widthLabel li-height50">Fecha Alta: </label>
|
||||
<input type="date" class="form-control" disabled id="txtFechaAlta" @bind-value="@Persona.FECHAALTA" />
|
||||
<input type="date" class="form-control" id="txtFechaAlta" @bind-value="@Persona.FECHAALTA" />
|
||||
</div>
|
||||
@* Porcentaje de Pluriempleo *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtPorcentajePluriempleo" class="fw-bold widthLabel">Porcentaje de Pluriempleo: </label>
|
||||
<input class="form-control" disabled id="txtPorcentajePluriempleo" @bind-value="@Persona.NUMEROPLURIEMPLEO" />
|
||||
<input class="form-control" id="txtPorcentajePluriempleo" @bind-value="@Persona.NUMEROPLURIEMPLEO" />
|
||||
</div>
|
||||
@* Causa Baja *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtCausaBaja" class="fw-bold widthLabel li-height50">Causa Baja: </label>
|
||||
|
||||
@if (Persona.IDCAUSABAJAPARNavigation != null)
|
||||
@*Meter Combo CausaBaja*@
|
||||
<InputSelect @bind-Value="@Persona.IDCAUSADEBAJA" class="form-select">
|
||||
<option value="">Seleccionar</option>
|
||||
@if (lCausaBaja != null)
|
||||
{
|
||||
@foreach (var enumera in lCausaBaja)
|
||||
{
|
||||
<option value="@enumera.IDENUMERACION">@enumera.DESCRIPCION</option>
|
||||
}
|
||||
}
|
||||
</InputSelect>
|
||||
@* @if (Persona.IDCAUSABAJAPARNavigation != null)
|
||||
{
|
||||
<input class="form-control" disabled id="txtCausaBaja" @bind-value="@Persona.IDCAUSABAJAPARNavigation.DESCRIPCION" />
|
||||
}
|
||||
else
|
||||
{
|
||||
<input class="form-control" disabled id="txtCausaBaja" />
|
||||
}
|
||||
} *@
|
||||
</div>
|
||||
@* Base Anterior a la Baja *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtBaseAnteriorBaja" class="fw-bold widthLabel li-height50">Base Anterior a la Baja: </label>
|
||||
<input class="form-control" disabled id="txtBaseAnteriorBaja" @bind-value="@Persona.BASEANTERIORALABAJA" />
|
||||
<input class="form-control" id="txtBaseAnteriorBaja" @bind-value="@Persona.BASEANTERIORALABAJA" />
|
||||
</div>
|
||||
@* Fecha Baja *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtFechaBaja" class="fw-bold widthLabel li-height50">Fecha Baja: </label>
|
||||
<input class="form-control" disabled id="txtFechaBaja" @bind-value="@Persona.FECHABAJA" />
|
||||
<input class="form-control" id="txtFechaBaja" @bind-value="@Persona.FECHABAJA" />
|
||||
</div>
|
||||
@* Premio Jubilación Mensual *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtPremioJubi" class="fw-bold widthLabel">Premio Jubilación Mensual: </label>
|
||||
<input class="form-control" disabled id="txtPremioJubi" @bind-value="@Persona.PREMIOJUBILACIONMENSUAL" />
|
||||
<input class="form-control" id="txtPremioJubi" @bind-value="@Persona.PREMIOJUBILACIONMENSUAL" />
|
||||
</div>
|
||||
@* Fecha Baja Seguridad Social *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtFechaBajaSS" class="fw-bold widthLabel">Fecha Baja Seguridad Social: </label>
|
||||
<input class="form-control" disabled id="txtFechaBajaSS" @bind-value="@Persona.FECHABAJASEGURIDADSOCIAL" />
|
||||
<input class="form-control" id="txtFechaBajaSS" @bind-value="@Persona.FECHABAJASEGURIDADSOCIAL" />
|
||||
</div>
|
||||
<div class="col-md-8"></div>
|
||||
@* Movilidad *@
|
||||
<div class="col-md-3 mt-3" style="display:flex;gap:5px; align-items:center">
|
||||
<p class="fw-bold m-0">Movilidad: </p>
|
||||
<input type="checkbox" class="" disabled id="chkMovilidad" @bind-value="@Persona.MOVILIDADREDUCIDA" />
|
||||
<input type="checkbox" class="" id="chkMovilidad" @bind-value="@Persona.MOVILIDADREDUCIDA" />
|
||||
</div>
|
||||
@* No Cotizas Desempleo *@
|
||||
<div class="col-md-3 mt-3" style="display:flex;gap:5px; align-items:center">
|
||||
<p class="fw-bold m-0">No Cotiza Desempleo: </p>
|
||||
<input type="checkbox" class="" disabled id="chkCotizaDes" @bind-value="@Persona.NOCOTIZADESEMPLEO" />
|
||||
<input type="checkbox" class="" id="chkCotizaDes" @bind-value="@Persona.NOCOTIZADESEMPLEO" />
|
||||
</div>
|
||||
@* Ceuta/Melilla *@
|
||||
<div class="col-md-3 mt-3" style="display:flex;gap:5px; align-items:center">
|
||||
<p class="fw-bold m-0">Ceuta / Melilla: </p>
|
||||
<input type="checkbox" class="" disabled id="chkCM" @bind-value="@Persona.CEUTAMELILLA" />
|
||||
<input type="checkbox" class="" id="chkCM" @bind-value="@Persona.CEUTAMELILLA" />
|
||||
</div>
|
||||
@* Pensionistas *@
|
||||
<div class="col-md-3 mt-3" style="display:flex;gap:5px; align-items:center">
|
||||
<p class="fw-bold m-0">Pensionistas: </p>
|
||||
<input type="checkbox" class="" disabled id="chkPensionistas" @bind-value="@Persona.PENSIONISTAS" />
|
||||
<input type="checkbox" class="" id="chkPensionistas" @bind-value="@Persona.PENSIONISTAS" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="tituloCaja">Ingresos</p>
|
||||
@@ -170,17 +200,17 @@
|
||||
@* Ingreso Administración Autonómica *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtIngrAdmin" class="fw-bold widthLabel">Ingreso Administración Autonómica: </label>
|
||||
<input class="form-control" disabled id="txtIngrAdmin" @bind-value="@Persona.INGRADMNAUTO" />
|
||||
<input class="form-control" id="txtIngrAdmin" @bind-value="@Persona.INGRADMNAUTO" />
|
||||
</div>
|
||||
@* Ingreso Administración Estado *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtIngrAdminEst" class="fw-bold widthLabel">Ingreso Administración Estado: </label>
|
||||
<input class="form-control" disabled id="txtIngrAdminEst" @bind-value="@Persona.INGRESOADMINISTRACIONESTADO" />
|
||||
<input class="form-control" id="txtIngrAdminEst" @bind-value="@Persona.INGRESOADMINISTRACIONESTADO" />
|
||||
</div>
|
||||
@* Ingreso Administración Local *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtIngrAdminLoc" class="fw-bold widthLabel">Ingreso Administración Local: </label>
|
||||
<input class="form-control" disabled id="txtIngrAdminLoc" @bind-value="@Persona.INGRESOADMINISTRACIONLOCAL" />
|
||||
<input class="form-control" id="txtIngrAdminLoc" @bind-value="@Persona.INGRESOADMINISTRACIONLOCAL" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="tituloCaja">Sindicatos</p>
|
||||
@@ -188,20 +218,20 @@
|
||||
@* Sindicato 1 *@
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="selSindicato1" class="fw-bold widthLabel">Sindicato 1: </label>
|
||||
<input class="form-control" disabled id="SelSindicato1" @bind-value="@Persona.IDSINDICATO1" />
|
||||
<input class="form-control" id="SelSindicato1" @bind-value="@Persona.IDSINDICATO1" />
|
||||
</div>
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="CuotaSindical1" class="fw-bold widthLabel">Cuota Sindical 1: </label>
|
||||
<input class="form-control" disabled id="CuotaSindical1" @bind-value="@Persona.CUOTASINDICAL1" />
|
||||
<input class="form-control" id="CuotaSindical1" @bind-value="@Persona.CUOTASINDICAL1" />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="selSindicato2" class="fw-bold widthLabel">Sindicato 2: </label>
|
||||
<input class="form-control" disabled id="SelSindicato2" @bind-value="@Persona.IDSINDICATO2" />
|
||||
<input class="form-control" id="SelSindicato2" @bind-value="@Persona.IDSINDICATO2" />
|
||||
</div>
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="CuotaSindical2" class="fw-bold widthLabel">Cuota Sindical 2: </label>
|
||||
<input class="form-control" disabled id="CuotaSindical2" @bind-value="@Persona.CUOTASINDICAL2" />
|
||||
<input class="form-control" id="CuotaSindical2" @bind-value="@Persona.CUOTASINDICAL2" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -212,4 +242,39 @@
|
||||
private HttpClient cliente = new HttpClient();
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
public List<ENUMERACIONES> lMutuas = new List<ENUMERACIONES>();
|
||||
public List<TIPOSPUESTOSTRABAJO> lPuestosTrabajo = new List<TIPOSPUESTOSTRABAJO>();
|
||||
public List<ENUMERACIONES> lCausaBaja = new List<ENUMERACIONES>();
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
|
||||
}
|
||||
private async Task CargarListas()
|
||||
{
|
||||
lMutuas = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/MUT");
|
||||
lPuestosTrabajo = await Utilidades.ObtenerObjeto<List<TIPOSPUESTOSTRABAJO>>(cliente, "/api/TIPOSPUESTOSTRABAJO/");
|
||||
lCausaBaja = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/CAUBAJ");
|
||||
}
|
||||
private async Task GestionarDatos()
|
||||
{
|
||||
|
||||
var personaGuardar = Persona;
|
||||
personaGuardar.NOMINATRABAJADORCABECERA = null;
|
||||
var responsea = await Utilidades.ActualizarObjeto(cliente, "/api/PERSONAS/" + personaGuardar.IDPERSONA, personaGuardar);
|
||||
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||
var response = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{Persona.NIF}");
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
throw new Exception($"Error al obtener los datos de la persona. Código: {response.StatusCode}");
|
||||
}
|
||||
|
||||
var resultContent = await response.Content.ReadAsStringAsync();
|
||||
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||
CargarListas();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,36 +15,38 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="col-md-10" style="margin-inline:auto;">
|
||||
<div class="mb-2"><button type="button" class="btnOAAFAzul" @onclick="GuardarPersona">Guardar permisos</button></div>
|
||||
|
||||
<p class="tituloCaja" style="margin-top:15px">Permisos</p>
|
||||
|
||||
<p class="tituloCaja">Permisos</p>
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="chbsupTodo" class="fw-bold widthLabel">Supervisor de todo: </label>
|
||||
<input class="form-control" disabled id="chbsubTodo" @bind-value="@Persona.SUPERVISORDETODO" />
|
||||
<label for="chbsupTodo" class="fw-bold widthLabel" style="height:auto">Supervisor de todo: </label>
|
||||
<input type="checkbox" class="form-check" id="chbsubTodo" @bind="Persona.SUPERVISORDETODO" />
|
||||
</div>
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="chbAdmCH" class="fw-bold widthLabel">Administrador Control Horario: </label>
|
||||
<input class="form-control" disabled id="chbAdmCH" @bind-value="@Persona.ADMINISTRADORCONTROLHORARIO" />
|
||||
<label for="chbAdmCH" class="fw-bold widthLabel" style="height:auto">Administrador Control Horario: </label>
|
||||
<input type="checkbox" class="form-check" id="chbAdmCH" @bind="Persona.ADMINISTRADORCONTROLHORARIO" />
|
||||
</div>
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="chbDelP" class="fw-bold widthLabel">Delegado Permisos: </label>
|
||||
<input class="form-control" disabled id="chbDelP" @bind-value="@Persona.DELEGADOINFORMES" />
|
||||
<label for="chbDelP" class="fw-bold widthLabel" style="height:auto">Delegado Permisos: </label>
|
||||
<input type="checkbox" class="form-check" id="chbDelP" @bind="Persona.DELEGADOINFORMES" />
|
||||
</div>
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="chbSupDep" class="fw-bold widthLabel">Supervisor Departamento: </label>
|
||||
<input class="form-control" disabled id="chbSupDep" @bind-value="@Persona.SUPERVISORDEPARTAMENTO" />
|
||||
<label for="chbSupDep" class="fw-bold widthLabel" style="height:auto">Supervisor Departamento: </label>
|
||||
<input type="checkbox" class="form-check" id="chbSupDep" @bind="Persona.SUPERVISORDEPARTAMENTO" />
|
||||
</div>
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="chbAdmTot" class="fw-bold widthLabel">Administrador Total: </label>
|
||||
<input class="form-control" disabled id="chbAdmTot" @bind-value="@Persona.ADMINISTRADORTOTAL" />
|
||||
<label for="chbAdmTot" class="fw-bold widthLabel" style="height:auto">Administrador Total: </label>
|
||||
<input type="checkbox" class="form-check" id="chbAdmTot" @bind="Persona.ADMINISTRADORTOTAL" />
|
||||
</div>
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="chbDel" class="fw-bold widthLabel">Delegado: </label>
|
||||
<input class="form-control" disabled id="chbDel" @bind-value="@Persona.DELEGADO" />
|
||||
<label for="chbDel" class="fw-bold widthLabel" style="height:auto">Delegado: </label>
|
||||
<input type="checkbox" class="form-check" id="chbDel" @bind="Persona.DELEGADO" />
|
||||
</div>
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="chbAdmRPT" class="fw-bold widthLabel">Administrador RPT y Registro: </label>
|
||||
<input class="form-control" disabled id="chbAdmRPT" @bind-value="@Persona.ADMINISTRARPTYREGISTRO" />
|
||||
<label for="chbAdmRPT" class="fw-bold widthLabel" style="height:auto">Administrador RPT y Registro: </label>
|
||||
<input type="checkbox" class="form-check" id="chbAdmRPT" @bind="Persona.ADMINISTRARPTYREGISTRO" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -110,6 +112,7 @@
|
||||
private List<EXCEPCIONESPERMISOS> itmList = new List<EXCEPCIONESPERMISOS>();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.EXCEPCIONESPERMISOSIDPERSONANavigation;
|
||||
@@ -121,5 +124,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
private async Task GuardarPersona()
|
||||
{
|
||||
await Utilidades.ActualizarObjeto(cliente, "/api/PERSONAS/" + Persona.IDPERSONA, Persona);
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -139,11 +139,13 @@
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private PERMISOSSINRETRIBUCION ItemEnEdicion { get; set; } = new PERMISOSSINRETRIBUCION();
|
||||
private List<PERMISOSSINRETRIBUCION> itmList = new List<PERMISOSSINRETRIBUCION>();
|
||||
protected override void OnParametersSet() => itmList = Persona.PERMISOSSINRETRIBUCION?.ToList() ?? new();
|
||||
private List<NOMINAS> lNominas = new List<NOMINAS>();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
|
||||
private async Task CargarListas()
|
||||
@@ -152,7 +154,6 @@
|
||||
try
|
||||
{
|
||||
var listnom = Persona.PERMISOSSINRETRIBUCION;
|
||||
foreach (PERMISOSSINRETRIBUCION i in listnom) { itmList.Add(i); }
|
||||
var lNomi = await Utilidades.ObtenerObjeto<List<NOMINAS>>(cliente, "/api/NOMINAS");
|
||||
lNominas = lNomi.OrderBy(x => x.FECHAINICIO).ToList();
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nuevo Préstamo" @onclick="@(() => abrirPopupModificacion(new PRESTAMOS(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="PRESTAMOS"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,8 +32,11 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="PRESTAMOS" HeaderText="Editar" FilterButtonCSSClass="hidden">
|
||||
<button type="button" @onclick="@(() => abrirPopupModificacion(context, false))" class="btnOAAFAzul">Editar</button>
|
||||
</GridColumn>
|
||||
<GridColumn TItem="PRESTAMOS" HeaderText="Nómina Incio Amortización">
|
||||
@context.IDNOMINAINICIONavigation.DESCRIPCION
|
||||
@context.IDNOMINAINICIONavigation?.DESCRIPCION
|
||||
</GridColumn>
|
||||
<GridColumn TItem="PRESTAMOS" HeaderText="Fecha Inicio">
|
||||
@context.FECHAINICIO.ToString("dd/MM/yyyy")
|
||||
@@ -53,13 +57,47 @@
|
||||
@context.SALDO
|
||||
</GridColumn>
|
||||
<GridColumn TItem="PRESTAMOS" HeaderText="EDITAR">
|
||||
<input type="button" value="Generar Amortizaciones" />
|
||||
<input type="button" class="btnOAAFAzul" value="Generar Amortizaciones" @onclick="() => GenerarAmortizacion(context)" />
|
||||
</GridColumn>
|
||||
|
||||
</GridColumns>
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||
<BodyTemplate>
|
||||
<div class="row">
|
||||
<div class="col-md-12 mb-2">
|
||||
<label class="fw-bold">Nómina Inicio Amortización</label>
|
||||
<select class="form-select" @bind="ItemEnEdicion.IDNOMINAINICIO">
|
||||
<option value="">Seleccione una nómina</option>
|
||||
@foreach (var nomina in lNominas)
|
||||
{
|
||||
<option value="@nomina.IDNOMINAS">@nomina.DESCRIPCION</option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Fecha Inicio</label><input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAINICIO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Fecha Fin</label><input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAFIN" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Importe</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.IMPORTE" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Meses</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.MESES" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Amortización</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.AMORTIZACION" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Saldo</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.SALDO" /></div>
|
||||
</div>
|
||||
</BodyTemplate>
|
||||
<FooterTemplate>
|
||||
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||
@if (ItemEnEdicion.IDPRESTAMO != 0)
|
||||
{
|
||||
<Button Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(false))">Modificar</Button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<Button Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(true))">Crear</Button>
|
||||
}
|
||||
</FooterTemplate>
|
||||
</Modal>
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
@@ -67,16 +105,169 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<PRESTAMOS> itmList = new List<PRESTAMOS>();
|
||||
private List<NOMINAS> lNominas = new List<NOMINAS>();
|
||||
private Modal popupGestionDatos = default!;
|
||||
private PRESTAMOS ItemEnEdicion { get; set; } = new PRESTAMOS();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.PRESTAMOS;
|
||||
foreach (PRESTAMOS i in listnom) { itmList.Add(i); }
|
||||
lNominas = await Utilidades.ObtenerObjeto<List<NOMINAS>>(cliente, "/api/NOMINAS") ?? new List<NOMINAS>();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
itmList = Persona.PRESTAMOS?.ToList() ?? new List<PRESTAMOS>();
|
||||
}
|
||||
|
||||
private async Task abrirPopupModificacion(PRESTAMOS objeto, bool esNuevo)
|
||||
{
|
||||
ItemEnEdicion = objeto;
|
||||
if (esNuevo)
|
||||
{
|
||||
ItemEnEdicion.IDPERSONA = Persona.IDPERSONA;
|
||||
ItemEnEdicion.FECHAINICIO = DateTime.Today;
|
||||
ItemEnEdicion.FECHAFIN = DateTime.Today;
|
||||
ItemEnEdicion.SALDO = ItemEnEdicion.IMPORTE;
|
||||
}
|
||||
await popupGestionDatos.ShowAsync();
|
||||
}
|
||||
|
||||
private async Task cerrarPopupModificacion() => await popupGestionDatos.HideAsync();
|
||||
|
||||
private async Task GestionarDatos(bool tipo)
|
||||
{
|
||||
if (tipo)
|
||||
{
|
||||
ItemEnEdicion.IDPRESTAMO = 0;
|
||||
ItemEnEdicion.IDPERSONA = Persona.IDPERSONA;
|
||||
}
|
||||
|
||||
if (ItemEnEdicion.IDPRESTAMO != 0)
|
||||
await Utilidades.ActualizarObjeto(cliente, "/api/PRESTAMOS/" + ItemEnEdicion.IDPRESTAMO, ItemEnEdicion);
|
||||
else
|
||||
{
|
||||
await Utilidades.NuevoObjeto(cliente, "/api/PRESTAMOS/", ItemEnEdicion);
|
||||
}
|
||||
await cerrarPopupModificacion();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
|
||||
private async Task GenerarAmortizacion(PRESTAMOS pr)
|
||||
{
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
// const string mensaje =
|
||||
// "¿Está seguro de querer eliminar las amortizaciones existentes y recalcularlas de nuevo?";
|
||||
|
||||
// if (DXMessageBox.Show(mensaje, "Atención", MessageBoxButton.YesNo) != MessageBoxResult.Yes)
|
||||
// return;
|
||||
|
||||
// gcPrestamos.View.CommitEditing(true);
|
||||
|
||||
|
||||
var enumPibe = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/NOM.PIBE");
|
||||
var pibe = enumPibe.FirstOrDefault().VALORNUMERICO1;
|
||||
|
||||
if (pibe == null)
|
||||
throw new InvalidOperationException("No se ha encontrado la enumeración NOM.PIBE.");
|
||||
|
||||
var nomina = new NOMINAS();
|
||||
var response = await cliente.GetAsync("/api/NOMINAS/" + pr.IDNOMINAINICIO.ToString());
|
||||
var ResponseContent = await response.Content.ReadAsStringAsync();
|
||||
if (response.IsSuccessStatusCode)
|
||||
{
|
||||
nomina = JsonConvert.DeserializeObject<NOMINAS>(ResponseContent) ?? new NOMINAS();
|
||||
}
|
||||
else
|
||||
{
|
||||
nomina = new NOMINAS();
|
||||
}
|
||||
|
||||
|
||||
if (nomina == null)
|
||||
throw new InvalidOperationException(
|
||||
$"No se ha encontrado la nómina {pr.IDNOMINAINICIO}.");
|
||||
|
||||
var saldoRestante = pr.SALDO;
|
||||
var añoAmortizacion = nomina.AÑO;
|
||||
var mesAmortizacion = nomina.MES;
|
||||
|
||||
// Eliminar las amortizaciones existentes
|
||||
foreach (var amortizacion in pr.AMORTIZACIONESPRESTAMOS.ToList())
|
||||
{
|
||||
|
||||
var responsed = await cliente.DeleteAsync("/api/AMORTIZACIONESPRESTAMOS/" + amortizacion.IDAMORTIZACIONESPRESTAMOS);
|
||||
// AMORTIZACIONESPRESTAMOS.DeleteObject(amortizacion);
|
||||
}
|
||||
|
||||
pr.AMORTIZACIONESPRESTAMOS.Clear();
|
||||
|
||||
// Generar las nuevas amortizaciones
|
||||
for (var plazo = 1; plazo <= pr.MESES; plazo++)
|
||||
{
|
||||
var cantidadAmortizada = Math.Round(
|
||||
pr.IMPORTE / pr.MESES,
|
||||
2,
|
||||
MidpointRounding.AwayFromZero);
|
||||
|
||||
// Ajustar la última cuota para evitar diferencias de redondeo
|
||||
if (plazo == pr.MESES)
|
||||
{
|
||||
cantidadAmortizada = Math.Round(
|
||||
saldoRestante,
|
||||
2,
|
||||
MidpointRounding.AwayFromZero);
|
||||
}
|
||||
|
||||
var importePagoEspecie = Math.Round(
|
||||
saldoRestante * pibe.Value / 100 / 12,
|
||||
2,
|
||||
MidpointRounding.AwayFromZero);
|
||||
|
||||
saldoRestante = Math.Round(
|
||||
Math.Max(0, saldoRestante - cantidadAmortizada),
|
||||
2,
|
||||
MidpointRounding.AwayFromZero);
|
||||
|
||||
var amortizacion = new AMORTIZACIONESPRESTAMOS
|
||||
{
|
||||
AMORTIZADO = false,
|
||||
AÑO = añoAmortizacion,
|
||||
MES = mesAmortizacion,
|
||||
INTERESBANCOESPAÑA = pibe.Value,
|
||||
CANTIDADAMORTIZADA = cantidadAmortizada,
|
||||
IMPORTEPAGOESPECIE = importePagoEspecie,
|
||||
SALDORESTANTE = saldoRestante
|
||||
};
|
||||
|
||||
pr.AMORTIZACIONESPRESTAMOS.Add(amortizacion);
|
||||
|
||||
// Pasar al siguiente mes
|
||||
mesAmortizacion++;
|
||||
|
||||
if (mesAmortizacion > 12)
|
||||
{
|
||||
mesAmortizacion = 1;
|
||||
añoAmortizacion++;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Gestionar el error
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nueva Productividad" @onclick="@(() => abrirPopupModificacion(new PRODUCTIVIDAD(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="PRODUCTIVIDAD"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,7 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="PRODUCTIVIDAD" HeaderText="Editar" FilterButtonCSSClass="hidden"><button class="btnOAAFAzul" @onclick="@(() => abrirPopupModificacion(context, false))">Editar</button></GridColumn>
|
||||
<GridColumn TItem="PRODUCTIVIDAD" HeaderText="Año">
|
||||
@context.AÑO
|
||||
</GridColumn>
|
||||
@@ -51,6 +53,16 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||
<BodyTemplate><div class="row">
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Año</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.AÑO" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Mes</label><input class="form-control" type="number" @bind-value="ItemEnEdicion.MES" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Importe Total</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.IMPORTETOTAL" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Importe Mes</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.IMPORTEMES" /></div>
|
||||
<div class="col-md-6 mb-2"><label class="fw-bold">Importe Pagado</label><input class="form-control" type="number" step="any" @bind-value="ItemEnEdicion.IMPORTEPAGADO" /></div>
|
||||
</div></BodyTemplate>
|
||||
<FooterTemplate><Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button><Button Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(ItemEnEdicion.IDPRODUCTIVIDAD == 0))">@(ItemEnEdicion.IDPRODUCTIVIDAD == 0 ? "Crear" : "Modificar")</Button></FooterTemplate>
|
||||
</Modal>
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
@@ -58,16 +70,30 @@
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<PRODUCTIVIDAD> itmList = new List<PRODUCTIVIDAD>();
|
||||
private Modal popupGestionDatos = default!;
|
||||
private PRODUCTIVIDAD ItemEnEdicion { get; set; } = new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
try
|
||||
{
|
||||
var listnom = Persona.PRODUCTIVIDAD;
|
||||
foreach (PRODUCTIVIDAD i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
itmList = Persona.PRODUCTIVIDAD?.ToList() ?? new List<PRODUCTIVIDAD>();
|
||||
}
|
||||
private async Task abrirPopupModificacion(PRODUCTIVIDAD objeto, bool esNuevo) { ItemEnEdicion = objeto; if (esNuevo) ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await popupGestionDatos.ShowAsync(); }
|
||||
private async Task cerrarPopupModificacion() => await popupGestionDatos.HideAsync();
|
||||
private async Task GestionarDatos(bool esNuevo)
|
||||
{
|
||||
if (esNuevo) { ItemEnEdicion.IDPRODUCTIVIDAD = 0; ItemEnEdicion.IDPERSONA = Persona.IDPERSONA; await Utilidades.NuevoObjeto(cliente, "/api/PRODUCTIVIDAD/", ItemEnEdicion); }
|
||||
else await Utilidades.ActualizarObjeto(cliente, "/api/PRODUCTIVIDAD/" + ItemEnEdicion.IDPRODUCTIVIDAD, ItemEnEdicion);
|
||||
await cerrarPopupModificacion(); await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="PUESTOSTRABAJO" HeaderText="Descripción">
|
||||
<NavLink class="btn btn-link" href="@HashRed(context.IDTIPOPUESTOTRABAJO.ToString())">@context.IDTIPOPUESTOTRABAJONavigation.DESCRIPCION</NavLink>
|
||||
<NavLink class="btn btn-link" href="@HashRed(context.IDPUESTOSTRABAJO.ToString())">@context.IDTIPOPUESTOTRABAJONavigation.DESCRIPCION</NavLink>
|
||||
</GridColumn>
|
||||
<GridColumn TItem="PUESTOSTRABAJO" HeaderText="Fecha Inicio">
|
||||
@context.FECHAINICIO?.ToString("dd/MM/yyyy")
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nueva Reducción de Jornada" @onclick="@(() => abrirPopupModificacion(new REDUCCIONDEJORNADA(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="REDUCCIONDEJORNADA"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,11 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="REDUCCIONDEJORNADA" HeaderText="Editar" PropertyName="NOMBRE" FilterButtonCSSClass="hidden">
|
||||
|
||||
<button @onclick="@(() => abrirPopupModificacion(context, false))" class="btnOAAFAzul">Editar</button>
|
||||
|
||||
</GridColumn>
|
||||
<GridColumn TItem="REDUCCIONDEJORNADA" HeaderText="Fecha Inicio">
|
||||
@context.FECHAINICIO?.ToString("dd/MM/yyyy")
|
||||
</GridColumn>
|
||||
@@ -44,23 +50,101 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||
<BodyTemplate>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Fecha Inicio</label>
|
||||
<input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAINICIO" />
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Fecha Fin</label>
|
||||
<input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAFIN" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">% Reducción de Jornada</label>
|
||||
<input class="form-control" type="number" @bind-value="@ItemEnEdicion.PORCENTAJEDEREDUCCION" />
|
||||
</div>
|
||||
</div>
|
||||
</BodyTemplate>
|
||||
<FooterTemplate>
|
||||
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||
@if (ItemEnEdicion.IDREDUCCIONDEJORNADA != 0)
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(false))">Modificar</Button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(true))">Crear</Button>
|
||||
}
|
||||
</FooterTemplate>
|
||||
</Modal>
|
||||
|
||||
|
||||
@code {
|
||||
private Modal popupGestionDatos = default;
|
||||
private REDUCCIONDEJORNADA ItemEnEdicion { get; set; } = new REDUCCIONDEJORNADA();
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
private HttpClient cliente = new HttpClient();
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<REDUCCIONDEJORNADA> itmList = new List<REDUCCIONDEJORNADA>();
|
||||
protected override void OnParametersSet() => itmList = Persona.REDUCCIONDEJORNADA?.ToList() ?? new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
|
||||
}
|
||||
private async Task cerrarPopupModificacion()
|
||||
{
|
||||
await popupGestionDatos.HideAsync();
|
||||
}
|
||||
private async Task abrirPopupModificacion(REDUCCIONDEJORNADA objeto, bool esNuevo)
|
||||
{
|
||||
ItemEnEdicion = objeto;
|
||||
|
||||
await popupGestionDatos.ShowAsync();
|
||||
}
|
||||
private async Task CargarListas()
|
||||
{
|
||||
try
|
||||
{
|
||||
var listnom = Persona.REDUCCIONDEJORNADA;
|
||||
foreach (REDUCCIONDEJORNADA i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
private async Task GestionarDatos(bool tipo)
|
||||
{
|
||||
var inci = ItemEnEdicion;
|
||||
if (tipo == true)
|
||||
{
|
||||
inci.IDREDUCCIONDEJORNADA = 0;
|
||||
inci.IDPERSONA = Persona.IDPERSONA;
|
||||
}
|
||||
|
||||
if (inci.IDREDUCCIONDEJORNADA != 0)
|
||||
{
|
||||
var response = await Utilidades.ActualizarObjeto(cliente, "/api/REDUCCIONDEJORNADA/" + inci.IDREDUCCIONDEJORNADA, inci);
|
||||
}
|
||||
else
|
||||
{
|
||||
var response = await Utilidades.NuevoObjeto(cliente, "/api/REDUCCIONDEJORNADA/", inci);
|
||||
}
|
||||
await cerrarPopupModificacion();
|
||||
await CargarListas();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,14 @@
|
||||
@using System.Net.Http.Headers
|
||||
@using System.Linq.Expressions
|
||||
@using Newtonsoft.Json
|
||||
@using System.Text
|
||||
@using Serialize.Linq.Serializers
|
||||
@using Newtonsoft.Json
|
||||
@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">
|
||||
<input type="button" value="Nueva Retención Judicial" @onclick="@(() => abrirPopupModificacion(new RETENCIONJUDICIAL(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="RETENCIONJUDICIAL"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +25,16 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="RETENCIONJUDICIAL"
|
||||
HeaderText="Editar"
|
||||
FilterButtonCSSClass="hidden">
|
||||
<button type="button"
|
||||
class="btnOAAFAzul"
|
||||
@onclick="() => abrirPopupModificacion(context, false)">
|
||||
Editar
|
||||
</button>
|
||||
</GridColumn>
|
||||
|
||||
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Fecha Inicio">
|
||||
@context.FECHAINICIO?.ToString("dd/MM/yyyy")
|
||||
</GridColumn>
|
||||
@@ -56,30 +60,215 @@
|
||||
@context.REFERENCIAFICHERO
|
||||
</GridColumn>
|
||||
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Plantilla">
|
||||
@context.IDPLANTILLANavigation.DESCRIPCION
|
||||
@context.IDPLANTILLANavigation?.DESCRIPCION
|
||||
</GridColumn>
|
||||
|
||||
</GridColumns>
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Modal @ref="popupGestionDatos"
|
||||
IsVerticallyCentered="true"
|
||||
UseStaticBackdrop="true"
|
||||
CloseOnEscape="false">
|
||||
<BodyTemplate>
|
||||
<fieldset disabled="@guardando">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Fecha Inicio</label>
|
||||
<input class="form-control"
|
||||
type="date"
|
||||
@bind-value="ItemEnEdicion.FECHAINICIO" />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Fecha Fin</label>
|
||||
<input class="form-control"
|
||||
type="date"
|
||||
@bind-value="ItemEnEdicion.FECHAFIN" />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Saldo Inicio</label>
|
||||
<input class="form-control"
|
||||
type="number"
|
||||
step="any"
|
||||
@bind-value="ItemEnEdicion.SALDOINICIO" />
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Saldo Restante</label>
|
||||
<input class="form-control"
|
||||
type="number"
|
||||
step="any"
|
||||
@bind-value="ItemEnEdicion.SALDORESTANTE" />
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb-2">
|
||||
<label class="fw-bold">Descripción</label>
|
||||
<textarea class="form-control"
|
||||
rows="3"
|
||||
@bind="ItemEnEdicion.DESCRIPCION"></textarea>
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb-2">
|
||||
<label class="fw-bold">Juzgado</label>
|
||||
<input class="form-control"
|
||||
type="text"
|
||||
@bind="ItemEnEdicion.JUZGADO" />
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb-2">
|
||||
<label class="fw-bold">I.B.A.N.</label>
|
||||
<input class="form-control"
|
||||
type="text"
|
||||
@bind="ItemEnEdicion.IBAN" />
|
||||
</div>
|
||||
|
||||
<div class="col-md-12 mb-2">
|
||||
<label class="fw-bold">Referencia Fichero</label>
|
||||
<input class="form-control"
|
||||
type="text"
|
||||
@bind="ItemEnEdicion.REFERENCIAFICHERO" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</fieldset>
|
||||
</BodyTemplate>
|
||||
|
||||
<FooterTemplate>
|
||||
<Button Color="ButtonColor.Secondary"
|
||||
Disabled="@guardando"
|
||||
@onclick="cerrarPopupModificacion">
|
||||
Cerrar
|
||||
</Button>
|
||||
|
||||
<Button Color="ButtonColor.Primary" Disabled="@guardando" @onclick="@(() => GestionarDatos(ItemEnEdicion.IDRETENCIONJUDICIAL == 0))">
|
||||
@(ItemEnEdicion.IDRETENCIONJUDICIAL == 0 ? "Crear" : "Modificar")
|
||||
</Button>
|
||||
</FooterTemplate>
|
||||
</Modal>
|
||||
|
||||
@code {
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
private HttpClient cliente = new HttpClient();
|
||||
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<RETENCIONJUDICIAL> itmList = new List<RETENCIONJUDICIAL>();
|
||||
protected override async Task OnInitializedAsync()
|
||||
|
||||
private Modal popupGestionDatos = default!;
|
||||
private HttpClient cliente = default!;
|
||||
|
||||
private List<RETENCIONJUDICIAL> itmList = new();
|
||||
private RETENCIONJUDICIAL ItemEnEdicion { get; set; } = new();
|
||||
private RETENCIONJUDICIAL? itemOriginal;
|
||||
|
||||
private bool guardando;
|
||||
private string? mensajeError;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
cliente = Utilidades.ObtenerCliente(
|
||||
UserState.Token,
|
||||
HttpClientFactory);
|
||||
}
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
CargarListas();
|
||||
}
|
||||
|
||||
private void CargarListas()
|
||||
{
|
||||
itmList = Persona.RETENCIONJUDICIAL?.ToList()
|
||||
?? new List<RETENCIONJUDICIAL>();
|
||||
}
|
||||
|
||||
private async Task abrirPopupModificacion(RETENCIONJUDICIAL objeto, bool esNuevo)
|
||||
{
|
||||
mensajeError = null;
|
||||
itemOriginal = objeto;
|
||||
|
||||
// Copia independiente: cerrar el modal no modifica la fila.
|
||||
var json = JsonConvert.SerializeObject(
|
||||
objeto,
|
||||
new JsonSerializerSettings
|
||||
{
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
|
||||
});
|
||||
|
||||
ItemEnEdicion =
|
||||
JsonConvert.DeserializeObject<RETENCIONJUDICIAL>(json)
|
||||
?? throw new InvalidOperationException(
|
||||
"No se ha podido preparar la retención para editar.");
|
||||
if (esNuevo)
|
||||
ItemEnEdicion.IDPERSONA = Persona.IDPERSONA;
|
||||
|
||||
await popupGestionDatos.ShowAsync();
|
||||
}
|
||||
|
||||
private async Task cerrarPopupModificacion()
|
||||
{
|
||||
if (guardando)
|
||||
return;
|
||||
|
||||
await popupGestionDatos.HideAsync();
|
||||
mensajeError = null;
|
||||
itemOriginal = null;
|
||||
}
|
||||
|
||||
private async Task GestionarDatos(bool esNuevo)
|
||||
{
|
||||
if (guardando || (!esNuevo && itemOriginal is null))
|
||||
return;
|
||||
|
||||
mensajeError = null;
|
||||
|
||||
if (ItemEnEdicion.FECHAINICIO.HasValue
|
||||
&& ItemEnEdicion.FECHAFIN.HasValue
|
||||
&& ItemEnEdicion.FECHAFIN.Value < ItemEnEdicion.FECHAINICIO.Value)
|
||||
{
|
||||
mensajeError =
|
||||
"La fecha fin no puede ser anterior a la fecha inicio.";
|
||||
return;
|
||||
}
|
||||
|
||||
guardando = true;
|
||||
|
||||
try
|
||||
{
|
||||
var listnom = Persona.RETENCIONJUDICIAL;
|
||||
foreach (RETENCIONJUDICIAL i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
if (esNuevo)
|
||||
await Utilidades.NuevoObjeto(cliente, "/api/RETENCIONJUDICIAL/", ItemEnEdicion);
|
||||
else
|
||||
await Utilidades.ActualizarObjeto(cliente, "/api/RETENCIONJUDICIAL/" + ItemEnEdicion.IDRETENCIONJUDICIAL, ItemEnEdicion);
|
||||
|
||||
// Actualiza la fila y la colección de Persona tras guardar.
|
||||
if (!esNuevo)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
itemOriginal!.FECHAINICIO = ItemEnEdicion.FECHAINICIO;
|
||||
itemOriginal.FECHAFIN = ItemEnEdicion.FECHAFIN;
|
||||
itemOriginal.SALDOINICIO = ItemEnEdicion.SALDOINICIO;
|
||||
itemOriginal.SALDORESTANTE = ItemEnEdicion.SALDORESTANTE;
|
||||
itemOriginal.DESCRIPCION = ItemEnEdicion.DESCRIPCION;
|
||||
itemOriginal.JUZGADO = ItemEnEdicion.JUZGADO;
|
||||
itemOriginal.IBAN = ItemEnEdicion.IBAN;
|
||||
itemOriginal.REFERENCIAFICHERO = ItemEnEdicion.REFERENCIAFICHERO;
|
||||
}
|
||||
|
||||
CargarListas();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
mensajeError =
|
||||
"No se ha podido guardar la retención judicial.";
|
||||
return;
|
||||
}
|
||||
finally
|
||||
{
|
||||
guardando = false;
|
||||
}
|
||||
|
||||
await cerrarPopupModificacion();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,33 +15,34 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Guardar" @onclick="GestionarDatos" class="mb-2 btnOAAFBlack" />
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
@* Numero Sexenio *@
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="txtNuSex" class="fw-bold widthLabel">Número Sexenio: </label>
|
||||
<input type="number" class="form-control" disabled id="txtNuSex" @bind-value="@Persona.NUMEROSEXENIO" />
|
||||
<input type="number" class="form-control" id="txtNuSex" @bind-value="@Persona.NUMEROSEXENIO" />
|
||||
|
||||
|
||||
</div>
|
||||
@* Sexenio *@
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="txtSex" class="fw-bold widthLabel li-height50">Sexenio: </label>
|
||||
<input type="number" class="form-control" disabled id="txtSex" @bind-value="@Persona.SEXENIOS" />
|
||||
<input type="number" class="form-control" id="txtSex" @bind-value="@Persona.SEXENIOS" />
|
||||
</div>
|
||||
@* Numero Quinquenio *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtNuQ" class="fw-bold widthLabel li-height50">Número Quinquenio: </label>
|
||||
<input type="number" class="form-control" disabled id="txtNuQ" @bind-value="@Persona.NUMEROQUINQUENIO" />
|
||||
<input type="number" class="form-control" id="txtNuQ" @bind-value="@Persona.NUMEROQUINQUENIO" />
|
||||
</div>
|
||||
@* Quinquenio *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtQ" class="fw-bold widthLabel li-height50">Quinquenio: </label>
|
||||
<input type="number" class="form-control" disabled id="txtQ" @bind-value="@Persona.QUINQUENIO" />
|
||||
<input type="number" class="form-control" id="txtQ" @bind-value="@Persona.QUINQUENIO" />
|
||||
</div>
|
||||
@* Quinquenio extra *@
|
||||
<div class="col-md-4 d-flex divLabelInp">
|
||||
<label for="txtQEx" class="fw-bold widthLabel li-height50">Quinquenio Extra: </label>
|
||||
<input class="form-control" disabled id="txtQEx" step="00" @bind-value="@Persona.QUINQUENIOEXTRA" />
|
||||
<input class="form-control" id="txtQEx" step="00" @bind-value="@Persona.QUINQUENIOEXTRA" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -54,14 +55,25 @@
|
||||
// private List<TRABAJADORTIEMPOPARCIAL> itmList = new List<>();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
// try
|
||||
// {
|
||||
// var listnom = Persona.TRABAJADORTIEMPOPARCIAL;
|
||||
// foreach (TRABAJADORTIEMPOPARCIAL i in listnom) { itmList.Add(i); }
|
||||
// }
|
||||
// catch (Exception e)
|
||||
// {
|
||||
// Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
// }
|
||||
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
}
|
||||
private async Task GestionarDatos()
|
||||
{
|
||||
|
||||
var personaGuardar = Persona;
|
||||
personaGuardar.NOMINATRABAJADORCABECERA = null;
|
||||
var responsea = await Utilidades.ActualizarObjeto(cliente, "/api/PERSONAS/" + personaGuardar.IDPERSONA, personaGuardar);
|
||||
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||
var response = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{Persona.NIF}");
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
throw new Exception($"Error al obtener los datos de la persona. Código: {response.StatusCode}");
|
||||
}
|
||||
|
||||
var resultContent = await response.Content.ReadAsStringAsync();
|
||||
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="tablaTabLateral">
|
||||
<input type="button" value="Nueva Reducción de Jornada" @onclick="@(() => abrirPopupModificacion(new TRABAJADORTIEMPOPARCIAL(), true))" class="mb-2 btnOAAFBlack" />
|
||||
<div style="overflow-x:auto;" class="tablaDesk">
|
||||
<Grid TItem="TRABAJADORTIEMPOPARCIAL"
|
||||
Class="table tablaRegPers"
|
||||
@@ -31,6 +32,11 @@
|
||||
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
||||
|
||||
<GridColumns>
|
||||
<GridColumn TItem="TRABAJADORTIEMPOPARCIAL" HeaderText="Editar" FilterButtonCSSClass="hidden">
|
||||
|
||||
<button @onclick="@(() => abrirPopupModificacion(context, false))" class="btnOAAFAzul">Editar</button>
|
||||
|
||||
</GridColumn>
|
||||
<GridColumn TItem="TRABAJADORTIEMPOPARCIAL" HeaderText="Fecha Inicio">
|
||||
@context.FECHAINICIO?.ToString("dd/MM/yyyy")
|
||||
</GridColumn>
|
||||
@@ -44,23 +50,98 @@
|
||||
</Grid>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<Modal @ref="popupGestionDatos" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
||||
<BodyTemplate>
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Fecha Inicio</label>
|
||||
<input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAINICIO" />
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<label class="fw-bold">Fecha Fin</label>
|
||||
<input class="form-control" type="date" @bind-value="ItemEnEdicion.FECHAFIN" />
|
||||
</div>
|
||||
<div class="col-md-12 mb-2">
|
||||
<label for="txtEDesc" class="fw-bold">% Parcialidad</label>
|
||||
<input class="form-control" type="number" @bind-value="@ItemEnEdicion.PORCENTAJEPARCIALIDAD" />
|
||||
</div>
|
||||
</div>
|
||||
</BodyTemplate>
|
||||
<FooterTemplate>
|
||||
<Button Color="ButtonColor.Secondary" @onclick="cerrarPopupModificacion">Cerrar</Button>
|
||||
@if (ItemEnEdicion.IDTRABAJADORTIEMPOPARCIAL != 0)
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(false))">Modificar</Button>
|
||||
}
|
||||
else
|
||||
{
|
||||
<Button Type="ButtonType.Submit" Color="ButtonColor.Primary" @onclick="@(() => GestionarDatos(true))">Crear</Button>
|
||||
}
|
||||
</FooterTemplate>
|
||||
</Modal>
|
||||
|
||||
|
||||
@code {
|
||||
private Modal popupGestionDatos = default;
|
||||
private TRABAJADORTIEMPOPARCIAL ItemEnEdicion { get; set; } = new TRABAJADORTIEMPOPARCIAL();
|
||||
[Parameter]
|
||||
public PERSONAS Persona { get; set; } = new PERSONAS();
|
||||
private HttpClient cliente = new HttpClient();
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
private List<TRABAJADORTIEMPOPARCIAL> itmList = new List<TRABAJADORTIEMPOPARCIAL>();
|
||||
protected override void OnParametersSet() => itmList = Persona.TRABAJADORTIEMPOPARCIAL?.ToList() ?? new();
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
await CargarListas();
|
||||
await OnPersonaActualizada.InvokeAsync();
|
||||
|
||||
|
||||
}
|
||||
private async Task CargarListas()
|
||||
{
|
||||
try
|
||||
{
|
||||
var listnom = Persona.TRABAJADORTIEMPOPARCIAL;
|
||||
foreach (TRABAJADORTIEMPOPARCIAL i in listnom) { itmList.Add(i); }
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"Error al obtener los datos: {e.Message}");
|
||||
}
|
||||
}
|
||||
private async Task cerrarPopupModificacion()
|
||||
{
|
||||
await popupGestionDatos.HideAsync();
|
||||
}
|
||||
private async Task abrirPopupModificacion(TRABAJADORTIEMPOPARCIAL objeto, bool esNuevo)
|
||||
{
|
||||
ItemEnEdicion = objeto;
|
||||
|
||||
await popupGestionDatos.ShowAsync();
|
||||
}
|
||||
private async Task GestionarDatos(bool tipo)
|
||||
{
|
||||
var inci = ItemEnEdicion;
|
||||
if (tipo == true)
|
||||
{
|
||||
inci.IDTRABAJADORTIEMPOPARCIAL = 0;
|
||||
inci.IDPERSONA = Persona.IDPERSONA;
|
||||
}
|
||||
|
||||
if (inci.IDTRABAJADORTIEMPOPARCIAL != 0)
|
||||
{
|
||||
var response = await Utilidades.ActualizarObjeto(cliente, "/api/TRABAJADORTIEMPOPARCIAL/" + inci.IDTRABAJADORTIEMPOPARCIAL, inci);
|
||||
}
|
||||
else
|
||||
{
|
||||
var response = await Utilidades.NuevoObjeto(cliente, "/api/TRABAJADORTIEMPOPARCIAL/", inci);
|
||||
}
|
||||
await cerrarPopupModificacion();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,136 +15,137 @@
|
||||
@inject UserState UserState
|
||||
|
||||
<div class="col-md-10" style="margin-inline:auto;">
|
||||
<input type="button" value="Guardar" @onclick="GestionarDatos" class="mb-2 btnOAAFBlack" />
|
||||
<p class="tituloCaja" style="width:500px">Trienios cumplidos en la Administración Económicamente</p>
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AEA1" class="fw-bold widthLabel li-height50">A1: </label>
|
||||
<input class="form-control" disabled id="AEA1" @bind-value="@Persona.TRIENIOSADMINISTRACIONA1" />
|
||||
<input class="form-control" type="number" id="AEA1" @bind-value="@Persona.TRIENIOSADMINISTRACIONA1" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AEA2" class="fw-bold widthLabel li-height50">A2: </label>
|
||||
<input class="form-control" disabled id="AEA2" @bind-value="@Persona.TRIENIOSADMINISTRACIONA2" />
|
||||
<input class="form-control" type="number" id="AEA2" @bind-value="@Persona.TRIENIOSADMINISTRACIONA2" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AEB" class="fw-bold widthLabel li-height50">B: </label>
|
||||
<input class="form-control" disabled id="AEB" @bind-value="@Persona.TRIENIOSADMINISTRACIONB" />
|
||||
<input class="form-control" type="number" id="AEB" @bind-value="@Persona.TRIENIOSADMINISTRACIONB" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AEC1" class="fw-bold widthLabel li-height50">C1: </label>
|
||||
<input class="form-control" disabled id="AEC1" @bind-value="@Persona.TRIENIOSADMINISTRACIONC1" />
|
||||
<input class="form-control" type="number" id="AEC1" @bind-value="@Persona.TRIENIOSADMINISTRACIONC1" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AEC2" class="fw-bold widthLabel li-height50">C2: </label>
|
||||
<input class="form-control" disabled id="AEC2" @bind-value="@Persona.TRIENIOSADMINISTRACIONC2" />
|
||||
<input class="form-control" type="number" id="AEC2" @bind-value="@Persona.TRIENIOSADMINISTRACIONC2" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AEE" class="fw-bold widthLabel li-height50">E: </label>
|
||||
<input class="form-control" disabled id="AEE" @bind-value="@Persona.TRIENIOSADMINISTRACIONE" />
|
||||
<input class="form-control" type="number" id="AEE" @bind-value="@Persona.TRIENIOSADMINISTRACIONE" />
|
||||
</div>
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="AEImporte" class="fw-bold widthLabel li-height50">Importe: </label>
|
||||
<input class="form-control" disabled id="AEImporte" @bind-value="@Persona.IMPORTETRIENIOADMINISTRACION" />
|
||||
<input class="form-control" type="number" id="AEImporte" @bind-value="@Persona.IMPORTETRIENIOADMINISTRACION" />
|
||||
</div>
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="AEImpPE" class="fw-bold widthLabel li-height50">Importe Paga Extra: </label>
|
||||
<input class="form-control" disabled id="AEImpPE" @bind-value="@Persona.IMPTRIADMPAGAEXTRA" />
|
||||
<input class="form-control" type="number" id="AEImpPE" @bind-value="@Persona.IMPTRIADMPAGAEXTRA" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="tituloCaja" style="width:500px">Trienios cumplidos en la Administración Administrativamente</p>
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AAA1" class="fw-bold widthLabel li-height50">A1: </label>
|
||||
<input class="form-control" disabled id="AAA1" @bind-value="@Persona.TRIENIOSADMINISTRACIONA1A" />
|
||||
<input class="form-control" type="number" id="AAA1" @bind-value="@Persona.TRIENIOSADMINISTRACIONA1A" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AAA2" class="fw-bold widthLabel li-height50">A2: </label>
|
||||
<input class="form-control" disabled id="AAA2" @bind-value="@Persona.TRIENIOSADMINISTRACIONA2A" />
|
||||
<input class="form-control" type="number" id="AAA2" @bind-value="@Persona.TRIENIOSADMINISTRACIONA2A" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AAB" class="fw-bold widthLabel li-height50">B: </label>
|
||||
<input class="form-control" disabled id="AAB" @bind-value="@Persona.TRIENIOSADMINISTRACIONBA" />
|
||||
<input class="form-control" type="number" id="AAB" @bind-value="@Persona.TRIENIOSADMINISTRACIONBA" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AAC1" class="fw-bold widthLabel li-height50">C1: </label>
|
||||
<input class="form-control" disabled id="AAC1" @bind-value="@Persona.TRIENIOSADMINISTRACIONC1A" />
|
||||
<input class="form-control" type="number" id="AAC1" @bind-value="@Persona.TRIENIOSADMINISTRACIONC1A" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AAC2" class="fw-bold widthLabel li-height50">C2: </label>
|
||||
<input class="form-control" disabled id="AAC2" @bind-value="@Persona.TRIENIOSADMINISTRACIONC2A" />
|
||||
<input class="form-control" type="number" id="AAC2" @bind-value="@Persona.TRIENIOSADMINISTRACIONC2A" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="AAE" class="fw-bold widthLabel li-height50">E: </label>
|
||||
<input class="form-control" disabled id="AAE" @bind-value="@Persona.TRIENIOSADMINISTRACIONEA" />
|
||||
<input class="form-control" type="number" id="AAE" @bind-value="@Persona.TRIENIOSADMINISTRACIONEA" />
|
||||
</div>
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="AAImporte" class="fw-bold widthLabel li-height50">Importe: </label>
|
||||
<input class="form-control" disabled id="AAImporte" @bind-value="@Persona.IMPORTETRIENIOADMINISTRACIONA" />
|
||||
<input class="form-control" type="number" id="AAImporte" @bind-value="@Persona.IMPORTETRIENIOADMINISTRACIONA" />
|
||||
</div>
|
||||
<div class="col-md-3 d-flex divLabelInp">
|
||||
<label for="AAImpPE" class="fw-bold widthLabel li-height50">Importe Paga Extra: </label>
|
||||
<input class="form-control" disabled id="AAImpPE" @bind-value="@Persona.IMPTRIADMPAGAEXTRAA" />
|
||||
<input class="form-control" type="number" id="AAImpPE" @bind-value="@Persona.IMPTRIADMPAGAEXTRAA" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="tituloCaja" style="width:500px">Trienios cumplidos en la OficinaAntifraude</p>
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="OAA1" class="fw-bold widthLabel li-height50">A1: </label>
|
||||
<input class="form-control" disabled id="OAA1" @bind-value="@Persona.TRIENIOSPARLAMENTOA1" />
|
||||
<input class="form-control" type="number" id="OAA1" @bind-value="@Persona.TRIENIOSPARLAMENTOA1" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="OAA2" class="fw-bold widthLabel li-height50">A2: </label>
|
||||
<input class="form-control" disabled id="OAA2" @bind-value="@Persona.TRIENIOSPARLAMENTOA2" />
|
||||
<input class="form-control" type="number" id="OAA2" @bind-value="@Persona.TRIENIOSPARLAMENTOA2" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="OAB" class="fw-bold widthLabel li-height50">B: </label>
|
||||
<input class="form-control" disabled id="OAB" @bind-value="@Persona.TRIENIOSPARLAMENTOB" />
|
||||
<input class="form-control" type="number" id="OAB" @bind-value="@Persona.TRIENIOSPARLAMENTOB" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="OAC1" class="fw-bold widthLabel li-height50">C1: </label>
|
||||
<input class="form-control" disabled id="OAC1" @bind-value="@Persona.TRIENIOSPARLAMENTOC1" />
|
||||
<input class="form-control" type="number" id="OAC1" @bind-value="@Persona.TRIENIOSPARLAMENTOC1" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="OAC2" class="fw-bold widthLabel li-height50">C2: </label>
|
||||
<input class="form-control" disabled id="OAC2" @bind-value="@Persona.TRIENIOSPARLAMENTOC2" />
|
||||
<input class="form-control" type="number" id="OAC2" @bind-value="@Persona.TRIENIOSPARLAMENTOC2" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="OAE" class="fw-bold widthLabel li-height50">E: </label>
|
||||
<input class="form-control" disabled id="OAE" @bind-value="@Persona.TRIENIOSPARLAMENTOE" />
|
||||
<input class="form-control" type="number" id="OAE" @bind-value="@Persona.TRIENIOSPARLAMENTOE" />
|
||||
</div>
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="OAImporte" class="fw-bold widthLabel">Fecha Próximo Cumplimiento: </label>
|
||||
<input type="date" class="form-control" disabled id="OAImporte" @bind-value="@Persona.FECHACUMPLIMIENTOPROXTRIENIO" />
|
||||
<input type="date" class="form-control" id="OAImporte" @bind-value="@Persona.FECHACUMPLIMIENTOPROXTRIENIO" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="tituloCaja" style="width:500px">Complementos de Carrera cumplidos en la OficinaAntifraude</p>
|
||||
<div class="row mb-3" style=" padding: 20px;border:solid 1px grey">
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="CCOAA1" class="fw-bold widthLabel li-height50">A1: </label>
|
||||
<input class="form-control" disabled id="CCOAA1" @bind-value="@Persona.COMPLEMENTOCARRERAA1" />
|
||||
<input class="form-control" type="number" id="CCOAA1" @bind-value="@Persona.COMPLEMENTOCARRERAA1" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="CCOAA2" class="fw-bold widthLabel li-height50">A2: </label>
|
||||
<input class="form-control" disabled id="CCOAA2" @bind-value="@Persona.COMPLEMENTOCARRERAA2" />
|
||||
<input class="form-control" type="number" id="CCOAA2" @bind-value="@Persona.COMPLEMENTOCARRERAA2" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="CCOAB" class="fw-bold widthLabel li-height50">B: </label>
|
||||
<input class="form-control" disabled id="CCOAB" @bind-value="@Persona.COMPLEMENTOCARRERAB" />
|
||||
<input class="form-control" type="number" id="CCOAB" @bind-value="@Persona.COMPLEMENTOCARRERAB" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="CCOAC1" class="fw-bold widthLabel li-height50">C1: </label>
|
||||
<input class="form-control" disabled id="CCOAC1" @bind-value="@Persona.COMPLEMENTOCARRERAC1" />
|
||||
<input class="form-control" type="number" id="CCOAC1" @bind-value="@Persona.COMPLEMENTOCARRERAC1" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="CCOAC2" class="fw-bold widthLabel li-height50">C2: </label>
|
||||
<input class="form-control" disabled id="CCOAC2" @bind-value="@Persona.COMPLEMENTOCARRERAC2" />
|
||||
<input class="form-control" type="number" id="CCOAC2" @bind-value="@Persona.COMPLEMENTOCARRERAC2" />
|
||||
</div>
|
||||
<div class="col-md-1 d-flex divLabelInp">
|
||||
<label for="CCOAE" class="fw-bold widthLabel li-height50">E: </label>
|
||||
<input class="form-control" disabled id="CCOAE" @bind-value="@Persona.COMPLEMENTOCARRERAE" />
|
||||
<input class="form-control" type="number" id="CCOAE" @bind-value="@Persona.COMPLEMENTOCARRERAE" />
|
||||
</div>
|
||||
<div class="col-md-6 d-flex divLabelInp">
|
||||
<label for="CCOAImporte" class="fw-bold widthLabel">Fecha Próximo Cumplimiento: </label>
|
||||
<input type="date" class="form-control" disabled id="CCOAImporte" @bind-value="@Persona.FECHACUMPLIMIENTOCARRERA" />
|
||||
<input type="date" class="form-control" id="CCOAImporte" @bind-value="@Persona.FECHACUMPLIMIENTOCARRERA" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -155,4 +156,28 @@
|
||||
private HttpClient cliente = new HttpClient();
|
||||
[Parameter]
|
||||
public EventCallback OnPersonaActualizada { get; set; }
|
||||
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
||||
}
|
||||
private async Task GestionarDatos()
|
||||
{
|
||||
|
||||
var personaGuardar = Persona;
|
||||
personaGuardar.NOMINATRABAJADORCABECERA = null;
|
||||
var responsea = await Utilidades.ActualizarObjeto(cliente, "/api/PERSONAS/" + personaGuardar.IDPERSONA, personaGuardar);
|
||||
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
||||
var response = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{Persona.NIF}");
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
throw new Exception($"Error al obtener los datos de la persona. Código: {response.StatusCode}");
|
||||
}
|
||||
|
||||
var resultContent = await response.Content.ReadAsStringAsync();
|
||||
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContent) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -638,10 +638,6 @@
|
||||
messageStore = new ValidationMessageStore(editContext);
|
||||
listaIdentificadores.Clear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
private async Task abrirGuardar()
|
||||
{
|
||||
await popupConfirmacion.ShowAsync();
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class ASCENDIENTESController : GenericoController<ASCENDIENTES, int>
|
||||
{
|
||||
public ASCENDIENTESController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
using bdAntifraude.db;
|
||||
using bdAntifraude.dbcontext;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Serialize.Linq.Serializers;
|
||||
using System.Linq.Expressions;
|
||||
using SwaggerAntifraude.Controllers;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class CONCEPTOSPUESTOSDETRABAJOController : GenericoController<CONCEPTOSPUESTOSDETRABAJO, int>
|
||||
{
|
||||
public CONCEPTOSPUESTOSDETRABAJOController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
public override async Task<IActionResult> GetAll()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
var entities = await context.CONCEPTOSPUESTOSDETRABAJO
|
||||
//.Include(x => x.IDTIPOPERSONANavigation)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[Authorize(Policy = "LecturaPolicy")]
|
||||
[HttpGet("{id}")]
|
||||
public override IActionResult GetById(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||
var entities = context.CONCEPTOSPUESTOSDETRABAJO
|
||||
.AsNoTracking()
|
||||
.FirstOrDefault(v => v.IDCONCEPTOSPUESTOSDETRABAJO == id);
|
||||
|
||||
|
||||
|
||||
if (entities == null)
|
||||
return NotFound();
|
||||
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class DIFERENCIATRIENIOSController : GenericoController<DIFERENCIATRIENIOS, int>
|
||||
{
|
||||
public DIFERENCIATRIENIOSController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class EXPEDIENTESPERSONASController : GenericoController<EXPEDIENTESPERSONAS, int>
|
||||
{
|
||||
public EXPEDIENTESPERSONASController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class HIJOSController : GenericoController<HIJOS, int>
|
||||
{
|
||||
public HIJOSController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class HISTORICOIRPFController : GenericoController<HISTORICOIRPF, int>
|
||||
{
|
||||
public HISTORICOIRPFController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class OTRASRETRIBUCIONESController : GenericoController<OTRASRETRIBUCIONES, int>
|
||||
{
|
||||
public OTRASRETRIBUCIONESController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class PRESTAMOSController : GenericoController<PRESTAMOS, int>
|
||||
{
|
||||
public PRESTAMOSController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class PRODUCTIVIDADController : GenericoController<PRODUCTIVIDAD, int>
|
||||
{
|
||||
public PRODUCTIVIDADController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
using bdAntifraude.db;
|
||||
using bdAntifraude.dbcontext;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Serialize.Linq.Serializers;
|
||||
using System.Linq.Expressions;
|
||||
using SwaggerAntifraude.Controllers;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class PUESTOSTRABAJOController : GenericoController<PUESTOSTRABAJO, int>
|
||||
{
|
||||
public PUESTOSTRABAJOController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
[HttpGet]
|
||||
public override async Task<IActionResult> GetAll()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
var entities = await context.PUESTOSTRABAJO
|
||||
.Include(x => x.IDTIPOPUESTOTRABAJONavigation)
|
||||
.Include(x => x.CONCEPTOSPUESTOSDETRABAJO)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
//.Include(v => v.IDSERVICIOADSCRITONavigation)
|
||||
//.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
[Authorize(Policy = "LecturaPolicy")]
|
||||
[HttpGet("{id}")]
|
||||
public override IActionResult GetById(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
//var dbSet = context.Set<VIDA_ADMINISTRATIVA>();
|
||||
var entities = context.PUESTOSTRABAJO
|
||||
.Include(x => x.IDTIPOPUESTOTRABAJONavigation)
|
||||
.Include(x => x.CONCEPTOSPUESTOSDETRABAJO)
|
||||
.AsNoTracking()
|
||||
.FirstOrDefault(v => v.IDPUESTOSTRABAJO == id);
|
||||
|
||||
|
||||
|
||||
if (entities == null)
|
||||
return NotFound();
|
||||
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Authorize(Policy = "LecturaPolicy")]
|
||||
[HttpPost("filtrar")] // Cambié a POST ya que estás usando [FromBody]
|
||||
public override async Task<IActionResult> Filtrar([FromBody] ExpressionWrapper request)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var context = tsGestionAntifraude.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
|
||||
{
|
||||
// Crear el deserializador
|
||||
var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
|
||||
|
||||
// Deserializar la expresión
|
||||
var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression<Func<PUESTOSTRABAJO, bool>>;
|
||||
if (deserializedExpression == null)
|
||||
{
|
||||
return BadRequest("La expresión deserializada es nula o incorrecta.");
|
||||
}
|
||||
var entities = await context.PUESTOSTRABAJO.Where(deserializedExpression)
|
||||
.Include(x => x.IDTIPOPUESTOTRABAJONavigation)
|
||||
.Include(x => x.CONCEPTOSPUESTOSDETRABAJO)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
|
||||
// Verificar si el resultado es vacío
|
||||
if (entities.Count == 0)
|
||||
{
|
||||
Console.WriteLine("La consulta no devolvió resultados.");
|
||||
}
|
||||
|
||||
return Ok(entities);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return StatusCode(500, $"Error interno del servidor: {ex.Message}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class REDUCCIONDEJORNADAController : GenericoController<REDUCCIONDEJORNADA, int>
|
||||
{
|
||||
public REDUCCIONDEJORNADAController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class RETENCIONJUDICIALController : GenericoController<RETENCIONJUDICIAL, int>
|
||||
{
|
||||
public RETENCIONJUDICIALController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class SITUACIONACTUALIRPFController : GenericoController<SITUACIONACTUALIRPF, int>
|
||||
{
|
||||
public SITUACIONACTUALIRPFController() : base() { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
using bdAntifraude.db;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace SwaggerAntifraude.Controllers
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class TRABAJADORTIEMPOPARCIALController : GenericoController<TRABAJADORTIEMPOPARCIAL, int>
|
||||
{
|
||||
public TRABAJADORTIEMPOPARCIALController()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user