cambios en apidenuncias

This commit is contained in:
2026-04-30 08:55:00 +02:00
parent 3b77fc827d
commit b22f02807d
295 changed files with 26359 additions and 3777 deletions

View File

@@ -0,0 +1,589 @@
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.master" CodeBehind="listSolicitudesComunicaciones.aspx.vb" Inherits="WebIntranet.listSolicitudesComunicaciones" %>
<asp:Content ID="Content1" ContentPlaceHolderID="Content" runat="server">
<asp:HiddenField ID="MODO" runat="server" Value="" />
<asp:HiddenField ID="TIPOUSU" runat="server" Value="" />
<div class="row pag">
<div class="col-3" id="navLateral">
<ul>
<li id='intPicadaBL' runat="server" class='obtListLat'><a onclick="redirigir()" href="intPicada.aspx">Introducir picada</a></li>
<li id='intPicadaPersBL' runat="server" class='obtListLat'><a onclick="redirigir()" href="intPicadaPersonal.aspx">Introducir picada a personal</a></li>
<li id='Li1' runat="server" class='obtListLat'><a onclick="redirigir()" href="AnularPicadas.aspx">Anular picada a personal</a></li>
<li id='informPicadasBL' runat="server" class='obtListLat'><a onclick="redirigir()" href="listPicadas.aspx">Informe de listado de picadas</a></li>
<li id='informIncidenciasBL' class='obtListLat listActivo'><a onclick="redirigir()" href="listSolicitudesComunicaciones.aspx">Informe de permisos y comunicaciones</a></li>
<%--<li id='bolsaDeHorasBL' runat="server" class='obtListLat'><a onclick="redirigir()" href="/bolsaDeHoras.aspx">Bolsa de horas extraordinarias</a></li>--%>
<li id='VAAPBCBL' runat="server" class='obtListLat'><a onclick="redirigir()" href="/VAAPBC.aspx">Situación de vacaciones, asuntos particulares y días compensatorios</a></li>
<li id='VAAPBCBLpers' runat="server" class='obtListLat'><a onclick="redirigir()" href="/VAAPBCpers.aspx">Situación de vacaciones, asuntos particulares y días compensatorios</a></li>
<li id='resumenIncidenciasEntreFechasBL' class='obtListLat'><a onclick="redirigir()" href="/resumenSolicitudesComunicacionesEntreFechas.aspx">Resumen de permisos y comunicaciones entre fechas</a></li>
<li id='estIncPicBL' runat="server" class='obtListLat'><a onclick="redirigir()" href="/estadoInciPicada.aspx">Estado de incidencias y picadas</a></li>
</ul>
</div>
<div id="listadoDeIncidencias" class="col">
<p class="tituloMobile">Informe de permisos y comunicaciones</p>
<div class="migasDePan">
<ul>
<li class="migaActiva">/ Control Horario</li>
<li class="migaActiva">/ Informe de permisos y comunicaciones</li>
</ul>
</div>
<div class="d-flex-column justify-content-center">
<div class="row IntroducirFechas align-items-center wrap" style="margin-left: auto !important; margin-right: auto !important; margin-bottom: 25px !important; margin-top: 0px;">
<div class="col-md-3 d-flex" style="gap: 15px">
<p style="margin-bottom: 0px; width: 50px; line-height: 35px">Del</p>
<input id="fechaInicioListInc" class="inFecha" style="height: 35px;" runat="server" type="date" max="9999-12-31" />
</div>
<div class="col-md-3 d-flex" style="gap: 15px">
<p style="margin-bottom: 0px; width: 50px; line-height: 35px;">al</p>
<input id="fechaFinListInc" class="inFecha" style="height: 35px;" runat="server" type="date" max="9999-12-31" />
</div>
<div class="col-md-3" style="display: flex; justify-content: center;">
<input type="button" class="btnAzul btnAlargado" onclick="MostrarIncidencias()" value="Buscar" />
</div>
</div>
<%-- <div class="row IntroducirFechas align-items-center wrap" style="margin-left: auto !important; margin-right: auto !important; margin-bottom: 25px !important; margin-top: 0px;">
<p style="margin-bottom: 0px; line-height: 35px">Del</p>
<input id="fechaInicioListInc" class="inFecha" style="height: 35px;" runat="server" type="date" max="9999-12-31" />
<p style="margin-bottom: 0px; line-height: 35px;">al</p>
<input id="fechaFinListInc" class="inFecha" style="height: 35px;" runat="server" type="date" max="9999-12-31" />
<input type="button" class="btnAzul btnAlargado" value="Buscar" onclick="MostrarIncidencias()" />
</div>--%>
<div id="cajaFiltros">
<div style="display: flex; gap: 10px;">
<input type="checkbox" onclick="toggleSinFecha()" id="checktodas" runat="server" />
<p style="margin: 0">Buscar sin fecha</p>
</div>
<p style="margin-bottom: 0;">|</p>
<div style="display: flex; gap: 10px">
<input type="checkbox" id="checkPermisos" onclick="filtroTipo('permisos')" />
<p style="margin: 0">Permisos </p>
</div>
<div style="display: flex; gap: 10px">
<input type="checkbox" id="checkComunicaciones" onclick="filtroTipo('comunicaciones')" />
<p style="margin: 0">Comunicaciones</p>
</div>
<p style="margin-bottom: 0;">|</p>
<div id="cajaSelectFiltro" class="multiselect" style="display:none">
<div class="selectBox" onclick="showCheckboxes()">
<select class="selectIn">
<option>Filtrar por incidencias</option>
</select>
<div class="overSelect"></div>
</div>
<div id="checkboxes" style="position: absolute; background: white; padding: 10px; max-height: 400px; overflow-y: auto; z-index:2" runat="server">
</div>
</div>
</div>
<div id="filtroEstados" class="row" runat="server"></div>
</div>
<p style="text-align: center; color: red; margin-top: 25px;" id="mensajeListIncidencias" runat="server"></p>
<div class="row botonesListados">
<a class='btnOAAFAzul' id='mostrarGeneralInc' onclick='botonMostrarTodoInc("mostrarGeneralInc")' role='button' runat="server">Mostrar todo</a>
</div>
<div id="tablaIncidencias" class="pb-4 cajaTabla">
</div>
</div>
</div>
<script>
var expanded = false;
function showCheckboxes() {
var checkboxes = document.getElementById("checkboxes");
if (!expanded) {
checkboxes.style.display = "block";
expanded = true;
} else {
checkboxes.style.display = "none";
expanded = false;
}
}
window.addEventListener('load', function () {
if ($("#MODO").val() == "PROPIO") {
$("#mostrarGeneralInc").css("display", "none")
}
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
const pendientes = urlParams.get('pnd')
if (pendientes == "true") {
MostrarIncidencias()
for (var i = 0; i < chbEstados.length; i++) {
if ((chbEstados[i].value.includes("PROPUESTA") && ($("#TIPOUSU").val() == "SUPERVISOR" || $("#TIPOUSU").val() == "DELEGADO" || $("#TIPOUSU").val() == "SUPERVISORDETODO" || $("#TIPOUSU").val() == "DELEGADOSUPERVISORDETODO"))) {
chbEstados[i].checked = true
}
else if (((chbEstados[i].value.includes("VISTO-BUENO") || chbEstados[i].value == "SOLICITADA") && ($("#TIPOUSU").val() == "ADMINISTRADORCONTROLHORARIO"))) { //$("#TIPOUSU").val() == "SUPERVISORDETODO" ||' || $("#TIPOUSU").val() == "DELEGADOSUPERVISORDETODO"
chbEstados[i].checked = true
}
//if (chbEstados[i].value.includes("PROPUESTA") && ($("#TIPOUSU").val() == "SUPERVISOR" || $("#TIPOUSU").val() == "DELEGADO" || $("#TIPOUSU").val() == "SUPERVISORDETODO")) {
// chbEstados[i].checked = true
//}
//else if (chbEstados[i].value.includes("VISTO-BUENO") && ($("#TIPOUSU").val() == "SUPERVISORDETODO" || $("#TIPOUSU").val() == "ADMINISTRADORCONTROLHORARIO")) {
// chbEstados[i].checked = true
//}
//else if (chbEstados[i].value.includes("SOLICITADA") && ($("#TIPOUSU").val() == "SUPERVISORDETODO" || $("#TIPOUSU").val() == "ADMINISTRADORCONTROLHORARIO")) {
// chbEstados[i].checked = true
//}
}
}
else if (pendientes == "borr") {
for (var i = 0; i < chbEstados.length; i++) {
chbEstados[i].checked = false
}
for (var i = 0; i < chbEstados.length; i++) {
if (chbEstados[i].value == "BORRADOR") {
chbEstados[i].checked = true
}
//else if ((chbEstados[i].value == "VISTO-BUENO" && $("#TIPOUSU").val() == "SUPERVISORDETODO") || (chbEstados[i].value == "VISTO-BUENO" && $("#TIPOUSU").val() == "ADMINISTRADORCONTROLHORARIO")) {
// chbEstados[i].checked = true
//}
}
MostrarIncidencias()
}
else if (pendientes == null && sessionStorage.getItem("uBlI") != null) {
var ultimaBusc = JSON.parse(sessionStorage.getItem("uBlI"))
$('#fechaInicioListInc').val(ultimaBusc.FI)
$('#fechaFinListInc').val(ultimaBusc.FF)
if (ultimaBusc.todas == true) {
$("#checktodas").click()
}
if (sessionStorage.getItem("EstadosActivos") != null) {
for (var i = 0; i < chbEstados.length; i++) {
chbEstados[i].checked = false
}
var EstAc = sessionStorage.getItem("EstadosActivos").split(",")
for (var i = 0; i < EstAc.length; i++) {
$(".chbEstado[value='" + EstAc[i] + "']").click()
}
}
MostrarIncidencias()
}
else {
for (var i = 0; i < chbEstados.length; i++) {
if ($("#MODO").val() == "PROPIO" && chbEstados[i].value == "ACEPTADA") {
chbEstados[i].checked = true
}
else if ($("#MODO").val() == "PERSONAL" && chbEstados[i].value == "PROPUESTA") {
chbEstados[i].checked = true
}
}
}
})
function toggleSinFecha() {
if ($("#checktodas")[0].checked == true) {
$("#fechaInicioListInc").attr("readonly", "readonly")
$("#fechaInicioListInc").css("background-color", "lightgray")
$("#fechaFinListInc").attr("readonly", "readonly")
$("#fechaFinListInc").css("background-color", "lightgray")
$("#1Div")[0].children[0].checked = false
$("#1Div")[0].children[0].disabled = true
$("#1Div")[0].children[0].style.backgroundColor = "lightgray"
}
else {
$("#fechaInicioListInc").removeAttr("readonly")
$("#fechaInicioListInc").css("background-color", "")
$("#fechaFinListInc").removeAttr("readonly")
$("#fechaFinListInc").css("background-color", "")
$("#1Div")[0].children[0].disabled = false
$("#1Div")[0].children[0].style.backgroundColor = ""
}
}
function MostrarIncidencias() {
$("#mensajeListIncidencias").text("")
$('#tablaIncidencias').css('display', 'none')
$('#mostrarGeneralInc').css('display', 'none')
document.getElementById('tablaIncidencias').innerHTML = ""
var listaIncidencias = ""
var fechaInicio = new Date($('#fechaInicioListInc').val())
fechaInicio = ((fechaInicio.getTime() * 10000) + 621355968000000000);
var fechaFinal = new Date($('#fechaFinListInc').val())
fechaFinal = ((fechaFinal.getTime() * 10000) + 621355968000000000);
var success = false
var htmlImp = ""
//var listUsuarios = ""
//if (sessionStorage.getItem("modo") == "gestPropia") {
// listUsuarios = sessionStorage.getItem("UsuarioPrincipal").toString()
//}
//else {
// listUsuarios = sessionStorage.getItem("listUsuarios").toString()
//}
if (fechaInicio > fechaFinal) {
$("#mensajeListIncidencias").text("La fecha de inicio no debe ser posterior a la fecha final.")
}
else {
var check = false
if ($("#checktodas")[0].checked == true) {
check = true
}
$("#divLoading").css("display", "flex")
$.ajax({
type: "post",
url: "/listSolicitudesComunicaciones.aspx/CargarListadodeIncidencias",
data: '{"fechaInit":"' + fechaInicio + '","fechaEnd":"' + fechaFinal + '","checkTodas": ' + check + '}',
async: true,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
if (result.d != "") {
if (result.d.Result.includes("ERROR--")) {
compEr(result.d.Result)
return
}
success = true
listaIncidencias = JSON.parse(result.d.Result.replace(/(\r\n|\n|\r)/gm, " "))
var html = ""
var modo = $("#MODO").val()
var contadorPersona = 0
if (listaIncidencias.length == 0) {
html += "<p style='color:red; font-weight:bold; text-align:center;'>NO HAY INCIDENCIAS EN ESTE PERIODO</p>"
}
else {
var listaTipInci = []
for (var i = 0; i < listaIncidencias.length; i++) {
contadorPersona += 1
var idPersona = listaIncidencias[i].Persona
idPersona = idPersona.replace(" ", '').replace(", ", '')
idPersona = idPersona.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toUpperCase()
var btn = modo == "PROPIO" ? "display:none;" : ""
var verTr = modo == "PROPIO" ? "" : "display:none;"
var classProp = modo == "PROPIO" ? "" : "collapseInc"
var ocultoMost = modo == "PROPIO" ? "" : "ocultoMost"
html += "<div id='" + contadorPersona + "titulo' style='display:flex;margin-top:40px; align-items:center; margin-bottom:15px;'><p style='margin-left:2.5%;font-size:18px; margin-bottom:0'>" + listaIncidencias[i].Persona + "<span id='" + contadorPersona + "nuIncMostradas'></span></p><a class='btnVerde btn btnPersona' id='" + contadorPersona + "mostrarInc' onclick='botonMostrarInc(\"" + contadorPersona + "mostrarInc\",\"collapseMe" + idPersona + "Inc\")' role='button' style='" + btn + " margin-top:0; text-align:center !important; margin-left:20px;'>Mostrar</a></div>" +
"<div><table class='tablaPicadas'><tr>" +
"<th style='width:20%'> Incidencia</th>" +
"<th style='width:10%'>Fecha inicio</th>" +
"<th style='width:10%'>Fecha final</th>" +
"<th style='width:8%'>Días</th>" +
"<th style='width:6%'>Horas trabajadas mañana</th>" +
"<th style='width:6%'>Horas trabajadas tarde</th>" +
"<th style='width:25%'>Observaciones</th>" +
//"<th>Expediente ECO</th>" +
"<th style='width:15%'>Estado de la incidencia</th></tr>"
for (var x = 0; x < listaIncidencias[i].LisAsistencias.length; x++) {
var asistencia = listaIncidencias[i].LisAsistencias[x]
if (asistencia.Estado == "BORRADOR" && sessionStorage.getItem('modo') == "gestPersonal") {
}
else {
var fechaFin = asistencia.FechaFin
if (asistencia.FechaFin == "01-01-0001") {
fechaFin = ""
}
var claseEstado = asistencia.Estado
if (claseEstado == "") {
claseEstado = "PD"
}
if (listaTipInci.includes(asistencia.DesAsistencia.toUpperCase().replaceAll(" ", "-")) == false) {
listaTipInci.push(asistencia.DesAsistencia.toUpperCase().replaceAll(" ", "-"))
}
html += "<tr style='" + verTr + "' class='EstadoItem "+ocultoMost+" " + claseEstado.replaceAll(" ", "-") + " todasTablasInc " + classProp + " collapseMe" + idPersona + "Inc " + asistencia.tipo + " " + asistencia.DesAsistencia.replaceAll(" ", "-") + "'>" +
"<td class='linkIncidencia'><a href='" + asistencia.linkDesglose + "'>" + asistencia.DesAsistencia + "</a></td>" +
"<td>" + asistencia.FechaInicio + "</td>" +
"<td>" + fechaFin + "</td>" +
"<td style='text-align:center'>" + asistencia.numDias.toString() + "</td>" +
"<td style='text-align:center'>" + asistencia.HorasTraManana + "</td>" +
"<td style='text-align:center'>" + asistencia.HorasTraTarde + "</td>" +
"<td>" + asistencia.Observaciones + "</td>" +
//"<td>"+ asistencia.ExpedienteECO +"</td>" +
"<td style='text-align:center'>" + asistencia.Estado + "</td>" +
"</tr>"
}
}
html += "</table></div>"
}
var htmlSelect = ""
for (var x = 0; x < listaTipInci.length; x++) {
htmlSelect += '<label for="' + listaTipInci[x] + '">' +
'<input type="checkbox" onclick="filtroInci()" value="' + listaTipInci[x] + '" class="chInci mx-2"/>' + listaTipInci[x] + '</label>'
}
$("#checkboxes").html(htmlSelect)
$("#cajaSelectFiltro").css("display","")
}
}
else {
succsess = false
}
$("#divLoading").css("display", "none")
$('#tablaIncidencias').css('display', 'block')
if ($("#MODO").val() == "PERSONAL") {
$('#mostrarGeneralInc').css('display', 'block')
}
var ultimaBusqueda = '{"FI":"' + $('#fechaInicioListInc').val() + '","FF":"' + $('#fechaFinListInc').val() + '","todas":' + check + '}'
sessionStorage.setItem("uBlI", ultimaBusqueda)
document.getElementById('tablaIncidencias').innerHTML = html
//console.log(success)
listadoEstados()
},
error: function (result) {
$("#divLoading").css("display", "none")
alert('error occured');
//alert(result.responseText);
},
});
}
}
var chbEstados = $('.chbEstado')
$(chbEstados).on('click', function () {
listadoEstados()
})
$('#chbTODOS').on('click', function () {
var chbEstados = $('.chbEstado')
if ($('#chbTODOS')[0].checked == true) {
for (var i = 0; i < chbEstados.length; i++) {
chbEstados[i].checked = true
}
}
else {
for (var i = 0; i < chbEstados.length; i++) {
chbEstados[i].checked = false
}
}
listadoEstados()
})
var estadoTipo = "vacio"
function filtroInci() {
var Inci = $(".chInci")
var estados = $('.EstadoItem')
var incisActivas = []
for (var i = 0; i < Inci.length; i++) {
if (Inci[i].checked == true) {incisActivas.push(Inci[i].value) }
}
for (var x = 0; x < estados.length; x++) {
var oculta = false
if (incisActivas.length > 0) {
for (var y = 0; y < incisActivas.length; y++) {
for (var t = 0; t < estados[x].classList.length; t++) {
if (estados[x].classList[t] == incisActivas[y]) {
estados[x].classList.remove("ocultoInci")
oculta = true
}
}
if (oculta == false) {
estados[x].classList.add("ocultoInci")
}
}
}
else {
for (var w = 0; w < estados.length; w++) {
estados[w].classList.remove("ocultoInci")
}
}
}
ocultarFiltros()
}
function filtroTipo(inp) {
var permisos = $(".PERMISOS")
var comunicaciones = $(".COMUNICACIONES")
switch (inp) {
case "permisos":
if ($("#checkPermisos")[0].checked == false) {
estadoTipo = "vacio"
for (var i = 0; i < permisos.length; i++) { permisos[i].classList.remove("ocultoTip") }
for (var i = 0; i < comunicaciones.length; i++) { comunicaciones[i].classList.remove("ocultoTip") }
}
else {
for (var i = 0; i < comunicaciones.length; i++) { comunicaciones[i].classList.add("ocultoTip") }
estadoTipo = "permisos"
}
$("#checkComunicaciones")[0].checked = false
break;
case "comunicaciones":
if ($("#checkComunicaciones")[0].checked == false) {
estadoTipo = "vacio"
for (var i = 0; i < permisos.length; i++) { permisos[i].classList.remove("ocultoTip") }
for (var i = 0; i < comunicaciones.length; i++) { comunicaciones[i].classList.remove("ocultoTip") }
}
else {
estadoTipo = "comunicaciones"
for (var i = 0; i < permisos.length; i++) { permisos[i].classList.add("ocultoTip") }
}
$("#checkPermisos")[0].checked = false
break;
default:
}
ocultarFiltros()
}
function listadoEstados() {
var estados = $('.EstadoItem')
var chbEstados = $('.chbEstado')
var estadosActivos = ""
var cont = 0
for (var x = 0; x < chbEstados.length; x++) {
if (chbEstados[x].checked == true) {
if (cont == 0) {
cont++
estadosActivos += chbEstados[x].value
}
else { estadosActivos += "," + chbEstados[x].value }
}
}
sessionStorage.setItem("EstadosActivos", estadosActivos)
for (var i = 0; i < estados.length; i++) {
//estados[i].style.display = "none"
estados[i].classList.add("ocultoEst")
}
for (var i = 0; i < chbEstados.length; i++) {
if (chbEstados[i].checked == true) {
for (var x = 0; x < estados.length; x++) {
if (estados[x].classList.contains(chbEstados[i].value)) {
//estados[x].style.display = ""
estados[x].classList.remove("ocultoEst")
}
}
}
}
ocultarFiltros()
}
function ocultarFiltros() {
var estados = $('.EstadoItem')
for (var i = 0; i < estados.length; i++) {
if (estados[i].classList.contains("ocultoEst") || estados[i].classList.contains("ocultoTip") || estados[i].classList.contains("ocultoInci") || estados[i].classList.contains("ocultoMost")) {
estados[i].style.display = "none"
}
else {
estados[i].style.display = ""
}
}
//var tablas = $('table.tablaPicadas')
//for (var i = 0; i < tablas.length; i++) {
// var contador = 0
// if (tablas[i].children.length > 0) {
// var tablasHijos = tablas[i].children[0].children
// var contador = /*tablasHijos.length - 1*/ 0
// for (var x = 0; x < tablasHijos.length; x++) {
// if (tablasHijos[x].style.display != 'none' && x != 0) {
// contador += 1
// }
// }
// $("#" + (i + 1) + "nuIncMostradas").text('(' + contador.toString() + ')')
// if (contador == 0) {
// $("#" + (i + 1) + "titulo").hide()
// tablas[i].style.display = "none"
// }
// else {
// tablas[i].style.display = ""
// $("#" + (i + 1) + "titulo").show()
// }
// }
//}
}
function ocultarDias() {
}
function botonMostrarInc(id, idClase) {
var tablas = document.getElementsByClassName("todasTablasInc");
tablas = Array.from(tablas);
var tablasColapsadas = [];
var estaTabla = document.getElementsByClassName(idClase);
estaTabla = Array.from(estaTabla);
var link = document.getElementById(id)
var texto = link.innerText
switch (texto) {
case "Mostrar":
estaTabla.forEach(element => element.classList.remove('ocultoMost'))
//console.log("entra")
texto = "Ocultar"
break
case "Ocultar":
estaTabla.forEach(element => element.classList.add('ocultoMost'))
//document.getElementsByClassName(idClase).classList.remove('show')
//console.log("entra")
texto = "Mostrar"
break
}
for (var i = 0; i < tablas.length; i++) {
if (tablas[i].classList.contains('ocultoMost') == true) {
tablasColapsadas.push(tablas[i])
}
}
//if (tablas.length == tablasColapsadas.length) {
if (tablas.length != tablasColapsadas.length) {
document.getElementById('mostrarGeneralInc').innerText = "Ocultar todo"
}
else {
document.getElementById('mostrarGeneralInc').innerText = "Mostrar todo"
}
link.innerText = texto
document.getElementById('mostrarGeneralInc')
ocultarFiltros()
};
function botonMostrarTodoInc(id) {
var tablas = document.getElementsByClassName("todasTablasInc")
tablas = Array.from(tablas)
var link = document.getElementById(id)
var linkPersona = document.getElementsByClassName('btnPersona')
linkPersona = Array.from(linkPersona)
var texto = link.innerText
var textoBtnPersona = linkPersona.innerText
switch (texto) {
case "Mostrar todo":
texto = "Ocultar todo"
textoBtnPersona = "Ocultar"
for (var i = 0; i < tablas.length; i++) {
if (tablas[i].classList.contains('ocultoMost') == true) {
tablas[i].classList.remove('ocultoMost')
}
//else {
//}
}
break
case "Ocultar todo":
texto = "Mostrar todo"
textoBtnPersona = "Mostrar"
for (var x = 0; x < tablas.length; x++) {
if (tablas[x].classList.contains('ocultoMost') == false) {
tablas[x].classList.add('ocultoMost')
}
}
break
}
linkPersona.forEach(element => element.innerHTML = textoBtnPersona)
link.innerText = texto
ocultarFiltros()
};
</script>
</asp:Content>