Skip to content

Reporte de Solicitud de Material

Página 3 de streamlit-reportes.

Reporte a nivel línea de Solicitud de Material, con las mismas métricas de disponibilidad que ya usa el negocio en pantalla (RP_CTR_SM2), más columnas de compras propias de este reporte.

Grano y fuente

Grano: línea (Sm_Folio, Pr_Cve_Producto). Fuente: TRIVASADB3 (.205) / TRIVASADB (.207) — mismo esquema (ver Servidores y bases). Para cifras oficiales usar .207; la query se validó en vivo contra .205 el 2026-08-28 y luego se corrió tal cual contra .207 al desplegar el Streamlit — mismos resultados, mismos nombres de tabla/columna.

De dónde sale cada columna

Columna Origen Nota
solicitado, apartado, existencia, surtido, saldo_a_surtir Replica RP_CTR_SM2 ("REPORTE DE CONTROL DE SOLICITUD DE MATERIAL V2", Reporte.Rp_SQL) Es el reporte que el negocio ya usa — definición operativa de esas métricas. Ver Reportes nativos.
existencia Existencia.Ex_Cantidad_Control_1 − ZTRV_Apartado (total en ese almacén) Existencia libre = física − apartado, no física a secas.
requisicion, requisicion_cantidad Requisicion_Compra vía patrón polimórfico Rc_Tabla/Rc_Documento = 'ZTRV_Solicitud_Material'/Sm_Folio Adición de este reporte, no viene del reporte nativo. Patrón validado en Calidad de datos.
pedido, pedido_cantidad, comprado (Orden_Compra/Compra) — Quitadas por ahora a pedido del usuario. La lógica ya está probada (mismo patrón OUTER APPLY con TOP 1 de los notebooks 52/53 de AB/PR — el OR en el ON fuerza escaneo completo de Orden_Compra y entra en timeout con rango de meses) y queda comentada en el .sql para cuando se retome.
tipo CASE Sm_Es_Servicio WHEN 1 THEN 'SERVICIO' ELSE 'MATERIAL' END Inferencia, no hay columna "TIPO" confirmada con ese nombre exacto en pantalla/reporte nativo — verificar contra ZTRV098 si hace falta exactitud.
estado_detalle Es_Cve_Estado crudo de ZTRV_Solicitud_Material_Detalle No es el indicador de pestaña de ZTRV098 (ese se deriva de Requisicion_Compra/Orden_Compra activas) — comparten catálogo de letras (AC/CE/AB/PR/FN) por coincidencia, no por ser el mismo dato. Se expone a nivel línea porque cabecera y detalle divergen con frecuencia (ver Calidad de datos).
producto Sm_Concepto Trae "NUEVO - <concepto>" cuando Pr_Cve_Producto viene vacío, igual que el reporte nativo.

Otras notas de esquema confirmadas y usadas aquí: Sm_Fecha_Cierre = '2001-01-01' es sentinela de "no cerrado" (no NULL) — ver Solicitud de material.

Query base

queries/reporte_solicitud_material.sql en streamlit-reportes, parametrizada con :desde/:hasta. Diseño original en reporte_basico_solicitud_material.sql (trivasa-bi) — ese .sql archivado trae un rango fijo (Sm_Fecha >= DATEADD(MONTH, -1, GETDATE())) pensado para ajustarse a mano.

El Streamlit

Código: pages/3_Reporte_Solicitud_Material.py.

  • Filtros: rango de fechas (default últimos 30 días, mismo default que la query original), Sucursal, Solicitante, Tipo, Estado de línea — cada uno como checkboxes dentro de un expander (con botones "Todos" / "Ninguno"), no un multiselect de selector único.
  • Tabla: streamlit-aggrid con filtro inline tipado por columna (texto/número/fecha), mismo patrón que Transferencias sin recepción.
  • Métricas: folios distintos, líneas, solicitado total, saldo a surtir total. Descarga CSV del resultado ya filtrado. Query cacheada 10 min.

Fuente de exploración

Lógica validada en trivasa-bi/proyectos-bi/sm-reporte.

Pendiente

  • Retomar pedido/pedido_cantidad/comprado (Orden_Compra/Compra) cuando el usuario lo pida — lógica ya probada, ver tabla arriba.
  • Confirmar tipo contra ZTRV098 si se necesita exactitud (hoy es inferencia de Sm_Es_Servicio).