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
@@ -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');