12. Prestaciones no implementadas
El servicio cubre la parte del protocolo que hace falta para consultar y mantener maestros, pero no todo OData v4. Esto es lo que no está, con la respuesta exacta que vas a recibir si lo intentás. Nada de esto falla en silencio.
| Prestación | Respuesta | Alternativa |
|---|---|---|
$batch — varias operaciones en un request | 501 BatchNotSupported | Un request por operación. Cada escritura es su propia transacción. |
$apply — agregaciones (groupby, aggregate) | 501 UnsupportedQueryOption | Agregar del lado del cliente, o pedirle al administrador una vista o un reporte del ERP. |
any / all en $filter | 501 UnsupportedFilter | Consultar la entidad hija y filtrar por su FK. |
Filtrar u ordenar atravesando una colección (items/sku eq 'X') | 501 UnsupportedPath | Igual que el anterior. |
has, isof, $it, $root, aliases @param, funciones geo.* | 501 UnsupportedFilter | — |
ETag / If-Match / concurrencia optimista | se ignora | No hay. Gana la última escritura; si hace falta controlarlo, va como regla de negocio en el ERP. |
| Deep insert — padre e hijos en un POST | 501 DeepInsertNotSupported | Un POST por entidad, empezando por el padre. |
Escribir por una navegación o una propiedad; $ref de escritura | 501 UnsupportedPath | PATCH sobre la entidad, asignando la columna de la FK. |
$levels, $compute, $index | 501 UnsupportedQueryOption | — |
| Más de 2 segmentos de navegación en la URL | 501 PathTooDeep | Partir en dos consultas. |
$expand anidado de más de 2 niveles | 501 ExpandDepthExceeded | Idem. |
$expand de una navegación de muchos a uno con $filter, $orderby, $top, $skip o $count | 501 UnsupportedQueryOption | Solo $select y $expand. Para filtrar por ese maestro usá $filter=Nav/campo en el nivel de arriba. |
$select con más de un nivel de navegación | 501 UnsupportedQueryOption | $expand=A($expand=B($select=campo)). |
$expand=A/B (ruta con barra) | 501 | $expand=A($expand=B). |
$expand=* con opciones anidadas | 501 | Nombrar cada navegación. |
| Entidades sin clave primaria definida en el ERP | 501 KeylessEntity | Pedirle al administrador que defina la PK del objeto. |
Funciones y acciones OData; $crossjoin; $all | 400 InvalidPath | No existen en este servicio. |
Literales duration'...' | 400 InvalidFilter | — |
| Atom, o XML para datos | 406 FormatNotSupported | Solo JSON. El XML existe únicamente para $metadata. |
$search anidado dentro de $expand | 501 | $search solo en el nivel superior. |
Campos Memo y Binary en $filter y $orderby | 400 NotFilterable / NotSortable | Ninguna: el motor de base no los puede comparar. |