Ir al contenido principal

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