REPORTE TERMINALES
Fuente:/var/www/html/emprsarial-sys/app/Models/Reportes/Reports.php
1) Nombre del reporte
-
Nombre: Reporte Terminales
-
Código/Alias: report_terminals
-
Responsable: Equipo de Reportes Cloud
-
Propósito:
2) Alcance temporal
-
Campo(s) de fecha utilizados:
-
"fecha" => date("Y-m-d") (fecha del día de ejecución).
-
"created_date" => date("Y-m-d H:i:s") (fecha y hora exacta de ejecución).
-
"fecha_creacion" => $valor->fhcrea desde la BD.
-
Tipo de rango (diario / mensual / personalizado): Diario
-
Inclusión de horas (sí/no).
-
"created_date" [00:00:00 – 23:59:59]
-
Zona horaria: La del servidor
3) Origen de datos (tablas/APIs)
3.1 Conexión / Base: empresarial
-
Tabla: emp_terminal
-
Alias: ter
-
Campos utilizados (clave → descripción):
-
Todos los campos de la tabla emp_terminal (emp_terminal *)
-
Condiciones (WHERE) aplicadas: (Terminales habilitadas que no estén eliminadas)
-
ter_habilitado = 1 (Filtra terminales habilitadas)
-
eliminado = 0 (Filtra terminales que no estén eliminadas)
-
Tipo de unión con otras fuentes (JOIN y llave):
-
LEFT JOIN emp_liqui_cons con ON con.ter_id = ter.ter_id
-
LEFT JOIN emp_persona per ON per.per_nrodocumento = con.emp_nro_ruc
-
Observaciones (ej. particiones, índices): De la tabla principal emp_terminal trae todas los campos con la condición de que la terminal esté habilitada poro no haya sido eliminada.
3.2 Conexión / Base: empresarial
-
Tabla / Recurso: emp_liqui_cons
-
Alias (si aplica): con
-
Campos utilizados (clave → descripción):
-
emp_nro_ruc (numero RUC)
-
correo (dirección de correo)
-
comision (monto de comision)
-
pinpad_pre (Precio PINPAD)
-
pinpad_cant (cantidad de PINPADS)
-
igv (IGV)
-
Condiciones (WHERE) aplicadas:
-
con.ter_id = ter.ter_id
-
Tipo de unión con otras fuentes (JOIN y llave):
-
LEFT JOIN emp_liqui_cons con ON con.ter_id = ter.ter_id
-
Observaciones (ej. particiones, índices):
-
Si la tabla emp_liqui_cons no encuentra un el valor del campo ter_id el los valores que se setearan en el campo seran iguales a NULL
3.3 Conexión / Base: empresarial
-
Tabla / Recurso: emp_persona
-
Alias (si aplica): per
-
Campos utilizados (clave → descripción):
-
per_nombrerzsoc (Nombre RUC)
-
Condiciones (WHERE) aplicadas:
-
per.per_nrodocumento = con.emp_nro_ruc
-
Tipo de unión con otras fuentes (JOIN y llave):
-
LEFT JOIN emp_persona per on(per.per_nrodocumento = con.emp_nro_ruc)
-
Observaciones (ej. particiones, índices):
-
Si la tabla emp_persona no encuentra un el valor del campo ter_id el los valores que se setearan en el campo seran iguales a NULL
3.4 Conexión / Base: empresarial
-
Tabla / Recurso: emp_ciudad_ubigeo
-
Alias (si aplica): No se asigna un alias a la tabla
-
Campos utilizados (clave → descripción):
-
ubi_id (ID)
-
ubi_departamento (Departamento)
-
ubi_provincia (Provincia)
-
ubi_distrito (Distrito)
-
Condiciones (WHERE) aplicadas: No aplica condiciones
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica unión con otra tabla
-
Observaciones (ej. particiones, índices): Ninguna
3.5 Conexión / Base: ERP
-
Tabla / Recurso: tabTabla de Sucursales
-
Alias (si aplica): tbs
-
Campos utilizados (clave → descripción):
-
id (ID)
-
parent ()
-
Condiciones (WHERE) aplicadas: No aplica condiciones
-
Tipo de unión con otras fuentes (JOIN y llave):
-
LEFT JOIN `tabZonas Nacional` tbz on (tbz.name = tbs.parent)
-
Observaciones (ej. particiones, índices): Ninguna
4) Filtros globales del reporte
-
Inclusiones (must-have):
-
Todos los registros de la tabla emp_terminal
-
Exclusiones (reglas de descarte):
-
Terminales deshabilitadas
-
Terminales eliminadas
-
Terminales sin supervisor asignado
-
Reglas por estado / habilitado:
-
ter.ter_habilitado = 1 (solo terminales habilitados.)
-
ter.eliminado = 0 (excluye eliminados.)
-
Parámetros externos (si el usuario puede filtrarlo): No aplica
5) Transformaciones y Reglas de negocio
-
Derivaciones de campos (cómo se calculan):
-
tipo -> 1/0 Transforma a “AGENTE” / “AGENCIA”
-
conexion -> 1/0 Transforma a “SI” / “NO”
-
habilitado_os -> 1/0 Transforma a “SI” / “NO”
-
habilitado -> 1/0 Transforma a “SI” / “NO”
-
reparto -> 1/0 Transforma a “SI” / “NO”
-
departamento -> busca en ubigeosJSON el ubig_id y lo deriva en string
-
provincia -> busca en ubigeosJSON el ubig_id y lo deriva en string
-
distrito -> busca en ubigeosJSON el ubig_id y lo deriva en string
-
razon_social -> se transforman a null en si no hay void
-
ruc -> se transforman a null en si no hay void
-
correo -> se transforman a null en si no hay void
-
Mapeos de estado:
-
habilitado → 1 = "SI", 0 = "NO"
-
habilitado_os → 1 = "SI", 0 = "NO"
-
reparto → igual. → 1 = "SI", 0 = "NO"
-
tipo_destino → 1 = "SI", 0 = "NO"
-
Reglas de validación (p.ej., sólo registros validados):
-
where ter.ter_habilitado=1 and ter.eliminado=0 → Solo terminales activos.
-
WHERE ter.ter_supervisor IS NOT NULL → Solo terminales con supervisor asignado.
-
Reglas condicionales (si X entonces Y):
-
Si ter_estado_agente == 1 → tipo = AGENTE.
-
Si ter_tipo_local == Concesionario → tipo = CONCESIONARIO, sino AGENCIA.
-
Si ter_tipo_conexion == 1 → "SI", sino "NO".
-
Si existe clave en $supervisores_json o $sups_group → asigna supervisor, sino "".
6) Estructura de salida
-
Tabla/archivo destino: report_terminals
-
Particionado / sufijo: No se incluye
-
Clave(s) primaria(s) o únicas: No se especifica
-
Columnas del reporte (nombre → tipo → descripción):
-
fecha → DATE → Fecha de ejecución/corte del reporte.
-
terminal_id → INT → Identificador único del terminal.
-
terminal_nombre → VARCHAR →Nombre del terminal.
-
tipo → VARCHAR → Clasificación: AGENTE / CONCESIONARIO / AGENCIA.
-
codigo → VARCHAR →Código del terminal.
-
direccion → VARCHAR → Dirección física.
-
ubigeo → VARCHAR → Código de ubigeo.
-
departamento → VARCHAR → Departamento (map a ubigeo).
-
provincia → VARCHAR → Provincia (map a ubigeo).
-
distrito → VARCHAR → Distrito (map a ubigeo).
-
telefono → VARCHAR → Teléfono del terminal.
-
horario_atencion → VARCHAR → Horario de atención.
-
documento_administrador → VARCHAR → DNI/RUC del administrador.
-
abreviatura → VARCHAR → Abreviatura del terminal.
-
fecha_creacion → DATETIME → Fecha de creación del terminal.
-
usuario_creacion → VARCHAR → Usuario que creó el registro.
-
serie_comprobantes → VARCHAR → Serie de comprobantes asociados.
-
serie_os → VARCHAR → Serie de órdenes de servicio.
-
zona → VARCHAR → Zona a la que pertenece.
-
conexion → VARCHAR(2) → SI / NO según ter_tipo_conexion.
-
tipo_destino → VARCHAR → Categoría: Destinos 24h / 48h / etc.
-
habilitado_os → VARCHAR(2) → SI / NO según habilitación OS.
-
habilitado → VARCHAR(2) → SI / NO según habilitación terminal.
-
razon_social → VARCHAR → Razón social asociada.
-
ruc → VARCHAR(11) → Número de RUC.
-
correo → VARCHAR → Correo asociado.
-
comision → DECIMAL → Comisión asociada al terminal.
-
pinpad → VARCHAR → Tipo o configuración de pinpad.
-
cantidad → INT → Cantidad de pinpads.
-
igv → DECIMAL → Porcentaje de IGV.
-
reparto → VARCHAR(2) → SI / NO según habilitación de reparto.
-
supervisor → VARCHAR → Supervisor directo (de Branch).
-
n_zona → VARCHAR → Zona obtenida del JSON de terminales.
-
sup_supervisor → VARCHAR → Supervisor de Zonas Nacional.
-
sup_zona → VARCHAR → Zona del supervisor de Zonas Nacional.
-
salida_terminal → VARCHAR → Información sobre salida de terminal.
-
subgrupo_embarque → VARCHAR → Subgrupo de embarque.
-
created_date → DATETIME → Fecha/hora de generación del reporte.
-
Ordenamiento por defecto: No Aplica
7) Frecuencia y operación
-
Frecuencia de actualización: Diaria
-
Ventana que recalcula (días/meses): No aplica
-
Tamaño de lote / paginado (chunking): Está comentado
-
si la tabla de terminales es muy grande, el proceso dividiría en bloques de 900 registros para insertar
-
Tolerancia a fallos / reintentos: No hay aplica
-
Tiempos de ejecución esperados: No especifica
8) Calidad y controles
-
Validaciones previas/post:
-
where ter.ter_habilitado=1 and ter.eliminado=0" ( solo se procesan terminales activos y no eliminados.)
-
Controles de duplicados: Sobrescritura de registros, tomando ter_id e identificador
-
Métricas de completitud (qué se monitorea): indirectas, basadas en is_null, reemplazos por valores vacíos, y banderas SI/NO que aseguran datos legibles.
9) Dependencias externas
-
ERPNext – Zona Nacional
-
APIs / servicios y endpoints: api/method/send-query-database
-
Autenticación / headers: no especifica
-
Contrato:
-
Entrada: parámetros filters, sql_query, tables enviados al API.
-
Salida: JSON estructurado (response) → se transforma en arrays asociativos ($supervisores_json, $sups_group) y se usa para enriquecer la data local.
10) Historial de cambios
2025-09-12 04:24 - Elian franco Arroyo Rodas - Documentación inicial
No hay comentarios para mostrar
No hay comentarios para mostrar