Árbol del API · Pedidos › cancelOrder
Cancelar una orden de venta
cancelOrder
Tipo
Mutation
Devuelve
Permiso de la llave
Creacion de Orden de Venta
Reintentos
Seguros con idempotencyKey
Cancela una orden de venta. Una orden de venta registrada se elimina; una confirmada regresa a registrada con el motivo en sus comentarios.
El resultado depende del estatus de la orden:
| Origen y estatus | Qué pasa | Respuesta |
|---|---|---|
Orden de venta (OV) REGISTERED |
La orden se elimina. | order: null y deletedOrderId con su id. |
Orden de venta (OV) CONFIRMED |
Regresa a REGISTERED y libera lo apartado; el motivo se agrega a los comentarios. |
order con su nuevo estatus. |
Pedido por especificación (EP) CONFIRMED |
Queda CANCELLED. |
order con estatus CANCELLED. |
| Cualquier otro origen o estatus | No cambia. | errors con código CONFLICT. |
Repetir la cancelación con la misma idempotencyKey no cancela dos veces:
devuelve la orden como está en ese momento o, si se eliminó, su
deletedOrderId.
cancelOrder( id: ID! reason: String! userId: ID idempotencyKey: String! ): CancelOrderPayload
Argumentos
4
| Argumento | Tipo | Descripción |
|---|---|---|
| Orden | ||
idID! |
ID! | Orden que quieres cancelar. Obligatorio. |
reasonString! |
String! | Motivo de la cancelación; es obligatorio. Al desconfirmar una orden de venta se agrega a sus comentarios. Obligatorio. |
userIdID |
ID | Usuario activo de AdvantaCloud a nombre de quien se cancela. Con Llave API es obligatorio. |
| Reintentos | ||
idempotencyKeyString! |
String! | Clave única por cancelación. Repetir la petición con la misma clave y los mismos datos devuelve el mismo resultado sin cancelar dos veces. Obligatorio. |
Lo que devuelve
CancelOrderPayload
Campos principales de CancelOrderPayload:
| Campo | Tipo | Descripción |
|---|---|---|
orderOrder |
Order | La orden con su nuevo estatus; null si se eliminó o si hubo errores. |
deletedOrderIdID |
ID | El id de la orden, cuando se eliminó por estar registrada. |
errors[FieldError!]! |
[FieldError!]! | Errores que impidieron cancelar; vacía si se canceló. |
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. |
CONFLICT | La orden no se puede cancelar en su estatus u origen (ver la tabla), tiene facturas relacionadas, o la empresa sólo deja cancelarla a quien la capturó y userId es otro usuario que no es administrador. Llega en cancelOrder.errors. | Lee el mensaje; reintentar sin cambios no ayuda. |
VALIDATION | El motivo está vacío (en cancelOrder.errors, field: "reason") o falta un userId activo (en errors de la respuesta). | Envía el motivo y el usuario. |
NOT_FOUND | No hay una orden con ese id en la empresa. | Revisa el id. |
| HTTP 422 | Falla interna o dato rechazado al guardar. El cuerpo es {"error": …}, sin data. | Si no cambiaste nada, reintenta con la misma idempotencyKey. |
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.