Ir al contenido principal
REST API: Producciones

Como listar y crear producciones

Rafel Tugues avatar
Escrito por Rafel Tugues
Actualizado hace más de un año

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)

¿Ha quedado contestada tu pregunta?