<?php
/* @var $this DeclaracionController */
/* @var $declaraciones array */
/* @var $model2 SidcaiCasillasIslr */
/* @var $model_recaudos SidcaiRecaudo */
/* @var $empresa SidcaiAportante */
/* @var $message string */

// Función para formatear montos de la BD a formato venezolano
function formatearMonto($valor) { 
    if ($valor === null || $valor === '') {
        return '';
    }

    $numero = floatval($valor);

    return number_format($numero, 2, ',', '.');
}


Yii::app()->getClientScript()->registerCssFile(Yii::app()->getBaseUrl() . '/assets/vendor/datatables/css/dataTables.bootstrap4.css');  
Yii::app()->getClientScript()->registerCssFile(Yii::app()->getBaseUrl() . '/css/tabla-data.css');  

$renovar = isset($empresa) && $empresa->esta_codigoestatus_fk == 2008 ? false : true;
?>

<style>
/* --- Estilos existentes --- */
.hover-zoom:hover { transform: translateY(-3px); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2) !important; transition: all 0.25s ease-in-out; }
.card h5 { font-size: 1.1rem; }
.card .badge { font-size: 0.9rem; }
.periodo-card { transition: all 0.3s ease; }
.periodo-field:disabled { background-color: #e9ecef; opacity: 0.7; cursor: not-allowed; }
.periodo-field:enabled { background-color: #fff3cd !important; border-color: #dc3545 !important; cursor: text; }
.progress { height: 8px; border-radius: 0; }
.material-icons { vertical-align: middle; }
.btn-guardar-individual { min-width: 180px; }
.upload-status { font-size: 0.85rem; }
.upload-success { color: #28a745; }
.upload-warning { color: #ffc107; }
.upload-error { color: #dc3545; }
.upload-info { color: #17a2b8; }

/* Estatus 6 - Revisión */
.estatus-6-badge { background: linear-gradient(45deg, #17a2b8, #0d6efd) !important; color: white !important; }
.estatus-6-card { border-left: 4px solid #17a2b8 !important; }

/* Estatus 7 - Rechazada */
.estatus-7-badge { background: linear-gradient(45deg, #dc3545, #e83e8c) !important; color: white !important; }
.estatus-7-card { border-left: 4px solid #dc3545 !important; }
.btn-estatus-7 { background: linear-gradient(45deg, #dc3545, #e83e8c) !important; border-color: #dc3545 !important; color: white !important; }
.btn-estatus-7:hover { background: linear-gradient(45deg, #c82333, #d91a7a) !important; border-color: #bd2130 !important; }

/* Estatus 8 - Aprobada */
.estatus-8-badge { background: linear-gradient(45deg, #28a745, #20c997) !important; color: white !important; }
.estatus-8-card { border-left: 4px solid #28a745 !important; }

.toast { position: fixed; top: 25px; right: 25px; display: flex; align-items: center; gap: 10px; background: #198754; color: #fff; padding: 14px 20px; border-radius: 14px; box-shadow: 0 6px 25px rgba(0,0,0,0.2); font-size: 15px; z-index: 9999; opacity: 0; transform: translateY(-20px); transition: all 0.5s ease; }
.toast.error { background: #dc3545; }
.toast.show { opacity: 1; transform: translateY(0); }
.toast i { font-size: 20px; }
</style>

<div class="card">
    <div class="progress">
        <div class="progress-bar" role="progressbar" style="width: 0%" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
    </div>

    <div class="card-body" id="formulario">
        <h2 class="text-center mb-4">Agregar Conciliaciones ISLR (Individual)</h2>

        <div class="alert alert-info" role="alert">
            <div class="d-flex align-items-center">
                <i class="material-icons mr-2">info</i>
                <h4 class="alert-heading mb-0">¡Importante!</h4>
            </div>
            <hr>
            <p class="mb-0">
                Gestione las conciliaciones ISLR por periodo. 
                <br><br>
                <strong>Flujo de trabajo:</strong>
                <ol class="mb-0">
                    <li><strong>Cargue el documento ISLR</strong> en formato PDF</li>
                    <li>Una vez cargado el ISLR, se habilitarán los campos para ingresar los montos de la conciliación</li>
                    <li><strong>Guarde la conciliación</strong> (puede hacerlo aunque el ISLR no esté aprobado aún)</li>
                </ol>
                <br>
                <strong>Nota:</strong> 
                <ul>
                    <li>Los periodos se muestran en orden ascendente (del más antiguo al más reciente).</li>
                    <li>Debe tener ISLR cargado y conciliación guardada de un periodo para poder acceder al siguiente.</li>
<!--  Estatus 6 --> <li><span class="badge" style="background: #17a2b8;">Revisión  </span> - No se puede editar (en espera de aprobación)</li>
<!--  Estatus 7 --> <li><span class="badge" style="background: #dc3545;"> Rechazada </span> - Se puede editar y corregir (los montos aparecen en blanco)</li>
<!--  Estatus 8 --> <li><span class="badge" style="background: #28a745;">Aprobada</span> - Se bloquea la edición</li>
                </ul>
            </p>
        </div>

        <!-- Mensajes flash -->
        <div id="message"></div>
        <?php  
        if(Yii::app()->user->hasFlash('success')) echo TbHtml::alert(TbHtml::ALERT_COLOR_SUCCESS, Yii::app()->user->getFlash('success'));
        if(Yii::app()->user->hasFlash('error')) echo TbHtml::alert(TbHtml::ALERT_COLOR_DANGER, Yii::app()->user->getFlash('error'));
        if(Yii::app()->user->hasFlash('warning')) echo TbHtml::alert(TbHtml::ALERT_COLOR_WARNING, Yii::app()->user->getFlash('warning'));
        ?>

        <?php if($mostrar): ?>
            <?php $form=$this->beginWidget('bootstrap.widgets.TbActiveForm', array(
                'id'=>'crear-conciliacion-form',
                'enableClientValidation' => true,
                'enableAjaxValidation' => false,
                'clientOptions' => ['validateOnSubmit' => true],
            )); ?>

            <div class="row">
                <div class="col-md-12">
                    <?php  
                    if(empty($declaraciones['periodos_gravables'])){
                        echo '<div class="alert alert-warning text-center">⚠️ La empresa aún no posee periodos gravables.</div>';
                    } else {                     

                        // Ordenar periodos ascendente por fecha de inicio (del más antiguo al más reciente)
                        $periodos_ordenados = $declaraciones['periodos_gravables'];
                        usort($periodos_ordenados, function($a, $b) {
                            return strtotime($a['inicio_periodo_gravable']) - strtotime($b['inicio_periodo_gravable']);
                        });

                        $cantidad_periodos = count($periodos_ordenados);
                        $periodo_anterior_completado = true; // El primer periodo (más antiguo) siempre está habilitado

                        // Recorrer periodos en orden ascendente (del más antiguo al más reciente)
                        for($i = 0; $i < $cantidad_periodos; $i++) {
                            $periodo = $periodos_ordenados[$i];
                            $periodo_formatted = date('Y-m-d', strtotime($periodo['inicio_periodo_gravable']));

                            // Buscar conciliación existente
                            $conciliacion_existente = SidcaiCasillasIslr::model()->find([
                                'condition' => 'apor_codigo_fk = :apor AND periodo_fiscal = :periodo',
                                'params' => [':apor' => Yii::app()->user->id, ':periodo' => $periodo_formatted],
                            ]);

                            // Buscar recaudo ISLR (tipo 3) - Obtener el más reciente
                            $recaudo_islr = SidcaiRecaudo::model()->find([
                                'condition' => 'apor_codigo_fk = :apor AND periodo_fiscal = :periodo AND tipo_codigo_fk = 3',
                                'params' => [':apor' => Yii::app()->user->id, ':periodo' => $periodo_formatted],
                                'order' => 'reca_codigo_pk DESC'
                            ]);

                            // Estados del recaudo: 1=En revisión, 2=Rechazado, 3=Aceptado
                            $recaudo_aceptado = ($recaudo_islr && $recaudo_islr->reca_estado == 3);
                            $recaudo_rechazado = ($recaudo_islr && $recaudo_islr->reca_estado == 2);
                            $recaudo_pendiente = ($recaudo_islr && $recaudo_islr->reca_estado == 1);
                            $recaudo_cargado = ($recaudo_islr !== null); // ISLR cargado (sin importar estado)
                            
                            $estatus_conciliacion = $conciliacion_existente ? $conciliacion_existente->estatus_fk : null;
                            
                            // NUEVA LEYENDA DE ESTATUS:
                            // 6 = Revisión, 7 = Rechazada, 8 = Aprobada
                            $conciliacion_revision = ($conciliacion_existente && $estatus_conciliacion == 6);
                            $conciliacion_rechazada = ($conciliacion_existente && $estatus_conciliacion == 7);
                            $conciliacion_aprobada = ($conciliacion_existente && $estatus_conciliacion == 8);
                            $conciliacion_guardada = ($conciliacion_existente !== null);

                            // ✅ DETERMINAR HABILITACIÓN DEL PERIODO
                            if ($periodo_anterior_completado) {
                                // El periodo está habilitado
                                $periodo_habilitado = true;
                            } else {
                                // Periodo bloqueado porque el anterior no está completo
                                $periodo_habilitado = false;
                            }

                            // ✅ DETERMINAR SI LOS CAMPOS DE MONTO ESTÁN HABILITADOS
                            // SOLO se habilitan cuando el estatus es 7 (Rechazada)
                            $campos_monto_habilitados = false;

                            // ❌ Si está en revisión (6), nunca permitir editar ni volver a guardar
                            if ($conciliacion_revision) {
                                $campos_monto_habilitados = false;
                            }
                            // ✅ Si está rechazada (7), permitir corrección
                            elseif ($periodo_habilitado && $recaudo_cargado && $conciliacion_rechazada) {
                                $campos_monto_habilitados = true;
                            }
                            // ✅ Si no existe conciliación aún, permitir crear
                            elseif ($periodo_habilitado && $recaudo_cargado && !$conciliacion_guardada) {
                                $campos_monto_habilitados = true;
                            }

                            // Si está en revisión (6) o aprobada (8), los campos NO están habilitados

                            // ✅ DETERMINAR SI SE PUEDE GUARDAR/EDITAR LA CONCILIACIÓN
                            $puede_guardar_conciliacion = $campos_monto_habilitados;
                            
                            // Un periodo está completo cuando:
                            // - Tiene ISLR cargado Y
                            // - Tiene conciliación guardada Y
                            // - La conciliación NO está rechazada (estatus 7)
                            //   (es decir, estatus 6 u 8, o cualquier otro que no sea 7)
                            $periodo_completo = false;
                            if ($recaudo_cargado && $conciliacion_guardada) {
                                // Si tiene conciliación guardada, verificamos que no esté rechazada
                                if ($conciliacion_existente) {
                                    // Permitir si estatus NO es 7 (rechazada)
                                    // 6 = Revisión, 8 = Aprobada
                                    $periodo_completo = ($estatus_conciliacion != 7);
                                } else {
                                    // Si no hay conciliación, no está completo
                                    $periodo_completo = false;
                                }
                            }
                            // Si está en revisión (6) o rechazada (7), NO se considera completo
                            
                            // ✅ ACTUALIZAR BANDERA PARA EL SIGUIENTE PERIODO
                            $periodo_anterior_completado = $periodo_completo;

                            // BADGES PARA MOSTRAR ESTADOS
                            $badge_recaudo = '';
                            if ($recaudo_aceptado) {
                                $badge_recaudo = '<span class="badge bg-success ms-2"><i class="material-icons">check_circle</i> ISLR Aceptado</span>';
                            } elseif ($recaudo_pendiente) {
                                $badge_recaudo = '<span class="badge bg-warning ms-2"><i class="material-icons">schedule</i> ISLR en Revisión</span>';
                            } elseif ($recaudo_rechazado) {
                                $badge_recaudo = '<span class="badge bg-danger ms-2"><i class="material-icons">cancel</i> ISLR Rechazado</span>';
                            } elseif ($recaudo_cargado) {
                                $badge_recaudo = '<span class="badge bg-info ms-2"><i class="material-icons">cloud_upload</i> ISLR Cargado</span>';
                            } else {
                                $badge_recaudo = '<span class="badge bg-secondary ms-2"><i class="material-icons">cloud_off</i> ISLR Pendiente</span>';
                            }

                            $badge_conciliacion = '';
                            if ($conciliacion_aprobada) {
                                $badge_conciliacion = '<span class="badge estatus-8-badge ms-2"><i class="material-icons">check_circle</i> Conciliación Aprobada</span>';
                            } elseif ($conciliacion_rechazada) {
                                $badge_conciliacion = '<span class="badge estatus-7-badge ms-2"><i class="material-icons">warning</i> Conciliación Rechazada</span>';
                            } elseif ($conciliacion_revision) {
                                $badge_conciliacion = '<span class="badge estatus-6-badge ms-2"><i class="material-icons">visibility</i> Conciliación en Revisión</span>';
                            } elseif ($conciliacion_guardada) {
                                $badge_conciliacion = '<span class="badge bg-primary ms-2"><i class="material-icons">save</i> Conciliación Guardada</span>';
                            }
                            
                            // Clase adicional para la card según estatus
                            $card_extra_class = '';
                            if ($conciliacion_aprobada) {
                                $card_extra_class = 'estatus-8-card';
                            } elseif ($conciliacion_rechazada) {
                                $card_extra_class = 'estatus-7-card';
                            } elseif ($conciliacion_revision) {
                                $card_extra_class = 'estatus-6-card';
                            }
                            ?>

                            <div class="periodo-card card mb-4 <?= $card_extra_class; ?>" id="periodo-card-<?=$i?>">
                                <div class="card mb-3 shadow-sm border-0 rounded-3 hover-zoom">
                                    <div class="card-body d-flex flex-column flex-md-row justify-content-between align-items-md-center p-3" style="background-color: #2c3e50; color: #fff;">
                                        <div class="d-flex align-items-center mb-2 mb-md-0">
                                            <h5 class="mb-0 fw-bold me-3">Periodo Gravable <?= $i+1 ?></h5>
                                            <?= $badge_recaudo ?>
                                            <?= $badge_conciliacion ?>
                                        </div>
                                        <div class="d-flex align-items-center">
                                            <i class="material-icons me-2">calendar_today</i>
                                            <span class="badge bg-dark text-white py-2 px-3"><?= FuncionesController::convertirFecha($periodo['inicio_periodo_gravable'], "dd/mm/yyyy") ?></span>
                                            <span class="mx-1 fw-bold">-</span>
                                            <span class="badge bg-dark text-white py-2 px-3"><?= FuncionesController::convertirFecha($periodo['fin_periodo_gravable'], "dd/mm/yyyy") ?></span>
                                        </div>
                                    </div>
                                </div>

                                <div class="card-body periodo-form" id="periodo-form-<?=$i?>">
                                    <div class="row">
                                        <!-- IZQUIERDA: Subida ISLR -->
                                        <div class="col-lg-6 mb-3">
                                            <div class="card border shadow-sm h-100">
                                                <div class="card-header bg-secondary text-white">
                                                    <h6 class="mb-0 font-weight-bold"><i class="material-icons">cloud_upload</i> Subir ISLR (Periodo)</h6>
                                                </div>
                                                <div class="card-body bg-light">
                                                    <?php
                                                    // Mostrar formulario de subida si:
                                                    // - No hay recaudo, o está rechazado (permitir recargar)
                                                    // - Y el periodo está habilitado
                                                    $mostrarFormularioSubida = ((!$recaudo_cargado || $recaudo_rechazado) && $periodo_habilitado);
                                                    
                                                    if($mostrarFormularioSubida){
                                                        echo '<form id="subir-recaudos-form-'.$i.'" enctype="multipart/form-data">';
                                                        $this->renderPartial('_file-recaudo-new', [
                                                            'form'=>$form,
                                                            'model'=>$model_recaudos,
                                                            'recaudo'=>'declaracion_islr',
                                                            'renovar'=>$renovar,
                                                            'tipo_codigo_fk'=>3,
                                                            'periodo'=>$periodo_formatted,
                                                            'form_id'=>'subir-recaudos-form-'.$i,
                                                            'periodo_index'=>$i
                                                        ]);
                                                        echo '</form>';
                                                        
                                                        if($recaudo_rechazado) {
                                                            echo '<div class="alert alert-danger mt-2 mb-0"><i class="material-icons">warning</i> ISLR rechazado. Por favor cargue un nuevo documento.</div>';
                                                        }
                                                    } elseif($recaudo_pendiente) {
                                                        echo '<div class="alert alert-warning mb-0"><i class="material-icons">schedule</i> Documento ISLR en revisión.</div>';
                                                        
                                                        // Mostrar información del archivo cargado - SOLO NOMBRE DEL ARCHIVO
                                                        if($recaudo_islr) {
                                                            $nombre_archivo = basename($recaudo_islr->reca_direccion);
                                                            echo '<div class="small text-muted mt-2">';
                                                            echo '<i class="material-icons" style="font-size: 14px;">description</i> Archivo: ' . $nombre_archivo;
                                                            echo '</div>';
                                                        }
                                                    } elseif($recaudo_aceptado) {
                                                        echo '<div class="alert alert-success mb-0"><i class="material-icons">check_circle</i> Documento ISLR aprobado.</div>';
                                                        
                                                        // Mostrar información del archivo cargado - SOLO NOMBRE DEL ARCHIVO
                                                        if($recaudo_islr) {
                                                            $nombre_archivo = basename($recaudo_islr->reca_direccion);
                                                            echo '<div class="small text-muted mt-2">';
                                                            echo '<i class="material-icons" style="font-size: 14px;">description</i> Archivo: ' . $nombre_archivo;
                                                            echo '</div>';
                                                        }
                                                    } elseif($recaudo_cargado) {
                                                        echo '<div class="alert alert-info mb-0"><i class="material-icons">cloud_upload</i> Documento ISLR cargado.</div>';
                                                        
                                                        // Mostrar información del archivo cargado - SOLO NOMBRE DEL ARCHIVO
                                                        if($recaudo_islr) {
                                                            $nombre_archivo = basename($recaudo_islr->reca_direccion);
                                                            echo '<div class="small text-muted mt-2">';
                                                            echo '<i class="material-icons" style="font-size: 14px;">description</i> Archivo: ' . $nombre_archivo;
                                                            echo '</div>';
                                                        }
                                                    } elseif(!$periodo_habilitado && $i > 0) {
                                                        echo '<div class="alert alert-secondary mb-0"><i class="material-icons">lock</i> Complete el periodo anterior primero.</div>';
                                                    } elseif(!$periodo_habilitado) {
                                                        echo '<div class="alert alert-secondary mb-0"><i class="material-icons">lock</i> Periodo bloqueado</div>';
                                                    }
                                                    ?>
                                                </div>
                                            </div>
                                        </div>

                                        <!-- DERECHA: Casillas (Conciliación) -->
                                        <div class="col-lg-6 mb-3">
                                            <div class="card border shadow-sm h-100">
                                                <div class="card-header bg-secondary text-white">
                                                    <h6 class="mb-0 font-weight-bold"><i class="material-icons">monetization_on</i> Montos del ISLR (Conciliación)</h6>
                                                </div>
                                                <div class="card-body bg-light">
                                                    <?php if(!$recaudo_cargado && $periodo_habilitado): ?>
                                                        <div class="alert alert-info mb-3">
                                                            <i class="material-icons">info</i> Primero debe cargar el documento ISLR
                                                        </div>
                                                    <?php elseif($conciliacion_aprobada): ?>
                                                        <div class="alert alert-success mb-3">
                                                            <i class="material-icons">check_circle</i> Conciliación Aprobada (Estatus 8) - No se puede modificar
                                                        </div>
                                                    <?php elseif($conciliacion_rechazada): ?>
                                                        <div class="alert alert-danger mb-3">
                                                            <i class="material-icons">warning</i> Conciliación Rechazada (Estatus 7) - Debe corregir los montos (los campos están en blanco para volver a escribir)
                                                        </div>
                                                    <?php elseif($conciliacion_revision): ?>
                                                        <div class="alert alert-info mb-3">
                                                            <i class="material-icons">visibility</i> Conciliación en Revisión (Estatus 6) - No se puede editar, espere aprobación
                                                        </div>
                                                    <?php elseif($recaudo_pendiente): ?>
                                                        <div class="alert alert-warning mb-3">
                                                            <i class="material-icons">schedule</i> ISLR en revisión - Puede guardar la conciliación
                                                        </div>
                                                    <?php elseif($recaudo_rechazado): ?>
                                                        <div class="alert alert-danger mb-3">
                                                            <i class="material-icons">cancel</i> ISLR rechazado - Puede guardar la conciliación pero debe corregir el ISLR
                                                        </div>
                                                    <?php elseif($recaudo_aceptado): ?>
                                                        <div class="alert alert-success mb-3">
                                                            <i class="material-icons">check_circle</i> ISLR aprobado - Puede guardar la conciliación
                                                        </div>
                                                    <?php elseif($recaudo_cargado): ?>
                                                        <div class="alert alert-info mb-3">
                                                            <i class="material-icons">cloud_upload</i> ISLR cargado - Puede guardar la conciliación
                                                        </div>
                                                    <?php endif; ?>
                                                    
                                                    <div class="row">
                                                        <?php 
                                                        foreach(['711','780','970'] as $casilla): 
                                                            // Determinar el valor a mostrar
                                                            // Si es estatus 7 (Rechazada), mostrar campos en blanco para que vuelva a escribir
                                                            // Si es nueva conciliación, mostrar en blanco
                                                            // En cualquier otro caso, mostrar el valor guardado formateado
                                                            $valor_campo = '';
                                                            if ($conciliacion_existente && !$conciliacion_rechazada) {
                                                                // Solo mostrar valor si NO es rechazada
                                                                $valor_campo = formatearMonto($conciliacion_existente->{'casilla_'.$casilla});
                                                            }
                                                            // Si es rechazada, $valor_campo queda vacío (blanco)
                                                        ?>
                                                            <div class="col-md-4 mb-2">
                                                                <?= $form->labelEx($model2,'casilla_'.$casilla,['class'=>'control-label font-weight-medium text-dark']); ?>
                                                                <?= CHtml::textField(
                                                                    'SidcaiCasillasIslr['.$i.'][casilla_'.$casilla.']',
                                                                    $valor_campo,
                                                                    [
                                                                        'class' => 'form-control periodo-field monto', 
                                                                        'onkeypress' => 'return soloMontos(this, event)',
                                                                        'placeholder' => '0,00',
                                                                        'id' => 'casilla_'.$casilla.'_'.$i,
                                                                        'disabled' => !$campos_monto_habilitados,
                                                                        'style' => $campos_monto_habilitados ? 'border-color: #dc3545; background-color: #fff3cd;' : ''
                                                                    ]
                                                                ); ?>
                                                                <?php if(!$campos_monto_habilitados && $conciliacion_guardada): ?>
                                                                    <small class="text-muted">Campo bloqueado</small>
                                                                <?php endif; ?>
                                                                <?php if($conciliacion_rechazada && $campos_monto_habilitados): ?>
                                                                    <small class="text-danger">* Campo habilitado para corrección</small>
                                                                <?php endif; ?>
                                                            </div>
                                                        <?php endforeach; ?>

                                                        <?= CHtml::hiddenField('SidcaiCasillasIslr['.$i.'][apor_codigo_fk]', Yii::app()->user->id); ?>
                                                        <?= CHtml::hiddenField('SidcaiCasillasIslr['.$i.'][periodo_fiscal]', $periodo_formatted); ?>
                                                        <?= CHtml::hiddenField('SidcaiCasillasIslr['.$i.'][recaudo_codigo_fk]', $recaudo_islr ? $recaudo_islr->reca_codigo_pk : ''); ?>
                                                        <?= CHtml::hiddenField('SidcaiCasillasIslr['.$i.'][periodo_index]', $i); ?>

                                                        <div class="text-right mt-3 w-100">
                                                            <?php if($puede_guardar_conciliacion): ?>
                                                                <?php
                                                                // Determinar la clase del botón según el estatus
                                                                $btn_class = 'btn-primary';
                                                                $btn_text = 'Guardar Conciliación';
                                                                $btn_icon = 'save';
                                                                
                                                                if ($conciliacion_rechazada) {
                                                                    $btn_class = 'btn-estatus-7';
                                                                    $btn_text = 'Corregir Conciliación Rechazada (Estatus 7)';
                                                                    $btn_icon = 'warning';
                                                                }
                                                                ?>
                                                                <button type="button" 
                                                                        class="btn btn-guardar-individual <?= $btn_class ?>" 
                                                                        data-periodo="<?= $i ?>">
                                                                    <i class="material-icons mr-2"><?= $btn_icon ?></i>
                                                                    <?= $btn_text ?>
                                                                </button>
                                                            <?php elseif(!$recaudo_cargado && $periodo_habilitado): ?>
                                                                <button class="btn btn-secondary" disabled>
                                                                    <i class="material-icons mr-2">cloud_upload</i> Primero cargue ISLR
                                                                </button>
                                                            <?php elseif(!$periodo_habilitado): ?>
                                                                <button class="btn btn-outline-secondary" disabled>
                                                                    <i class="material-icons mr-2">lock</i> Complete periodo anterior
                                                                </button>
                                                            <?php elseif($conciliacion_aprobada): ?>
                                                                <button class="btn btn-success" disabled>
                                                                    <i class="material-icons mr-2">check_circle</i> Conciliación Aprobada (Estatus 8)
                                                                </button>
                                                            <?php elseif($conciliacion_revision): ?>
                                                                <button class="btn btn-info" disabled>
                                                                    <i class="material-icons mr-2">visibility</i> En Revisión (Estatus 6)
                                                                </button>
                                                            <?php elseif($conciliacion_guardada): ?>
                                                                <button class="btn btn-info" disabled>
                                                                    <i class="material-icons mr-2">save</i> Conciliación Guardada
                                                                </button>
                                                            <?php endif; ?>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>

                        <?php } // end for ?>
                    <?php } // end else ?>
                </div>
            </div>

            <?php $this->endWidget(); ?>
        <?php endif; ?>
    </div>
</div>

<?php
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/assets/vendor/datatables/js/jquery.dataTables.js', CClientScript::POS_END);
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/assets/vendor/datatables/js/dataTables.bootstrap4.js', CClientScript::POS_END);
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/assets/js/input-file.js', CClientScript::POS_END);
?>
<script src="/assets/js/funciones.js"></script>

<script>
// Función para limpiar formato de número (ej: 1.234,56 -> 1234.56)
function limpiarNumero(valor) {
    if (!valor) return '';
    if (typeof valor === 'number') return valor.toString();
    return valor.replace(/\./g, '').replace(',', '.');
}

// Función para subir recaudos individualmente
function sendMasivo(recaudo, periodoIndex) {
    console.log('Subida individual - periodo:', periodoIndex, 'recaudo:', recaudo);

    var formId = 'subir-recaudos-form-' + periodoIndex;
    var error = '#error-masivo-' + periodoIndex;
    var enviar = '#enviar-masivo-' + periodoIndex;
    var fileInput = document.querySelector('#SidcaiRecaudo_' + recaudo + '_' + periodoIndex);

    if (!fileInput || !fileInput.files[0]) {
        $(error).html('<div class="alert alert-danger">Seleccione un archivo PDF.</div>');
        return;
    }

    var file = fileInput.files[0];
    if (file.type !== 'application/pdf') {
        $(error).html('<div class="alert alert-danger">Solo se permiten PDFs.</div>');
        return;
    }
    // Límite de 8 MB
    if (file.size > 8 * 1024 * 1024) {
        $(error).html('<div class="alert alert-danger">Archivo mayor a 8MB.</div>');
        return;
    }

    var formData = new FormData();
    formData.append('SidcaiRecaudo[declaracion_islr]', file);
    
    // Obtener los valores de los campos ocultos
    var periodoField = document.getElementById('periodo-' + periodoIndex);
    var tipoField = document.getElementById('tipo-' + periodoIndex);
    var renovarField = document.getElementById('renovar-' + periodoIndex);
    
    if (periodoField) {
        formData.append('periodo', periodoField.value);
    } else {
        $(error).html('<div class="alert alert-danger">Error: Campo periodo no encontrado.</div>');
        return;
    }
    
    formData.append('tipo', tipoField ? tipoField.value : '3');
    formData.append('renovar', renovarField ? renovarField.value : '1');
    formData.append('periodo_index', periodoIndex);
    formData.append('ajax', 'subir-recaudo-individual');

    $(enviar).prop('disabled', true).html('<i class="material-icons">hourglass_empty</i> Subiendo...');

    $.ajax({
        url: '<?php echo Yii::app()->createUrl("declaracion/subirRecaudoIndividual"); ?>',
        type: 'POST',
        data: formData,
        cache: false,
        processData: false,
        contentType: false,
        success: function(data) {
            console.log('Respuesta del servidor:', data);
            
            try {
                var response = typeof data === 'string' ? JSON.parse(data) : data;
                
                if(response.success) {
                    $(error).html('<div class="alert alert-success">' + response.message + '</div>');
                    $(enviar).html('<i class="material-icons">check</i> Listo');
                    
                    setTimeout(function() {
                        location.reload();
                    }, 1500);
                } else {
                    $(error).html('<div class="alert alert-danger">' + response.message + '</div>');
                    $(enviar).prop('disabled', false).html('<i class="material-icons">cloud_upload</i> Reintentar');
                }
            } catch (e) {
                console.error('Error parseando JSON:', e, 'Data:', data);
                $(error).html('<div class="alert alert-danger">Error procesando respuesta del servidor.</div>');
                $(enviar).prop('disabled', false).html('<i class="material-icons">cloud_upload</i> Reintentar');
            }
        },
        error: function(xhr, status, error) {
            console.error('Error AJAX:', status, error);
            $(error).html('<div class="alert alert-danger">Error de conexión: ' + error + '</div>');
            $(enviar).prop('disabled', false).html('<i class="material-icons">cloud_upload</i> Reintentar');
        }
    });
}

// Función para guardar conciliación individual
function guardarPeriodoIndividual(periodoIndex) {
    const casilla711 = document.getElementById('casilla_711_' + periodoIndex);
    const casilla780 = document.getElementById('casilla_780_' + periodoIndex);
    const casilla970 = document.getElementById('casilla_970_' + periodoIndex);
    
    if (casilla711.disabled || casilla780.disabled || casilla970.disabled) {
        mostrarToast('Los campos de este periodo no están habilitados para edición.', 'error');
        return;
    }

    if (!casilla711.value && !casilla780.value && !casilla970.value) {
        mostrarToast('Por favor, complete al menos uno de los montos para este periodo.', 'error');
        return;
    }

    var formData = new FormData();
    formData.append('SidcaiCasillasIslr[' + periodoIndex + '][casilla_711]', limpiarNumero(casilla711.value));
    formData.append('SidcaiCasillasIslr[' + periodoIndex + '][casilla_780]', limpiarNumero(casilla780.value));
    formData.append('SidcaiCasillasIslr[' + periodoIndex + '][casilla_970]', limpiarNumero(casilla970.value));
    formData.append('SidcaiCasillasIslr[' + periodoIndex + '][apor_codigo_fk]', document.querySelector('input[name="SidcaiCasillasIslr[' + periodoIndex + '][apor_codigo_fk]"]').value);
    formData.append('SidcaiCasillasIslr[' + periodoIndex + '][periodo_fiscal]', document.querySelector('input[name="SidcaiCasillasIslr[' + periodoIndex + '][periodo_fiscal]"]').value);
    formData.append('SidcaiCasillasIslr[' + periodoIndex + '][recaudo_codigo_fk]', document.querySelector('input[name="SidcaiCasillasIslr[' + periodoIndex + '][recaudo_codigo_fk]"]').value);
    formData.append('periodo_index', periodoIndex);
    formData.append('guardar_individual', '1');

    const btn = document.querySelector('.btn-guardar-individual[data-periodo="' + periodoIndex + '"]');
    
    // Determinar si es una corrección (estatus 7)
    if (btn && btn.textContent.includes('Rechazada')) {
        formData.append('estatus_correccion', '1');
    }

    const originalText = btn.innerHTML;
    btn.innerHTML = '<i class="material-icons mr-2">hourglass_empty</i> Guardando...';
    btn.disabled = true;

    $.ajax({
        url: '<?php echo Yii::app()->createUrl("declaracion/guardarConciliacionIndividual"); ?>',
        type: 'POST',
        data: formData,
        processData: false,
        contentType: false,
        success: function(data) {
            console.log('Respuesta:', data);
            try {
                var response = typeof data === 'string' ? JSON.parse(data) : data;
                if (response.success) {
                    mostrarToast(response.message, 'success');
                    setTimeout(() => location.reload(), 2000);
                } else {
                    mostrarToast(response.message, 'error');
                    btn.innerHTML = originalText;
                    btn.disabled = false;
                }
            } catch (e) {
                console.error('Error:', e);
                mostrarToast('Error al procesar la respuesta', 'error');
                btn.innerHTML = originalText;
                btn.disabled = false;
            }
        },
        error: function(xhr, status, error) {
            console.error('Error AJAX:', status, error);
            mostrarToast('Error de conexión: ' + error, 'error');
            btn.innerHTML = originalText;
            btn.disabled = false;
        }
    });
}

// Función para mostrar toast
function mostrarToast(mensaje, tipo = 'success') {
    const toast = document.createElement('div');
    toast.className = 'toast ' + (tipo === 'error' ? 'error' : '');
    
    const icon = document.createElement('i');
    icon.className = 'material-icons';
    icon.textContent = tipo === 'error' ? 'error_outline' : 'check_circle_outline';
    
    const texto = document.createElement('span');
    texto.textContent = mensaje;
    
    toast.appendChild(icon);
    toast.appendChild(texto);
    document.body.appendChild(toast);

    setTimeout(() => toast.classList.add('show'), 100);
    setTimeout(() => {
        toast.classList.remove('show');
        setTimeout(() => toast.remove(), 500);
    }, 4000);
}

// Función para aplicar estilos especiales
function aplicarEstilosEspeciales() {
    document.querySelectorAll('.periodo-card').forEach(card => {
        const btn = card.querySelector('.btn-guardar-individual');
        
        if (btn) {
            if (btn.textContent.includes('Rechazada')) {
                card.classList.add('estatus-7-card');
            } else if (btn.textContent.includes('Revisión')) {
                card.classList.add('estatus-6-card');
            }
        }
    });
}

// Actualizar barra de progreso
function actualizarProgreso() {
    const total = document.querySelectorAll('.periodo-card').length;
    if (total === 0) return;
    
    let completos = 0;
    document.querySelectorAll('.periodo-card').forEach(card => {
        // Verificar si tiene ISLR cargado (cualquier badge de ISLR)
        const tieneISLR = card.querySelector('.badge.bg-success, .badge.bg-warning, .badge.bg-danger, .badge.bg-info');
        
        // Verificar si tiene conciliación guardada
        let tieneConciliacion = false;
        const badges = card.querySelectorAll('.badge');
        badges.forEach(badge => {
            const texto = badge.textContent;
            if (texto.includes('Conciliación')) {
                tieneConciliacion = true;
            }
        });
        
        // Verificar si la conciliación está aprobada (estatus 8)
        const conciliacionAprobada = card.querySelector('.estatus-8-badge');
        
        if (tieneISLR && tieneConciliacion && conciliacionAprobada) {
            completos++;
        }
    });
    
    const percent = Math.round((completos / total) * 100);
    const bar = document.querySelector('.progress-bar');
    if (bar) {
        bar.style.width = percent + '%';
        bar.setAttribute('aria-valuenow', percent);
        bar.textContent = percent + '%';
    }
}

// Event listeners
document.addEventListener('DOMContentLoaded', function() {
    // Configurar botones de subida
    document.querySelectorAll('.btn-subir-masivo').forEach(btn => {
        btn.addEventListener('click', function() {
            const periodoIndex = this.getAttribute('data-periodo-index');
            const recaudo = this.getAttribute('data-recaudo');
            sendMasivo(recaudo, periodoIndex);
        });
    });

    // Configurar botones de guardar conciliación
    document.querySelectorAll('.btn-guardar-individual').forEach(btn => {
        btn.addEventListener('click', function() {
            const periodoIndex = this.getAttribute('data-periodo');
            guardarPeriodoIndividual(periodoIndex);
        });
    });

    // Aplicar estilos
    aplicarEstilosEspeciales();
    actualizarProgreso();
});
</script>