CONFLICT | 409 | Ya existe un registro con esos datos únicos. | Busca el registro existente en vez de crearlo otra vez. |
SKU_ALREADY_EXISTS | 409 | Al editar una variante (PATCH /products/{id}/variants/{variantId}), otra variante de la cuenta ya usa ese sku. Trae param: "sku". | Usa un SKU distinto o busca la variante que ya lo tiene. |
NO_WAREHOUSE | 409 | Un movimiento o un conteo de stock (o un producto con initial_stock) sin warehouse_id, y la cuenta no tiene una bodega predeterminada: o todavía no hay bodegas sincronizadas desde las cajas, o hay varias y ninguna es la predeterminada. | Indica warehouse_id (consúltalas con GET /warehouses) o abre Posdata en una caja con conexión para que sincronice sus bodegas. |
DEVICES_OUTDATED | 409 | Al editar un producto o una variante (PATCH /products/{id} o PATCH /products/{id}/variants/{variantId}), algún dispositivo del negocio todavía no tiene la versión de Posdata que acepta ediciones sin stock. No se modificó nada. Trae devices: la lista de esos dispositivos, cada uno con name, kind, platform, app_version y last_seen_at. | Abre esos dispositivos con internet para que se actualicen solos (tardan un minuto en reportarse) y reintenta, o revoca los que ya no uses en cuenta.posdata.so → Dispositivos. Crear productos y mover stock sí funciona mientras tanto. Mira por qué. |
INSUFFICIENT_STOCK | 409 | Una salida (POST /inventory/movements con type: "out") pide más de lo que la API puede comprometer en esa bodega: el stock menos el margen de la API. No se registró nada. Trae param: "quantity" y available: lo que sí puedes sacar (puede ser 0). | No reintentes la misma petición en bucle: saca como máximo available o marca el producto como agotado. El margen lo ajusta el negocio en cuenta.posdata.so → Inventario → Configuración. Mira Salidas atómicas. |
STOCK_MODE_LEGACY | 409 | La cuenta todavía no lleva el stock en la nube: alguna de sus cajas principales aún no tiene la versión de Posdata que lo soporta. Lo responden GET /inventory/levels, GET /inventory/kardex, GET /inventory/valuation, POST /inventory/counts y los movimientos de variantes (POST /inventory/movements con variant_id o de un producto con variantes). No se registró nada. | Pídele al negocio que abra sus cajas con internet para que se actualicen solas (y que revoque en cuenta.posdata.so → Dispositivos las que ya no use); el paso ocurre solo. Mientras tanto, los movimientos de productos sin variantes sí funcionan. Mira los dos modos. |
COMPOSITE_STOCK_UNSUPPORTED | 422 | Intentaste mover o contar stock de un producto que se arma con receta. | Mueve o cuenta el stock de sus insumos. |
VARIANT_STOCK_UNSUPPORTED | 422 | Obsoleto: ya no se emite. Lo respondían los movimientos de productos con variantes antes de que las variantes movieran su propio stock. Se conserva en el catálogo hasta una nueva versión de la API. | Nada. Si tu integración ramificaba por este código, trata STOCK_MODE_LEGACY de la misma forma. |