1. Recepción de pedidos, albaranes y/o validación de facturas de compra en tSpoonLab
tSpoonLab es un entorno perfecto para generar los pedidos desde cocina a nuestros proveedores. Existen varias posibilidades entre otras generarlos en base a una planificación, en base a stock o mediante plantillas. En todos los casos se deja constancia en la aplicación de lo que vamos a pedir y se envía por Whatsapp, mail o teléfono al proveedor.
La recepción de pedidos equivale a la entrada de los albaranes y no sólo tiene implicaciones de coste o control contable. Nos permite también anotar los puntos de control de recepción, los números de lote del pedido recibido, generar una entrada en el almacén y comprobar que la cantidad servida y los precios son similares a los solicitados. Por tanto recomendamos realizar la recepción/entrada de albarán desde tSpoonLab.
Una vez recepcionados los pedidos estos pueden ser enviados a sistemas externos de gestión y en ellos poder validar las facturas con los albaranes y arrancar todos los procesos contables.
Desde la pantalla de proveedores de tSpoonLab también se puede realizar la validación de las facturas contra los albaranes recibidos. En ese proceso se crea una factura y se le asocian sus albaranes. A partir de aquí la factura, los impuestos y el pago deben ser gestionados por un sistema de facturación.
Por tanto para las compras podemos enviar los albaranes o las facturas. Para no repetir los envios una vez procesados por el sistema externo se deben marcar en tSpoonLab como procesados para que no se envien de nuevo.
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://app.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 : Recuperación de pedidos de compras no marcados como procesados
Para recuperar los pedidos de compras no marcados como procesados debemos realizar esta llamada
GET: https://app.tspoonlab.com/recipes/api/integration/purchases/orders/pending?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&includeInternal=true&idVendor=XXXXX
Debemos pasar los siguentes request params
startDate (String). Fecha a partir de la cual se recuperarán los datos
endDate (String). Fecha hasta la cual se recuperarán los datos.
includeInternal (Boolean) Incluir también albaranes de proveedores marcados como internos. Opcional. Valor por defecto true
idVendor (Id). Parametro opciónal donde se indica el identificador del proveedor. Nos recuperará solo los datos asociados al proveedor. Para obtener el id del Proveedor https://documents.tspoonlab.com/es/articles/5438603-rest-api-proveedores-y-compras
El formato de las fechas debe ser YYYY-MM-DD y es inclusivo en startDate y endDate. Es decir todos los datos con fecha igual a startDate o endDate son retornados.
Nos retornará un array de la classe PurchaseDelivery y un código 200.
class PurchaseOrder {
String id; // Id del pedido
String numOrder; // Número de pedido
String idVendor; // Id del proveedor
String vendor; // Nombre del proveedor
String codeVendor; // Código del proveedor
String accountVendor; // Num cuenta contable del proveedor
String nif; // Nif del proveedor
Date date; // Fecha del peidod
String dateFormatted; // Fecha del pedido en YYYY/MM/DD
Date dateReception; // Fecha de recepción
String dateReceptionFormatted; // Fecha de recepción en YYYY/MM/DD
Double total; // Importe total
List<PurchaseOrderLine> listOrders; // Detalle de linias del pedido
}
Las líneas de detalle
public class PurchaseOrderLine {
String id; // Identificador de la linia de detalle
int position; // Posición dentro del albaran
String codeComponent; // Código del producto
String idComponent; // Identificador Ingrediente, matarial
String codeVendorComponent; // Código del producto para el proveedor
String component; // Descripción del ingrediente, material
String comment; // Comentario
// Valores en la unidad base del ingrediente
Double quantity; // Cantidad
String idUnit; // Identificador de la unidad
String unit; // Unidad
Double cost; // Coste unitario
// En caso de haber comprado con un formato
boolean hasFormat; // true si tiene información de formato
Double quantityFormat; // Cantidad del formato
String idUnitFormat; // Identificador de la unidad del format
String unitFormat; // Unidad del formato
Double costFormat; // Coste unitario del formato
Double iva; // Tipo de iva aplicado a la linia
String idCostType; // Identificador de la cuenta de análisis
String costType; // Descripcion de la cuenta de análisis
String codeCostType; // Código de la cuenta de análisis
String accountCostType; // Cuenta contable de la cuenta de análisis
String idBusinessLine; // Identificador de la linea de negocio
String businessLine; // Descripcion de la linea de negocio
String codeBusinessLine; // Código de la linea de negocio
List<LineType> listTypes; // Lista de tipos del componente.
}
Para cada tipo de las lista de tipos/familias
class LineType {
String id; // Identificador del impuesto para la factura
String descr; // Descripcion del tipo
}
Este seria un ejemplo de la llamada
[email protected]
password=XXXXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X GET -v -H "$(cat rememberme.txt)" $url/integration/purchases/orders/pending | python -m json.tool
1.4. Rest API : Marcar pedidos de compras como procesados
Una vez hemos traspasado los albaranes de compras al sistema externo podemos marcarlas como procesados en tSpoonLab de forma que ya no se reenviaran otra vez en peticiones posteriores.
PUT:
https://app.tspoonlab.com/recipes/api/integration/purchases/orders/processed
La peticion retorna un código 200 en caso de que se haya ejecutado correctamente
En el request body debemos pasar un esta estrucura la lista identificadores de facturas que queremos marcar como contabilizadas
public class NewListIds {
private List<String> listIds;
}
Aquí tenemos un ejemplo de llamada
username= [email protected]
password=XXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X PUT -d '{"listIds":["idFactura1", "idFactura2"]}' -H "$(cat rememberme.txt)" -H 'Content-Type: application/json' $url/integration/purchases/orders/processed
1.5. Rest API : Recuperación de albaranes de compras no marcados como procesados
Para recuperar los albaranes de compras no marcados como contabilizadosdebemos realizar esta llamada
GET: https://app.tspoonlab.com/recipes/api/integration/purchases/deliveries/pending?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&includeInternal=true&idVendor=XXXXX
Debemos pasar los siguentes request params
startDate (String). Fecha a partir de la cual se recuperarán los datos
endDate (String). Fecha hasta la cual se recuperarán los datos.
includeInternal (Boolean) Incluir también albaranes de proveedores marcados como internos. Opcional. Valor por defecto true
idVendor (Id). Parametro opciónal donde se indica el identificador del proveedor. Nos recuperará solo los datos asociados al proveedor. Para obtener el id del Proveedor https://documents.tspoonlab.com/es/articles/5438603-rest-api-proveedores-y-compras
El formato de las fechas debe ser YYYY-MM-DD y es inclusivo en startDate y endDate. Es decir todos los datos con fecha igual a startDate o endDate son retornados.
Nos retornará un array de la classe PurchaseDelivery y un código 200.
public class PurchaseDelivery {
private String id; // Id del albarán
private String idVendor; // Id del proveedor
private String vendor; // Nombre del proveedor
private String codeVendor; // Código del proveedor
private String accountVendor; // Num cuenta contable del proveedor
private String nif; // Nif del proveedor
private String deliveryNum ; // Numero de albarán
private Date date; // Fecha del albarán en formato time_t
private String dateFormatted; // Fecha del albaran en formato YYYY/MM/DD
private Double base; // Importe base albarán
private Double taxes; // Importe impuestos
private Double total; // Importe total
private String idCostType; // Id de la cuenta de análisis
// (Si imputamos todo el albarán si no aparece puede
// ser que este imputado por línea de albarán)
private String costType; // Descripción de la cuenta de análisis
// (Si imputamos todo el albarán si no aparece puede
// ser que este imputado por línea de albarán)
private String codeCostType; // Código de la cuenta de análisis
// (Si imputamos todo el albarán si no aparece puede
// ser que este imputado por línea de albarán)
private String accountCostType; // Cuenta contable
// de la cuenta de analisis
// (Si imputamos todo el albarán si no aparece puede
// ser que este imputado por linia de albaran)
private List<DeliveryTax> listTaxes; // Detalle de los impuestos
private List<PurchaseDeliveryLine> listDeliveries;
// Detalle de líneas del albarán
}
public class DeliveryTax {
private String id; // Identificador del impuesto para el albarán
private short type; // Tipo de impuesto
// (0:IVA, 1:Transportes, 2:Descuentos, 3: Otros, -1: Descuento s/base)
private Double base; // Base puede ser nulo
// para Transportes, Descuentos y otros
private Double percent; // Tipo/Porcentaje puede ser nulo
// para Transportes, Descuentos y otros
private Double total; // Total impuesto o transporte
//o descuento o otros
}
Las líneas de detalle
public class PurchaseDeliveryLine {
private String id; // Identificador de la línea de detalle
private int position; // Posición dentro del albarán
private String idComponent; // Id producto
private String codeComponent; // Código del producto
private String component; // Nombre del producto
private String codeVendorComponent;
// Código del producto para el proveedor
private String comment; // Comentario
private boolean recibido; // Si se ha recibido o no
// Valores en la unidad base del ingrediente
private Double quantity; // Cantidad
private String idUnit; // Identificador de la unidad
private String unit; // Unidad
private Double cost; // Coste unitario
// En caso de haber comprado con un formato
private boolean hasFormat; // true si tiene información de formato private Double quantityFormat; // Cantidad del formato
private String idUnitFormat; // Identificador de la unidad del format
private String unitFormat; // Unidad del formato
private Double costFormat; // Coste unitario del formato
private Double iva; // Tipo de IVA aplicado a la línea
private String idCostType; // Identificador de la
// cuenta de análisis
private String costType; // Descripción de la
// cuenta de análisis
private String codeCostType; // Código de la
// cuenta de análisis
private String accountCostType; // Cuenta contable de la
// cuenta de análisis
private String idBusinessLine; // Identificador de la linea de negocio
private String businessLine; // Descripcion de la linea de negocio
private String codeBusinessLine; // Código de la linea de negocio
private List<LineType> listTypes; // Lista de tipos del componente.
}
Para cada tipo de las lista de tipos/familias
public class LineType {
private String id; // Identificador del impuesto para la factura
private String descr; // Descripcion del tipo
}
Este seria un ejemplo de la llamada
[email protected]
password=XXXXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X GET -v -H "$(cat rememberme.txt)" $url/integration/purchases/deliveries/pending | python -m json.tool
Para recuperar todas las compras esten o no procesadas podemos hacer la siguiente llamada
GET: https://app.tspoonlab.com/recipes/api/integration/purchases/deliveries/all?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&includeInternal=true&idVendor=XXXX
1.6. Rest API : Marcar albaranes de compras como procesados
Una vez hemos traspasado los albaranes de compras al sistema externo podemos marcarlas como procesados en tSpoonLab de forma que ya no se reenviaran otra vez en peticiones posteriores.
PUT:
https://app.tspoonlab.com/recipes/api/integration/purchases/deliveries/processed
La peticion retorna un código 200 en caso de que se haya ejecutado correctamente
En el request body debemos pasar un esta estrucura la lista identificadores de facturas que queremos marcar como contabilizadas
public class NewListIds {
private List<String> listIds;
}
Aquí tenemos un ejemplo de llamada
username= [email protected]
password=XXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X PUT -d '{"listIds":["idFactura1", "idFactura2"]}' -H "$(cat rememberme.txt)" -H 'Content-Type: application/json' $url/integration/purchases/deliveries/processed
1.7. Rest API : Recuperación de facturas de compras no contabilizadas
Para recuperar las facturas de compras pendientes de contabilizar debemos realizar esta llamada
GET: https://app.tspoonlab.com/recipes/api/integration/purchases/invoices/pending?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&includeInternal=true&onlyValidated=true&idVendor=XXXXX
Debemos pasar los siguentes request params
startDate (String). Fecha a partir de la cual se recuperarán los datos
endDate (String). Fecha hasta la cual se recuperarán los datos.
includeInternal (Boolean) Incluir también facturas de proveedores marcados como internos. Opcional. Valor por defecto true
onlyValidated (Boolean) Incluir solo las facturas de proveedores marcados como validados. Opcional. Valor por defecto false
idVendor (Id). Parametro opciónal donde se indica el identificador del proveedor. Nos recuperará solo los datos asociados al proveedor. Para obtener el id del Proveedor https://documents.tspoonlab.com/es/articles/5438603-rest-api-proveedores-y-compras
El formato de las fechas debe ser YYYY-MM-DD y es inclusivo en startDate y endDate. Es decir todos los datos con fecha igual a startDate o endDate son retornados.
Nos retornará un array de la classe PurchaseInvoice y un código 200.
public class PurchaseInvoice {
private String id; // Id de la factura
private String idVendor; // Id del proveedor
private String vendor; // Nombre del proveedor
private String codeVendor; // Código del proveedor
private String accountVendor; // Num cuenta contable del proveedor
private String nif; // Nif del proveedor
private String invoiceNum; // Núm de factura
private boolean paid; // Si ya está pagado
private boolean validated: // Si ya está validada
private String documentNum; // Num de documento
private String comment; // Comentario factura
private Date date; // Fecha factura
private Date dateAccounting; // Fecha contabilidad. Si nula utilizar date
private Date dateDue // Fecha vencimiento
private String codePaymentType; // Código de la forma de pago
private String idCostTypeVendor; // Identificador de la cuenta de
// análisis del proveedor
private String costTypeVendor; // Descripción de la cuenta de análisis
// del proveedor
private String codeCostTypeVendor; // Código de la cuenta de análisis
// del proveedor
private String accountCostTypeVendor; // Cuenta contable de la cuenta
// de análisis del proveedor
private String idDocument; // Id del documento asociado a la factura
private String extDocument; // Extensión del documento
// asociado a la factura
private Double total; // Total factura
private Double base; // Total base imponible
private Double taxes; // Total impuestos
private List<InvoiceTax> listTaxes; // Detalle de los impuestos
private List<PurchaseDelivery> listDeliveries; // Detalle de albaranes
private List<CostTypeTax> listCostTypeTaxes; // Detalle de los
// impuestos por cuenta de analisis
}
public class InvoiceTax {
private String id; // Identificador del impuesto para la factura
private short type; // Tipo de impuesto
// (0:IVA, 1:Transportes, 2:Descuentos, 3: Otros, -1: Descuento s/base)
private Double base; // Base puede ser nulo
// para Transportes, Descuentos y otros
private Double percent; // Tipo/Porcentaje
// puede ser nulo para Transportes, Descuentos y otros
private Double total; // Total impuesto o transporte o descuento o otros
}
El Albarán esta representado por la clase PurchaseDelivery tal como se ha documentado con anterioridad.
Este seria un ejemplo de la llamada
[email protected]
password=XXXXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X GET -v -H "$(cat rememberme.txt)" $url/integration/purchases/invoices/pending | python -m json.tool
Para recuperar todas las facturas esten o no contabilizadas podemos hacer la siguiente llamada
GET: https://app.tspoonlab.com/recipes/api/integration/purchases/invoices/all?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&includeInternal=true&onlyValidated=false&idVendor=XXXX
Para recuperar el documento asociado a la factura debemos realizar está llamada
https://app.tspoonlab.com/recipes/api/exportFileBoundFile/{idDocument}.{extDocument}?id={idDocument}&rememberme={rememberme}
listCostTypeTaxes retorna el detalle de impuestos por cuenta de análisis para la factura
class CostTypeTax {
String id; // Identificador de la cuenta de análisis
String descr; // Descripción de la cuenta de análisis
List<OrderVendorVat> listTaxes;
}
class OrderVendorVat {
Double base; // base imponible
Double percent; // Porcentaje de IVA
Double total; // Importe del iva
}
1.8. Rest API : Marcar facturas de compras como contabilizadas
Una vez hemos traspasado las facturas de compras a la contabilidad podemos marcarlas como contabilizadas en tSpoonLab de forma que ya no se reenviaran otra vez en peticiones posteriores.
PUT:
https://app.tspoonlab.com/recipes/api/integration/purchases/invoices/accounted?lock=true
El parámetro lock indica si ademas de marcar la factura como contabilizada la bloqueamos
La peticion retorna un código 200 en caso de que se haya ejecutado correctamente
En el request body debemos pasar un esta estrucura la lista identificadores de facturas que queremos marcar como contabilizadas
public class NewListIds {
private List<String> listIds;
}
Aquí tenemos un ejemplo de llamada
username= [email protected]
password=XXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X PUT -d '{"listIds":["idFactura1", "idFactura2"]}' -H "$(cat rememberme.txt)" -H 'Content-Type: application/json' $url/integration/purchases/invoices/accounted
1.9. Rest API : Marcar facturas de compras como no contabilizadas
Si queremos volver a marcar facturas en tspoonlab como no contabilizadas
PUT:
https://app.tspoonlab.com/recipes/api/integration/purchases/invoices/not/accounted
La peticion retorna un código 200 en caso de que se haya ejecutado correctamente
En el request body debemos pasar un esta estrucura la lista identificadores de facturas que queremos marcar como contabilizadas
public class NewListIds {
private List<String> listIds;
}
Aquí tenemos un ejemplo de llamada
username= [email protected]
password=XXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X PUT -d '{"listIds":["idFactura1", "idFactura2"]}' -H "$(cat rememberme.txt)" -H 'Content-Type: application/json' $url/integration/purchases/invoices/not/accounted
1.10. Rest API : Marcar facturas de compras como bloqueadas
Si queremos marcar facturas en tspoonlab como bloqueadas
PUT:
https://app.tspoonlab.com/recipes/api/integration/purchases/invoices/lock
La peticion retorna un código 200 en caso de que se haya ejecutado correctamente
En el request body debemos pasar un esta estrucura la lista identificadores de facturas que queremos bloquear
public class NewListIds {
private List<String> listIds;
}
Aquí tenemos un ejemplo de llamada
username= [email protected]
password=XXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X PUT -d '{"listIds":["idFactura1", "idFactura2"]}' -H "$(cat rememberme.txt)" -H 'Content-Type: application/json' $url/integration/purchases/invoices/lock
2. Ventas en tSpoonLab
En los restaurantes tSpoonLab puede integrarse con el sistema de TPV. Podemos recuperar las ventas de la TPV y utilizarlas en tSpoonLab para la gestión de los almacenes y el cálculo del foodcost teórico. Esta situación no es el objecto de este artículo ya que lo que aquí se describe es enviar las ventas de tSpoonLab hacia un sistema externo. En el caso de las TPV's lo que se produce es lo contrario.
Si tenemos una tienda online con Shopify lo que haríamos sería recuperar las peticiones de ventas y gestionar las producciones desde tSpoonLab. Una vez realizamos el envío de la venta esta se considera realizada y ya se podría enviar de vuelta a Shopify o a un sistema de gestión. Por tanto en este caso ya tiene ciertas ventajas integrarse con el módulo de ventas de tSpoonLab
Finalmente en caso de gestionar un centro de producción se generan peticiones y envío de productos. Desde los clientes (normalmente restaurantes del grupo) hacia el centro de producción y del centro de producción hacia los clientes. Aquí si que nos resultará especialmente útil integrarnos con el módulo de ventas.
2.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://app.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
2.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
2.3 Rest API : Recuperación de albaranes de venta no contabilizadas
Para recuperar los albaranes de ventas pendientes de contabilizar debemos realizar esta llamada
GET: https://app.tspoonlab.com/recipes/api/integration/sales/deliveries/pending?startDate=YYYY-MM-DD&endDate=YYYY-MM-DD&includeInternal=true
Debemos pasar los siguentes request params
startDate (String). Fecha a partir de la cual se recuperarán los datos
endDate (String). Fecha hasta la cual se recuperarán los datos.
includeInternal (Boolean) Incluir también facturas de proveedores marcados como internos. Opcional. Valor por defecto true
El formato de las fechas debe ser YYYY-MM-DD y es inclusivo en startDate y endDate. Es decir todos los datos con fecha igual a startDate o endDate son retornados.
Nos retornará un array de la classe SalesDelivery y un código 200.
public class SalesDelivery {
private String id; // Id de la factura
private String idCustomer; // Id del client
private String customer; // Nombre del cliente
private String customerCode; // codigo cliente
private String address; // direccion
private String cp; // código postal
private String city; // ciudad
private String nif; // Nif del proveedor
private String contact; // nombre contacto
private String phone; // telf
private String contactAux; // otro nombre contacto
private String phoneAux; // otro telf
private String mail; // mail
private String mailAux; // otro mail
private String mailCC; // mail copia
private String web; // url del cliente
private String customerType; // tipo de cliente
private String customerTypeCode; // Código del tipo de cliente
private String invoiceNum; // Num de factura
private Date date; // Fecha factura
private Double base; // Total base imponible
private List<SalesDeliveryLine> listLines;
private List<SalesDeliveryLine> listLinesPending;
}
Las líneas de detalle aparecen en listLines y listLinesPending. En listLines tenemos todas las enviadas y en listLinesPending las pendientes de enviar
public class SalesDeliveryLine {
private String id; // Identificador de la linia de detalle
private int position; // Posición dentro del albaran
// Tendran valor si enviamos un producto. en caso contrario nulo
private String idComponent; // Identificador del producto
private String component; // Descripción del producto
private String codeComponent; // Código del product
// Tendran valor si enviamos un menu. en caso contrario nulo
private String idMenu; // Identificador del menu
private String menu; // Descripción del menu
private String codeMenu; // Código del menu
private String codeCustomerProduct;
// Código de venta del componente/menu
private String comment; // Comentario
private boolean sent; // Si se ha recibido o no
private Double quantity; // Cantidad
private String idUnit; // Identificador de la unidad
private String unit; // Unidad
private Double cost; // Coste unitario
private Double iva; // Tipo de IVA aplicado a la línea
private List<LineType> listTypes; // Lista de tipos del componente.
private String idCustomerGroup; // Grupo de productos del producto
private String customerGroup; // Nombre del grupo de producto
}
Este seria un ejemplo de la llamada
[email protected]
password=XXXXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X GET -v -H "$(cat rememberme.txt)" $url/integration/sales/invoices/pending | python -m json.tool
2.4. Rest API : Marcar albaranes de venta como contabilizadas
Una vez hemos traspasado los albaranes de venta a la contabilidad podemos marcarlas como contabilizadas en tSpoonLab de forma que ya no se reenviaran otra vez en peticiones posteriores.
PUT:
https://app.tspoonlab.com/recipes/api/integration/sales/deliveries/accounted
La petición retorna un código 200 en caso de que se haya ejecutado correctamente
En el request body debemos pasar un esta estrucura la lista identificadores de facturas que queremos marcar como contabilizadas
public class NewListIds {
private List<String> listIds;
}
Aquí tenemos un ejemplo de llamada
username= [email protected]
password=XXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X PUT -d '{"listIds":["idFactura1", "idFactura2"]}' -H "$(cat rememberme.txt)" -H 'Content-Type: application/json' $url/integration/sales/invoices/accounted
2.5. Rest API : Marcar albaranes de venta como no contabilizadas
Si queremos volver a marcar como no contabilizadas albaranes de venta en tspoonlab
PUT:
https://app.tspoonlab.com/recipes/api/integration/sales/deliveries/not/accounted
La petición retorna un código 200 en caso de que se haya ejecutado correctamente
En el request body debemos pasar un esta estrucura la lista identificadores de facturas que queremos marcar como contabilizadas
public class NewListIds {
private List<String> listIds;
}
Aquí tenemos un ejemplo de llamada
username= [email protected]
password=XXXXXX
url=https://app.tspoonlab.com/recipes/api
authenticate='username='$username'&password='$password
echo -n 'rememberme:' > rememberme.txt
curl -v --data $authenticate $url/login >> rememberme.txt
curl -X PUT -d '{"listIds":["idFactura1", "idFactura2"]}' -H "$(cat rememberme.txt)" -H 'Content-Type: application/json' $url/integration/sales/invoices/not/accounted
3. Creación de pedidos en tspoonlab
Para crear pedidos en tspoonlab lo primero que debemos hacer es obtener un id de proveedor.
3.1 Identificar el proveedor
Debemos llamar a la función
GET:
https://app.tspoonlab.com/recipes/api/listVendorsPaged
Esta llamada està documentada en https://documents.tspoonlab.com/es/articles/5438603-rest-api-proveedores-y-compras
Si estamos en un entorno con un centro de producción donde nuestro proveedor está vinculado a un cliente del centro de producción el campo orderCenter tendrà el valor del centro de coste donde vayamos a pedir
De la respuesta seleccionaremos el id del proveedor al que vamos a realizar el pedido
3.2 Crear pedido
Para crear un pedido debemos llamar a
POST:
https://app.tspoonlab.com/recipes/api/integration/purchases/orders
En el body vamos a especificar toda la información relativa al pedido que queremos crear
NewPurchaseOrder {
String idVendor; // Id del proveedor
Date dateSend; // Fecha de envio
Date dateReception; // Fecha de recepción
List<NewPurchaseOrderLine> listLines; // Detalle de linias del pedido
}
NewPurchaseOrderLine {
String idComponent; // Identificador Ingrediente, matarial
Double quantity; // Cantidad. No puede ser nula
}
Donde idVendor es el identificador del proveedor conseguido del apartado anterior
dateSend y dateReception son las fechas de envio del pedido y fecha prevista de recepción del mismo
listLines es la lista de items que queremos comprar con el idComponent y la cantidad (quantity)
Para obtener el idComponent podemos consultar los productos a la venta del proveedor. Este campo aparece en la clase VendorComponent. Tal como se explica en el apartado 1.8 del documento https://documents.tspoonlab.com/es/articles/5438603-rest-api-proveedores-y-compras
La respuesta de esta llamada es una estructura con el id del pedido
IdWrapper {
String id; // Identificador del pedido
}
3.3 Marcar el pedido como enviado
Una vez creado el pedido debemos enviarlo al proveedor (No se explica en esta documentación) y posteriormente marcarlo como que ya lo hemos enviado
PUT:
https://app.tspoonlab.com/recipes/api/vendorOrder/{idProvCom}/sent
Donde idProvCom es el identificador del pedido obtenido en el apartado anterior
No devuelve datos. Solo código 200 si se ha enviado correctamente