Árbol del API · Pedidos › quoteOrder
Cotizar una orden
quoteOrder
Calcula precios, descuentos, impuestos y totales de una orden sin guardarla. Devuelve la orden calculada y las advertencias de existencia, precio y crédito.
Es una consulta: no guarda nada, no asigna folio y no necesita
idempotencyKey. Úsala para mostrar el total antes de confirmar o para saber
el precio vigente de cada partida.
Copia el unitPrice de cada partida cotizada en expectedUnitPrice al llamar
a createOrder: si el precio cambió entre
la cotización y la creación, la orden no se guarda y lo sabrás.
NO_STOCK avisa que no hay existencia suficiente y CREDIT_EXCEEDED que el
cliente rebasa su crédito; ninguna impide crear la orden. PRICE_CHANGED
avisa que un expectedUnitPrice ya no coincide: la cotización se completa,
pero createOrder rechazará esa partida hasta que envíes el precio vigente.
quoteOrder( input: OrderInput! ): OrderQuote
Argumentos
1
| Argumento | Tipo | Descripción |
|---|---|---|
inputOrderInput! |
OrderInput! | La orden a cotizar, con los mismos datos que enviarás a |
Advertencias de una orden
OrderWarning
NO_STOCKNo hay existencia suficiente de algún artículo en el almacénPRICE_CHANGEDEl precio de una partida ya no coincide con su expectedUnitPrice;
createOrder la rechaza con CONFLICTCREDIT_EXCEEDEDLa orden rebasa el crédito disponible del clienteLo que devuelve
OrderQuote
Campos principales de OrderQuote:
| Campo | Tipo | Descripción |
|---|---|---|
orderOrder! |
Order! | La orden con precios, descuentos, impuestos y totales calculados. No tiene id ni folio. |
warnings[OrderWarning!]! |
[OrderWarning!]! | Advertencias de existencia, precio y crédito. |
Permisos
Llave API Integraciones
La llave ve los registros de toda la empresa del subdominio.
Sin el permiso HTTP 422
La respuesta es HTTP 422 con el cuerpo {"error": "invalid_graphql_request"}, sin data.
Errores
| Código | Cuándo ocurre | Qué hacer |
|---|---|---|
| HTTP 401 | Falta el header Authorization o la llave no existe en la empresa del subdominio. La respuesta no trae cuerpo. | Revisa la llave y el subdominio. No reintentes. |
| HTTP 422 | La llave no tiene «Creacion de Orden de Venta». La respuesta es HTTP 422 con el cuerpo {"error": "invalid_graphql_request"}, sin data. | La llave necesita ese permiso; reintentar no ayuda. |
VALIDATION | Un dato no es válido: la estructura de precios no es del cliente, una cantidad no es positiva, un artículo está inactivo, hay más de 100 partidas o falta userId. Si el error es de una partida, extensions.field dice cuál, por ejemplo lines[1].quantity. | Corrige el dato indicado. |
NOT_FOUND | El cliente, el almacén, el artículo u otro dato de la orden no existe. | Revisa los identificadores; extensions.field puede indicar cuál falló. |
INACTIVE | El almacén, el tipo de venta, el término de crédito, el proyecto o la forma de embarque existe, pero ya no se ofrece. | Pide opciones vigentes con orderDefaults. |
CONFLICT | Una regla del negocio impide calcular la orden con esos datos. | Lee el mensaje; reintentar sin cambios no ayuda. |
| HTTP 422 | Falla interna o dato rechazado al guardar. El cuerpo es {"error": …}, sin data. | Si no cambiaste nada, reintenta con espera exponencial. |
Los errores de la consulta llegan con HTTP 200 en errors, con su código en extensions.code. Revisa siempre errors, no sólo el estatus HTTP. Errores y reintentos.