Vista: Pagos a Proveedor

Proposito

Esta vista permite al equipo de finanzas gestionar los pagos pendientes a proveedores. Muestra los pagos programados con su fecha de vencimiento, monto, metodo de pago y estado de urgencia. El objetivo es asegurar que todos los pagos se ejecuten en tiempo, priorizando los que estan proximos a vencer o ya vencidos, y registrando los comprobantes correspondientes.

Vista: Pagos Proveedor

La pestana vista_pagos_proveedor es una vista de solo lectura (Capa 3a) que muestra todos los pagos a proveedor que no han sido completados (pagada). Se actualiza automaticamente cada vez que se procesan cambios.

Columnas de la vista

ColumnaDescripcion
Folio DemandaIdentificador de la demanda de abastecimiento asociada
Proveedor NombreNombre del proveedor al que se debe pagar
Monto TotalMonto total de la opcion aprobada
Payment Method CodeMetodo de pago: transferencia, efectivo, o cheque
Beneficiary NameNombre del beneficiario para el pago
Due AtFecha limite para realizar el pago
Estado PagoEstado actual del pago (ver abajo)
Urgencia PagoSemaforo de urgencia (ver abajo)

Estados de pago

EstadoSignificado
pendiente_contextoFalta informacion para programar el pago (factura, cuenta, etc.)
lista_para_programarToda la informacion esta completa; listo para ejecutar
programadaEl pago fue programado y esta en proceso de ejecucion
bloqueadaEl pago esta detenido por algun problema (factura rechazada, error de cuenta, etc.)
vencidaLa fecha limite ya paso sin que se haya ejecutado el pago

Los pagos en estado pagada no aparecen en esta vista.

Semaforo de urgencia de pago

El semaforo indica que tan cerca esta la fecha de vencimiento:

ColorEtiquetaCondicion
VerdeEn tiempoFaltan mas de 3 dias para la fecha limite
AmarilloProximoFaltan 3 dias o menos para la fecha limite
AmarilloSin fechaNo se definio fecha limite (due_at vacio)
RojoVencidoLa fecha limite ya paso o es hoy

Importante: Los pagos con semaforo en rojo (Vencido) deben atenderse de inmediato. Los amarillos requieren accion en las proximas 72 horas.

Ordenamiento

Los pagos se muestran ordenados por:

  1. Urgencia — los pagos vencidos aparecen primero, luego los proximos, luego los que estan en tiempo.
  2. Fecha de vencimiento — de mas proxima a mas lejana, dentro de cada grupo de urgencia.

Como Registrar un Pago

Los pagos se registran a traves de la pestana stg_pago_proveedor (o el formulario en AppSheet).

Pago nuevo

  1. Identificar el pago pendiente en vista_pagos_proveedor.
  2. Abrir stg_pago_proveedor y llenar:
    • demanda_id: ID de la demanda de abastecimiento.
    • opcion_id: ID de la opcion aprobada (la que se esta pagando).
    • proveedor_id: ID del proveedor.
    • payment_method_code: Metodo de pago (transferencia, efectivo, o cheque).
    • beneficiary_name: Nombre del beneficiario.
    • account_ref: Referencia de cuenta bancaria o datos de pago.
    • invoice_or_quote_ref: Numero de factura o cotizacion del proveedor.
    • due_at: Fecha limite de pago.
  3. El sistema crea el registro de pago en _pagos_proveedor y calcula el estado inicial.
  4. La demanda transiciona a estado pago_pendiente.

Ejecutar un pago (marcar como pagado)

  1. Abrir stg_pago_proveedor con la misma combinacion de demanda_id/opcion_id/proveedor_id.
  2. Llenar los campos adicionales:
    • paid_by_user_id: ID del usuario que ejecuto el pago.
    • paid_at: Fecha y hora en que se ejecuto el pago.
    • proof_refs_json: Referencias a comprobantes (JSON array, ej. ["comprobante_001.pdf"]).
  3. El sistema actualiza el pago existente a estado pagada.
  4. La demanda transiciona a estado pagada, habilitando la recepcion de material.

Manejo de Excepciones

Pago sin factura

Cuando el proveedor no emite factura (frecuente con proveedores informales):

  1. Registrar el pago normalmente.
  2. Llenar exception_reason_code = sin_factura.
  3. En invoice_or_quote_ref, anotar la referencia alternativa (cotizacion, nota de remision, etc.).

Pago en efectivo

Cuando el pago debe hacerse en efectivo (frecuente para compras urgentes menores):

  1. Llenar payment_method_code = efectivo.
  2. Llenar exception_reason_code = pago_en_efectivo.
  3. Adjuntar foto del recibo o comprobante de entrega en proof_refs_json.

Liquidacion inmediata

Cuando el proveedor exige pago antes de entregar el material:

  1. Llenar exception_reason_code = liquidacion_inmediata.
  2. Llenar due_at con la fecha de hoy o el dia del pago.
  3. Ejecutar el pago de inmediato (llenar paid_at y proof_refs_json).
  4. El material se podra recibir una vez que el pago este en estado pagada.

Cuando Escalar

  • Pago vencido sin resolucion. Si un pago lleva mas de 3 dias en rojo y no se ha podido ejecutar, escalar a direccion para definir prioridad o negociar con el proveedor.
  • Monto no coincide con la opcion aprobada. Si el proveedor cobra un monto diferente al aprobado, no proceder sin autorizacion de direccion.
  • Proveedor no entrega factura. Si se requiere factura para la contabilidad y el proveedor no la proporciona, escalar a compras para gestionar o buscar alternativa.
  • Cuenta bancaria rechazada. Si la transferencia falla, verificar los datos con el proveedor y actualizar account_ref.

Reglas Importantes

  1. Solo se pueden pagar opciones seleccionadas. El sistema valida que la opcion este en estado seleccionada (aprobada por direccion) antes de permitir el pago.
  2. El proveedor_id debe coincidir con la opcion. El sistema verifica que el proveedor del pago sea el mismo de la opcion aprobada.
  3. La demanda debe estar en estado downstream. Si la demanda no ha pasado por aprobacion, el sistema rechaza el pago con “Demand is not ready for downstream payment context”.
  4. Pagos vencidos requieren accion inmediata. Revisar la cola diariamente para evitar atrasos.
  5. Siempre adjuntar comprobante. El campo proof_refs_json debe llenarse al ejecutar el pago.
  6. Pagos en efectivo requieren evidencia fotografica. Tomar foto del recibo y referenciarlo.

Errores Comunes

CampoValor
status_procesamientook (exito) o error (fallo)
error_codeCodigo del error
error_detailDescripcion detallada del problema
procesado_atFecha y hora del procesamiento

Errores frecuentes y solucion

ErrorCausaSolucion
”demanda_id es obligatorio”No se selecciono la demandaVerificar el campo demanda_id
”opcion_id=X no encontrada”La opcion no existeVerificar el ID correcto
”opcion_id=X no pertenece a demanda_id=Y”La opcion no corresponde a esta demandaVerificar que opcion y demanda esten vinculadas
”proveedor_id no coincide con la opcion aprobada”El proveedor del pago difiereUsar el proveedor_id de la opcion seleccionada
”La opcion debe estar seleccionada”La opcion no fue aprobada por direccionVerificar que direccion haya aprobado esta opcion
”Demand is not ready for downstream payment context”La demanda no ha sido aprobadaEsperar aprobacion de direccion antes de solicitar pago
”paid_by_user_id invalid”El usuario no esta activoVerificar que la cuenta este activa en _usuarios

Que hacer si una fila tiene error

  1. Revisar los campos error_code y error_detail en la fila de staging.
  2. Corregir el dato incorrecto.
  3. Limpiar el campo status_procesamiento (dejarlo vacio) para que el sistema vuelva a procesar la fila.
  4. 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