8. Bolsa de Pedidos
Se entiende por pedido un documento que puede contener una lista de items
Este modulo es el encargado de gestionar los pedidos del sistema.
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /api/orders | Lista de pedidos registrados |
| POST | /api/orders | Crear un pedido |
| GET | /api/orders/{orderId} | Detalles de pedido |
| PATCH | /api/orders/{orderId} | Modificación de datos de un pedido |
| DELETE | /api/orders/{orderId} | Eliminación de un pedido |
| PATCH | /api/orders/{orderId}/status | Cambio de estado de pedido |
| GET | /api/search-order/{code} | Detalle de pedido (Widget) |
8.1 Parámetros Pedidos
El campo code debe de ser único en el sistema."
| Nombre | Modo | Tipo | Descripción |
|---|---|---|---|
| code | Required | String | Admite letras, números, guiones y guiones bajos pero no espacios |
| description | Optional | String | Descripción del pedido |
| client_id | Optional si existe: client_name,client_address o client_lat,client_lng | Numeric | El id del cliente registrado en el maestro de clientes. |
| client_name | Optional | String | Nombre de cliente final |
| client_document | Optional | String | Documento del cliente final |
| client_email | Optional | String - Email | Email de cliente final donde recibirá notificaciones |
| client_phone | Optional | Numeric | Número de Telefono cliente final |
| time_window | Optional | Array | Ventana Horaria ejm: 08:30-12:00 |
| service_time | Optional | Numeric | Numero de minutos de tiempo de servicio |
| notes | Optional | String | Notas para el conductor |
| price | Optional | Numeric | Precio total del pedido |
| weight | Optional | Numeric | Peso total del pedido |
| volume | Optional | Numeric | Volumen total del pedido |
| location_id | Optional | Numeric | Código de ubicación existente en maestro. |
| client_address | Optional | String | Dirección del cliente se recomienda sea un formato legible tipo "dirección, dristrito, provincia, país" |
| client_lat | Optional | Numeric | Latitud |
| client_lng | Optional | Numeric | Longitud |
| state | Required | String | Longitud |
| user_responsible_id | Optional | Numeric | ID de usuario responsable |
| location_start_id | Optional | Numeric | Id de ubicación. |
| start_address | Optional | String | Dirección de inicio |
| start_lat | Optional | Numeric | Coordenada latitud de inicio |
| start_lng | Optional | Numeric | Coordenada longitud de inicio |
| extra_data | Optional | Array | Propiedades personalizadas |
| is_overtime_notify | Required | Integer | Notificacion por sobre tiempo |
| tags_array | Optional | Array | Lista de etiquetas informativas de orden |
| custom_properties | Optional | Object | Propiedades custom |
| items | Optional | Array | Lista de items pertenecientes a la orden |
| items.*.code | Required | String | Admite letras, números, guiones y guiones bajos pero no espacios |
| items.*.name | Required | String | Nombre de item |
| items.*.brand | Optional | String | Marca de item |
| items.*.weight | Optional | Numeric | Peso de item |
| items.*.volume | Optional | Numeric | Volumen de item |
| items.*.price | Optional | Numeric | Precio de item |
| items.*.measurement_unit_id | Required | Numeric | Id de unidades de medida existentes |
| items.*.quantity | Required | Numeric | Cantidad de items |
8.4 Ejemplo de Registro
Ejemplo de registro de orden básico, en este ejemplo registraremos una orden simple.
La dirección de destino se obtendrá del registro interno del sistema es decir, debe de existir una ubicación registrada relacionada con el cliente que se le va a enviar, en caso contrario
POST /api/orders
{
"code": "ORD001",
"client_code": "CL1253"
}
Respuesta: HTTP 201 OK
{
"code": "n003",
"description": null,
"client_id": 13,
"client_name": "Tarazona Norma",
"client_document": "12344555",
"client_email": "norma@gmail.com",
"client_phone": "21548546",
"time_window": null,
"service_time": 18,
"notes": null,
"price": null,
"weight": null,
"volume": null,
"location_id": null,
"client_address": "Naranjal, Ecuador",
"client_lat": "-2.6689787",
"client_lng": "-79.6221368",
"state": "pending",
"user_responsible_id": 3,
"location_start_id": null,
"start_address": null,
"start_lat": null,
"start_lng": null,
"extra_data": null,
"is_overtime_notify": 0,
"items": [],
"tags_array": [],
"custom_properties": {}
}
Ejemplo Full
POST /api/orders
{
"code": "BP001",
"description": null,
"client_id": 51,
"client_name": "WAYKI EN GOLOSINAS S.A.C.",
"client_document": null,
"client_email": "wayki@gmail.com",
"client_phone": "1564564845",
"time_window": null,
"service_time": "20",
"notes": null,
"price": 0,
"weight": 0,
"volume": 0,
"location_id": null,
"client_address": "Piura Cercado, Piura 20001, Perú",
"client_lat": -5.1972268,
"client_lng": -80.62852900000001,
"state": "pending",
"user_responsible_id": 6,
"location_start_id": null,
"start_address": null,
"start_lat": null,
"start_lng": null,
"extra_data": null,
"is_overtime_notify": 0,
"items": [
{
"code": "01656",
"name": "Item 1",
"brand": "Items",
"weight": "20",
"volume": "22",
"measurement_unit_id": 1,
"quantity": "6"
}
],
"tags_array": [
"bolsa urgente",
"varios pedidos"
],
"custom_properties": {
"custom_36": "1",
"custom_1": "Transferencia",
"custom_2": "30",
"custom_3": "BCP",
"custom_4": "250",
"custom_12": "s3://box/aSAr2ULJtFDqEHPjB2dSYjrrDo6nFamYFi9lfMeS.png",
"custom_18": "s3://box/MUUevKPlq5pRA5uVLxgguXkINQBUXkfXn36hj3B2.png",
"custom_22": "2021-12-23T05:00:00.000Z",
"custom_26": "31",
"custom_27": "Buen estado",
"custom_28": "s3://box/dYmjxXRpX1XdqUKKcxOuKX93r5EEUizujwYnoVHb.png",
"custom_29": "2",
"custom_30": "s3://box/QU5vCbudNTyGvWmhRG9bMBQ85CqLrBZ9yaBHtZTs.png",
"custom_31": "26",
"custom_32": "s3://box/o5aJ997LXiP1I4jNqEEfgUzuiOV5UR1UnsRZsLtB.png",
"custom_33": "5",
"custom_37": "s3://box/QnK0ATEcFHUkbYuRPeWoZykDzx0W5IbUPFGSgGNV.png"
}