Ir al contenido principal
Todas las coleccionesRest API - Integraciones
REST Api: Elaboraciones intermedias y finales
REST Api: Elaboraciones intermedias y finales

Como acceder a las elaboraciones intermedias y finales y su detalle

Rafel Tugues avatar
Escrito por Rafel Tugues
Actualizado hace más de 3 años

1. Productos elaborados

Se consideran productos elaborados aquellos que realizamos nosotros en base a productos base que compramos

Tenemos dos tipos:

  • Inermedias/Recetas. Son elaboraciones que realizamos en nuestra cocina y después utilizaremos para nuestras elaboraciones finales.

  • Finales/Platos. Son aquellas elaboraciones que vendemos y servimos a nuestros clientes

1.1. Rest API : Login

Para poder hacer llamadas a nuestas api's lo primero que ncesitamos 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 authenticar-nos mediante curl

[email protected]
password=XXXXXXX

url=https://www.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password

echo -n 'rememberme:' > rememberme.txt
curl -v --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 todos los productos elaborados

Tenemos dos llamadas

GET: 
https://www.tspoonlab.com/recipes/api/listRecipesPaged
o
https://www.tspoonlab.com/recipes/api/listDishesPaged

Podemos pasar los siguentes request params

  1. start (int). Número de la primera fila a retornar. Es obligatorio

  2. rows (int). Número de filas a retornar. Es obligatorio

  3. filter (String). Cadena para filtrar los ingredientes. Es opcional

  4. types (Array de String). Array con los ids de las familias que queremos filtrar. En caso de especificar més de una familia el producto deberá tener ambas familias. Es opcional

  5. marked (Boolean). Retorna solo aquellos que estan marcados. Es opcional

  6. hidden (Boolean). Retorna solo los ocultos. Es opcional

Retorna

retorna una List<EntityBaseImages> 

EntityBaseImagess {
String id;
String descr;
String codi;
boolean hasData;
Short tag;
String tagComment;
String altDescr;
}

Donde:

  1. id es el identificador del producto

  2. descr es el nombre del producto

  3. codi es el código del producto

  4. hasData indica que dicha elaboración se esta utilizando en otra elaboracion (intermedia o final)

  5. tag es nulo si el producto no tiene ninguna marca sino toma los siguientes valores. (Ok:1, MoreInfo: 2, Error:3)

  6. tagComment es el comentario asociado a la marca

1.4. Rest API : Acceder a una elaboración intermedia

Para acceder a una elaboración intermedia

GET: 
https://www.tspoonlab.com/recipes/api/recipe/{idRecipe}

Donde idRecipe es el identificador de la elaboración intermedia obtenido de la anterior llamada

Retorna

class ComponentCompond {
String id;
String descr;
String altDescr;
Double cost;
List<ComponentDetail> listComponentDetail;
List<ComponentService> listComponentService;
String process;

}

class ComponentService {
String id;
String idUnit;
Double quantity;
String unit;
}

class ComponentDetail {
String id;
String idComponent;
String codeComponent;
String descr;
String altDescr;
Double quantity;
Double quantityGross;
String unit;
String idUnit;
String use;
String comment;
Double cost;
int type;
}

Donde id y descr son el identificador y descripción de la elaboración. La elaboración puede tener una descripción alternativa que se representa en altDescr

cost es el coste de producir la cantidad expresada en listComponentService. En caso de que sea una lista de más de una entrada. El coste hara referencia a la primera entrada de la lista.

process es el proceso de elaboración donde cada paso se ha separado por un salto de linia ("\n")

listComponentService lista las cantidad asociada a cada plato. Puede haber más de una. En ese caso se interpreta que las cantidades del detalle me permiten producir cada una de las entradas de listComponentService por separado. Es decir, todas las entradas son equivalentes

listComponentDetail nos muestra todos los ingredientes necesarios para realizar la elaboración.

id es el identificador de ese detalle, idComponent el identificador del producto/elaboración utilizado. descr y altdescr hacen referencia a la descipción / descripción alternativa del producto/elaboración.

quantity representa la cantidad que utilizamos de ese componente. En caso de realizar algun proceso de corte o despiece quantityGross expresa la cantidad en bruto. quantityGross puede ser nulo. use expresa el nombre del corte/despiece que utlizacmos

comment es un comentario relativo al uso de dicho componente y cost es el coste de ese detalle. En caso de utilizar una cantidad bruta dicho coste es el coste bruto

idUnit y unit son los identificadores de la unidad utilizada en ese ingrediente. Dicha unidad puede no coincidir con la unidad del producto. En cuyo caso habria que analizar las equivalencias de unidades si fuera necesario

codeComponent es el código del ingrediente o receta que aparece en el detalle

type nos permite diferenciar si se trata de un ingrediente, un material, una receta o incluso otra elaboración final

Ingrediente(Producto): 0
Receta(Elaboración intermedia): 1
Material(Herramienta): 2
Dish(Elaboración final): 3

1.5. Rest API : Acceder a una elaboración final

Para acceder a una elaboración final

GET: 
https://www.tspoonlab.com/recipes/api/dish/{idDish}

Donde idDish es el identificador de la elaboración final obtenido de la anterior llamada

Retorna un ComponentCompund igual que en el caso de las elaboraciones intermedias explicadas en el apartado anterior excepto que también incluye la lista de libros de finales que tiene asociada

private List<EntityBaseData> listRecipeCenters;

class EntityBaseData {
String id;
String idAux;
String descr;
}

Donde id es es el identificador de la relacion elaboración final - libro de finales

idAux es el identificador del libro de finales

descr es la descripción del libro de finales

1.6. Rest API : Estructura de datos para crear/borrar elaboraciones intermedias y finales

Esta es la estructura que utilizaremos para crear/borrar elaboraciones intermedias

public class NewComponentComplex  {

String descr;
String altDescr;
List<NewComponentUnit> listComponentUnits;

Double minStock;
// Expresado en tanto por uno respecto a NewComponentUnit
Double maxStock;
// Expresado en tanto por uno respecto a NewComponentUnit
Double minProduction;
// Expresado en tanto por uno respecto a NewComponentUnit
Double multProduction;
// Expresado en tanto por uno respecto a NewComponentUnit

List<NewComponentType> listComponentTypes;
List<NewComponentStore> listStores;

String codi;

boolean includeInOrder; // Si por defecto se incluira en pedidos
boolean averageCost; // El precio se calcula como una media de las compras
boolean fixedCost;
boolean fromVendor;

String origen; // De donde viene esta receta
Double caducity; // Expersado en dias
String idPartida; // Identificador de la partida
Boolean inLabel; // Si se incluye en la etiqueta
Boolean inPlanning;
Short typeConservation;
Double storageTemperature;
Double storageTemperatureAux;
Short typeTemperature;
Double iva;
String barcode;
}

public class NewComponentUnit {

double quantity; // Cantidad de la receta
String idUnit; // Unidad de la receta
Integer position; // Posición. Puede haber mas de una y position indica el orden
}

public class NewComponentType {

String id; // Identificador del component type (familia)
}

public class NewComponentStore {
String id; // Identificador del almacen
}

Para typeConservation puede tomar estos valores

public static short TypeConservationNevera = 0;
public static short TypeConservationCongelador = 1;
public static short TypeConservationSeco = 2;
public static short TypeConservationCaliente = 3;

typeTemperature puede tomar estos valores

public static short TypeTemperatureEquals = 0;
public static short TypeTemperatureLessThan = 1;
public static short TypeTemperatureGreaterThan = 2;
public static short TypeTemperatureBetween = 3;

1.7. Rest API : Crear a una elaboración intermedia

Para crear una eleaboracion intermedia

POST: 
https://www.tspoonlab.com/recipes/api/recipe

En el request body pasaremos NewComponentComplex

1.8. Rest API : Crear a una elaboración final

Para crear una eleaboracion final

POST: 
https://www.tspoonlab.com/recipes/api/dish

En el request body pasaremos NewComponentComplex

Añadiendo esta nuevo campo

 List<NewRecipeCenter> listRecipeCenters;

public class NewRecipeCenter {

String id;
String idRecipeCenter;
}

Donde id debe ser nulo

y idRecipeCenter es el identificador del libro de finales

1.9 Rest API : Borrar una elaboración intermedia

Para borrar una eleaboracion intermedia

DELETE: 
https://www.tspoonlab.com/recipes/api/recipe/{idRecipe}

1.10 Rest API : Borrar una elaboración final

Para borrar una eleaboracion final

DELETE: 
https://www.tspoonlab.com/recipes/api/dish/{idDish}

1.11 Rest API : Recuperar el detall de una elaboración

Para poder recuperar el detalle de una elaboración final o intermedia

GET: 
https://www.tspoonlab.com/recipes/api/dish/{idDish}
https://www.tspoonlab.com/recipes/api/recipe/{idRecipe}

Retorna

public class ComponentDetail  {

String id; // Identificador del detalle
String idComponent;
// Id del componente (producto, o elaboracion intermedia)
String descr; // Descripción del componente
String altDescr; // Descripción del nombre alternativo del componente
Double quantity; // Cantidad neta o cantidad
Double quantityGross; // Cantidad bruta
String idUnit; // Identificador de la undad
String unit; // Descripcion de la unidad
String idUse; // Identificador del corte o despiece
String use; // Descripción del corte o despiece
String comment; // Comentario
Double cost; // Coste
String codeComponent; // Codigo del producto
String date; // Fecha del último cambio del coste
List<ComponentAllergy> listAllergies;
}

public class ComponentAllergy extends EntityBaseDescr {

String id; // Id de componentAllergy
String descr; // Descripcion de la alergia
String idAllergy; // Id de la aleergia
String codi; // Codigo de la alergia
boolean calculated; // Si esta alergia viene calculada de los ingredientes que componen el idComponent
boolean traces; // Si es traza

1.12 Rest API : Modificar el detall de una elaboración

Para modificar el detalle de una elaboración intermedia o final

PUT: 
https://www.tspoonlab.com/recipes/api/dish/{idDish}
https://www.tspoonlab.com/recipes/api/recipe/{idRecipe}

Donde pasamos

public class NewComponentDetailsWrapper {
List<NewComponentDetail> components;
}

public class NewComponentDetail {

private String id; // Nulo en caso de añadir
private String idComponent; // Identificador del componente
private String idUnit; // Identificador de la unidad
private String idUse; // Identificador de corte o despieze
private Double quantity; // Cantidad que se pone en la elaboración
private boolean qs; // Es cantidad suficiente. En este caso no se especifica ni idUnit ni idUse ni quantity
private String comment;
private int position;
}

¿Ha quedado contestada tu pregunta?