1. Funcionamiento de las producciones
En este documento veremos como listar las partidas, listar las producciones de cada partida, crear una nueva producción y listar los ingredientes de una producción
1.1. Rest API : Login
Para poder hacer llamadas a nuestras api's lo primero que necesitamos es identificarnos mediante una llamada de login
Esa llamada nos retornara una token que después debemos asociar en cada llamada posterior.
Este shell script muestra como autenticar-nos mediante curl
[email protected]
password=XXXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v -H "content-type: application/x-www-form-urlencoded" --data $authenticate $url/login >> rememberme.txt
En las llamadas posteriores debemos añadir a nuestros headers el token recibido de la llamada de login
curl -X PUT -v -H "$(cat rememberme.txt)" $url/integration/llamada
1.2. Rest API : Seleccionar un centro de coste/restaurante
Las peticiones que se describen en los apartados siguientes hacen referencia a un centro de coste. Que en la mayoría de los casos se correspondería con un restaurante
Para recuperar la lista de centros de costes y sus identificadores consulta el documento
El identificador de cenetro de coste se corresponde al campo idOrderCenter de la classe UserOrderCenter
Una vez tenemos el identificador este deberá añadirse a los headers para que sea utilizado en llamadas posteriores
echo -n 'order:351583444167656299610202XXXXXXXXXXXX' >> rememberme.txt
Por tanto en nuestros request headers debemos especificar tanto el token devuelto por el login como el identificador del centro de coste
rememberme:aGVucnkudXBzYWxsLmRAZXXXXXXXXXXXXXXXXXX
order:351583444167656299610202XXXXXXXXXXXX
1.3. Rest API : Listar todas las partidas
GET
https://app.tspoonlab.com/recipes/api/listPartidesPaged?filter=&rows=50&start=0
filter nos permite filtrar por descripción, start y rows nos permiten la paginación y
retorna una lista de las mermas diarias
retorna un List<EntityBaseDescr>
class EntityBaseDescr {
String id;
String descr;
}
1.4. Rest API : Recuperar el id de las producciones diarias
POST
https://app.tspoonlab.com/recipes/api/production/day/{year}/{month}/{day}
Donde year, month, day son el año, mes y día de la producción de la que queremos obtener el id
En caso que se solicitará un día por primera vez se crearía el id. En las peticiones posteriores retornaría el mismo id
retorna un IdWrapper
class IdWrapper {
String id;
}
1.5. Rest API : Listar las producciones de un día pasando el id
GET
https://app.tspoonlab.com/recipes/api/productionComponentList?id=IIIIIIIIII&idPartida=PPPPPPPPPPPPPPPPPPPP&
id es el identificador de la producción que hemos obtenido en el apartado anterior
idPartida es el identficador de la partida. Solo nos retornará las elaboraciones que realice esa partida. Este identificador es opcional.
filter nos permite filtrar por descripción, start y rows nos permiten la paginación y
retorna una lista de las mermas diarias
retorna un ProductionDay
public class ProductionDay {
String id;
String date;
int year;
int month;
int day;
List<ProductionDayComponent> listComponents;
}
En ProductionDay id es el identificador de la producción y year,month,day el años, mes y día de dicha producción. Date es la fecha formateada
listComponents es la lista de producciones para ese día.
class ProductionDayComponent {
String id;
String idComponent;
String descr;
String comment;
String dateGeneratedFlat;
String lot;
ProductionComponentStatus status;
String idPartida;
String partida;
List<ComponentServiceProduction> listComponentService;
}
id es el identificador de la producción de un elaborado. idComponent el identificador del elaborado. descr la descripción del elaborado. comment, dateGeneratedFlat, lot son el comentario, hora de inicio de la producción y lote
partida e idPartida nos indican la partida a la que pertenece la elaboración. Puede ser útil si al listar producciones no hemos filtrado por partida
Las producciones pueden tener los siguientes estados. Pendiente, Iniciada y Finalizada estos se reflejan en status
ProductionComponentStatus {
private String dateGenerated;
private String dateStarted;
private String dateDone;
private boolean started;
private boolean done;
}
Si la producción todavía no se ha iniciado. started es falso y done es falso
Si la producción esta iniciada. started es verdadero y done es falso
Una vez finalizada started es verdadero y done es verdadero
La cantidad a producir se refleja en listComponentService
class ComponentServiceProduction {
String id;
String idUnit;
Double quantity;
String unit;
}
id es el identificador de esta entidad
idUnit, unit identifican la unidad
quantity indentifica la cantidad
1.6. Rest API : Arrancar, finalizar y rearrancar una producción
Para arrancar una producción
PUT
https://app.tspoonlab.com/recipes/api/productionComponent/{idProductionComponent}/start/status
idProductionComponent es el identificador de la producción del elaborado
Para finalizar una producción
PUT
https://app.tspoonlab.com/recipes/api/productionComponent/{idProductionComponent}/done
idProductionComponent es el identificador de la producción del elaborado
Para rearrancar una producción ya finalizada
PUT
https://app.tspoonlab.com/recipes/api/productionComponent/{idProductionComponent}/redo
idProductionComponent es el identificador de la producción del elaborado
Retornan un ProductionComponentStatus actualizado de la aplicación. Los campos de esta clase se explican en el apartado anterior
1.7. Rest API : Crear una nueva producción
Para crear una producción primero debemos seleccionar una elaboración
GET
https://app.tspoonlab.com/recipes/api/recipes/api/listComponentsPartidaPagedEx?filter=&filterType=recipeAndDish&partida={idPartida}&start=0;rows=50
Donde filter es el filtro de búsqueda para la descripción
filterType siempre debe tomar el valor recipeAndDish
partida es el identificador de la partida activa
start y rows se utilizan para la paginación
Retorna
class SearchResult {
String filter;
List<EntityBaseComponent> list;
}
EntityBaseComponent {
String id;
Short type;
String descr;
String codi;
}
id es el identificador de la elaboración (idComponent)
type es 1 para elaboraciones intermedias y 3 para elaboraciones finales
descr y codi son la descripción y código de la elaboración
Una vez tenemos seleccionada la elaboración debemos recuperar las cantidades por defecto a elaborar
GET
https://app.tspoonlab.com/recipes/api//recipes/api/component/{idComponent}/quantityUnit
idComponent es el identificador de la elaboración
Retorna List<QuantityUnit>
class QuantityUnit {
String id;
String descr;
Double quantity;
}
donde id y descr son el identificador de la unidad y el nombre de la unidad
quantity es la cantidad a producir
Una vez tenemos ya seleccionada una elaboración y la cantidad a elaborar creamos la producción
POST
https://app.tspoonlab.com/recipes/api//recipes/api/production/{idProduction}/component/{idComponent}/quantities/events
idProduction y idComponent son el identificador de la producción y la elaboración
Se pasara los datos del POST con el header content-type: application/json
class NewProductionComponentWithEvents {
List<NewProductionComponentEventQuantity> quantities;
}
class NewProductionComponentEventQuantity {
String idUnit;
Double quantity;
}
retorna un IdWrapper
class IdWrapper {
String id;
}
id es el identificación de la producción de la elaboración (idProductionComponent)
1.8. Rest API : Eliminar una producción
DELETE
https://app.tspoonlab.com/recipes/api/productionComponent/{idProductionComponent}
idProductionComponent es el identificador de la producción del elaborado
1.9. Rest API : Crear arrancar y finalizar una producción
Para crear una producción arrancarla y finalizarla en un solo paso debemos llamar a
POST
https://app.tspoonlab.com/recipes/api/production/component
En el request body debemos pasar
class NewCreateProduction {
String idComponent;
double quantity;
Date date;
}
retorna un IdWrapper
class IdWrapper {
String id;
}
id es el identificación de la producción de la elaboración (idProductionComponent)