# Instalaciones CRM PerfectPool — Board de Sprints

> Fuente de verdad del progreso. Actualizar al cierre de cada sesión.
> Estados: ⬜ pendiente · 🔵 en progreso · ✅ hecho · ❌ descartado

## Sprint 0 — Base del proyecto

| ID | Ticket | Estado | Notas |
|----|--------|--------|-------|
| INST-001 | Indicaciones del proyecto (`00_INDICACIONES_PROYECTO.md`) | ✅ | Flujo OT definido |
| INST-002 | Scaffold (docs/, web/, scripts/, inventory/, legacy/) + estética compartida | ✅ | styles.css reusado de Control |
| INST-003 | `.gitignore` (legacy, secretos, evidencias/PDFs) | ✅ | |
| INST-004 | Crear repo `instalaciones-crm-perfectpool` en GitHub | ⬜ | Igual que Control (guía) |
| INST-005 | Subir primer lote a `legacy/` (logística + PDF OT) | ⬜ | Espera archivos de Héctor |

## Sprint 1 — Revisión programación de logística

| ID | Ticket | Estado | Notas |
|----|--------|--------|-------|
| INST-101 | Revisar `legacy/despachos/` (base reutilizable) | ✅ | Ver `docs/HALLAZGOS_DESPACHO_Y_OT.md` |
| INST-102 | Documentar acceso al Webservice vTiger + módulos | ✅ | SalesOrder, Accounts, Documents (create+relate), PHPMailer |
| INST-103 | Definir modelo de datos y formulario de la OT | ✅ | Ver `docs/MODELO_OT.md` (plantilla única factibilidad ecosolar) |
| INST-104 | Confirmar mapeo de campos vTiger | ✅ | ship_street, ship_city, cf_1030, cf_900, Users.email1 |
| INST-105 | Esquema BD del módulo OT (ot, ot_fotos, ot_opciones editables) | ✅ (código) | `scripts/db/migracion_01_ot.sql` |

## Sprint 2 — Esqueleto del módulo OT

| ID | Ticket | Estado | Notas |
|----|--------|--------|-------|
| INST-201 | Capa de conexión (BD local + CRM) e includes | ✅ | `web/modules/ot/inc/` (db, crm, auth, layout) |
| INST-202 | Login del técnico (ot_usuarios) + `crear_usuario.php` | ✅ | bcrypt + CSRF |
| INST-203 | "Mis visitas": listado de SalesOrder ecosolar desde el CRM | ✅ | query confirmada con esquema real |
| INST-204 | Formulario de OT por secciones (borrador/completa) | ✅ | `ot_form.php` data-driven + autocompletado + kWp calculado |
| INST-205 | Fotos por sección (subida local + galería + borrar) | ✅ | `inc/fotos.php`, GD resize |
| INST-206 | PDF de la OT (Perfect Pool, secciones + fotos) | ✅ | `pdf.php` (Dompdf; fallback HTML imprimible) |
| INST-207 | Subir PDF/fotos al CRM (Webservice API) | ✅ | `inc/vtiger_api.php` (login+create Documents+relate) |
| INST-208 | Correo al vendedor con CC técnico (PHPMailer) | ✅ | `inc/mailer.php` + `enviar.php` (PDF adjunto) |
| INST-209 | Requisito: Dompdf para PDF real | ⬜ | `composer require dompdf/dompdf` en el servidor |

## Hitos de validación
- **Hito 1:** el técnico ve sus visitas asignadas desde el CRM.
- **Hito 2:** una OT completa genera PDF, se sube al CRM y se envía por correo.
