Pedido de compra (solicitud a proveedor)

Formulario para registrar pedidos de compra a proveedores. Aunque la mercadería aún no llega, cada línea marca el producto como “pedido” para que los reportes de stock mínimo no vuelvan a sugerir la misma compra. Maneja numeración correlativa por almacén, permite seleccionar proveedor por NIT o nombre, definir un estado predeterminado para los ítems, controlar la edición mediante candado y generar el reporte de pedido de compra.


📘 Propósito

El formulario Pedido de compra registra las cantidades de productos que la empresa solicita a sus proveedores. No ingresa todavía mercadería al almacén, pero marca los productos como “en pedido” para que los reportes de stock mínimo no vuelvan a sugerirlos mientras el pedido está vigente.

Más adelante, cuando la mercadería llegue, se generará la Nota de entrada y la compra utilizando como referencia este pedido de compra.

🔢 Numeración y alcance

  • Cada pedido de compra es un comprobante interno de Tipo 1, con numeración por almacén.
  • Al pulsar Nuevo, el sistema:
    • Lee el almacén elegido en ElegirAlmacen.
    • Obtiene de la tabla Almacén el rango de talonario: PcIni–PcFin.
    • Busca el último número usado para pedidos de compra en ese almacén y asigna el siguiente número disponible dentro del rango.
  • Si el último número ya llegó a PcFin, se avisa que “se ha terminado el talonario electrónico”.
  • Doble clic en Número (Nro) lo desbloquea temporalmente para asignar un número manual. Al salir del campo vuelve a quedar bloqueado.

🧭 Barra de acciones

  • Nuevo:
    • Crea un nuevo pedido de compra, asignando número, fecha actual y almacén desde ElegirAlmacen.
    • Requiere que el módulo esté contratado (funCom), que el usuario tenga permiso (usuAct("com")) y que no se haya alcanzado el límite de registros en la nube.
  • Modificar / Bloquear:
    • Con el candado cerrado, pulsar Modificar habilita fecha, proveedor, glosa y detalle.
    • Con el candado abierto, pulsar Bloquear vuelve el registro de solo lectura.
    • Si el pedido ya está vinculado a una compra (IdCompras) o a un traspaso (IdTr), la edición estará bloqueada y el sistema mostrará el número del documento que lo utiliza.
  • Anular / Habilitar:
    • Anular marca el pedido como anulado (no se considera en pendientes) y muestra la etiqueta “ANULADO”.
    • Habilitar revierte la anulación.
    • No se permite anular si el pedido pertenece a un traspaso de almacenes (IdTr distinto de 0).
  • Eliminar:
    • Solo es posible si el pedido no está vinculado a una compra (IdCompras) ni a un traspaso (IdTr).
    • Muestra un mensaje de confirmación y, en caso afirmativo, elimina el comprobante y su detalle.
  • Buscar: abre la búsqueda estándar de Access sobre el campo activo.
  • Ver: abre en vista previa el reporte PedCom (pedido de compra) filtrado por el comprobante actual.
  • Imprimir: guarda el registro y envía el reporte PedCom a la impresora.
  • Primero / Anterior / Siguiente / Último: navegación entre pedidos registrados.
  • Cerrar: cierra el formulario de Pedido de compra.

📋 Cabecera del pedido

  • Fecha:
    • Fecha en la que se emite el pedido de compra. Es obligatoria para poder ingresar detalle.
    • Al cambiar la fecha se actualiza, para cada producto del detalle, la fecha de pedido en la función FechaInv, usada en reportes de reposición.
    • Doble clic en la fecha coloca la fecha del día y ejecuta la actualización.
  • Proveedor:
    • Si la empresa está configurada como proveedora, la lista muestra registros de la tabla Prov.
    • En otro caso, se usan los contactos de Clientes como proveedor (por ejemplo, compras a un cliente especial).
    • IdProv: búsqueda por NIT / C.I..
    • IdProv2: búsqueda por Nombre. Doble clic abre un buscador avanzado (buscarclientes21).
    • Si el proveedor no existe, los eventos NotInList permiten crearlo directamente por NIT o nombre (AddContactoNit / AddContactoNombre).
  • NIT / C.I.: se muestra junto al proveedor seleccionado para verificación rápida.
  • Glosa: descripción general del pedido (ejemplo: “Pedido de compra abastecimiento”).
  • Estado predeterminado: define el estado por defecto de los productos a comprar (por ejemplo, “OK”). Doble clic abre el formulario de Estado de producto para consultarlo, y si no existe el estado se puede agregar mediante AddEstadoProducto.
  • Almacén: almacén para el cual se realiza el pedido. Se toma desde ElegirAlmacen y determina los rangos de numeración.
  • Recibido por: persona responsable de revisar/recibir la mercadería cuando llegue (se usa en reportes).

🧾 Detalle (grid de productos)

El detalle enumera los productos que se solicita al proveedor. No genera entradas de inventario, pero marca las cantidades como pedidas.

Campo Uso
orden Número de línea del pedido. Se actualiza con el número de registro actual cuando se edita el código o la descripción.
código Código interno del producto. Al salir del campo:
  • Si la descripción está vacía, doble clic permite crear un producto nuevo (abre ProductosAdd en modo alta).
  • Si ya hay producto, doble clic abre la ficha de producto para editarlo.
  • Presionar F3 abre el buscador NeBuscarProdP.
  • Si el código no existe en la lista, el evento NotInList abre el formulario de productos para incorporarlo y recargar la lista.
descripción Nombre del producto. Al seleccionar una descripción se guarda el orden de la línea y se asigna el estado indicado en Estado predeterminado.
Umedida Unidad de medida (Piezas, Kg, Caja, etc.).
Cantidad Cantidad que se solicita al proveedor. Estas cantidades se suman al campo “Pedido” de los reportes de stock mínimo, pero aún no afectan las existencias físicas.

📦 Impacto en stock y planificación

  • El pedido de compra no genera movimientos de entrada ni salida en el almacén, pero cada línea marca el producto como en pedido en las consultas de inventario.
  • De esta forma, si un producto está por debajo del stock mínimo pero ya tiene un pedido de compra registrado, los reportes de reposición pueden considerar la cantidad pedida y evitar duplicar compras.
  • Al cambiar la Fecha del pedido, se actualiza la fecha de pedido por producto (función FechaInv) para mejorar el análisis de rotación y tiempos de abastecimiento.

🧱 Flujo sugerido

  1. Verifique que esté seleccionado el almacén correcto (desde ElegirAlmacen).
  2. Pulse Nuevo para crear un pedido de compra; el sistema asignará el número dentro del rango PcIni–PcFin.
  3. Complete la Fecha, el Proveedor (por NIT o nombre) y la Glosa. Ajuste el Estado predeterminado si es necesario.
  4. En el detalle, ingrese Código o busque la Descripción. Agregue la cantidad requerida para cada producto.
  5. Revise los datos; si está todo correcto, use Ver para vista previa y luego Imprimir para enviar el pedido al proveedor.
  6. Una vez que la mercadería llegue, genere la Nota de entrada y la correspondiente compra, vinculándolas a este pedido.
  7. Si el pedido queda sin efecto, utilice Anular (o Eliminar si aún no tiene vínculos) para evitar que siga influyendo en los reportes de stock mínimo.

⚠️ Reglas y permisos

  • El acceso a Nuevo, Modificar, Eliminar, Ver, Imprimir, Anular está condicionado a los permisos del usuario y a la contratación del módulo de compras.
  • No se puede editar, anular ni eliminar un pedido de compra que ya esté vinculado a:
    • Una compra (IdCompras distinto de 0).
    • Un traspaso de almacenes (IdTr distinto de 0).
  • Para preservar la historia de abastecimiento, se recomienda usar Anular antes que Eliminar, salvo que el pedido se haya creado por error.