ALIANPOS V9.8.0
QA — CORREO TRANSACCIONAL, RECEPCIÓN IMAP Y NEWSLETTER
Fecha: 2026-09-14

ESTADO ESTÁTICO
[OK] 171 archivos PHP validados con php -l.
[OK] No quedan envíos directos con mail() fuera de CentralMailService.
[OK] SMTP central con HTML/texto, CC/BCC, Reply-To y adjuntos.
[OK] TLS SMTP validado por defecto.
[OK] HTTPS de API fiscal/Hacienda valida certificados por defecto.
[OK] Sin contraseñas SMTP hardcodeadas detectadas en código.
[OK] Contraseña IMAP cifrada mediante APP_KEY / AES-256-GCM.
[OK] XML recibido procesado con LIBXML_NONET.
[OK] Límite de tamaño para adjuntos de correo.
[OK] Deduplicación de XML por clave/hash.
[OK] Deduplicación de mensajes recibidos por cuenta + UID.
[OK] Mutex de documento fiscal para evitar correo doble por webhook/consulta simultánea.
[OK] Mutex por campaña newsletter.
[OK] Mutex por buzón de sucursal.
[OK] Mutex por reporte automático/período.
[OK] Recuperación de contraseña mediante token hash, vencimiento y uso único.
[OK] Cambio de correo mediante confirmación tokenizada al nuevo correo.
[OK] Newsletter requiere consentimiento por cliente y permite baja firmada.

CHECKLIST DE PRODUCCIÓN

A. SMTP
[ ] MAIL_FROM_ADDRESS pertenece al dominio autenticado.
[ ] MAIL_SMTP_HOST correcto.
[ ] Puerto correcto.
[ ] TLS/SSL correcto.
[ ] Usuario/contraseña correctos.
[ ] MAIL_SMTP_VERIFY_PEER=true.
[ ] Prueba desde Admin > Configuración llega a bandeja destino.
[ ] SPF válido.
[ ] DKIM válido.
[ ] DMARC publicado.
[ ] Probar recepción en Gmail.
[ ] Probar recepción en Outlook/Hotmail si es un destino habitual.

B. SEGURIDAD DE CUENTA
[ ] Solicitar recuperación para cuenta existente.
[ ] Verificar que la pantalla nunca muestre el token.
[ ] Confirmar que el enlace vence.
[ ] Confirmar que un enlace usado no se reutiliza.
[ ] Confirmar notificación posterior al cambio de contraseña.
[ ] Cambiar correo desde Mi perfil.
[ ] Confirmar mensaje al correo nuevo.
[ ] Confirmar aviso al correo anterior.
[ ] Confirmar cierre de otras sesiones después del cambio.

C. FACTURACIÓN
[ ] Emitir FE aceptada con cliente que tenga correo.
[ ] Verificar PDF adjunto.
[ ] Verificar XML firmado adjunto.
[ ] Verificar XML de respuesta adjunto cuando esté disponible.
[ ] Repetir con NC.
[ ] Repetir con ND.
[ ] Probar reenvío manual.
[ ] Confirmar correo_enviado_en.
[ ] Confirmar correo_destinatario.
[ ] Confirmar correo_intentos.
[ ] Simular error SMTP y confirmar correo_ultimo_error.
[ ] Ejecutar simultáneamente webhook/consulta sobre el mismo documento y confirmar que no haya doble correo.

D. NÓMINA
[ ] Procesar nómina.
[ ] Generar boleta PDF.
[ ] Enviar al colaborador.
[ ] Confirmar PDF recibido.
[ ] Confirmar correo_enviado_en.
[ ] Confirmar intentos/error en caso de fallo.

E. REPORTES
[ ] Enviar reporte manual PDF.
[ ] Enviar reporte manual XLSX.
[ ] Enviar PDF + XLSX.
[ ] Probar CC.
[ ] Ejecutar dos cron de reportes en paralelo y confirmar un solo envío por período.

F. NEWSLETTER
[ ] Cliente sin consentimiento no aparece como destinatario.
[ ] Cliente con consentimiento sí aparece.
[ ] Campaña solo toma sucursales de la marca seleccionada.
[ ] Enviar campaña pequeña de prueba.
[ ] Confirmar From de la cuenta SMTP y nombre visible de marca.
[ ] Confirmar enlace de baja.
[ ] Confirmar newsletter_opt_in=0 después de la baja.
[ ] Confirmar que la baja no afecta correos fiscales/operativos.
[ ] Ejecutar dos workers simultáneos y confirmar que no duplican destinatarios.

G. RECEPCIÓN IMAP
[ ] Extensión PHP IMAP habilitada en web.
[ ] Extensión PHP IMAP habilitada en CLI.
[ ] Guardar cuenta IMAP en Configuración.
[ ] Confirmar que password_enc no contiene la contraseña legible.
[ ] Probar conexión.
[ ] Enviar correo con XML válido + PDF.
[ ] Sincronizar manualmente.
[ ] Confirmar registro en correo_recepcion_mensajes.
[ ] Confirmar documento en recepcion_documentos.
[ ] Confirmar PDF almacenado.
[ ] Reenviar el mismo correo/XML y confirmar duplicado.
[ ] Probar correo sin XML.
[ ] Probar adjunto con extensión XML pero contenido inválido.
[ ] Probar archivo mayor al límite.
[ ] Ejecutar dos sincronizaciones simultáneas y confirmar que solo una procesa el buzón.

H. MENSAJE RECEPTOR / PROVEEDOR
[ ] Aceptación total.
[ ] Aceptación parcial con detalle.
[ ] Rechazo con detalle.
[ ] Confirmar envío hacia el motor fiscal.
[ ] Confirmar estado/error retornado almacenado.
[ ] Confirmar notificación al correo del emisor extraído del XML.
[ ] Confirmar XML recibido como adjunto.
[ ] Confirmar XML de mensaje receptor cuando la API lo devuelve.
[ ] Probar reenvío al proveedor.
[ ] Simular fallo SMTP y confirmar proveedor_notificacion_error.

I. CRON
[ ] correo-compras.php ejecuta con PHP CLI correcto.
[ ] newsletter.php ejecuta con PHP CLI correcto.
[ ] reportes-contables.php ejecuta con PHP CLI correcto.
[ ] Revisar logs después de 24 horas.

LIMITACIONES DE ESTA ENTREGA

La validación realizada en el entorno de desarrollo es estática. No se dispuso de las credenciales SMTP/IMAP reales, extensiones PHP completas del servidor productivo ni acceso a la API fiscal/Hacienda de producción; por eso los puntos de conectividad deben validarse en el servidor siguiendo este checklist.
