Crear traspasos de stock desde la API: POST /StockTransferenceREST/createWithLines
Este endpoint crea un traspaso de stock entre dos almacenes con todas sus líneas en una sola llamada, desde un sistema externo o un frontend propio. Hace exactamente las mismas comprobaciones que la inserción rápida de traspasos del ERP: si algo no es válido, no se crea nada y la respuesta dice por qué, con un mensaje en castellano para enseñárselo al usuario.
Si todo es correcto, el traspaso se crea En curso, numerado según su tipo, y su preparación se trata igual que en los pedidos: si la plataforma trabaja sin picking, se crea en el momento la orden de trabajo de preparación (Pick & Pack); si trabaja con picking, no se crea ninguna orden de trabajo y el traspaso espera en Artículos a preparar hasta que se lance desde allí.
Cómo se llama
POST /StockTransferenceREST/createWithLines
Content-Type: application/json
- Autenticación: la misma que el resto de la API (usuario y contraseña, token o ticket SSO). Ver API de Yunbit (hay que iniciar sesión en la wiki).
- El traspaso se crea en nombre del usuario autenticado: necesita el privilegio de perfil crear traspasos de stock (
CreateStockTransferences) o ser administrador del SGA. - Respuestas: 200 con
status: "OK"y el traspaso creado endata; si no,status: "ERR"y el motivo enerror, con código 400 (el cuerpo no es un JSON válido), 403 (el usuario no puede crear traspasos), 422 (algún dato no es válido) o 500 (error de la plataforma).
Qué se envía
originStoreId(obligatorio): el almacén de origen, de donde sale el stock.destinationStoreId(obligatorio): el almacén de destino. Distinto del de origen y de la misma empresa.shipmentCompanyId(obligatorio): la compañía de transporte.shipmentServiceId(obligatorio): el servicio de transporte. Tiene que ser de la compañía indicada.typeId(opcional): el tipo de traspaso. Si no se envía, se usa el tipo predeterminado. El número del traspaso lleva el formato de su tipo.storeObs(opcional): observaciones para el almacén.lines(obligatorio, al menos una): los artículos, cada uno conarticleIdyunits(unidades, mayores que 0). Si un artículo va en varias líneas, se juntan en una sumando las unidades.
Ejemplos
Reposición de una tienda desde el almacén central
10 unidades de un artículo y 2 de otro, con un servicio de transporte urgente:
POST /StockTransferenceREST/createWithLines
{
"originStoreId": "cw5f1a2b3c4d5e6",
"destinationStoreId": "cw5f1a2b3c4d5e7",
"shipmentCompanyId": "cw5f1a2b3c4d5e8",
"shipmentServiceId": "cw5f1a2b3c4d5e9",
"storeObs": "Reposición semanal de la tienda",
"lines": [
{ "articleId": "cw5f1a2b3c4d5f0", "units": 10 },
{ "articleId": "cw5f1a2b3c4d5f1", "units": 2 }
]
}
Respuesta (200). id es el identificador del traspaso y transferId su número, con el que se busca en el gestor de traspasos:
{
"status": "OK",
"data": {
"id": "cw6a7b8c9d0e1f2",
"transferId": "000123"
}
}
No hay stock suficiente en el origen
Se piden 10 unidades y en el almacén de origen solo hay 4 libres. No se crea el traspaso. Responde con código HTTP 422:
{
"status": "ERR",
"error": "Solo hay 4 disponibles de REF-001 en el almacén de origen."
}
Usuario sin permiso
Responde con código HTTP 403:
{
"status": "ERR",
"error": "No tienes permiso para crear traspasos de stock."
}
Las reglas, una a una
Todas devuelven 422 con su mensaje.
Cabecera
- Hacen falta almacén de origen y de destino, distintos y los dos de la empresa.
- Si el usuario trabaja con un único almacén, solo puede hacer traspasos desde o hacia ese almacén.
- Hacen falta compañía y servicio de transporte, y el servicio tiene que ser de esa compañía.
- Si se envía
typeId, tiene que ser un tipo de traspaso.
Líneas
- Al menos una línea, y las unidades de cada una mayores que 0.
- El artículo tiene que estar activo y controlar stock. Los que se preparan por sus componentes no se traspasan: hay que traspasar los componentes.
- Unidades enteras si el artículo lleva número de serie o su unidad de medida no admite decimales.
- Tiene que haber disponible en el almacén de origen lo que se pide.
Lo que no hace
- No reserva un lote, número de serie o contenedor concreto, igual que la inserción rápida. Si hace falta, se edita la línea después desde la ficha del traspaso.
- No modifica ni anula traspasos: solo los crea.
Artículos relacionados
- Traspasos de stock
- Proceso traspasos de stock entre almacenes
- Saber si un pedido se puede modificar desde la API: GET /Order/editable
- API de Yunbit (hay que iniciar sesión en la wiki)