Vista: Aprobaciones
Proposito
Esta vista permite al director revisar y decidir sobre las demandas de abastecimiento que requieren aprobacion. Muestra las cotizaciones pendientes con el proveedor de mejor precio, la urgencia de cada demanda, y el numero de opciones disponibles. El director utiliza esta vista para aprobar, rechazar o solicitar retroalimentacion sobre cada linea de gasto antes de que compras proceda con el pago y la entrega.
Vista: Aprobaciones
La pestana vista_aprobaciones es una vista de solo lectura (Capa 3a) que muestra las demandas de abastecimiento que necesitan revision de direccion. Se actualiza automaticamente cada vez que se procesan cambios en las demandas u opciones.
Columnas de la vista
| Columna | Descripcion |
|---|---|
| Folio Demanda | Identificador unico de la demanda de abastecimiento |
| OS Folio | Folio de la orden de servicio vinculada (vacio si no aplica) |
| Descripcion Solicitada | Descripcion del material o servicio requerido |
| Cantidad Requerida | Cantidad solicitada por el taller |
| Urgency Code | Nivel de urgencia: paro_operativo, urgente, o normal |
| Proveedor Mejor Opcion | Nombre del proveedor con la cotizacion de menor monto |
| Monto Mejor Opcion | Monto total de la cotizacion mas economica |
| Num Opciones | Numero de opciones de abastecimiento vigentes o seleccionadas |
| Estado Demanda | Estado actual de la demanda (ver filtros) |
Filtros
Solo aparecen demandas en los siguientes estados:
en_revision_direccion— compras envio la demanda para aprobacionfeedback_requerido— direccion solicito aclaraciones y compras respondiocotizando— compras esta recopilando cotizaciones (visible para oversight)
Las demandas en otros estados (capturada, aprobada, rechazada, pagada, etc.) no aparecen en esta vista.
Ordenamiento
Las demandas se muestran ordenadas por urgencia:
- paro_operativo — una unidad esta detenida esperando el material. Requiere decision inmediata.
- urgente — plazo corto de entrega o impacto operativo significativo.
- normal — sin urgencia inmediata.
Como Tomar Decisiones
Las decisiones se registran a traves de la pestana stg_decision_abastecimiento (o el formulario en AppSheet).
Aprobar una demanda
- Revisar la demanda en
vista_aprobaciones: verificar descripcion, cantidad, urgencia. - Revisar las opciones disponibles. El campo
num_opcionesindica cuantas cotizaciones hay. El campoproveedor_mejor_opcionymonto_mejor_opcionmuestran la mas economica. - Abrir
stg_decision_abastecimientoy llenar:- demanda_id: ID de la demanda a aprobar.
- opcion_id: ID de la opcion seleccionada (la cotizacion que se aprueba).
- decision_code:
aprobada. - decided_by_user_id: Su ID de usuario.
- decided_by_function:
direccion.
- El sistema:
- Registra la decision en
_decisiones_abastecimiento. - Marca la opcion seleccionada como
seleccionaday las demas comodescartada. - Transiciona la demanda a estado
aprobada.
- Registra la decision en
- Compras puede ahora proceder con el pago al proveedor.
Aprobar con excepcion
Cuando el monto excede el umbral de autorizacion o hay circunstancias especiales:
- Llenar los mismos campos que una aprobacion normal.
- Cambiar decision_code a
aprobada_con_excepcion. - Llenar exception_reason_code con el codigo del motivo:
sobreprecio_autorizado— el precio excede el presupuesto habitualproveedor_alterno_urgente— se usa proveedor no habitual por urgenciasin_factura— el proveedor no emite factura formalliquidacion_inmediata— el pago debe hacerse antes de recibir el material
- Opcionalmente llenar decision_note con una justificacion libre.
Rechazar una demanda
- Abrir
stg_decision_abastecimientoy llenar:- demanda_id: ID de la demanda.
- opcion_id: (Opcional) ID de la opcion que se evaluo.
- decision_code:
rechazada. - decision_note: Motivo del rechazo.
- decided_by_user_id y decided_by_function: Sus datos.
- El sistema:
- Registra la decision.
- Si se especifico opcion_id, la marca como
descartada. - Transiciona la demanda a estado
rechazada.
- Compras debe buscar alternativas o cancelar la solicitud.
Solicitar retroalimentacion
Cuando la informacion es insuficiente para decidir:
- Llenar decision_code =
feedback_requerido. - Llenar decision_note con lo que se necesita aclarar (ej. “Necesito ver la cotizacion original”, “Confirmar si hay alternativa mas economica”).
- El sistema transiciona la demanda a estado
feedback_requerido. - Compras vera la demanda en su vista y debe responder con la informacion solicitada.
- Cuando compras responde, la demanda regresa a
en_revision_direccionpara una nueva decision.
Reglas de Umbral de Autorizacion
El sistema valida que el monto de la opcion seleccionada no exceda el umbral de autorizacion configurado en _umbrales_autorizacion:
- Si el monto no excede el umbral: la aprobacion con
aprobadaprocede normalmente. - Si el monto excede el umbral y se usa
aprobada: el sistema rechaza la decision con error “Selected option exceeds approval threshold and requires exception approval”. - Si el monto excede el umbral: usar
aprobada_con_excepcioncon elexception_reason_codecorrespondiente.
Cuando Escalar
- Demanda de paro operativo sin opciones. Si una demanda con urgencia
paro_operativono tiene opciones (num_opciones= 0), contactar directamente a compras para agilizar la cotizacion. - Monto significativamente mayor al presupuesto. Si el monto excede 2x el umbral habitual, evaluar si la necesidad es real antes de aprobar.
- Proveedor desconocido. Si el proveedor de la mejor opcion no es habitual, solicitar referencias o cotizacion de respaldo.
Errores Comunes
| Campo | Valor |
|---|---|
status_procesamiento | ok (exito) o error (fallo) |
error_code | Codigo del error |
error_detail | Descripcion detallada del problema |
procesado_at | Fecha y hora del procesamiento |
Errores frecuentes y solucion
| Error | Causa | Solucion |
|---|---|---|
| ”demanda_id es obligatorio” | No se selecciono la demanda | Verificar el campo demanda_id |
| ”demanda_id=X no encontrada” | El ID no existe | Verificar el ID correcto en la vista |
| ”decision_code es obligatorio” | No se selecciono el tipo de decision | Usar: aprobada, rechazada, feedback_requerido, o aprobada_con_excepcion |
| ”decided_by_user_id invalid” | El usuario no esta activo | Verificar que su cuenta este activa en _usuarios |
| ”opcion_id=X no pertenece a demanda_id=Y” | La opcion no corresponde a esta demanda | Verificar el ID de opcion correcto |
| ”Selected option exceeds approval threshold” | El monto excede el umbral sin excepcion | Usar aprobada_con_excepcion con exception_reason_code |
Que hacer si una fila tiene error
- Revisar los campos
error_codeyerror_detailen la fila de staging. - Corregir el dato incorrecto.
- Limpiar el campo
status_procesamiento(dejarlo vacio) para que el sistema vuelva a procesar la fila. - Esperar el siguiente ciclo de procesamiento o ejecutar manualmente.
Referencias
- Especificacion tecnica:
docs/views/int-4_compras.yaml - Contrato autoritativo:
docs/plans/2026-03-25-compras-whatsapp-process-model.md - Arquitectura de datos:
docs/architecture/dec_001_modelo-de-datos-canonico.md - Capas de datos:
docs/architecture/dec_002_capa-canonica-y-vistas-operativas.md - Vistas por rol:
docs/architecture/dec_003_vistas-decision-support-por-rol.md