Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog ,
and this project adheres to Semantic Versioning .
[1.0.73] - 2024-11-13
Added
✨ Generación completa del Formulario 29 con todos los códigos tributarios
✨ Arquitectura modular con servicios independientes:
RCVService: Extracción de Registro de Compras y Ventas
F29Service: Códigos 048, 049, 756 del Formulario 29
BoletasService: Código 151 de Retención de Honorarios
✨ Código 151 - Retención de Honorarios desde Boletas Electrónicas ✅
✨ Código 756 - IVA Postergado desde F29 ✅
✨ Código 62 - PPM calculado al 2% de ventas ✅
✨ Código 50 - Remanente Acumulado con persistencia en Key-Value Store ✅
✨ Código 91 - Total a Pagar calculado automáticamente ✅
✨ Cálculo automático de Remanente del período N-1
✨ Formato "PRE IVA" con estructura completa para declaración
✨ Protección anti-modales para evitar bloqueos del SII
✨ Sesiones independientes por servicio para mayor robustez
✨ Logging detallado con timestamps en todos los procesos
Changed
🔄 Input simplificado : Solo requiere rut, password y periodo
Eliminado tipoRegistro (siempre extrae todo)
Eliminado remanente manual (se calcula automáticamente)
🔄 Output enriquecido : Incluye f29Completo y datosOriginales
🔄 Refactorización completa siguiendo Clean Architecture
🔄 Manejo de errores mejorado con códigos específicos
🔄 Validación de inputs con Zod actualizada
Fixed
🐛 Cálculo correcto de Notas de Crédito (valor negativo)
🐛 Aplicación correcta del Remanente en IVA Determinado
🐛 Manejo de modales de "cargando" del SII
🐛 Extracción de DIN solo en compras
🐛 Cálculo de período anterior (N-1 vs N-2)
🐛 Parsing de valores monetarios con JavaScript dinámico
In Progress
⚠️ Código 048 - Impuesto Único 2da Categoría (90% funcional, en standby)
⚠️ Código 049 - Retención 3% (90% funcional, en standby)
Technical Details
TypeScript 5.3+ con strict mode
Playwright para automatización
Apify SDK 3.x
Zod para validación
Retry loops con esperas progresivas
Búsqueda en iframes y frames dinámicos
Manejo de contenido JavaScript generado
[1.0.0] - 2024-11-10
Added
✨ Autenticación automática en el SII con RUT y Clave Tributaria
✨ Extracción de Registro de Compras
✨ Extracción de Registro de Ventas
✨ Cálculo automático de resúmenes de IVA (débito, crédito, diferencia)
✨ Validación de RUT chileno con dígito verificador
✨ Soporte para selección de período tributario (formato YYYYMM)
✨ Manejo robusto de errores con códigos específicos
✨ Screenshots automáticos en caso de error para debugging
✨ Soporte para proxies (especialmente chilenos)
✨ Logging detallado con timestamps
✨ Tipos TypeScript completos para toda la estructura de datos
✨ Validación de inputs con Zod
📝 Documentación completa (README, QUICKSTART, INTEGRATION, DEPLOYMENT)
🧪 Ejemplos de integración con NestJS, React y API pura
🐳 Dockerfile optimizado para Apify
⚙️ Configuración de Actor con input schema
Technical Details
TypeScript 5.3+ con modo strict
Playwright para automatización del navegador
Apify SDK 3.x para integración con la plataforma
Zod para validación de schemas
Clean Architecture y principios SOLID
Error handling comprehensivo
Locale configurado a es-CL y timezone America/Santiago
Documentation
README principal con guía completa
QUICKSTART para empezar en 5 minutos
INTEGRATION con ejemplos de NestJS, React, Python
DEPLOYMENT con 3 métodos diferentes
PROJECT_STRUCTURE con arquitectura detallada
7 ejemplos de código listos para usar
[Unreleased]
Planned Features
Corto Plazo (Q1 2025)
Completar Código 048 (Impuesto Único 2da Categoría)
Completar Código 049 (Retención 3%)
Exportación directa a PDF del Formulario 29
Tests automatizados (unit + e2e)
CI/CD con GitHub Actions
Dashboard web de visualización de resultados
Comparación de períodos múltiples
Gráficos de evolución de IVA
Alertas cuando IVA supera cierto monto
Exportación a Excel con formato SII oficial
Largo Plazo (Q3-Q4 2025)
Integración con sistemas contables (Contabilium, Defontana, etc.)
Integración con Telegram/WhatsApp para notificaciones
Soporte para múltiples RUTs en una sola ejecución
API REST standalone (sin depender de Apify)
Soporte para Formulario 50 (Declaración Anual de Renta)
Soporte para CAPTCHA resolution automática
Cache de resultados con Redis
Retry automático con backoff exponencial
Webhooks para notificaciones de completitud
Machine Learning para detectar anomalías en IVA
Known Issues
⚠️ Código 048: El link del folio puede tardar hasta 90s en aparecer (en investigación)
⚠️ Código 049: Mismo issue que 048
⚠️ Proxies: Los proxies gratuitos a veces son bloqueados por el SII
Breaking Changes (None in 1.x)
La versión 1.x mantendrá compatibilidad retroactiva
Cualquier breaking change será versionado como 2.0.0
Versioning Strategy
Este proyecto sigue Semantic Versioning :
MAJOR (X.0.0): Cambios incompatibles en la API
MINOR (0.X.0): Nueva funcionalidad compatible hacia atrás
PATCH (0.0.X): Correcciones de bugs compatibles
latest: Última versión estable
beta: Versión en pruebas
dev: Rama de desarrollo
Migration Guides
From 1.0.0 to 1.0.73
Input Changes:
{
"rut": "76515462-6",
"password": "tu_clave",
"periodo": "202510",
- "tipoRegistro": "ambos", // Ya no necesario
- "remanente": 0 // Ya no necesario (se calcula auto)
}
Output Changes:
{
+ "f29Completo": { // Nuevo: Formulario 29 completo
+ "periodo": "10-2025",
+ "Ventas": { ... },
+ "Compras": { ... }
+ },
"datosOriginales": { // Renombrado de resultado anterior
"periodo": "202510",
"compras": [...],
"ventas": [...]
}
}
Code Migration:
const resultado = items [ 0 ] ;
const totalVentas = resultado . resumen . totalVentas ;
const resultado = items [ 0 ] ;
const totalVentas = resultado . f29Completo . Ventas [ 'Codigo 538' ] . valor ;
const totalAPagar = resultado . f29Completo . Compras [ 'Codigo 91' ] . valor ;
Para ver el detalle de cada versión, visita GitHub Releases .
¿Encontraste un bug? Reporta un issue