275 lines
9.5 KiB
Plaintext
275 lines
9.5 KiB
Plaintext
@using Newtonsoft.Json
|
|
@using GestionPersonalWeb.Models
|
|
@using BlazorBootstrap
|
|
@using bdAntifraude.db
|
|
@using Microsoft.AspNetCore.Components
|
|
@rendermode InteractiveServer
|
|
@inject IHttpClientFactory HttpClientFactory
|
|
@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"
|
|
Data="itmList"
|
|
AllowFiltering="false"
|
|
PageSize="10"
|
|
AllowPaging="true"
|
|
AllowSorting="true"
|
|
EmptyText="No se han encontrado datos"
|
|
Height="100"
|
|
PageSizeSelectorVisible="false"
|
|
PageSizeSelectorItems="@(new int[] { 5, 10, 20, 50 })"
|
|
Responsive="true"
|
|
PaginationItemsTextFormat="{0} - {1} de {2} elementos">
|
|
|
|
<GridColumns>
|
|
<GridColumn TItem="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>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Fecha Fin">
|
|
@context.FECHAFIN?.ToString("dd/MM/yyyy")
|
|
</GridColumn>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Saldo Inicio">
|
|
@context.SALDOINICIO
|
|
</GridColumn>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Saldo Restante">
|
|
@context.SALDORESTANTE
|
|
</GridColumn>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Descripción">
|
|
@context.DESCRIPCION
|
|
</GridColumn>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Juzgado">
|
|
@context.JUZGADO
|
|
</GridColumn>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="I.B.A.N.">
|
|
@context.IBAN
|
|
</GridColumn>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Referencia Fichero">
|
|
@context.REFERENCIAFICHERO
|
|
</GridColumn>
|
|
<GridColumn TItem="RETENCIONJUDICIAL" HeaderText="Plantilla">
|
|
@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();
|
|
|
|
[Parameter]
|
|
public EventCallback OnPersonaActualizada { get; set; }
|
|
|
|
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
|
|
{
|
|
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)
|
|
{
|
|
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();
|
|
}
|
|
}
|