var tabla;

$(document).ready(function() {
    // Llenar años dinámicamente (desde 2020 hasta 2 años más adelante)
    const currentYear = new Date().getFullYear();
    for (let y = 2020; y <= currentYear + 2; y++) {
        $('#anio').append(`<option value="${y}">${y}</option>`);
    }

    // Seleccionar mes/año actuales por defecto
    $('#mes').val(new Date().getMonth() + 1);
    $('#anio').val(currentYear);

    // Cargar tabla inicial
    listarPagos();

    // Cuando cambie mes o año, recargar la tabla
    $('#mes, #anio').on('change', function() {
        listarPagos();
    });
});

function listarPagos() {
    let mes = $('#mes').val();
    let anio = $('#anio').val();

    if (tabla) {
        tabla.destroy();
    }

    tabla = $('#mensualidades_data').DataTable({
    "aProcessing": true,
    "aServerSide": true,
    dom: 'Bfrtip',
    "searching": true,
    lengthChange: false,
    colReorder: true,
    buttons: [
        'copyHtml5',
        'excelHtml5',
        'csvHtml5',
        'pdfHtml5'
    ],
    "ajax": {
        url: '../../controller/pagos.php?op=listar',
        type: "POST",
        data: function(d) {
            d.mes = $('#mes').val();   // puedes tener un select con el mes
            d.anio = $('#anio').val(); // y otro con el año
        },
        dataType: "json",
        error: function(e) {
            console.log(e.responseText);
        }
    },
    "columns": [
        { data: 'fic_nom', title: 'Alumno' },
        { data: 'fic_run', title: 'RUT' },
        
            {
            data: 'fic_valor_mes',
            title: 'Valor Mensual',
            render: function(data) {
                // Convertimos a número y aplicamos formato de miles
                let valor = parseFloat(data);
                if (isNaN(valor)) return "$ 0";
                return '$ ' + valor.toLocaleString('es-CL', { minimumFractionDigits: 0 });
            }
        },
        { data: 'comprobante', title: 'Comprobante' },
        { data: 'estado', title: 'Estado' },
        {
            data: null,
            title: 'Acción',
            render: function(data) {
                if (data.estado === 'Pagado') {
                    return '<button class="btn btn-secondary btn-xs" disabled>Pagar</button>';
                } else {
                    return `<button class="btn btn-success btn-xs" onclick="pagarMensualidad(${data.fic_id})">Pagar</button>`;
                }
            }
        }
    ],
    "columnDefs": [
        {
            "targets": [0],
            "visible": true,
            "searchable": true
        }
    ],
    "bDestroy": true,
    "responsive": true,
    "bInfo": true,
    "iDisplayLength": 30,
    "autoWidth": false,
    "language": {
        "sProcessing": "Procesando...",
        "sLengthMenu": "Mostrar _MENU_ registros",
        "sZeroRecords": "No se encontraron resultados",
        "sEmptyTable": "Ningún dato disponible en esta tabla",
        "sInfo": "Mostrando un total de _TOTAL_ registros",
        "sInfoEmpty": "Mostrando un total de 0 registros",
        "sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
        "sSearch": "Buscar:",
        "sLoadingRecords": "Cargando...",
        "oPaginate": {
            "sFirst": "Primero",
            "sLast": "Último",
            "sNext": "Siguiente",
            "sPrevious": "Anterior"
        },
        "oAria": {
            "sSortAscending": ": Activar para ordenar la columna de manera ascendente",
            "sSortDescending": ": Activar para ordenar la columna de manera descendente"
        }
    },
    "drawCallback": function(settings) {
        if (!$('#btnCancelar').length) {
            var $btn = $('<button id="btnCancelar" type="button" class="btn btn-danger btn-sm ml-3">Cancelar</button>');
            $btn.css('margin-left', '10px');
            $(this.api().table().container()).find('.dataTables_paginate').append($btn);

            $btn.on('click', function() {
                location.reload();
            });
        }
    }
});

}

function pagarMensualidad(fic_id) {
    let mes = $('#mes').val();
    let anio = $('#anio').val();

    Swal.fire({
        title: "¿Registrar pago?",
        text: "Ingrese el número de comprobante",
        input: "text",
        inputPlaceholder: "Ej: 12345",
        showCancelButton: true,
        confirmButtonText: "Guardar",
        cancelButtonText: "Cancelar",
        inputValidator: (value) => {
            if (!value) {
                return "Debe ingresar un número de comprobante";
            }
        }
    }).then((result) => {
        if (result.isConfirmed) {
            $.post(
                "../../controller/pagos.php?op=pagar",
                { fic_id: fic_id, comprobante: result.value, mes: mes, anio: anio },
                function(response) {
                    Swal.fire({
                        title: "Pago registrado correctamente",
                        icon: "success",
                        timer: 1500,
                        showConfirmButton: false
                    });
                    $('#mensualidades_data').DataTable().ajax.reload();
                },
                "json"
            );
        }
    });
}

