Integración vía API
Obtención del AccesToken
Para realizar la integración de cualquier petición via API es necesario seguir los siguientes pasos para la obtención del AccesToken:
- Crear usuario en la web con perfil de técnico: Debe dirigirse a la sección de GESTION y dar clic en la pestaña de usuarios, luego agregar usuario y completar todos los datos. El usuario a crear debe tener el perfil de técnico.
Luego de haber creado el usuario se procede a realizar el envío de los datos mediante nuestro servicio RestApi para lo cual son necesarios los siguientes pasos:
Obtener token de autorización
Url: https://restapi.dev.resetsign.com/api/oauth/token_integrator
Método: POST
Tipo de contenido: application/json
Parámetros
{ "client_id" : 1, "client_secret" : "tT96kecNtYVf92dvRfQ1Ikj6sjsx5tKZzaCCpHun", "username" : "integrator@company.com", "password" : "secret_password", "grant_type" : "password" }
Los parámetros client_id, cliente_secret, grant_type son constante, solo debe cambiar el username con el usuario que creo previamente en la sección de usuarios y el password por la contraseña que le asigno.
Al realizar esta petición debería obtener una respuesta como la siguiente:
{ "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiI ", "refresh_token": "def50200388a50a45925d65” "expires_in": 86400, "token_type": "Bearer", "username": " integrator@company.com " }
Carga de Rutas mediante API
Esta opción le permite conectar su sistema a nuestra plataforma, para que una vez inicie sesión en la web pueda realizar optimizaciones con los datos suministrados desde su plataforma, mediante la opción importar desde nube en la sección de Planificación de rutas.
Observciones
Envío de rutas a optimizar
Una vez posea el access_token debe enviar los datos necesarios a nuestra plataforma de la siguiente manera:
Url: https://restapi.dev.resetsign.com/api/integration
Método: POST
Tipo de contenido: application/json
Parámetros
{
"name": "Name Test",
"description": "Description Test",
"dateSession": "2019-11-28",
"deliveryPoints": [{
"id": "1",
"address": "carrer mallorca, 591 08026 Barcelona",
"name": "Farmacia Ana Ma. Màcia Creus",
"deliveryZoneId": "BCN",
"deliveryWindow": {
"start": 28800,
"end": 36000
},
"serviceTime": 480,
"demand": 12,
"phone": "34123456789",
"email": "prueba@gmail.com",
"requiredSignature": false,
}]
}
name: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al nombre que se le asignara a la importación.
description: (Opcional) campo de tipo alfanumérico (min. 1, máx. 255), permite indicar una observación o descripción acerca de la importación.
dateSession: (Obligatorio) campo de tipo fecha (YYYY-MM-DD), indica la fecha en la que se debe ejecutar la optimización.
deliveryPoints: (Obligatorio) es un arreglo que contiene la información de ubicación de cada cliente. Como se detalla a continuación:
- id: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al identificador único de cada cliente.
- address: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 200), permite la geolocalización del cliente para fines de optimización.
- name: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al nombre comercial del cliente.
- deliveryZoneId: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 30), se refiere a la zona de entrega que pertenece el cliente.
- deliveryWindow: (Opcional) es un objeto que indica la franja la horaria que se utilizara para el cliente, comprendido por los atributos start y end.
- start: (Opcional) es un campo tipo entero, que indica el horario de apertura del cliente en segundos, ejemplos:
- 0 = 00:00:00
- 1800 = 00:30:00
- 2700 = 00:45:00
- 3600 = 01:00:00
- 14400 = 04:00:00
Si no se coloca este parámetro nuestra plataforma lo entenderá como apertura libre.
- end: (Opcional) es un campo tipo entero, que indica el horario de apertura del cliente en segundos, ejemplos:
- 61200 = 17:00:00
- 86399 = 23:59:59
- 2700 = 00:45:00
Si no se coloca este parámetro nuestra plataforma lo entenderá como limite de entrega libre.
- start: (Opcional) es un campo tipo entero, que indica el horario de apertura del cliente en segundos, ejemplos:
- serviceTime: (Opcional) es un campo tipo entero, que indica en segundos el tiempo de descarga, ejemplos:
- 300 = 5 min
- 600 = 10 min
Si no se sabe que poner en este parámetro introducir 0.
- phone: (Opcional) campo tipo alfanumérico (min. 1, máx. 30), que indica el número de telefono de cada cliente para que en la aplicación de chofer puedan llamar directamente.
- email: (Opcional) campo tipo alfanumérico (min. 1, máx. 30),el mail al que le querremos enviar de manera opcional las firmas y los albaranes asi como la informacion del chofer.
- requiredSignature: (Opcional) es un campo tipo boolean, si queremos que salga el campo firma en la aplicación o no queremos, opciones True o False.
Recuperación de Rutas mediante API
Esta opción le permite acceder a la información de las rutas optimizadas una vez se han asignado. Este endpoint sólo se puede recuperar antes que los choferes asignados han finalizado ruta desde su aplicación movil.
Para realizar la integración es necesario:
Proceso
Una vez posea el access_token debe enviar los datos necesarios a nuestra plataforma de la siguiente manera:
Url: https://restapi.dev.resetsign.com/api/integration/route/assigned
Método: POST
Tipo de contenido: application/json
Parámetros
{
"dateDeliveryStart": "2019-01-01"
}
dateDeliveryStart: (Obligatorio) campo de tipo fecha (YYYY-MM-DD), indica la fecha que se requiere recuperar la información de la ruta.
La respuesta de nuestra plataforma es la siguiente:
{
"routes": [{
"vehicleId": 1,
"routeId": 1,
"deliveryZoneId": "BCN",
"deliveryPoints": [{
"id": "1",
"order": 1,
"estimatedArrivalTime": 27000
},
{
"id": "2",
"order": 2,
"estimatedArrivalTime": 30600
},
{
"id": "3",
"order": 3,
"estimatedArrivalTime": 32400
},
{
"id": "4",
"order": 4,
"estimatedArrivalTime": 57600
}
]
}]
}
La respuesta es un arreglo de las rutas y los puntos de entrega ordenados mediante nuestra optimización
Donde:
- vehicleId: Contenedor de las rutas.
- vehicleId: identificador del vehiculo.
- deliveryZoneId: Identificador de la ruta.
- deliveryPoints: Contenedor de los puntos de entrega.
- Id: Identificador del punto de entrega.
- order: Ordenamiento calculado mediante la optimización.
- estimatedArrivalTime: Hora de llegada del chofer al punto de entrega.
Carga de Productos a Ruta asignada mediante API
Esta opción le permite asignarle productos a los puntos de entrega que ha optimizado mediante nuestra plataforma.
Proceso
Una vez posea el access_token debe enviar los datos necesarios a nuestra plataforma de la siguiente manera:
Url: https://restapi.dev.resetsign.com/api/integration/route/products
Método: POST
Tipo de contenido: application/json
Parámetros
{
"routeId": 1,
"deliveryPoints": [
{
"id": 1,
"deliveryNoteCode": "45466770",
"taxPercent": 10,
"products": [{
"code": "XHK8UYIP",
"name": "Ibuprofeno 400 mg",
"quantity": 200,
"price": 1.5,
"measureQuantity": 1
},
{
"code": "XAK8UYIP",
"name": "Acetaminofén 650 mg",
"quantity": 500,
"price": 2,
"measureQuantity": 1
},
{
"code": "XLK8UYIP",
"name": "Loratadina 10 mg",
"quantity": 50,
"price": 0.3,
"measureQuantity": 1
},
{
"code": "XCK8UYIP",
"name": "Cetirizina 10 mg",
"quantity": 35,
"price": 0.7,
"measureQuantity": 1
}
]
}
]
}
routeId: (Obligatorio) campo tipo entero, se refiere al identificador de la ruta a la cual se le asignara los productos.
deliveryPoints: (Obligatorio) es un arreglo que contiene la información de productos por cada cliente. Como se detalla a continuación:
- id: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al identificador único de cada cliente.
- deliveryNoteCode: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 30), se refiere al numero o código de albarán que será firmado por el cliente.
- taxPercent: (obligatorio) campo numérico que permite indicar el impuesto (IVA) a los productos.
- products: es un arreglo de productos cuya estructura se detalla a continuación:
- code: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al código del producto.
- name: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 50), se refiere al nombre del producto.
- quantity: (Obligatorio) campo entero que permite indicar la cantidad en unidades del producto.
measureQuantity: (Obligatorio) campo entero que indica la cantidad en medidas del producto, este campo realiza una multiplicación de la cantidad de productos y precio, de no requerir dicha operación debe enviar 1.
Carga de Rutas con Productos mediante API
Esta opción le permite conectar su sistema a nuestra plataforma, para que una vez inicie sesión en la web pueda realizar optimizaciones con los datos suministrados desde su plataforma, mediante la opción importar desde nube en la sección de Planificación de rutas.
Envío de rutas a Optimizar
Una vez posea el access_token debe enviar los datos necesarios a nuestra plataforma de la siguiente manera:
Url: https://restapi.dev.resetsign.com/api/integration
Método: POST
Tipo de contenido: application/json
Parámetros
{
"name": "Name Test",
"description": "Description Test",
"dateSession": "2019-11-28",
"deliveryPoints": [{
"id": "1",
"address": "carrer mallorca, 591 08026 Barcelona",
"name": "Farmacia Ana Ma. Màcia Creus",
"deliveryZoneId": "BCN",
"deliveryWindow": {
"start": 28800,
"end": 36000
},
"serviceTime": 480,
"demand": 12,
“deliveryNoteCode": "45466770",
"taxPercent": 10,
products": [
{
"code": "XHK8UYIP",
"name": "Ibuprofeno 400 mg",
"quantity": 200,
"price": 1.5,
"measureQuantity": 1
},
{
"code": "XAK8UYIP",
"name": "Acetaminofén 650 mg",
"quantity": 500,
"price": 2,
"measureQuantity": 1
},
{
"code": "XLK8UYIP",
"name": "Loratadina 10 mg",
"quantity": 50,
"price": 0.3,
"measureQuantity": 1
},
{
"code": "XCK8UYIP",
"name": "Cetirizina 10 mg",
"quantity": 35,
"price": 0.7,
"measureQuantity": 1
}
]
}]
}
name: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al nombre que se le asignara a la importación.
description: (Opcional) campo de tipo alfanumérico (min. 1, máx 255), permite indicar una observación o descripción acerca de la importación.
dateSession: (Obligatorio) campo de tipo fecha (YYYY-MM-DD), indica la fecha en la que se debe ejecutar la optimización.
deliveryPoints: (Obligatorio) es un arreglo que contiene la información de ubicación de cada cliente. Como se detalla a continuacion:
- id: (Obligatorio) campo tipo alfanumérico (min. 1, max 100), se refiere al identificador unico de cada cliente.
- address: (Obligatorio) campo tipo alfanumérico (min. 1, máx 200), permite la geolocalizacion del cliente para fines de optimizacion.
- name: (Obligatorio) campo tipo alfanumérico (min. 1, máx 100), se refiere al nombre comercial del cliente.
- deliveryZoneId: (Opcional) campo tipo alfanumérico (min. 1, máx. 30), se refiere a la zona de entrega que pertenece el cliente.
- deliveryWindow: (Opcional) es un objeto que indica la franja la horaria que se utilizara para el cliente, comprendido por los atributos start y end.
- start: (Opcional) es un campo tipo entero, que indica el horario de apertura del cliente en segundos, ejemplos:
- 0 = 00:00:00
- 1800 = 00:30:00
- 2700 = 00:45:00
- 3600 = 01:00:00
- 14400 = 04:00:00
Si no se coloca este parámetro nuestra plataforma lo entenderá como apertura libre.
- end: (Opcional) es un campo tipo entero, que indica el horario de apertura del cliente en segundos, ejemplos:
- 61200 = 17:00:00
- 86399 = 23:59:59
- 2700 = 00:45:00
Si no se coloca este parámetro nuestra plataforma lo entenderá como limite de entrega libre.
- serviceTime: (Opcional) es un campo tipo entero, que indica en segundos el tiempo de descarga, ejemplos:
- 300 = 5 min
- 600 = 10 min
Si no se sabe la cantidad de este parametro colocar por defecto 0..
- demand: (Opcional) es un campo tipo entero, que indica en la cantidad de carga que llevara el vehículo para este cliente.
Si no se coloca este parámetro nuestra plataforma que no tiene carga y asumirá 0.
- products: es un arreglo de productos cuya estructura se detalla a continuación:
- code: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al código del producto.
- name: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 50), se refiere al nombre del producto.
- quantity: (Obligatorio) campo entero que permite indicar la cantidad en unidades del producto.
measureQuantity: (Obligatorio) campo entero que indica la cantidad en medidas del producto, este campo realiza una multiplicación de la cantidad de productos y precio, de no requerir dicha operación debe enviar 1.
Recuperación de Rutas finalizadas mediante API
Esta opción le permite acceder a la información de las rutas finalizadas determinadas por una fecha.
Para realizar la integración es necesario:
Proceso
Una vez posea el access_token debe enviar los datos necesarios a nuestra plataforma de la siguiente manera:
Url: https://restapi.dev.resetsign.com/api/integration/route/history
Método: POST
Tipo de contenido: application/json
Parámetros
{
"dateDeliveryStart": "2019-01-01"
}
dateDeliveryStart: (Obligatorio) campo de tipo fecha (YYYY-MM-DD), indica la fecha la fecha que se requiere recuperar la información de la ruta.
La respuesta de nuestra plataforma es la siguiente:
{
"routes": [{
"vehicleId": 1,
"routeId": 1,
"deliveryZoneId": "BCN",
"deliveryPoints": [{
"id": "1",
"order": 1,
"estimatedArrivalTime": 27000,
"requiredSignature": false,
"driverArrivalTime": "2019-11-07 15:42:29",
"signature": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/2wBDAQMDAwQDBAgEBAgQCwkLEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBD/wAARCADmAPoDASIAAhEBAxEB/8QAHQABAAIDAQEBAQAAAAAAAAAAAAYHAwQFAgEICf/EAD0QAAIBAwMDAgMFBAcJAAAAAAABAgMEBQYREgchMRNBFFFhFSJxgZEIFzJSFiQzU2KCoTQ1QkNykrGy0f/EABQBAQAAAAAAAAAAAAAAAAAAAAD/ /9k=",
"signatureTime": "2019-11-07 15:42:50",
"dniDeliveryNote": "Cliente de prueba",
"nameDeliveryNote": "12345678",
"deliveredBoxes": 5,
"devolutionDeliveryNote": null
}
]
}]
}
La respuesta es un arreglo de las rutas y los puntos de entrega ordenados mediante nuestra optimización
Donde:
- routes: Contenedor de las rutas.
- routeId: Identificador de la Ruta.
- vehicleId: identificador del vehiculo.
- deliveryZoneId: Identificador de la ruta.
- deliveryPoints: Contenedor de los puntos de entrega.
- Id: Identificador del punto de entrega.
- order: Ordenamiento calculado mediante la optimización.
- estimatedArrivalTime: Hora de llegada según optimización del chofer al punto de entrega.
- requiredSignature: Firma requerida.
- driverArrivalTime: Fecha y hora de llegada del chofer al punto de entrega
- signature: Firma del cliente en formato base64.
- signatureTime: Fecha y hora en que fue firmado por el cliente.
- dniDeliveryNote: Documento de identificación del cliente que recibió el pedido.
- nameDeliveryNote: Nombre y/o apellido del cliente que recibió el pedido.
- deliveredBoxes: Numero de cajas entregadas.
- devolutionDeliveryNote: Nota de devolución del cliente si se da el caso.
Integración vía WEB
Obtención del AccesToken
Para realizar la integración de cualquier petición via API es necesario seguir los siguientes pasos para la obtención del AccesToken:
- Crear usuario en la web con perfil de técnico: Debe dirigirse a la sección de GESTION y dar clic en la pestaña de usuarios, luego agregar usuario y completar todos los datos. El usuario a crear debe tener el perfil de técnico.
Luego de haber creado el usuario se procede a realizar el envío de los datos mediante nuestro servicio RestApi para lo cual son necesarios los siguientes pasos:
Obtener token de autorización
Url: https://restapi.dev.resetsign.com/api/oauth/token_integrator
Método: POST
Tipo de contenido: application/json
Parámetros
{ "client_id" : 1, "client_secret" : "tT96kecNtYVf92dvRfQ1Ikj6sjsx5tKZzaCCpHun", "username" : "integrator@company.com", "password" : "secret_password", "grant_type" : "password" }
Los parámetros client_id, cliente_secret, grant_type son constante, solo debe cambiar el username con el usuario que creo previamente en la sección de usuarios y el password por la contraseña que le asigno.
Al realizar esta petición debería obtener una respuesta como la siguiente:
{ "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiI ", "refresh_token": "def50200388a50a45925d65” "expires_in": 86400, "token_type": "Bearer", "username": " integrator@company.com " }
Carga de Rutas mediante CSV_JSON
La importación mediante fichero requiere de la generación por parte del usuario de un fichero. Este fichero contiene la información de los puntos en los que hay que realizar la entrega en un día concreto. Esta información puede representarse en cualquiera de los siguientes formatos:
JSON
CSV (con cabecera y con separación de valores por comas)
En cualquier caso, la codificación de caracteres del fichero debe ser UTF-8. Cualquier otra codificación (ASCII, ANSI, etc.) puede causar problemas de representación de caracteres especiales.
Dado que ambos formatos se utilizan para representar un conjunto de campos, y las reglas sobre los valores que pueden tener estos campos son las mismas para cualquiera de los formatos, describiremos cómo y dónde se especifican cada uno de los campos en cada uno de ellos, y en el apartado 5 describiremos el significado y las restricciones de cada uno de los campos con independencia del formato de representación.
JSON
{
"deliveryPoints": [{
"id": string,
"address": string,
"coordinates": {
"latitude": number,
"longitude": number
},
"name": string,
"deliveryZoneId": string,
"deliveryWindow": {
"start": number,
"end": number
},
"demand": number,
"serviceTime": number,
" requiredSignature ": boolean,
"email": string,
"phone": string
}]
}
CSV
El formato CSV debe contener cabecera y los valores de los campos deben aparecer separados por el car´acter , (coma).
Notad que esto significa que aquellos campos que tengan comas en su valor, como podr´ıa ser la direcci´on (campo address), el nombre del punto de entrega (campo name) o las notas de entrega (campo deliveryNotes) deber´an aparecer delimitados por el car´acter » (comillas dobles) en el caso que el valor contenga comas, tal y como define la especificaci´on del formato CSV.
Los identificadores de los campos son los siguientes, y se pueden especificar en cualquier orden, siempre que la posici´on del identificador en la cabecera coincida con la posici´on del valor en cada una de las l´ıneas del fichero:
- id
- address
- latitude
- longitude
- name
- deliveryZoneId
- start
- end
- demand
- serviceTime
- requiredSignature
- phone
Especificacion de campos
deliveryPoints: (Obligatorio) es un arreglo que contiene la información de ubicación de cada cliente. Como se detalla a continuación:
- id: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al identificador único deucada cliente.
- address: (Obligatorio si no se especifica coordinates) campo tipo alfanumérico (min. 1, máx. 200), permite la geolocalización del cliente para fines de optimización.
- coordinates: (Obligatorio si no se especifica address) contenedor de las coordenadas del punto.
- latitude: Número decimal entre -90 y 90, se debe especificar junto a longitude. Ejemplo:
- -40.33283
- 57.2342777
- 86
- longitude: Número decimal entre -180 y 180, se debe especificar junto a latitude. Ejemplo:
- -120.236
- 26.2777
- latitude: Número decimal entre -90 y 90, se debe especificar junto a longitude. Ejemplo:
- name: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al nombre comercial del cliente.
- deliveryZoneId: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 30), se refiere a la zona de entrega que pertenece el cliente.
- deliveryWindow: (Opcional) es un objeto que indica la franja la horaria que se utilizara para el cliente, comprendido por los atributos start y end.
-
- start: (Opcional) es un campo tipo entero, que indica el horario de apertura del cliente en segundos, ejemplos:
-
-
- 0 = 00:00:00
- 1800 = 00:30:00
- 2700 = 00:45:00
- 3600 = 01:00:00
- 14400 = 04:00:00
-
Si no se coloca este parámetro nuestra plataforma lo entenderá como apertura libre.
-
- end: (Opcional) es un campo tipo entero, que indica el horario de apertura del cliente en segundos, ejemplos:
-
-
- 61200 = 17:00:00
- 86399 = 23:59:59
- 2700 = 00:45:00
-
Si no se coloca este parámetro nuestra plataforma lo entenderá como limite de entrega libre.
- demand: (Requerido) es un campo tipo entero, que indica la cantidad de unidades o cajas que llevara el vehiculo.
- serviceTime: (Requerido) es un campo tipo entero, que indica en segundos el tiempo de descarga, ejemplos:
-
- 300 = 5 min
- 600 = 10 min
Si no se sabe que poner en este parámetro introducir 0.
- phone: (Opcional) campo tipo alfanumérico (min. 1, máx. 30), que indica el número de telefono de cada cliente para que en la aplicación de chofer puedan llamar directamente.
- email: (Opcional) campo tipo alfanumérico (min. 1, máx. 30),el mail al que le querremos enviar de manera opcional las firmas y los albaranes asi como la informacion del chofer.
requiredSignature: (Opcional) es un campo tipo boolean, si queremos que salga el campo firma en la aplicación o no queremos, opciones True o False.
Recuperación de Rutas
Esta opción le permite acceder a la información de las rutas optimizadas una vez se han asignado. Este endpoint sólo se puede recuperar antes que los choferes asignados han finalizado ruta desde su aplicación movil.
Para realizar la integración es necesario:
Proceso
Una vez posea el access_token debe enviar los datos necesarios a nuestra plataforma de la siguiente manera:
Url: https://restapi.dev.resetsign.com/api/integration/route/assigned
Método: POST
Tipo de contenido: application/json
Parámetros
{
"dateDeliveryStart": "2019-01-01"
}
dateDeliveryStart: (Obligatorio) campo de tipo fecha (YYYY-MM-DD), indica la fecha que se requiere recuperar la información de la ruta.
La respuesta de nuestra plataforma es la siguiente:
{
"routes": [{
"vehicleId": 1,
"routeId": 1,
"deliveryZoneId": "BCN",
"deliveryPoints": [{
"id": "1",
"order": 1,
"estimatedArrivalTime": 27000
},
{
"id": "2",
"order": 2,
"estimatedArrivalTime": 30600
},
{
"id": "3",
"order": 3,
"estimatedArrivalTime": 32400
},
{
"id": "4",
"order": 4,
"estimatedArrivalTime": 57600
}
]
}]
}
La respuesta es un arreglo de las rutas y los puntos de entrega ordenados mediante nuestra optimización
Donde:
- vehicleId: Contenedor de las rutas.
- vehicleId: identificador del vehiculo.
- deliveryZoneId: Identificador de la ruta.
- deliveryPoints: Contenedor de los puntos de entrega.
- Id: Identificador del punto de entrega.
- order: Ordenamiento calculado mediante la optimización.
- estimatedArrivalTime: Hora de llegada del chofer al punto de entrega.
Carga de Productos mediante la WEB
Esta funcionalidad permite la carga de productos para los clientes que han sido previamente cargados vía Importar archivo o Importar desde nube.
Se debe dirigir a la seccion Panel de control y seleccionar la ruta a la cual le cargará los productos .
La estructura del json es la siguiente:
{
"deliveryPoints": [{
"id": "1",
"deliveryNoteCode": "45466770",
"taxPercent": 10,
"products": [{
"code": "XHK8UYIP",
"name": "Ibuprofeno 400 mg",
"quantity": 200,
"price": 1.5,
"measureQuantity": 1
},
{
"code": "XAK8UYIP",
"name": "Acetaminofén 650 mg",
"quantity": 500,
"price": 2,
"measureQuantity": 1
},
{
"code": "XLK8UYIP",
"name": "Loratadina 10 mg",
"quantity": 50,
"price": 0.3,
"measureQuantity": 1
},
{
"code": "XCK8UYIP",
"name": "Cetirizina 10 mg",
"quantity": 35,
"price": 0.7,
"measureQuantity": 1
}
]
}]
}
Donde:
deliveryPoints: (Obligatorio) es un arreglo que contiene la información de productos por cada cliente. Como se detalla a continuación:
- id: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al identificador único de cada cliente.
- deliveryNoteCode: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 30), se refiere al numero o código de albarán que será firmado por el cliente.
- taxPercent: (obligatorio) campo numérico que permite indicar el impuesto (IVA) a los productos.
- products: es un arreglo de productos cuya estructura se detalla a continuación:
- code: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 100), se refiere al código del producto.
- name: (Obligatorio) campo tipo alfanumérico (min. 1, máx. 50), se refiere al nombre del producto.
- quantity: (Obligatorio) campo entero que permite indicar la cantidad en unidades del producto.
- measureQuantity: (Obligatorio) campo entero que indica la cantidad en medidas del producto, este campo realiza una multiplicación de la cantidad de productos y precio, de no requerir dicha operación debe enviar 1.
Recuperar JSON de Albaranes firmados
Esta opción le permite realizar la descarga de los datos obtenidos por los choferes en cada cliente visitado. Debe dirigirse a la sección de Panel de control en la pestaña de histórico de rutas y dar clic sobre el botón de descarga.
La estructura del json contendrá un arreglo de clientes con la siguiente estructura:
[{
"id": "1",
"signature": "data:image/jpeg;base64,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",
"deliveredBoxes": "4",
"devolutionDeliveryNote": null
}]
Donde:
- id: se refiere al identificador único de cada cliente.
- Signature: un campo con informacion en base64 con la imagen de la firma capturada mediante nuestra app.
- deliveredBoxes: se refiere al numero de cajas recogidas por el chofer.
- devolutionDeliveryNote: Nota de devolución transcrita por el chofer.
Recuperar JSOS_CSV Evaluados y Calculados
Esta opción le permite realizar la descarga de las rutas evaluadas y optimizadas desde la sección panel de control una vez se haya evaluado o calculado la ruta aparecerá un botón de descarga en la parte superior derecha. Al darle clic al botón de descarga aparecerá un cuadro de dialogo que le permitirá elegir las rutas que desea obtener y el formato deseado entre JSON y CSV.
CSV
Contendrá una cabecera separada por comas (,) ordenada de la siguiente manera:
deliveryPointId,deliveryZoneId,vehicleId,order,estimatedArrivalTime
y las filas de la siguiente manera:
"1","BCN","12",1,27000
JSON
{
"routes": [{
"vehicleId": 12,
"deliveryZoneId": "BCN",
"deliveryPoints": [{
"id": "1",
"order": 1,
"estimatedArrivalTime": 27000
}, {
"id": "7",
"order": 2,
"estimatedArrivalTime": 28800
}, {
"id": "3",
"order": 3,
"estimatedArrivalTime": 32400
}]
}]
}
Especificación de los campos
- deliveryPointId: campo que se refiere al identificador único de cada cliente.
- deliveryZoneId: Muestra la zona a la que pertenece el punto de entrega.
- vehicleId: Identificador del vehiculo en nuesra plataforma.
- order: Posicion del punto luego de la optimizacion o evaluacion.
- estimatedArrivalTime: Hora de llegada estimada calculada por nuestra plataforma.