|
|
|
|
@@ -22,19 +22,19 @@
|
|
|
|
|
<div class="row mb-3 mt-4" style=" padding: 20px;border:solid 1px grey">
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<label for="txtApellidos" class="fw-bold widthLabel li-height50">Apellidos: </label>
|
|
|
|
|
<input class="form-control" id="txtApellidos" @bind-value="@Persona.APELLIDOS" />
|
|
|
|
|
<input class="form-control" readonly="readonly" id="txtApellidos" @bind-value="@Persona.APELLIDOS" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-6">
|
|
|
|
|
<label for="txtNombre" class="fw-bold widthLabel li-height50">Nombre: </label>
|
|
|
|
|
<input class="form-control" id="txtNombre" @bind-value="@Persona.NOMBRE" />
|
|
|
|
|
<input class="form-control" readonly="readonly" id="txtNombre" @bind-value="@Persona.NOMBRE" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-4">
|
|
|
|
|
<label for="txtNIF" class="fw-bold widthLabel li-height50">DNI: </label>
|
|
|
|
|
<input class="form-control" id="txtNIF" @bind-value="@Persona.NIF" />
|
|
|
|
|
<input class="form-control" readonly="readonly" id="txtNIF" @bind-value="@Persona.NIF" />
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-4">
|
|
|
|
|
<label for="txtsexo" class="fw-bold widthLabel li-height50">Sexo: </label>
|
|
|
|
|
<InputSelect @bind-Value="Persona.IDSEXO" class="form-select">
|
|
|
|
|
<InputSelect readonly="readonly" @bind-Value="Persona.IDSEXO" class="form-select">
|
|
|
|
|
<option value="">Seleccionar</option>
|
|
|
|
|
@if (lSexo != null)
|
|
|
|
|
{
|
|
|
|
|
@@ -47,7 +47,7 @@
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-4">
|
|
|
|
|
<label for="txtTiCont" class="fw-bold widthLabel li-height50">Tipo Contrato: </label>
|
|
|
|
|
<InputSelect @bind-Value="Persona.IDCONTRATO" class="form-select">
|
|
|
|
|
<InputSelect readonly="readonly" @bind-Value="Persona.IDCONTRATO" class="form-select">
|
|
|
|
|
<option value="">Seleccionar</option>
|
|
|
|
|
@if (lTipoContra != null)
|
|
|
|
|
{
|
|
|
|
|
@@ -60,6 +60,20 @@
|
|
|
|
|
@* <input class="form-control" id="txtTiCont" value="@persona.IDCONTRATONavigation?.DESCRIPCION" /> *@
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<input type="button" value="Guardar Nómina" class="btnOAAFAzul" @onclick="GuardarNomina" />
|
|
|
|
|
|
|
|
|
|
<Modal @ref="popupConfirmacion" Title="Confirmar Guardar persona" IsVerticallyCentered="true" UseStaticBackdrop="true" CloseOnEscape="false">
|
|
|
|
|
<BodyTemplate>
|
|
|
|
|
<p>Se van a dar de alta o modificar datos de la persona seleccionada ¿desea continuar?</p>
|
|
|
|
|
</BodyTemplate>
|
|
|
|
|
<FooterTemplate>
|
|
|
|
|
<Button Color="ButtonColor.Secondary" @onclick="CerrarConfirmacion">Cancelar</Button>
|
|
|
|
|
|
|
|
|
|
<Button @onclick="GuardarNomina" Color="ButtonColor.Primary">Aceptar</Button>
|
|
|
|
|
|
|
|
|
|
</FooterTemplate>
|
|
|
|
|
</Modal>
|
|
|
|
|
<Toasts class="p-3 font-weight-bold" Style="color:white;" AutoHide="true" Delay="4000" Messages="mensajes" Placement="ToastsPlacement.BottomCenter" />
|
|
|
|
|
<div>
|
|
|
|
|
<Tabs @ref=tabsDtsPer style="margin-top:25px; font-size:12px; gap:0;" OnShown="@(args => OnTabShownAsync(args))">
|
|
|
|
|
<Tab Title="Nómina" Name="tabNomina">
|
|
|
|
|
@@ -125,11 +139,11 @@
|
|
|
|
|
<label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 1: </label>
|
|
|
|
|
@if (Nomina.IDSINDICATO1Navigation != null)
|
|
|
|
|
{
|
|
|
|
|
<input class="form-control" id="txtFecha" @bind-value="@Nomina.IDSINDICATO1Navigation.VALORNUMERICO1" />
|
|
|
|
|
<input class="form-control" id="txtFecha" readonly="readonly" @bind-value="@Nomina.IDSINDICATO1Navigation.VALORNUMERICO1" />
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
<input class="form-control" />
|
|
|
|
|
<input class="form-control" />
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="col-md-3">
|
|
|
|
|
@@ -149,7 +163,7 @@
|
|
|
|
|
<label for="txtFecha" class="fw-bold widthLabel li-height50">Valor Sindicato 2: </label>
|
|
|
|
|
@if (Nomina.IDSINDICATO2Navigation != null)
|
|
|
|
|
{
|
|
|
|
|
<input class="form-control" id="txtFecha" @bind-value="@Nomina.IDSINDICATO2Navigation.VALORNUMERICO1" />
|
|
|
|
|
<input class="form-control" id="txtFecha" readonly="readonly" @bind-value="@Nomina.IDSINDICATO2Navigation.VALORNUMERICO1" />
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@@ -591,7 +605,7 @@
|
|
|
|
|
@code {
|
|
|
|
|
[Parameter]
|
|
|
|
|
public PERSONAS Persona { get; set; } = new PERSONAS();
|
|
|
|
|
public NOMINATRABAJADORCABECERA Nomina { get; set; } = new NOMINATRABAJADORCABECERA();
|
|
|
|
|
public static NOMINATRABAJADORCABECERA Nomina { get; set; } = new NOMINATRABAJADORCABECERA();
|
|
|
|
|
private HttpClient cliente = new HttpClient();
|
|
|
|
|
[Parameter]
|
|
|
|
|
public EventCallback OnPersonaActualizada { get; set; }
|
|
|
|
|
@@ -605,10 +619,23 @@
|
|
|
|
|
private List<PERIODOSSILTRA> lSiltra= new List<PERIODOSSILTRA>();
|
|
|
|
|
private ValidationMessageStore? messageStore;
|
|
|
|
|
private string errorMessage = "";
|
|
|
|
|
public string nifDesencriptado { get; set; }
|
|
|
|
|
public int NominaDesencriptada { get; set; }
|
|
|
|
|
public string? cl { get; set; } = "";
|
|
|
|
|
public string? cn { get; set; } = "";
|
|
|
|
|
private Tabs tabsDtsPer { get; set; } = new Tabs();
|
|
|
|
|
private Tabs tabsDtsNom { get; set; } = new Tabs();
|
|
|
|
|
private Modal popupConfirmacion = default!;
|
|
|
|
|
List<ToastMessage> mensajes = new List<ToastMessage>();
|
|
|
|
|
private EditContext editContext = new EditContext(Nomina);
|
|
|
|
|
private async Task abrirGuardar()
|
|
|
|
|
{
|
|
|
|
|
await popupConfirmacion.ShowAsync();
|
|
|
|
|
}
|
|
|
|
|
private async Task CerrarConfirmacion()
|
|
|
|
|
{
|
|
|
|
|
await popupConfirmacion.HideAsync();
|
|
|
|
|
}
|
|
|
|
|
private async Task OnTabShownAsync(TabsEventArgs args)
|
|
|
|
|
{
|
|
|
|
|
var panelActivo = args.ActiveTabName;
|
|
|
|
|
@@ -626,21 +653,16 @@
|
|
|
|
|
{
|
|
|
|
|
cl = clValue;
|
|
|
|
|
}
|
|
|
|
|
// if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cn", out var cnValue))
|
|
|
|
|
// {
|
|
|
|
|
// cn = cnValue;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
|
|
|
|
// ListaSexos = await Utilidades.ObtenerObjeto<List<ENUMERACIONES>>(cliente, "/api/ENUMERACIONES/EnumeracionesGrupo/SEXO");
|
|
|
|
|
|
|
|
|
|
string clDesencriptado = tsUtilidades.crypt.FEncS(cl,
|
|
|
|
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
|
|
|
|
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
|
|
|
|
-875421649);
|
|
|
|
|
|
|
|
|
|
var clCn = clDesencriptado.Split("-");
|
|
|
|
|
var nifDesencriptado = clCn[0];
|
|
|
|
|
var NominaDesencriptada = Int32.Parse(clCn[1]);
|
|
|
|
|
nifDesencriptado = clCn[0];
|
|
|
|
|
NominaDesencriptada = Int32.Parse(clCn[1]);
|
|
|
|
|
// int NominaDesencriptada = Int32.Parse(tsUtilidades.crypt.FEncS(cn,
|
|
|
|
|
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
|
|
|
|
// "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*",
|
|
|
|
|
@@ -678,8 +700,6 @@
|
|
|
|
|
Console.WriteLine($"Error durante la inicialización: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private string HashRed(string id)
|
|
|
|
|
{
|
|
|
|
|
string link = "/PeriodoSiltra?cl=" + tsUtilidades.crypt.FEncS(
|
|
|
|
|
@@ -689,8 +709,6 @@
|
|
|
|
|
875421649);
|
|
|
|
|
return link;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private async Task CargarSelects()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
@@ -712,6 +730,66 @@
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
private async Task GuardarNomina()
|
|
|
|
|
{
|
|
|
|
|
CerrarConfirmacion();
|
|
|
|
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
|
|
|
|
// ValidarTodos();
|
|
|
|
|
if (!editContext.GetValidationMessages().Any())
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
if (Nomina.IDNOMINATRABAJADOR== 0)//Nuevo
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var response = await Utilidades.NuevoObjeto(cliente, "/api/NOMINATRABAJADORCABECERA", Nomina);
|
|
|
|
|
string link = "/NomPers?cl=" + tsUtilidades.crypt.FEncS(response.IDNOMINATRABAJADOR.ToString(), "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/-*", 875421649);
|
|
|
|
|
NavigationManager.NavigateTo(link, forceLoad: true);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else//Actualizar
|
|
|
|
|
{
|
|
|
|
|
// Nomina.IMPORTESEGURO = null;
|
|
|
|
|
var responsea = await Utilidades.ActualizarObjeto(cliente, "/api/NOMINATRABAJADORCABECERA/" + Nomina.IDNOMINATRABAJADOR, Nomina);
|
|
|
|
|
var url = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
|
|
|
|
if (QueryHelpers.ParseQuery(url.Query).TryGetValue("cl", out var clValue)) { cl = clValue; }
|
|
|
|
|
cliente = Utilidades.ObtenerCliente(UserState.Token, HttpClientFactory);
|
|
|
|
|
var responsePers = await cliente.GetAsync($"/api/PERSONAS/PersonaNominaNif/{nifDesencriptado}");
|
|
|
|
|
if (!responsePers.IsSuccessStatusCode)
|
|
|
|
|
{
|
|
|
|
|
throw new Exception($"Error al obtener los datos de la persona. Código: {responsePers.StatusCode}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var resultContentPers = await responsePers.Content.ReadAsStringAsync();
|
|
|
|
|
Persona = JsonConvert.DeserializeObject<PERSONAS>(resultContentPers) ?? throw new Exception("Error al deserializar los datos de la persona.");
|
|
|
|
|
Nomina = Persona.NOMINATRABAJADORCABECERA?.FirstOrDefault(x => x.IDNOMINA == NominaDesencriptada);
|
|
|
|
|
|
|
|
|
|
mensajes.Add(new ToastMessage
|
|
|
|
|
{
|
|
|
|
|
Type = ToastType.Primary,
|
|
|
|
|
Message = $"Guardado correctamente.",
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var html = "";
|
|
|
|
|
html += "Revise los errores antes de guardar:";
|
|
|
|
|
foreach (string m in editContext.GetValidationMessages())
|
|
|
|
|
{
|
|
|
|
|
html += "\n" + m + ". ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mensajes.Add(new ToastMessage
|
|
|
|
|
{
|
|
|
|
|
Type = ToastType.Danger,
|
|
|
|
|
|
|
|
|
|
Message = html,
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|