Base de datos ArcorGev5Reparto

Convención D_ / E_ / I_ y reglas de lectura

Base de datos ArcorGev5Reparto — Modelo de tablas y reglas de lectura

Documento de referencia para desarrollo del ArcorTruck BackOffice Web cuando se conecta a la base operativa del cliente (copia de producción restaurada desde .bak).

Base: ArcorGev5Reparto
Motor: SQL Server
Conexión desde el host (Docker): localhost,14333 · usuario sa (solo entorno demo)


1. Resumen ejecutivo

La base agrupa varios conjuntos de tablas con roles distintos. Para el backoffice (reportes, tableros, mapas y consultas al usuario) debe cumplirse esta regla:

Conjunto Prefijo Rol ¿Usar en backoffice?
Maestros importados I_ Datos maestros (clientes, repartidores, hojas, artículos, configuración) Sí — dimensiones y filtros
Descarga móvil D_ Lo que cada equipo móvil descarga al servidor; puede estar incompleto o en tránsito No para reportes ni UI operativa
Datos validados E_ Datos validados y completos, listos para explotación Sí — fuente principal de hechos

Regla de implementación: todos los endpoints, reportes, tableros y mapas del nuevo backoffice deben leer hechos operativos desde tablas E_, enriquecidos con maestros I_. No consultar D_ salvo diagnóstico, soporte o procesos internos de sincronización.


2. Flujo conceptual de datos

   ERP / América                    Equipos móviles
         │                                  │
         ▼                                  ▼
    ┌─────────┐                    ┌─────────────┐
    │  I_*    │  maestros           │    D_*      │  descarga / staging
    │ import  │◄───────────────────│  (parcial)  │  (puede faltar info)
    └────┬────┘                    └──────┬──────┘
         │                               │
         │         validación /          │
         │         consolidación         ▼
         │                        ┌─────────────┐
         └───────────────────────►│    E_*      │  datos validados
                                  │  (completos)│  ◄── BACKOFFICE LEE AQUÍ
                                  └─────────────┘

3. Inventario de tablas D_ y E_

Pares homólogos (misma entidad de negocio, distinto estado de pipeline):

Dominio Tabla D_* (descarga móvil) Tabla E_* (validada) Filas aprox. (backup de referencia)
Actividades / visitas D_ACTIVIDADES_REPARTIDOR E_ACTIVIDADES_REPARTIDOR 55 608 / 43 853
Cierre de ruta D_CIERRE_DE_RUTA E_CIERRE_DE_RUTA 1 758 / 453
Cobranzas D_COBRANZAS E_COBRANZAS 38 822 / 35 156
Detalle de pagos D_DETALLE_PAGOS E_DETALLE_PAGOS 39 051 / 35 298
Documentos imputados D_DOCUMENTOS_IMPUTADOS E_DOCUMENTOS_IMPUTADOS 69 251 / 62 505
Entregas — cabecera D_ENTREGAS_CABECERA E_ENTREGAS_CABECERA 48 335 / 43 657
Entregas — facturas D_ENTREGAS_FACTURAS E_ENTREGAS_FACTURAS 90 960 / 81 750
Entregas — ítems D_ENTREGAS_ITEMS E_ENTREGAS_ITEMS 836 256 / 747 025
Retenciones D_RETENCIONES E_RETENCIONES 7 / 7
Devoluciones — E_DEVOLUCIONES_REPARTO — / 21 513
Puntos de recorrido — E_PUNTOS_RECORRIDO — / 0

Solo en E_: E_DEVOLUCIONES_REPARTO (devoluciones validadas; no existe homólogo D_DEVOLUCIONES_* en este backup).

Observación: en el mismo backup existen tablas sin prefijo (ACTIVIDADES_REPARTIDOR, COBRANZAS, ENTREGAS_*, etc.) con volúmenes muy cercanos a las E_*. Probablemente son capas históricas o espejo del modelo anterior. Para el nuevo backoffice se estandariza E_* como contrato de lectura; cualquier uso de tablas sin prefijo debe validarse con negocio/EMSER antes de implementar.


4. Maestros I_* (complemento obligatorio)

No son hechos de ruta; se importan desde el ERP y alimentan filtros y etiquetas:

Tabla Uso típico
I_CLIENTES Código ID_CUENTA, razón social, canal, hoja asignada
I_REPARTIDORES Transportistas
I_HOJAS_DE_RUTA Catálogo de hojas (ID_HOJA_REPARTO, NUMERO_HOJA_REPARTO)
I_CANALES_CLIENTES Filtro “Canal” en reportes estadísticos
I_CLIENTES_DIRECCIONES Direcciones / referencia geográfica
I_ARTICULOS Productos en detalle de entregas
I_CONFIGURACION / I_EMPRESA_DATOS_CONFIGURACION Parámetros de negocio y empresa

Las uniones con E_* son por claves de negocio (ID_REPARTIDOR, NUMERO_HOJA_REPARTO, ID_CUENTA, ID_VISITA, etc.), no por FKs declaradas en SQL.


5. Claves lógicas entre tablas E_*

Clave Descripción
ID_VISITA Identificador de visita; enlaza actividad, entrega y cobranza
ID_REPARTIDOR Repartidor → I_REPARTIDORES
NUMERO_HOJA_REPARTO / ID_HOJA_REPARTO Hoja de reparto → I_HOJAS_DE_RUTA
ID_CUENTA Cliente → I_CLIENTES
ID_ENTREGA Cabecera de entrega → ítems y facturas hijas
ID_COBRANZA Cabecera de cobranza → E_DETALLE_PAGOS, E_DOCUMENTOS_IMPUTADOS

Tabla central para tablero y mapa: E_ACTIVIDADES_REPARTIDOR (KPIs por visita, montos, contadores de entrega/cobranza, coordenadas GPS).


6. Mapeo casos de uso → tablas E_* + I_*

Caso de uso (manual / análisis funcional) Tablas de lectura
Reporte reparto por hoja (UC-07) E_ACTIVIDADES_REPARTIDOR + I_CLIENTES
Reporte devoluciones por hoja (UC-08) E_DEVOLUCIONES_REPARTO
Reporte cobranzas por hoja (UC-09) E_COBRANZAS, E_DOCUMENTOS_IMPUTADOS, E_DETALLE_PAGOS
Reporte cobranzas general (UC-10) E_COBRANZAS / agregados sobre E_ACTIVIDADES_REPARTIDOR
Reporte desempeño (UC-11) E_ACTIVIDADES_REPARTIDOR (métricas por visita/repartidor)
Reporte estadístico de entrega (UC-12) E_ACTIVIDADES_REPARTIDOR + I_CLIENTES / I_CANALES_CLIENTES
Tablero avance de reparto (UC-13) Agregación E_ACTIVIDADES_REPARTIDOR por ID_REPARTIDOR
Mapa de reparto (UC-14, UC-15) E_ACTIVIDADES_REPARTIDOR (GPS + estado derivado de contadores)
Detalle entrega en mapa / auditoría E_ENTREGAS_CABECERA, E_ENTREGAS_FACTURAS, E_ENTREGAS_ITEMS
Configuración negocio (UC-16, parcial) I_CONFIGURACION, I_EMPRESA_DATOS_CONFIGURACION

No usar D_* en ninguna fila de la tabla anterior.


7. Qué hacer con D_* (alcance permitido)

Uso Permitido
Reportes al usuario final No
Tableros / mapas / export Excel No
Diagnóstico: “faltó validar”, comparar conteos D vs E Sí (soporte técnico)
Procesos batch de validación (futuro) Sí (escritura/transformación, no UI)

Ejemplo de consulta de control (solo monitoreo):

-- Visitas en descarga móvil que aún no tienen par validado (ilustrativo)
SELECT COUNT(*) AS SoloEnDescarga
FROM D_ACTIVIDADES_REPARTIDOR d
WHERE NOT EXISTS (
  SELECT 1 FROM E_ACTIVIDADES_REPARTIDOR e
  WHERE e.ID_VISITA = d.ID_VISITA
);

8. Implicaciones para la API .NET

  1. Cadena de conexión: Database=ArcorGev5Reparto (no GotruckDemo).
  2. No ejecutar migraciones EF del prototipo demo sobre esta base (esquema ajeno).
  3. Repositorios / SQL: nombrar explícitamente tablas E_* en consultas o vistas (v_Reporte_* sobre E_*).
  4. DTOs del backoffice: alineados a columnas E_* (p. ej. MONTO_COBRADO, GPS_LATITUD en E_ACTIVIDADES_REPARTIDOR).
  5. Filtros de fecha/hoja/repartidor: siempre aplicados en capa E_* para evitar mezclar datos incompletos de D_*.

9. Otras tablas (referencia)

Grupo Ejemplos Notas
Sync / log SYNCRO_REGISTRO_MOBILE, LOG_ERRORES_SYNCRO Trazabilidad móvil
Procesos IMPORTACION, P_PROCESOS Jobs de importación
Auth Django accounts_customuser, auth_* En el backup de referencia sin usuarios; login del nuevo backoffice puede ser independiente (JWT local)
Sin prefijo ACTIVIDADES_REPARTIDOR, ENTREGAS_*, … Legacy; no usar en nuevo desarrollo sin acuerdo funcional

10. Documentos relacionados

Archivo Contenido
functional_analisys.html Casos de uso UC-01 … UC-16 (HTML: ../html/functional_analisys.html)
../html/development.html Docker, conexión JDBC, desarrollo
docker_guia.html Levantar stack y restaurar .bak
manual.html Pruebas funcionales del prototipo

Convención acordada: E_* = datos validados para backoffice · D_* = descarga móvil (incompleta) · I_* = maestros.