<?php //Optimizaciones 25w12c
require_once("../../app/functions.php");
$pag = basename($_SERVER['PHP_SELF']);
gen_plantilla(true, $pag, true, true, 'Cierre del mes', true, true);

//Comprobar is está sistema de incidencias activo
if(!SISTEMA_INCIDENCIAS){
    header("Location: ".SITIO_CARPETA."/views/tables/fichajes?tipo=error&mensaje=No tienes acceso a esta página");
    exit;
}

//comprobar si ya existen los datos de este mes si existen no deja aplicar
$messupuesto = date('m', strtotime(' -1 months'));
$anio_actual = date("Y");
if ($messupuesto == 12) $anio_actual--;
?>
<section class="cristal" <?= (!get_config_usuario($_SESSION['id_usuario'], 'reducir_efectos_movimiento')) ? 'style="view-transition-name: cristal;"' : '' ?>>
    <h1 class="resaltado">Cierre del mes</h1>
    <form class="flex column gap05" id="form">
        <button type="button" class="btn-t rojo" onclick="avisar_restaurar_mes()" id="restaurar">Restaurar mes anterior</button>
        <span>Última fecha de cierre: <b id="ult_fecha"><?= (!empty($ult_fech=get_ult_fecha_cierre())) ? date("Y-m-d", strtotime($ult_fech[0]['fecha_fin'] . " +1 days")) :'Nunca'?></b></span>
        <!-- Cerrar mes por fecha -->
        <section class="flex column gap1" id="cerrarporfecha">
            <h4>Cerrar mes por fecha específica</h4>
            <input type="date" min="<?= date("Y-m-d", strtotime(get_ult_fecha_cierre()[0]['fecha_fin'] . " +1 days")) ?>" max='<?= date("Y-m-d", strtotime("+5 days")) ?>' title="Indica una fecha específica para cerrar el mes" name="fechaanterior" id="fechaanterior" required /><!-- Actualizado beta 24w13d -->
            <section id="cargando"></section>
            <button class="btn-p" id="cerrar_mes">Cerrar mes anterior</button>
        </section>
    </form>
</section>
<aside id="showdialog"></aside>
<script>
    //ajax
    window.onload = function() {
        actualizar_ultima_fecha();
        let cerrar_mes = document.getElementById("cerrar_mes");
        let restaurar = document.getElementById("restaurar");
        let fecha = document.getElementById("fechaanterior");
        cerrar_mes.onclick = function(e) {
            e.preventDefault();
            if (fecha.value == '') {
                crear_notificacion('error', 'La fecha no es válida');
                return;
            }
            cerrar_mes.disabled = true;
            restaurar.disabled = true;
            cerrar_mes.classList.add('deshabilitado');
            restaurar.classList.add('deshabilitado');
            poner_cargando();

            ajax('forms/cerrar_mes', 'notificaciones', "fechaanterior=" + fecha.value, ['quitar_cargando()', 'actualizar_ultima_fecha()', 'cargar_advertencia(0)']);
        }
        fecha.addEventListener('change', () => {
            const fecha_n = new Date();
            fecha_n.setDate(fecha_n.getDate() + 5);

            const year = fecha_n.getFullYear();
            const month = String(fecha_n.getMonth() + 1).padStart(2, '0');
            const day = String(fecha_n.getDate()).padStart(2, '0');

            const fecha_max = `${year}-${month}-${day}`;

            if (fecha.value > fecha_max) {
                cerrar_mes.disabled = true;
                cerrar_mes.classList.add('deshabilitado');
                crear_notificacion('error', 'No puedes cerrar mes más de 5 días de fecha de hoy');
            } else {
                cerrar_mes.disabled = false;
                cerrar_mes.classList.remove('deshabilitado');
            }

        });
    }

    function actualizar_ultima_fecha() {
        cerrar_mes.disabled = false;
        restaurar.disabled = false;
        cerrar_mes.classList.remove('deshabilitado');
        restaurar.classList.remove('deshabilitado');
        ajax('ultima_fecha_cierre.php', 'ult_fecha', '', []);
    }

    function cargar_advertencia(seguir) {
        //comprobar si existe el id hay_incidencias
        //si existe cargar dialog de advertencia
        poner_cargando();
        cerrar_mes.disabled = true;
        restaurar.disabled = true;
        cerrar_mes.classList.add('deshabilitado');
        restaurar.classList.add('deshabilitado');
        let advertencia = document.getElementById("hay_incidencias");
        let fecha = document.getElementById("fechaanterior");
        if (advertencia) {
            let fecha_vuelta = advertencia.value;
            if (seguir != 1)
                ajax('dialogs/dialog_incidencias_activas', 'showdialog', "fechaanterior=" + fecha.value, ['cargar_dialog()', 'proseguir_cierre()']);
            else
                ajax('forms/cerrar_mes.php', 'notificaciones', "fechaanterior=" + fecha.value + '&seguir', ['quitar_cargando()', 'actualizar_ultima_fecha()']);
        } else
            ajax('forms/cerrar_mes.php', 'notificaciones', "fechaanterior=" + fecha.value + '&seguir', ['quitar_cargando()', 'actualizar_ultima_fecha()']);
    }

    function proseguir_cierre() {
        let proseguir = document.getElementById("cerrar");
        proseguir.onclick = function(e) {
            e.preventDefault();
            cargar_advertencia(1);
        }

    }

    function avisar_restaurar_mes() {
        ajax('dialogs/dialog_restaurar_mes', 'showdialog', '', ['cargar_dialog()']);
    }

    function restaurar_mes() {
        ajax('forms/restaurar_mes_cerrado', 'notificaciones', '', ['actualizar_ultima_fecha()', 'animacion_y_cierre_dialog()']);
    }
</script>
<?php footer(true); ?>