diff --git a/dashboard.php b/dashboard.php index a0bc4ca..e248846 100755 --- a/dashboard.php +++ b/dashboard.php @@ -925,19 +925,7 @@ switch ($page) { $houseFilters = $_GET['filter_houses'] ?? []; $conceptFilters = $_GET['filter_concepts'] ?? []; - // Debug: mostrar todos los parámetros GET y qué filtros se están recibiendo - error_log("DEBUG - All GET params: " . print_r($_GET, true)); - error_log("DEBUG - House filters: " . print_r($houseFilters, true)); - error_log("DEBUG - Concept filters: " . print_r($conceptFilters, true)); - // Debug temporal: escribir a archivo para ver logs - $debugFile = __DIR__ . '/debug_concept_filters.log'; - $debugData = date('Y-m-d H:i:s') . "\n"; - $debugData .= "All GET params: " . print_r($_GET, true) . "\n"; - $debugData .= "House filters: " . print_r($houseFilters, true) . "\n"; - $debugData .= "Concept filters: " . print_r($conceptFilters, true) . "\n"; - $debugData .= "------------------------\n"; - file_put_contents($debugFile, $debugData, FILE_APPEND); // Determinar casas a filtrar para exportación if (empty($houseFilters) || in_array('all', $houseFilters)) { diff --git a/models/Report.php b/models/Report.php index 5e8679e..5a6657e 100755 --- a/models/Report.php +++ b/models/Report.php @@ -527,16 +527,8 @@ class Report { ORDER BY cc.name, h.number, cc.concept_date DESC "; - error_log("DEBUG - SQL Query: " . $query); - error_log("DEBUG - SQL Params: " . print_r($params, true)); - $results = $db->fetchAll($query, $params); - error_log("DEBUG - SQL Results count: " . count($results)); - if (count($results) > 0) { - error_log("DEBUG - First result sample: " . print_r($results[0], true)); - } - // Group by concept like the original method $debtors = []; $grandTotal = 0; diff --git a/views/reports/index.php b/views/reports/index.php index e231139..12080be 100755 --- a/views/reports/index.php +++ b/views/reports/index.php @@ -252,68 +252,68 @@ function exportWaterDebtorsPDF() {
Filtros
-
- - + + + -
- -
-
- - -
-
- -
- > - +
+ +
+
+ + +
+
+ +
+ > + +
+
- -
-
- -
- -
-
- -
-
- -
- > - -
- -
-
-
-
- - - Limpiar - -
-
- +
+ +
+
+ + +
+
+ +
+ > + +
+ +
+
+ +
+
+ + + Limpiar + +
+
+
@@ -384,12 +384,28 @@ function exportConceptDebtorsPDF() { const houseCheckboxes = document.querySelectorAll('input[name="filter_houses[]"]:checked'); const conceptCheckboxes = document.querySelectorAll('input[name="filter_concepts[]"]:checked'); - // Debug: mostrar qué checkboxes están marcados - const selectedHouses = Array.from(houseCheckboxes).map(cb => cb.value); - const selectedConcepts = Array.from(conceptCheckboxes).map(cb => cb.value); + // Filtrar: excluir 'all' si hay opciones específicas seleccionadas + let selectedHouses = Array.from(houseCheckboxes) + .map(cb => cb.value) + .filter(value => { + if (value === 'all') { + // Solo incluir 'all' si no hay otras opciones seleccionadas + return houseCheckboxes.length === 1; + } + return true; + }); + + let selectedConcepts = Array.from(conceptCheckboxes) + .map(cb => cb.value) + .filter(value => { + if (value === 'all') { + // Solo incluir 'all' si no hay otras opciones seleccionadas + return conceptCheckboxes.length === 1; + } + return true; + }); + - console.log('DEBUG - Selected houses:', selectedHouses); - console.log('DEBUG - Selected concepts:', selectedConcepts); let url = '/dashboard.php?page=reportes_actions&action=export_pdf_report&type=concept-debtors'; @@ -411,6 +427,61 @@ function exportConceptDebtorsPDF() { window.open(url, '_blank'); } +// Procesar formulario de filtros antes de enviar +document.addEventListener('DOMContentLoaded', function() { + const form = document.getElementById('conceptFiltersForm'); + if (form) { + form.addEventListener('submit', function(e) { + // Filtrar los valores antes de enviar + const houseCheckboxes = form.querySelectorAll('input[name="filter_houses[]"]:checked'); + const conceptCheckboxes = form.querySelectorAll('input[name="filter_concepts[]"]:checked'); + + // Limpiar valores existentes + const existingHouses = form.querySelectorAll('input[name="filter_houses[]"]'); + const existingConcepts = form.querySelectorAll('input[name="filter_concepts[]"]'); + + existingHouses.forEach(input => input.remove()); + existingConcepts.forEach(input => input.remove()); + + // Agregar solo los valores filtrados + let selectedHouses = Array.from(houseCheckboxes) + .map(cb => cb.value) + .filter(value => { + if (value === 'all') { + return houseCheckboxes.length === 1; + } + return true; + }); + + let selectedConcepts = Array.from(conceptCheckboxes) + .map(cb => cb.value) + .filter(value => { + if (value === 'all') { + return conceptCheckboxes.length === 1; + } + return true; + }); + + // Crear inputs hidden con los valores filtrados + selectedHouses.forEach(house => { + const input = document.createElement('input'); + input.type = 'hidden'; + input.name = 'filter_houses[]'; + input.value = house; + form.appendChild(input); + }); + + selectedConcepts.forEach(concept => { + const input = document.createElement('input'); + input.type = 'hidden'; + input.name = 'filter_concepts[]'; + input.value = concept; + form.appendChild(input); + }); + }); + } +}); + // Lógica para checkboxes de casas document.addEventListener('DOMContentLoaded', function() { const houseAllCheckbox = document.getElementById('house-all');