2. Estimacion Berit - HITO 1: MVP Formulario 606

Documentación relacionada:


🎯 Alcance del Hito 1

Objetivo: Sistema funcional de Gastos (Formulario 606) desde la recepción de datos procesados hasta la generación del archivo TXT para DGII.

Enfoque MVP:

  • Base de datos multi-tenant
  • Maestro de clientes
  • Gestión de contactos y ciclos
  • Integración con PREX (recibe datos ya procesados vía API)
  • Interfaz de auditoría para validación final
  • Validaciones de gastos fijos
  • Resumen 606 con fórmulas
  • Generación TXT para DGII
  • Dashboard básico

Duración: 3 sprints (6 semanas) | Story Points: ~130

Nota: Auth ya implementado (Jetstream + Filament + roles)


Sprint 1 (2 semanas): Setup, BD y Maestro de Clientes

Inicio: 2025-01-13 | Fin: 2025-01-24 Story Points: 42

1.1 Setup Inicial [8 SP]

  • [2] Crear repositorio GitHub ➕ 2025-01-13
  • [2] Setup Laravel + PostgreSQL ➕ 2025-01-13
  • [5] Instalar dependencias ➕ 2025-11-23
    • Spatie Media Library
    • Laravel Excel
    • DomPDF
  • [3] Configurar ambiente desarrollo ➕ 2025-11-24
    • Configurar colas

1.2 Base de Datos [18 SP]

  • [13] Crear todas las migraciones ➕ 2025-01-15
    • Tabla tenants (sistema multi-tenant)
    • Tablas core: empresas, ciclo, tipos_documentos, contactos
    • Tabla gastos (30+ campos del 606)
    • Tabla gastos_fijos (para validaciones)
    • Tablas auxiliares: formas_de_pago, tipos_bienes_servicios
    • Índices críticos en tenant_id, empresa_id, ciclo_id
  • [5] Seeders catálogos DGII ➕ 2025-01-17
    • Tipos documentos, formas de pago
    • Tipos de bienes y servicios comprados

1.3 Multi-Tenant [5 SP]

  • [3] Global scope + middleware ➕ 2025-01-19
    • TenantScope con filtrado automático por tenant_id
    • Middleware SetTenantFromAuth
    • Trait TenantScoped para modelos
  • [2] Tests aislamiento ➕ 2025-01-20
    • Verificar que queries filtran por tenant_id
    • Verificar auto-asignación de tenant_id

1.4 Maestro de Clientes [11 SP]

  • [8] Filament Resource empresas ➕ 2025-01-21
    • Campos básicos: RNC, nombre, tipo_cliente, nivel_facturación
    • Servicios (checkboxes): DGII, Anticipos, IR-17
    • Tab “Gastos Fijos”: tabla con RNC proveedor + tipo gasto
    • Aplicar TenantScoped trait
  • [3] CRUD gastos fijos ➕ 2025-01-23
    • Vincular proveedor (contacto) + tipo de gasto
    • Activar/desactivar gastos fijos

Entregable Sprint 1: BD funcional + Maestro de clientes operativo + Multi-tenancy implementado


Sprint 2 (2 semanas): Integración PREX y Auditoría

Inicio: 2025-01-27 | Fin: 2025-02-07 Story Points: 46

2.1 Contactos y Ciclos [8 SP]

  • [5] Filament Resource contactos ➕ 2025-01-27
    • CRUD básico: RNC, nombre, tipo_documento
    • Importación masiva desde Excel
    • Aplicar TenantScoped trait
  • [3] API ciclos fiscales ➕ 2025-01-29
    • Generación automática mensual (año + mes)
    • Identificador: “202501”
    • Validaciones: warning día 10, bloqueo día 20

2.2 API para Recibir de PREX [13 SP]

  • [8] Endpoint POST /api/prex/import-gastos ➕ 2025-01-30
    • Validar API Key en header X-ORDEN-API-KEY
    • Validar estructura del payload JSON
    • Validar que empresa pertenece al tenant
    • Crear registros en tabla gastos:
      • origen = ‘prex’
      • prex_factura_id (solo referencia)
      • voucher_url (link al PDF en PREX)
      • estado = ‘pendiente_revision’
    • Matching automático con contactos por RNC
    • Crear contacto si no existe
    • Retornar: {success: true, gastos_creados: [ids]}
  • [3] Middleware de autenticación API ➕ 2025-02-01
    • ValidatePrexApiKey middleware
    • Verificar API Key contra empresas.prex_api_key
  • [2] Tests de integración ➕ 2025-02-02
    • Test payload válido
    • Test API Key inválida
    • Test datos duplicados

2.3 Interfaz de Auditoría [21 SP]

  • [8] Layout 2 columnas ➕ 2025-02-03
    • Voucher original (iframe desde voucher_url)
    • Controles: Zoom, navegación anterior/siguiente
    • Contador: “Factura 5/23”
    • Filtros: por estado, por empresa, por ciclo
  • [8] Form editable + auto-save ➕ 2025-02-05
    • Inputs para todos los campos del gasto
    • Auto-save al cambiar campo (debounce 500ms)
    • Indicador visual: campo modificado (badge amarillo)
    • Validaciones en tiempo real:
      • NCF: formato + no duplicado
      • RNC: 11 dígitos
      • Fechas: lógicas (pago >= comprobante)
      • Cálculos: total = monto + ITBIS
    • Mensajes de error inline
  • [5] Sistema de aprobación ➕ 2025-02-07
    • Estados: pendiente_revision, en_revision, aprobado, rechazado
    • Botones: Aprobar, Rechazar, Aprobar todos
    • Roles: Oficial edita, Supervisor aprueba
    • Log de cambios (quién modificó qué)

2.4 Validaciones de Gastos Fijos [4 SP]

  • [3] Service: ValidadorGastosFijosService ➕ 2025-02-07
    • Al aprobar → comparar gastos vs gastos_fijos del cliente
    • Generar alertas si faltan gastos esperados
    • Retornar lista de gastos faltantes
  • [1] UI alertas en auditoría ➕ 2025-02-07
    • Banner: “Faltan 2 gastos fijos esperados”
    • Lista: Luz (EDENORTE), Renta (INMOBILIARIA X)

Entregable Sprint 2: Integración completa con PREX + Interfaz de auditoría funcional


Sprint 3 (2 semanas): Resumen 606, TXT y Dashboard

Inicio: 2025-02-10 | Fin: 2025-02-21 Story Points: 42

3.1 Resumen 606 [18 SP]

  • [5] Documentar fórmulas del Excel ➕ 2025-02-10
    • Obtener Excel 606 de Berit
    • Mapear cada celda del “Resumen 606”
    • Identificar todas las fórmulas Excel
    • Traducir a lógica PHP
  • [13] Service: Resumen606Service ➕ 2025-02-12
    • Agrupaciones por tipo de gasto (01-09):
      • 01: Gastos de personal
      • 02: Gastos por trabajos, suministros y servicios
      • 09: Costo de venta (compras)
    • Agrupaciones por NCF (B01, B11, B13, B14, B15)
    • Cálculos especiales:
      • Compras gravadas vs exentas
      • ITBIS adelantar vs ITBIS costo
      • Retenciones (ITBIS, ISR)
    • Validaciones cruzadas: suma de tipos = Total general
    • Tests unitarios de cálculos

3.2 Generación TXT [11 SP]

  • [3] Documentar formato oficial DGII ➕ 2025-02-15
    • Obtener especificaciones TXT 606 de DGII
    • Estructura: header, líneas detalle, footer
    • Longitud campos, decimales, formato fechas
  • [8] Service: Generador606TxtService ➕ 2025-02-16
    • Generar header (datos empresa, período)
    • Formatear cada gasto aprobado como línea
    • Padding, decimales correctos
    • Fechas en formato YYYYMMDD
    • Generar footer (totales, cantidad registros)
    • Validar longitud de cada línea
    • Endpoint: POST /api/reportes/606/generar-txt
    • Retornar archivo TXT para descarga

3.3 Unificar Vouchers en PDF [5 SP]

  • [5] Servicio de consolidación ➕ 2025-02-18
    • Obtener todas las voucher_urls de gastos aprobados
    • Usar FPDI o similar para merge PDFs
    • Orden cronológico por fecha_comprobante
    • Endpoint: POST /api/reportes/606/unificar-vouchers
    • Retornar PDF unificado para descarga

3.4 Dashboard Básico [8 SP]

  • [5] Dashboard gastos ➕ 2025-02-19
    • Selector de ciclo (mes/año)
    • Cards: Total gastos, ITBIS, # facturas, # pendientes revisión
    • Gráfico: Evolución gastos (últimos 6 meses)
    • Gráfico: Top 10 proveedores del mes
    • Tabla: Resumen por tipo de gasto
  • [3] Filtros y exportación ➕ 2025-02-20
    • Filtros: fecha, proveedor, monto, estado
    • Exportar a Excel (listado completo de gastos)
    • Exportar resumen 606 a Excel

Entregable Sprint 3: Sistema completo funcional + TXT 606 listo para DGII


📊 Resumen del Hito 1

SprintEnfoqueStory PointsDuración
Sprint 1Setup + BD + Multi-Tenant + Maestro Clientes422 semanas
Sprint 2Integración PREX + Auditoría462 semanas
Sprint 3Resumen 606 + TXT + Dashboard422 semanas
TOTALMVP Funcional130 SP6 semanas

🎯 Milestones Clave

  • Semana 2 (24-ene): ✅ Multi-tenancy + Maestro de clientes
  • Semana 4 (07-feb): ✅ PREX integrado + Auditoría funcional
  • Semana 6 (21-feb): ✅ Resumen 606 + TXT para DGII

🔄 División de Trabajo: Andrés vs Jeisson

Andrés (Laravel/Filament):

  • Base de datos completa con multi-tenancy
  • Maestro de clientes
  • Contactos y ciclos
  • API para recibir datos de PREX (POST /api/prex/import-gastos)
  • Interfaz de auditoría completa
  • Validaciones de gastos fijos
  • Resumen 606 con fórmulas
  • Generación TXT DGII
  • Dashboard

Jeisson (PREX - Sistema independiente):

  • Sistema completo PREX con prex_db
  • OCR de vouchers (Tesseract)
  • Extracción con IA (Claude API)
  • Interfaz de validación en PREX
  • API Client para exportar a ORDEN
  • Testing de precisión (objetivo: ≥85%)

Ver: Tareas completas de Jeisson


📋 Formato del Payload de PREX a ORDEN

{
  "ciclo_id": "202501",
  "gastos": [
    {
      "prex_factura_id": 123,
      "rnc": "12345678901",
      "nombre_proveedor": "EDENORTE DOMINICANA",
      "ncf": "B01-00000123",
      "fecha_comprobante": "2025-01-15",
      "fecha_pago": "2025-01-15",
      "monto_facturado": 1000.00,
      "itbis_facturado": 180.00,
      "total_factura": 1180.00,
      "forma_pago": "efectivo",
      "tipo_bien_servicio_comprado_id": 2,
      "voucher_url": "https://prex.app/vouchers/empresa_1/202501/factura_123.pdf"
    }
  ]
}

Headers requeridos:

Content-Type: application/json
X-ORDEN-API-KEY: {api_key_del_cliente}

⚠️ Supuestos Clave

  1. PREX de Jeisson entrega datos ya procesados y validados
  2. Fórmulas del Excel 606 de Berit están disponibles para documentar
  3. Especificaciones TXT DGII están disponibles en sitio web DGII
  4. Desarrollo con IA (Claude, Cursor) acelera ~40%

🚀 Siguiente Hito

Hito 2: Formulario 607 (Ingresos)

  • Duración estimada: 2-3 sprints (4-6 semanas)
  • Aprovecha toda la base del 606
  • Flujo: Importación Excel → Ajustes → Generación 607 + TXT

🔗 Integración PREX ↔ ORDEN

Flujo de Datos:

1. Usuario sube vouchers en PREX
2. PREX procesa (OCR + IA)
3. Usuario valida/corrige en PREX
4. Usuario aprueba facturas en PREX
5. Usuario da click "Exportar a ORDEN"
6. PREX → POST /api/prex/import-gastos → ORDEN
7. ORDEN recibe y guarda en tabla gastos (estado: pendiente_revision)
8. Personal de Berit revisa en interfaz de auditoría ORDEN
9. Personal aprueba gastos
10. Sistema valida gastos fijos
11. Sistema genera Resumen 606
12. Sistema genera TXT para DGII

Arquitectura:

prex_db (PREX)          →  REST API  →       orden_db (ORDEN)
- facturas_prex                              - gastos
- datos_extraidos                              * origen: 'prex'
                                               * prex_factura_id: 123
                                               * voucher_url: https://...

IMPORTANTE:

  • No hay Foreign Keys entre bases de datos
  • gastos.prex_factura_id es solo una referencia numérica
  • gastos.voucher_url permite visualizar PDF original desde ORDEN

📝 Notas Técnicas

Multi-Tenancy:

// Modelo base con TenantScoped
class Empresa extends Model
{
    use TenantScoped;
    
    protected $fillable = ['tenant_id', 'nombre', 'rnc'];
}
 
// Queries automáticamente filtradas
$empresas = Empresa::all(); 
// SELECT * FROM empresas WHERE tenant_id = 1

API de Integración:

// routes/api.php
Route::post('/prex/import-gastos', [PrexIntegrationController::class, 'importGastos'])
    ->middleware('auth.prex.api');
 
// Middleware valida API Key
class ValidatePrexApiKey
{
    public function handle($request, Closure $next)
    {
        $apiKey = $request->header('X-ORDEN-API-KEY');
        $empresa = Empresa::where('prex_api_key', $apiKey)->first();
        
        if (!$empresa) {
            return response()->json(['error' => 'Invalid API Key'], 401);
        }
        
        // Setear tenant para esta request
        auth()->setUser($empresa->users()->first());
        
        return $next($request);
    }
}

✅ Definition of Done por Sprint

Sprint 1:

  • Migraciones ejecutadas sin errores
  • Seeders poblaron catálogos
  • Multi-tenancy probado (2 tenants aislados)
  • Maestro de clientes CRUD funcional
  • Gastos fijos configurables

Sprint 2:

  • Endpoint /api/prex/import-gastos funcional
  • Tests de integración pasando
  • Interfaz auditoría muestra vouchers de PREX
  • Auto-save funcionando
  • Sistema de aprobación operativo
  • Validador de gastos fijos detecta faltantes

Sprint 3:

  • Resumen 606 calcula correctamente (comparar con Excel)
  • TXT 606 genera en formato DGII válido
  • PDF unificado de vouchers descargable
  • Dashboard muestra métricas correctas
  • Sistema completo probado end-to-end

🎓 Recursos de Referencia


Features Pospuestos para Hito 2:

  • ❌ Formulario 607 (Ingresos)
  • ❌ Elite 1 y Anexo A
  • ❌ Métricas detalladas por empleado
  • ❌ Sistema completo notas/CRM
  • ❌ Autorizaciones de pago automáticas
  • ❌ Gestión NCF completa