# Guía de Impresión de Boletas APR

## ✅ Sistema Completamente Implementado y Corregido

El sistema de impresión de boletas está completamente funcional con todas las características del sistema legacy, incluyendo:

- ✅ Generación de PDFs individuales y masivos
- ✅ Marca de agua "MiAPR" idéntica al sistema legacy
- ✅ Impresión directa desde el navegador
- ✅ Descarga de archivos ZIP con múltiples boletas
- ✅ Filtrado por sector y período
- ✅ Cálculo completo de tarifas y subsidios
- ✅ **CORREGIDO**: Error de base de datos con `numero_medidor`

## 🔧 Correcciones Aplicadas

## 🔧 Correcciones Aplicadas

### Errores de Base de Datos Solucionados ✅
1. **Problema**: `Unknown column 'b.numero_medidor' in 'field list'`
   - **Causa**: Campo `numero_medidor` está en tabla `clientes`, no en `boletas`
   - **Solución**: Cambiado a `c.numero_medidor`

2. **Problema**: `Unknown column 'c.rut' in 'field list'`
   - **Causa**: Campo se llama `rut_cliente`, no `rut`
   - **Solución**: Cambiado a `c.rut_cliente`

3. **Problema**: Columnas incorrectas en tabla `datos_apr`
   - **Causa**: Nombres de columnas incorrectos
   - **Solución**: Corregidos a:
     - `da.Nombre_servicio` (no `nombre_institucion`)
     - `da.rut_servicio` (correcto)
     - `da.Direccion` (no `direccion`)
     - `da.telefono_oficina` (correcto)

4. **Problema**: JOIN incorrecto con tabla `comunas`
   - **Causa**: Nombres de columnas de JOIN incorrectos
   - **Solución**: Corregido a `da.Id_comunas = co.Id_comunas`
   - **Columna**: `co.nombre_comuna` (no `nombre`)

5. **Problema**: `Unknown column 'ci.nombre' in 'field list'`
   - **Causa**: Tabla `ciudades` tiene columnas diferentes
   - **Solución**: Corregidos a:
     - JOIN: `c.ciudad = ci.Id_ciudades` (no `Id_ciudad`)
     - Columna: `ci.nombre_ciudad` (no `nombre`)

6. **Problema**: JOIN incorrecto con tabla `sectores`
   - **Causa**: Nombre de columna de JOIN incorrecto
   - **Solución**: Corregido a `c.sector = s.id_sector` (no `Id_sector`)

7. **Problema**: `Unknown column 'da.email' in 'field list'`
   - **Causa**: Columna `email` no existe en tabla `datos_apr`
   - **Solución**: Removida columna inexistente `da.email`

8. **Problema**: `Unknown column 'c.ciudad' in 'on clause'`
   - **Causa**: Columna se llama `id_ciudad`, no `ciudad`
   - **Solución**: Corregido JOIN a `c.id_ciudad = ci.Id_ciudades`

9. **Problema**: `Table '071_bsaires.tramos' doesn't exist`
   - **Causa**: No existe tabla `tramos`, las tarifas están en `detalle_tipo_caneria`
   - **Solución**: Implementado sistema de tarifas basado en estructura legacy real

### Archivos Corregidos:
- `aprSolo/src/app/api/reportes/boletas-pdf/route.ts`
- `aprSolo/src/app/api/facturacion/[id]/pdf/route.ts`

### Errores de Compilación Solucionados
- **Problema**: Caracteres especiales en JSX (`>` en "Tramo 3 (>50 m³)")
- **Solución**: Cambiado a `&gt;` para compatibilidad JSX
- **Problema**: Propiedad CSS `display: 'table'` no válida en React-PDF
- **Solución**: Removida propiedad no compatible

## 🚀 Cómo Usar el Sistema

### 1. Iniciar el Servidor de Desarrollo

```bash
cd aprSolo
npm run dev
```

El servidor estará disponible en: http://localhost:3000

### 2. Opciones de Impresión Disponibles

#### A) Impresión Individual
1. Ve a **Facturación** → **Consultar Boletas**
2. Busca la boleta específica
3. Haz clic en **Ver Detalle**
4. Opciones disponibles:
   - **Imprimir Directo**: Imprime directamente desde el navegador
   - **Descargar PDF**: Descarga un PDF con marca de agua MiAPR

#### B) Impresión Masiva por Sector
1. Ve a **Reportes** → **Boletas por Período**
2. Selecciona mes y año
3. En cada sector verás:
   - **Ver**: Lista detallada de boletas
   - **Imprimir**: Página optimizada para impresión masiva
   - **PDF**: Descarga ZIP con todas las boletas del sector

#### C) Generación Masiva de PDFs
1. Ve a **Reportes** → **Generador Masivo**
2. Selecciona período y sector (opcional)
3. Haz clic en **Generar PDFs**
4. Se descargará un archivo ZIP con todas las boletas

### 3. Características Técnicas

#### Marca de Agua MiAPR
- Patrón de 6x3 repeticiones
- Rotación de -45 grados
- Opacidad baja (0.08-0.15)
- Idéntica al sistema legacy

#### Formatos de Salida
- **PDF**: Usando React-PDF con formato profesional
- **Impresión Web**: HTML optimizado para impresión
- **ZIP**: Múltiples PDFs comprimidos

#### Cálculos Implementados
- Tarifas por tramos de consumo
- Subsidios automáticos
- Cargos fijos y variables
- Multas por atraso
- Saldos anteriores

## 📋 Funcionalidades Disponibles

### Páginas del Sistema
- `/facturacion` - Gestión de boletas individuales
- `/reportes/boletas` - Reportes por período
- `/facturacion/imprimir/[sector]` - Impresión masiva por sector

### APIs Implementadas
- `GET /api/facturacion/[id]/pdf` - Datos para PDF individual
- `POST /api/reportes/boletas-pdf` - Generación masiva de PDFs
- `GET /api/facturacion/estadisticas` - Estadísticas generales

### Componentes Clave
- `BoletaPDF.tsx` - Generación de PDFs con React-PDF
- `BoletaImpresion.tsx` - Versión optimizada para impresión web
- `BoletaPreview.tsx` - Vista previa con marca de agua
- `GeneradorBoletasMasivo.tsx` - Herramienta de generación masiva

## 🔧 Configuración de Impresión

### Configuración del Navegador
Para mejores resultados de impresión:
1. **Chrome/Edge**: Configurar como "Más opciones" → "Gráficos de fondo"
2. **Firefox**: "Imprimir fondos" en opciones de impresión
3. **Formato**: A4, márgenes mínimos

### Configuración de Impresora
- **Papel**: A4 (210 x 297 mm)
- **Orientación**: Vertical
- **Calidad**: Normal o Alta
- **Color**: Escala de grises (la marca de agua es muy sutil)

## 📊 Estadísticas y Reportes

El sistema incluye:
- Resumen por sector con totales
- Estadísticas de consumo promedio
- Conteo de boletas por período
- Totales de facturación

## 🛠️ Solución de Problemas

### Si no se ve la marca de agua:
1. Verificar que los gráficos de fondo estén habilitados
2. Actualizar la página
3. Probar con otro navegador

### Si los PDFs no se generan:
1. Verificar que jszip esté instalado: `npm list jszip`
2. Reiniciar el servidor de desarrollo
3. Verificar la consola del navegador por errores

### Si la impresión se ve mal:
1. Usar "Vista previa de impresión" antes de imprimir
2. Ajustar márgenes a "Mínimos"
3. Verificar que el papel esté configurado como A4

## 📞 Soporte

El sistema replica exactamente la funcionalidad del sistema legacy Scriptcase 8, incluyendo:
- Misma estructura de datos
- Mismos cálculos de tarifas
- Misma marca de agua MiAPR
- Mismo formato de boletas

¡El sistema está listo para usar en producción!