Saltar al contenido principal

Crear órdenes masivas (carga de Excel)

POST 

/api/batchShipping

Crea varias órdenes a partir de la plantilla Excel llena (GET /api/batchShipping). Cada fila se valida y se procesa por separado. La respuesta es 200 aunque algunas filas fallen: revise isValid y response_message de cada fila en data[]. codeExcel es el número de fila del Excel, para ubicar los errores.

Cómo enviar el archivo

  • Se envía como multipart/form-data en el campo file, con el tipo de contenido de Excel (application/vnd.openxmlformats-officedocument.spreadsheetml.sheet). Si el archivo llega con otro tipo (por ejemplo application/octet-stream), se rechaza. Con curl: -F "file=@plantilla.xlsx;type=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".
  • Solo se lee el formato .xlsx. Un .xls (formato antiguo) se rechaza con El archivo no pudo ser leído como Excel.
  • Se lee la primera hoja; la fila 1 son los encabezados y las filas vacías se omiten.
  • Llene la plantilla en Excel u otra hoja de cálculo que guarde el resultado de las fórmulas: las columnas ocultas calculan los IDs (dirección, municipio, servicio) a partir de lo elegido en las listas. Si el archivo se genera con una librería que no calcula fórmulas, las filas fallan.

Columnas y validaciones por fila

Cada fila se valida en este orden y se reporta solo el primer error:

ColumnaDatoReglaMensaje si falla
BNombre de clienteObligatorio, de 2 a 150 caracteresEl nombre del cliente es obligatorio y no puede estar vacío, El nombre del cliente debe contener al menos 2 caracteres, El nombre del cliente es demasiado largo. No puede superar los 150 caracteres
CTeléfono de clienteObligatorio, de 7 a 9 caracteres: números y, opcionalmente, guionEl número de teléfono del cliente es obligatorio, El número de teléfono del cliente no puede tener más de 9 caracteres. Puede ingresarse con o sin guion, El número de teléfono del cliente solo puede contener números y, opcionalmente, un guion
DDirección de envíoObligatoria, de 5 a 250 caracteresLa dirección del cliente es obligatoria y no puede estar vacía, La dirección del cliente es demasiado corta. Debe contener al menos 5 caracteres, La dirección del cliente es demasiado larga. No puede superar los 250 caracteres
E, FDepartamento y municipioElegidos de la listaNo se pudo identificar el municipio del cliente. Verifica que el municipio exista y esté correctamente seleccionado
ADirección de recolecciónElegida de la listaSeleccione una dirección de recolección válida
ICourierObligatorioSeleccione un courier válido
JServicioObligatorioSeleccione un servicio
KTipo de servicioObligatorio; la combinación de courier, servicio y tipo debe existir en la listaSeleccione un tipo de servicio, La combinación de courier, servicio y tipo de servicio no es válida
LTipo de entregaEntrega Normal (Sin Cobro) o Cobro Contra EntregaSeleccione un tipo de entrega válido
NDescripción del productoObligatoria, máximo 150 caracteresIngrese una descripción del producto, La descripción del producto es demasiado larga
HPeso (lb)Número mayor que 0Ingrese un peso válido
GCantidad de paquetesEntero de 1 a 50Ingrese una cantidad de paquetes válida
MMonto a cobrarMayor que 0 con Cobro Contra Entrega; sin cobro, vacío o mayor o igual a 0Ingrese un monto a cobrar válido, por ejemplo 15.50, El monto a cobrar no puede ser negativo
OComentariosOpcional, máximo 300 caracteresLos comentarios son demasiado largos

Qué hace cada fila válida

Guarda o actualiza el destinatario en los clientes del comercio y crea la orden igual que POST /api/orders: genera la guía y descuenta el costo del saldo. Si la creación falla (por ejemplo, por saldo o por un error del courier), la fila llega con isValid: false y el mensaje de ese error. Las demás filas se procesan igual.

Petición​

Respuestas​

Archivo procesado; revisar el resultado de cada fila