Sincronizar el catálogo
Alta y actualización de productos desde un ERP sin duplicados, y sincronización en ambos sentidos.
En esta página
El catálogo de Chainlink debe contener los mismos productos que el ERP: el almacén recibe, acomoda y surte por código de producto (item_code). Esta guía describe el alta y la actualización de productos sin duplicados.
Alcances: products:read y products:write.
1. Carga inicial
Para cientos o miles de productos, use la carga masiva (un archivo, una validación). Para pocos productos, cree cada uno con POST /products.
2. Alta o actualización de un producto
Busque el producto por su código y aplique la operación que corresponda:
GET /products?item_code=P-1004. Sidataestá vacío, el producto no existe.- Si no existe:
POST /productsconIdempotency-Key. Guarde elidde la respuesta. - Si existe:
PATCH /products/{id}solo con los campos que cambiaron.
Lotes y series
man_btch_num (lotes) y man_ser_num (series) determinan lo que el operador captura al recibir y surtir. Defínalos al crear el producto y evite cambiarlos mientras haya existencias en almacén.
curl "https://empresa.chainlink.mx/api/v1/products?item_code=P-1004" \
-H "Authorization: Bearer $CHAINLINK_TOKEN" \
-H "Accept: application/json"
curl -X POST "https://empresa.chainlink.mx/api/v1/products" \
-H "Authorization: Bearer $CHAINLINK_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"item_code": "P-1004", "name": "Frijol negro 900 g", "barcode": "7501234567904", "man_btch_num": true, "sales_unit": "PZA"}'
curl -X PATCH "https://empresa.chainlink.mx/api/v1/products/101" \
-H "Authorization: Bearer $CHAINLINK_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name": "Aceite comestible 1 L (caja 12)"}'
3. Sincronización continua
- Del ERP a Chainlink: cuando un producto cambie en el ERP, aplique el paso 2.
- De Chainlink al ERP: si también se dan de alta productos en la web, suscríbase a
product.createdyproduct.updated, o consulteGET /products?updated_since=…periódicamente.
4. Bajas
DELETE /products/{id} da de baja el producto; su historial se conserva y su código no se puede reutilizar. Si el producto solo deja de venderse, conviene mantenerlo para conservar su trazabilidad.
Errores comunes
| Respuesta | Causa |
|---|---|
422, error.field = "item_code" | El código ya existe: busque el producto y actualícelo. |
422, error.field = "name" | Falta el nombre. |
403 missing_scope | El token no tiene products:write. |