Integrar rutas

Otros

Integra tus rutas

La integración de clientes requiere de una conexión particular de cada cliente a nuestro servidor SFTP.

Esta conexión se la creará uno de nuestros propios técnicos y se enviará a la cuenta de correo electrónico que se introdujo en el momento del registro de la empresa en Polpoo. Como ERP, deberéis pedir a la empresa que os otorgue las siguientes credenciales:

Usuario: Nombre de usuario.

Contraseña: Contraseña del usuario.

Servidor: Dirección a la que conectarse.

Puerto: Puerto por el cual se conectará el cliente a nuestro servidor.

También recibiréis la información del directorio de la empresa donde deberéis realizar las integraciones correspondientes.

En cuanto a la configuración, la empresa deberá introducir un correo electrónico de soporte para las integraciones para que, en caso de haber algún tipo de error en alguno de los procesos, el ERP pueda observar cuál ha sido la incidencia. Esto es configurable desde la Configuración de la empresa, en el apartado Integraciones

1. Tipo de documento: delivery_points.json

Una ruta se define como el conjunto de localizaciones en las que hay que realizar entregas o recogidas.

El fichero para la integración de rutas debe llamarse delivery_points.json y debe estar codificado en UTF-8. Se dejará en el directorio raíz del SFTP de la compañía (./company_X/).

En caso de cargar un fichero en el SFTP con el mismo nombre que un fichero ya existente, este se sobrescribirá.

La plataforma cargará las nuevas rutas y podrás encontrarlas desde el Planificador de rutas, importando desde el Planificador de Entregas.

La plataforma cargará automáticamente los clientes que formen parte de las rutas y podrás encontrarlos en el menú Gestión -> Clientes.

Es importante que la información de los campos no contenga comillas dobles (p.e: "Frutería "El sol""), ya que los ficheros .json trabajan con comillas dobles para delimitar los campos y la información. En caso de tener algún dato de este estilo, la integración no se realizará correctamente. Cualquier otro símbolo especial es aceptado.

Se definen los campos que pertenecen a este fichero de la siguiente manera:

* La información obligatoria está marcada en rojo. En caso de que no se tenga la información de un campo opcional, no se tiene que añadir la etiqueta en el fichero .json.

2. Especificaciones de los campos

name string obligatorio
Nombre de la importación.

description string obligatorio
Descripción de la importación.

dateSession datetime obligatorio
Fecha de la importación.

deliveryPoints.id string obligatorio
Identificador único del cliente.

deliveryPoints.name string obligatorio
Nombre del cliente.

deliveryPoints.address string – obligatorio
Dirección del cliente.

deliveryZoneId string – obligatorio
Zona de reparto a la que pertenece el cliente.

deliveryPoints.deliveryWindow.start integer
Hora en la que se puede empezar a repartir en un cliente (segundos).

deliveryPoints.deliveryWindow.end integer
Hora en la que ya no se puede repartir en un cliente (segundos).

deliveryPoints.population string
Población del cliente.

deliveryPoints.serviceTime integer
Tiempo estimado para realizar la descarga en el cliente (segundos).

deliveryPoints.demand integer
Espacio que ocupa el pedido de un cliente.

deliveryPoints.phoneNumber string
Número de teléfono del cliente.

deliveryPoints.email string
Correo electrónico del cliente.

deliveryPoints.leadTime integer
Tiempo de entrega antes de la hora de apertura del cliente (segundos).

deliveryPoints.service.code string obligatorio si e envía un servicio

Código de la especificación de servicio.

deliveryPoints.service.name string obligatorio si se envía un servicio

Nombre de la especificación de servicio.

deliveryPoints.deliveryType string

Tipo de servicio ("shipment" = entrega // "pickup" = recogida). En caso de no enviarse, se marcará como entrega.

deliveryPoints.orderNumber string

Número del pedido referente al punto de entrega.

deliveryPoints.deliveryNotes string

Observaciones acerca de la entrega del pedido.

deliveryPoints.sendDeliveryNoteMail boolean

Si es true, se mandará el albarán por correo electrónico.

deliveryPoints.allowDelayTime boolean

Si es true, se activará el tiempo de retraso para este cliente.
*Obligatorio tener activada esta configuración en Polpoo.

deliveryPoints.delayType string

Nombre del tiempo de retraso.
*Obligatorio tener activada esta configuración en Polpoo.

deliveryPoints.deliveryZoneSpecification.code string obligatorio si se envía una esp. de ruta

Código de la especificación de ruta.

deliveryPoints.deliveryZoneSpecification.name string obligatorio si se envía una esp. de ruta

Nombre de la especificación de ruta.

deliveryPoints.activateDeliverySchedule boolean

Si es true, se activará la especificación horarias por días y franjas del cliente.

deliveryPoints.deliveryScheduleDay.isActive boolean

Si es true, este día estará abierto. Si se manda false, este día estará cerrado.

deliveryPoints.deliveryScheduleDay.intDay integer
Día de la semana (1 = Lunes, 2 = Martes....).

deliveryPoints.deliveryScheduleDay.fixedDelivery boolean

Si es true, este día tendrá entrega fija y se incluirá en al ruta aunque no se envíe por integración.

deliveryPoints.deliveryScheduleDay.hours.timeStart integer
Hora de inicio de la franja horaria de entrega.

deliveryPoints.deliveryScheduleDay.hours.timeEnd integer
Hora de finalización de la franja horaria de entrega.

3. Ejemplos y descargables

{
    "name": "Lunes",
    "description": "Rutas del lunes",
    "dateSession": "2020-11-9",
    "deliveryPoints": [
    {
        "id": "119029",
        "name": "Empresa SL",
        "address": "Pg. Sant Joan 6, 08009, Barcelona",
        "deliveryZoneId": "BCN-02",
        "deliveryWindow": {
            "start": 17700,
            "end": 28000
        },
        "population": "Barcelona",
        "serviceTime": 480,
        "demand": 12,
        "phoneNumber": "34666555666",
        "email": "prueba@empr.com",
        "leadTime": 100,
        "service": {
            "code": "0002",
            "name": "Frío"
        },
        "deliveryType": "shipment",
        "orderNumber": "P-4234",
        "deliveryNotes": "Pedir llaves",
        "sendDeliveryNoteMail": true,
        "allowDelayTime": true,
        "delayType": "AAA",

        "deliveryZoneSpecification": {
            "code": "0001",
            "name": "231"
        },
        "activateDeliverySchedule": true,
        "deliveryScheduleDay": [ {
            "isActive": true,
            "intDay": 1,
            "fixedDelivery": false,
            "hours": [ {
                 "timeStart": 32400,
                 "timeEnd": 36000

             } ]
         } ]
    }
  ]
}

4. ¿Cómo recibo la información en Polpoo?

Una vez cargado satisfactoriamente el fichero delivery_points.json en el SFTP, nuestra plataforma lo absorbe automáticamente añadiendo las nuevas rutas y los clientes que las forman en nuestra base de datos.

Para comprobar la carga correcta del contenido, nos dirigimos al menú Planificar Rutas. Una vez ahí, hay que clicar en el menú + Rutas -> Entregas planificadas.

Se desplegará el listado de las entregas planificadas. En caso de haberse llevado a cabo correctamente la integración de la ruta, deberá aparecer en la tabla un nuevo registro con el nombre que se le ha dado en el fichero .json. Cuando encontramos la ruta deseada, se selecciona y se clica en el botón Seleccionar para cargar en el planificador de rutas.

5. ¿Cómo devuelvo mis rutas al ERP?

Una vez evaluadas u optimizadas las rutas satisfactoriamente, podéis mandar devuelta esas rutas a vuestro ERP para obtener el orden que se va a realizar.

Para ello, se clicará en el botón del planificador de rutas que se muestra en la siguiente imagen:

En la siguiente pantalla, seleccionaremos la opción Json y seguidamente Enviar a nube, ya sean las evaluadas o las optimizadas.

6. Tipo de documento

En caso de enviar a la nube las rutas evaluadas, el fichero se llamará evaluation_YYYYMMDD.json, donde YYYY es el año, MM es el mes y DD es le día en que se manda el fichero de vuelta. Está codificado en UTF-8. Este tipo de fichero se recogerá de la carpeta evaluations (./evaluations) dentro del SFTP. Esta carpeta no estará disponible hasta que se mande una ruta de vuelta por primera vez.

En caso de enviar a la nube las rutas optimizadas, el fichero se llamará optimization_YYYYMMDD.json, donde YYYY es el año, MM es el mes y DD es le día en que se manda el fichero de vuelta. Está codificado en UTF-8. Este tipo de fichero se recogerá de la carpeta optimizations (./optimizations) dentro del SFTP. Esta carpeta no estará disponible hasta que se mande una ruta de vuelta por primera vez.

* La información del fichero de ambos tipos de envío, es exactamente la misma.

7. Especificaciones de los campos

vehicleId integer
Identificador del vehículo que hace la ruta.

 

vehicles.id integer
Identificador del vehículo que hace la ruta.

 

vehicles.user.id integer
Identificador del chófer que hace la ruta.

 

vehicles.user.name string
Nombre del chófer que hace la ruta.

 

vehicles.user.surname string
Apellido del chófer que hace la ruta.

 

vehicles.user.email string
Correo electrónico del chófer que hace la ruta.

 

deliveryZoneId string
Nombre de la ruta.

associatedRoute string
Ruta secundaria asignada.

 

deliveryPoints.id string
Identificador del punto de entrega.

 

deliveryPoints.order integer
Orden en el que aparece el punto de entrega en la ruta.

 

deliveryPoints.estimatedArrivalTime integer
Tiempo de llegada estimada a ese punto de entrega.

 

deliveryPoints.orderNumber string
Número del pedido referente al punto de entrega.

 

deliveryPoints.coordinates.longitude decimal
Coordinada de longitud de la dirección de entrega.

 

deliveryPoints.coordinates.latitude decimal
Coordinada de latitud de la dirección de entrega.

8. Ejemplos

{
    "routes": [
    {
        "vehicleId": 032,
        "vehicles": [
         {
            "id": 032,
            "user": {
                  "id": 21600,
                  "name": "Paco",
                  "surname": "Lopez",
                  "email": "prueba@gmail.com",
            }
        }
        ],
        "deliveryZoneId": "Ruta-1",
        "associatedRoute": "Ruta-310",
        "deliveryPoints": [
         {
            "id": "09238",
            "order": 1,
            "estimatedArrivalTime": 21600,
            "orderNumber": "X238",
            "coordinates": {
                  "longitude": 41.343,
                  "latitude": 1.45590
            }
        }, {
            "id": "C323",
            "order": 2,
            "estimatedArrivalTime": 22054,
            "orderNumber": "XP321",
            "coordinates": {
                  "longitude": 42.3901,
                  "latitude": 2.0918
            }
        }
        ]
      }
      ]
}