Odoo 19 · Ingenio Construcciones · Compras y Depósito

Contratos de compra

Dos herramientas que se configuran en el mismo lugar y sirven para cosas distintas: fijar precio con un proveedor por un plazo, o guardar una canasta de productos que se repite.

1

Dos herramientas en el mismo menú

Se llaman igual, se cargan en la misma pantalla y sirven para cosas distintas.

Los contratos de compra no vienen activados. Se prenden en Compras > Configuración > Ajustes, casilla Contratos de compra, y al guardar aparece la entrada Compras > Órdenes > Contratos de compra.

Adentro hay un campo, Tipo de contrato, con dos valores que resuelven problemas completamente distintos:

TipoQué resuelve
Orden abiertaAcordar precio y condiciones con un proveedor por un plazo, e ir pidiendo contra ese acuerdo en varias entregas.
Plantilla de compraGuardar una canasta de productos con sus cantidades para repetirla, sin comprometer nada con nadie.

La diferencia de fondo: la orden abierta es un compromiso comercial y tiene proveedor; la plantilla es un atajo de carga y puede no tenerlo. Confundirlas es el error de entrada, y se nota enseguida porque una pide proveedor y la otra no.

🖼️
Captura pendiente
Entrá a Compras > Configuración > Ajustes y sacá el recorte del bloque donde está la casilla Contratos de compra, tildada, con su texto de ayuda legible y las casillas vecinas del mismo bloque para dar contexto.
2

La orden abierta

Precio pactado, plazo de vigencia, y órdenes que se van descargando contra el acuerdo.

El caso típico: se negocia con un proveedor comprarle 1.000 unidades a lo largo del año a un precio fijo, retirando de a poco. Eso es una orden abierta.

La ficha pide el Proveedor, una Referencia, las fechas de inicio y de finalización de la vigencia, y en Productos por comprar una línea por artículo con la cantidad total acordada y el precio pactado. Se guarda y se pasa a Confirmar.

Confirmada, la orden abierta hace dos cosas. La primera es visible: el botón Nueva cotización arma una orden de compra a ese proveedor con los productos y el precio del acuerdo ya cargados; solo hay que ajustar la cantidad de esa entrega. La segunda es silenciosa y más útil: Odoo escribe el precio pactado en la lista de precios del proveedor para los productos del acuerdo, con la vigencia del contrato. Desde ese momento, cualquier compra a ese proveedor —venga del acuerdo o no— toma ese precio mientras el contrato esté vigente.

La columna Ordenado de cada línea lleva la cuenta de cuánto se fue pidiendo contra el acuerdo. Es el dato para saber cuánto queda del cupo negociado.

🖼️
Captura pendiente
Creá un contrato de compra de tipo Orden abierta sobre un proveedor de demostración, con dos líneas de producto, cantidades y precios cargados, y confirmalo. Sacá la ficha completa: tienen que leerse el Tipo de contrato, el proveedor, las fechas de vigencia, la barra de estado en confirmado, el botón Nueva cotización y la tabla Productos por comprar con las columnas de cantidad, precio y Ordenado.
🖼️
Captura pendiente
Desde esa orden abierta tocá Nueva cotización y sacá la solicitud de cotización que se genera, mostrando que trae el proveedor, los productos y el precio del acuerdo ya cargados, y el campo que la vincula al contrato de origen.
🖼️
Captura pendiente
Abrí uno de los productos del contrato, pestaña Compra, y sacá la tabla de proveedores mostrando la fila que Odoo escribió solo al confirmar la orden abierta: se reconoce porque trae el precio pactado y las fechas de vigencia del contrato. Es la parte del mecanismo que no se ve y conviene mostrar.
Cerrar el contrato no borra el precioCuando la orden abierta se cierra o vence, las órdenes ya emitidas quedan intactas —correcto— pero conviene revisar la lista de precios del producto. La fila que el contrato escribió tiene fecha de finalización, así que deja de aplicarse sola; el problema aparece cuando alguien la editó a mano y le sacó la fecha. A partir de ahí se sigue comprando al precio de un acuerdo que ya no existe, sin ningún aviso.
3

La plantilla de compra

Una canasta guardada. No compromete a nadie y no toca los precios.

La plantilla resuelve otra cosa: el pedido que se repite. Los treinta artículos de reposición mensual, el kit de arranque de una obra, el paquete de consumibles de siempre. Se carga una vez con sus cantidades y después se usa de molde.

La diferencia operativa con la orden abierta es simple y vale memorizarla: al generar una orden desde una plantilla, Odoo copia también la cantidad de cada línea. Desde una orden abierta, en cambio, trae los productos con cantidad en cero, porque cada entrega es por lo que haga falta esa vez.

La plantilla puede tener proveedor o no. Sin proveedor, sirve como canasta genérica que después se le pide a quien corresponda. Con proveedor, es directamente un pedido tipo.

Lo que la plantilla no hace: no escribe precios en la lista del proveedor, no lleva cuenta de cuánto se pidió y no vence. Es un atajo de carga, nada más. Si lo que se busca es fijar precio, la herramienta es la orden abierta.

🖼️
Captura pendiente
Creá un contrato de tipo Plantilla de compra con cinco o seis líneas de producto con sus cantidades, y sacá la ficha completa. Tiene que verse el Tipo de contrato en plantilla y la tabla de productos con cantidades cargadas. Si la plantilla no lleva proveedor, mejor: se ve la diferencia con la orden abierta.
🖼️
Captura pendiente
Desde esa plantilla generá una cotización y sacá la orden resultante mostrando que las cantidades vinieron copiadas de la plantilla, no en cero. Conviene que quede en el mismo recorte alguna línea con cantidad distinta de 1 para que la diferencia sea evidente.
4

Cuál usar en cada caso

Tres preguntas que resuelven la elección sin dar vueltas.

PreguntaSi la respuesta es sí
¿Hay un precio acordado que tiene que respetarse por un plazo?Orden abierta
¿Hace falta saber cuánto queda del cupo negociado?Orden abierta
¿Es siempre el mismo listado de productos y lo que cambia es a quién o cuándo?Plantilla de compra

Y las dos se pueden combinar sin conflicto: una plantilla con la canasta habitual, y órdenes abiertas con los dos o tres proveedores que fijaron precio. La plantilla arma la orden, y el precio lo pone el acuerdo vigente.

Un aviso sobre versiones, porque genera confusión al buscar en internet: en Odoo 19 los contratos de compra tienen solo estos dos tipos. El viejo «llamado a licitación», que aparece en tutoriales de versiones anteriores, ya no existe como tipo de contrato. Pedirle precio por lo mismo a varios proveedores se hace hoy con las alternativas sobre la orden de compra, y está en el Manual «Cotizar a varios proveedores».

🖼️
Captura pendiente
Entrá a Compras > Órdenes > Contratos de compra y sacá el listado con al menos un contrato de cada tipo, de modo que se lea la columna Tipo de contrato con los dos valores distintos, más el estado de cada uno y las fechas.
🖼️
Captura pendiente
Abrí una orden abierta que ya tenga varias órdenes generadas contra ella y sacá el botón inteligente con el contador de órdenes de compra, más la tabla de productos donde se vea la columna Ordenado con valores distintos de cero. Es la vista que responde «cuánto queda del acuerdo».
El desplegable del tipo desaparece después de guardarAl crear el contrato, el Tipo de contrato se elige libremente; una vez guardado y con líneas cargadas, cambiarlo tiene efectos raros porque el comportamiento de las cantidades ya no coincide con lo que se cargó. Si se eligió mal, conviene crear el contrato de nuevo con el tipo correcto en lugar de convertirlo.