REPORTE ABASTECIMIENTO TIENDA
Fuente: /var/www/html/qareportes/app/Http/Controllers/Cloud/AbastecimientoController.php
1) Nombre del reporte
-
Nombre: Reporte Abastecimiento Tienda
-
Código / Alias: report_abastecimiento_tienda
-
Responsable: Equipo de Reportes Cloud
-
Propósito (1 línea):
2) Alcance temporal
-
Campo(s) de fecha utilizados:
-
first_date y second_date (rango de fechas determinado dinámicamente por obtainRangeDaysByYear)
-
created_date (fecha de creación del registro)
-
Tipo de rango (diario / mensual / personalizado): Mensual, ya que se obtiene un rango de días por mes (obtainRangeDaysByYear($year, $last_month, $first_month))
-
Inclusión de horas (sí/no).: Sí [00:00:00 – 23:59:59]
-
Zona horaria: La del servidor
3) Origen de datos (tablas/APIs)
-
Conexión / Base: CAPACITACION
-
Tabla / Recurso: report_abastecimiento_tienda
-
Alias (si aplica): No aplica
-
Campos utilizados (clave → descripción):
-
id → Identificador único del registro (clave primaria).
-
name → Nombre o código del producto.
-
item_group → Categoría o grupo del ítem.
-
item_name → Nombre completo del ítem o producto.
-
warehouse → Almacén o tienda donde se gestiona el stock.
-
stock → Cantidad disponible actual en inventario.
-
month-entry-0 → Entradas del mes actual.
-
month-entry-1 → Entradas del mes anterior.
-
month-entry-2 → Entradas de hace dos meses.
-
month-entry-3 → Entradas de hace tres meses.
-
month-out-0 → Salidas del mes actual.
-
month-out-1 → Salidas del mes anterior.
-
month-out-2 → Salidas de hace dos meses.
-
month-out-3 → Salidas de hace tres meses.
-
productValueProm → Valor promedio del producto según movimientos.
-
valueLastBuy → Valor de la última compra registrada.
-
lastInspection → Fecha de la última supervisión o inspección.
-
daysInspection → Días transcurridos desde la última inspección.
-
cantidad_supervisiones → Número de supervisiones realizadas.
-
cantidad_reconciliaciones → Número de reconciliaciones o revisiones.
-
sucursal → Sucursal asociada al registro.
-
departamento → Departamento de la sucursal o zona.
-
id_terminal → Identificador de terminal o punto de venta.
-
created_date → Fecha y hora de creación del registro.
-
status → Estado del registro (activo/inactivo).
-
Condiciones (WHERE) aplicadas:
-
Trae los registros generados dentro del rango de fechas determinado por first_day y last_day, correspondiente al mes actual o a los meses previos que define el método obtainRangeDaysByYear.
-
Tipo de unión con otras fuentes (JOIN y llave): No aplica. Las inserciones se realizan directamente en la tabla destino sin combinación con otras fuentes.
-
Observaciones (ej. particiones, índices):
-
Se agrega un índice en el campo status mediante ALTER TABLE.
-
Las tablas se crean dinámicamente con estructura fija por rango temporal.
-
Motor de base de datos: InnoDB con charset latin1.
4) Filtros globales del reporte
-
Inclusiones (must-have): Registros de la tabla "tienda" dentro del rango de fechas del mes actual
-
Exclusiones (reglas de descarte): No se aplica exclusión explícita
-
Reglas por estado / habilitado: Solo se indexa el campo status para controlar estado activo/inactivo
-
Parámetros externos (si el usuario puede filtrarlo): Año ($year) y meses ($last_month, $first_month) se obtienen del sistema (no parametrizables por usuario)
5) Transformaciones y Reglas de negocio
-
Derivaciones de campos (cómo se calculan): Los campos month-entry y month-out son generados mensualmente por iteración sobre el rango
-
Mapeos de estado:
-
status = 1 → Registro actualizado correctamente
-
status = 0 → Error en carga / validación fallida
-
Reglas de validación (p.ej., sólo registros validados):
-
Validación de existencia de tabla con verifyExistTable()
-
Inserción en error_reports en caso de fallo
-
Registro de validaciones en emp_reportes_validation
-
Reglas condicionales (si X entonces Y):
-
Si la tabla no existe → se crea
-
Si se detecta error en inserción → se graba el fallo y continúa siguiente rango
6) Estructura de salida
-
Tabla/archivo destino: report_abastecimiento_tienda (creada dinámicamente)
-
Particionado / sufijo: Implícito mensual (por rango de fechas)
-
Clave(s) primaria(s) o únicas: id (INT AUTO_INCREMENT PRIMARY KEY)
-
Columnas del reporte (nombre → tipo → descripción):
-
id → INT AUTO_INCREMENT → Identificador único autoincremental
-
name → VARCHAR(255) → Nombre del producto o registro
-
item_group → VARCHAR(150) → Grupo o categoría del ítem
-
item_name → VARCHAR(255) → Nombre completo del artículo
-
warehouse → VARCHAR(150) → Almacén de procedencia del producto
-
stock → DOUBLE → Stock actual disponible
-
month-entry-0 ... month-entry-3 → DOUBLE → Entradas mensuales de los últimos 4 meses
-
month-out-0 ... month-out-3 → DOUBLE → Salidas mensuales de los últimos 4 meses
-
productValueProm → DOUBLE → Valor promedio del producto
-
valueLastBuy → DOUBLE → Valor correspondiente a la última compra registrada
-
lastInspection → DATE → Fecha de la última inspección realizada
-
daysInspection → INT → Días transcurridos desde la última inspección
-
cantidad_supervisiones → INT → Total de supervisiones realizadas
-
cantidad_reconciliaciones → INT → Total de reconciliaciones registradas
-
sucursal → VARCHAR(150) → Sucursal o tienda correspondiente
-
departamento → VARCHAR(150) → Departamento asociado al registro
-
id_terminal → VARCHAR(100) → Identificador del terminal relacionado
-
created_date → DATETIME → Fecha y hora de creación del registro
-
status → TINYINT(1) → Estado lógico del registro (1 = activo / 0 = inactivo)
-
Ordenamiento por defecto: no aplica
7) Frecuencia y operación
-
Frecuencia de actualización: PENDIENTE (Esperando info de Eduardo)
-
Ventana que recalcula (días/meses): 1 mes (por rango obtenido)
-
Tamaño de lote / paginado (chunking): 300 registros (array_chunk($data_report, 300))
-
Tolerancia a fallos / reintentos: Registro de errores y continuación (try/catch)
-
Tiempos de ejecución esperados: PENDIENTE (Esperando info de Eduardo)
8) Calidad y controles
-
Validaciones previas/post:
-
Creación/verificación de tabla
-
Validación de inserciones en emp_reportes_validation
-
Controles de duplicados: no aplica
-
Métricas de completitud (qué se monitorea): Validación de registros exitosos vs. con error (campo status)
9) Dependencias externas
-
APIs / servicios y endpoints:
-
$this->reportcontroller->obtainRangeDaysByYear()
-
$this->reportcontroller->verifyExistTable()
-
$this->reportcontroller->consultaSql()
-
$this->report() (función interna que obtiene los datos de “tienda”)
-
Autenticación / headers: No aplica
-
Mapeos y contratos de datos: Inserciones controladas en emp_reportes_validation y error_reports
10) Historial de cambios
2025-10-18 10:34 - Elian Franco Arroyo Rodas - Documentación inicial
No hay comentarios para mostrar
No hay comentarios para mostrar