Vista: Recepciones Pendientes

Proposito

Esta vista permite al encargado de almacen dar seguimiento al material comprado que esta pendiente de recepcion. Muestra las demandas de abastecimiento que ya fueron pagadas o pedidas, junto con la cantidad ya recibida y la cantidad pendiente. El almacenista utiliza esta vista para saber que material espera, registrar cada entrega del proveedor, y manejar recepciones parciales o discrepancias.

Vista: Recepciones Pendientes

La pestana vista_recepciones_pendientes es una vista de solo lectura (Capa 3a) que muestra las demandas de abastecimiento en etapa de recepcion. Se actualiza automaticamente cada vez que se procesan cambios.

Columnas de la vista

ColumnaDescripcion
Folio DemandaIdentificador unico de la demanda de abastecimiento
Descripcion SolicitadaDescripcion del material o servicio esperado
Cantidad RequeridaCantidad total solicitada en la demanda
Proveedor NombreNombre del proveedor de la opcion seleccionada
Cantidad Ya RecibidaSuma de cantidades recibidas en todas las recepciones anteriores
Cantidad PendienteDiferencia entre requerida y recibida (cantidad_requerida - cantidad_ya_recibida)
Estado DemandaEstado actual de la demanda (ver filtros)

Filtros

Solo aparecen demandas en los siguientes estados:

  • pagada — el proveedor ya fue pagado y se espera la entrega del material
  • pedida — el pedido fue enviado al proveedor
  • recepcion_parcial — se recibio parte del material, falta el resto

Las demandas en otros estados (capturada, cotizando, aprobada, recibida_total, surtida_os, cerrada, etc.) no aparecen en esta vista.

Ordenamiento

Las demandas se muestran ordenadas por:

  1. recepcion_parcial — las que ya tienen entregas parciales aparecen primero (material en proceso de llegar).
  2. pedida — las que ya fueron pedidas al proveedor.
  3. pagada — las que fueron pagadas y estan en espera.

Como Registrar una Recepcion

Las recepciones se registran a traves de la pestana stg_recepcion_abastecimiento (o el formulario en AppSheet).

Recepcion completa (caso normal)

  1. Identificar la demanda en vista_recepciones_pendientes.
  2. Verificar fisicamente que el material entregado coincide con la descripcion y cantidad.
  3. Abrir stg_recepcion_abastecimiento y llenar:
    • demanda_id: ID de la demanda.
    • opcion_id: ID de la opcion seleccionada (la del proveedor que entrega).
    • proveedor_id: ID del proveedor.
    • producto_id: (Opcional) ID del producto si esta en catalogo. Si no se llena, se toma del producto de la demanda.
    • cantidad_recibida: Cantidad fisicamente recibida.
    • receipt_mode_code: Modo de recepcion (ver abajo).
    • received_by_user_id: Su ID de usuario.
    • receipt_doc_refs_json: Referencias a documentos (remision, fotos, etc.), ej. ["remision_001.pdf"].
  4. El sistema:
    • Crea la recepcion en _recepciones_abastecimiento.
    • Si es entrada_stock: crea movimiento de inventario y actualiza stock_actual en _productos.
    • Si la cantidad recibida completa la demanda: transiciona a recibida_total.
    • Si queda cantidad pendiente: transiciona a recepcion_parcial.

Modos de recepcion

ModoCodigoCuando usar
Entrada a stockentrada_stockEl material se recibe en almacen y se agrega al inventario general. Uso normal.
Directo a OSdirecto_osEl material se entrega directamente a la orden de servicio sin pasar por inventario. Para piezas especificas o urgentes.

Importante: Si se usa directo_os y no se llena allocated_os_id, el sistema lo toma automaticamente de la demanda.

Recepcion parcial

Cuando el proveedor entrega solo una parte del pedido:

  1. Registrar la recepcion con la cantidad fisicamente recibida (no la total).
  2. El sistema calcula cantidad_pendiente automaticamente.
  3. La demanda queda en estado recepcion_parcial.
  4. La demanda sigue visible en la vista hasta que se complete.
  5. Cuando llega el resto: registrar una nueva recepcion con la cantidad restante.

Recepcion con discrepancia

Cuando lo recibido no coincide con lo pedido (cantidad incorrecta, producto equivocado, dano):

  1. Registrar la recepcion con la cantidad realmente recibida.
  2. Llenar discrepancy_code con el codigo correspondiente:
    • cantidad_incorrecta — el proveedor entrego mas o menos de lo acordado
    • producto_equivocado — el material no es el solicitado
    • material_danado — el material llego en malas condiciones
    • backorder_proveedor — el proveedor confirma que el faltante llegara despues
    • recepcion_con_discrepancia — discrepancia general
  3. El sistema marca la recepcion como discrepancia_abierta.
  4. La demanda queda en recepcion_parcial para seguimiento.
  5. Escalar a compras para que gestione con el proveedor.

Efectos en Inventario

Cada recepcion con modo entrada_stock genera automaticamente:

  1. Un registro en _movimientos_inventario con:
    • tipo_movimiento = entrada
    • cantidad = lo recibido
    • referencia_tipo = recepcion_abastecimiento
    • referencia_id = ID de la recepcion
  2. Actualizacion de stock_actual en _productos (se suma la cantidad recibida).

Para modo directo_os:

  • Se genera un movimiento con tipo_movimiento = asignacion_directa_os.
  • No se actualiza stock (el material no paso por inventario).

Cuando Escalar

  • Material danado. Documentar con fotos (en receipt_doc_refs_json), registrar la discrepancia, y notificar a compras para gestion con el proveedor.
  • Proveedor entrega producto equivocado. No recibir el material incorrecto. Registrar discrepancia y coordinar devolucion con compras.
  • Cantidad recibida excede la pendiente. El sistema rechaza la recepcion con error “cantidad_recibida excede pendiente”. Verificar contra recepciones anteriores y coordinar con compras.
  • Proveedor no aparece o no entrega. Si pasan mas de 5 dias habiles desde el pago sin entrega, notificar a compras para seguimiento.
  • Producto no esta en catalogo. Si el material recibido no tiene producto_id en catalogo, solicitar alta a compras antes de registrar como entrada_stock.

Reglas Importantes

  1. La opcion debe estar seleccionada. El sistema verifica que la opcion de abastecimiento este en estado seleccionada antes de permitir la recepcion.
  2. El proveedor debe coincidir con la opcion. El proveedor_id de la recepcion debe ser el mismo de la opcion aprobada.
  3. La demanda debe estar en estado que acepte recepcion. Estados validos: aprobada, pago_pendiente, pagada, pedida, recepcion_parcial.
  4. No exceder la cantidad pendiente. El sistema rechaza recepciones donde cantidad_recibida > cantidad_pendiente.
  5. Siempre documentar la entrega. Llenar receipt_doc_refs_json con la referencia de la remision, factura o foto.
  6. Verificar fisicamente antes de registrar. Contar el material y comparar con la descripcion y cantidad antes de ingresar la recepcion.
  7. Recepciones parciales son normales. No esperar a tener todo el pedido; registrar cada entrega conforme llega.

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
”demanda_id=X no encontrada”El ID no existeVerificar el ID correcto en la vista
”Demanda en estado X no acepta recepcion”La demanda no esta en estado validoVerificar que la demanda este en pagada, pedida, o recepcion_parcial
”opcion_id=X no pertenece a demanda_id=Y”La opcion no corresponde a esta demandaVerificar los IDs correctos
”proveedor_id no coincide con la opcion recibida”El proveedor difiere del de la opcionUsar el proveedor_id de la opcion seleccionada
”La opcion debe estar seleccionada”La opcion no fue aprobadaVerificar con compras/direccion que la opcion fue aprobada
”cantidad_recibida excede pendiente”Se intento recibir mas de lo que faltaVerificar recepciones anteriores; la cantidad maxima es cantidad_pendiente
”producto_id=X no encontrado”El producto no existe en catalogoSolicitar alta del producto antes de registrar
”received_by_user_id invalid”El usuario no esta activoVerificar que la cuenta este activa en _usuarios
”allocated_os_id=X no encontrada”La OS de asignacion directa no existeVerificar el ID correcto de la OS

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-5_almacen.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