Entendiendo el pedido de piezas
Esta sección se basa en la información proporcionada en la Comenzando sección y profundiza en los diferentes servicios de la API de pedidos de piezas.
Descripción general del proceso de negocio de pedidos de piezas
Esta sección presenta una descripción general del proceso de negocio de pedidos de piezas. Los sistemas backend de BRP gestionan los pedidos de piezas, utilizando principalmente SAP, y su impacto en su DMS se siente a través de la API de pedidos de piezas.

El proceso comienza cuando el concesionario crea un pedido de piezas en su DMS.
Tu DMS debe llamar al API de distribuidores para recuperar los métodos de envío disponibles para el concesionario y mostrarlos en la pantalla.
El concesionario debe tener acceso al catálogo de piezas BRP, obtenido a través de la API de piezas, para buscar y seleccionar las piezas a pedir.
Si aún no se ha hecho, el concesionario inicia sesión en BOSSWeb utilizando sus credenciales a través de su DMS, y guardas el access_token devuelto por el API de Autenticación de Concesionarios.
El concesionario utiliza el Validar función en su DMS para enviar el pedido de piezas para validación.
- La API de pedido de piezas recibe la carga útil y la envía a SAP.
- SAP valida el pedido de piezas y devuelve el resultado a la API de Pedido de Piezas.
- Su DMS recibe la respuesta y muestra el resultado al concesionario.
- Si aparecen mensajes de error, se muestran al concesionario, quien debe corregir el pedido de piezas y validar el pedido modificado.
- El concesionario verifica el pedido de piezas y los costos resultantes, incluidos los gastos de envío, para asegurarse de que sean los esperados.
🛑 Tienes que manejar el tiempo de espera en el Validar función que ocurre si hay más de 30 artículos en el pedido de piezas.
Vea el Ver Flujo de Datos sección a continuación para obtener información sobre cómo manejar el tiempo de espera.
Cuando el concesionario está satisfecho con el pedido de piezas, utiliza el Crear función en su DMS.
- La API de pedido de piezas recibe la carga útil y la envía a SAP.
- SAP valida el pedido de piezas, y si es válido, crea y guarda el pedido.
- El resultado se devuelve a la API de Pedido de Piezas: se devuelve el pedido de piezas creado o un mensaje de error.
- Si se crea el pedido de piezas, lo guardas en la base de datos del DMS. Si aparece un mensaje de error, se muestra al concesionario.
🛑 Tienes que manejar el tiempo de espera en el Crear función que ocurre si hay más de 25 artículos en el pedido de piezas.
Ver el Ver el flujo de datos sección a continuación para obtener información sobre cómo manejar el tiempo de espera.
El pedido de piezas devuelto es no completado cuando SAP lo devuelve por primera vez. Por ejemplo, la información de entrega no está disponible cuando se crea el pedido de piezas.
🚴♂️ Toma en promedio 2 segundos por línea de artículo para que SAP procese el pedido de piezas. Así que, procesar un pedido de piezas con 60 líneas de artículo toma al menos 2 minutos.
Su interfaz de usuario DMS debe manejar este largo procesamiento en segundo plano.
SAP trabaja en el backend para completar el pedido de piezas. Las actividades principales son:
- Confirme la disponibilidad de las piezas y en qué almacén están disponibles.
- Prepare la solicitud de envío desde el(los) almacén(es) donde las piezas están disponibles para el concesionario.
- Tenga en cuenta que las piezas pueden ser enviadas desde diferentes almacenes; en este caso, el concesionario recibirá más de un envío.
- Si una pieza no está disponible, SAP intenta determinar una fecha de disponibilidad y actualizar el pedido de piezas con la información.
Tu DMS debe llamar a la API de Pedido de Piezas Obtener servicio para actualizar la información del pedido de piezas. Se debe realizar una llamada al Obtener servicio siempre que el pedido de piezas esté abierto (no completado).
La llamada se puede realizar regularmente o cuando el pedido de piezas se muestra al concesionario. El concesionario puede ver la información de entrega para cada artículo de línea actualizando el pedido de piezas.
Dependiendo del número de artículos en el pedido de piezas, SAP puede tardar de 10 a 15 minutos en procesarlo completamente.
Cuando SAP prepara el pedido de piezas, la información de entrega se envía al/los almacén(es) y los artículos se entregan al concesionario.
La información principal a recordar en el proceso de negocio:
- Se necesita tiempo para que SAP procese el pedido de piezas, y la API de Pedido de Piezas devuelve un tiempo de espera si hay más de 25 líneas de artículos al llamar al servicio de Crear.
- Se necesita tiempo para que SAP procese el pedido de piezas, y su DMS debe llamar al servicio Obtener para actualizar el pedido de piezas en la base de datos del DMS.
- SAP procesa el pedido de piezas en un promedio de 2 segundos por línea de artículo, por lo que un pedido de piezas con 60 líneas de artículos tarda al menos 2 minutos en procesarse.
En su DMS, el botón de enviar/crear no debe estar habilitado si no se realizó la validación para todos los pedidos de piezas con 30 líneas de artículos o menos.
Inicio de sesión del distribuidor
La primera vez que el distribuidor utiliza una operación de la API de Pedido de Piezas, debe iniciar sesión en BOSSWeb a través del API de Autenticación de Concesionarios. El proceso de inicio de sesión te proporciona el access_token y refresh_token.
❗ ❗ Las siguientes secciones proporcionan información esencial sobre el proceso de Autenticación del Distribuidor ❗ ❗
👉 ¡Tómate el tiempo para leer todas ellas!
Autenticación del Distribuidor y Múltiples Tiendas de Distribuidores
Algunos concesionarios forman parte de un grupo de distribuidores con múltiples ubicaciones. En algunos casos, cada concesionario gestiona sus pedidos, mientras que en otros casos, una de las ubicaciones crea pedidos para todos los concesionarios.
En el primer escenario, cada concesionario debe obtener un access_token el API de Autenticación de Concesionarios.
En el segundo escenario, el concesionario que gestiona los pedidos para todas las ubicaciones debe obtener un access_token el API de Autenticación de Concesionarios.
❗❗ La información vital a recordar es que el access_token obtenido a través de la API de Autenticación de Concesionarios debe ser para el concesionario cuyo número de concesionario se utiliza en el dealer_no campo de la carga útil o el encabezado ❗❗
Por ejemplo, digamos que tenemos los concesionarios 000069001 y 0000690002, y que el concesionario 000069001 crea pedidos para ambas ubicaciones.
El access_token debe ser obtenido para el concesionario 000069001, y el dealer_no campo en la carga útil debe ser 0000690001.
Al realizar un pedido para otra ubicación, el partner.bill_to_no y partner.ship_to_no campos se utilizan para especificar el concesionario para el cual se crea el pedido.
❗❗ En resumen, no podemos usar un access_token para todos sus concesionarios a menos que sean parte del grupo con un concesionario creando pedidos para todas las ubicaciones ❗❗
Permisos de Concesionario en BOSSWeb
Las credenciales de cualquier persona del concesionario pueden ser utilizadas para iniciar sesión en BOSSWeb a través del API de Autenticación de Concesionarios.
Sin embargo, para que el Dealer Authentication devuelto access_token sea utilizado en llamadas a la API de Parts Order, la persona del concesionario que inicie sesión debe tener los permisos de pedido PAA.
❗ ❗ Si la persona del concesionario que inicia sesión en BOSSWebb no tiene los permisos de pedido PAA, recibirás un código de estado 401 No autorizado al llamar a la API de Parts Order ❗ ❗

Token de actualización
Como se describe en la Autenticación del Concesionario sección, el access_token devuelto por la API de Autenticación de Concesionarios expira después de 2 horas.
El refresh_token, también devuelto por el API de Autenticación de Concesionarios, debe ser guardado y utilizado para obtener un nuevo access_token cuando, o antes, de que el actual expire.
Solo se debe usar un conjunto de access_token y refresh_token para acceder a la API de Orden de Piezas.
Esto significa que solo una persona del concesionario puede iniciar sesión en BOSSWeb, y todos los usuarios de DMS que tienen acceso a las funciones de orden de piezas pueden usar el mismo conjunto de tokens.
Como recordatorio, el refresh_token nunca expira a menos que tus credenciales de DMS sean revocadas.
Operaciones
Esta sección presenta detalles sobre las operaciones de la API de Orden de Piezas.
Validar, Crear y Comprobar
La API de Orden de Piezas Validar y Crear son las operaciones más críticas, y una comprensión exhaustiva de ellas es esencial para proporcionar a los concesionarios la funcionalidad esperada y cumplir con los requisitos de certificación.
El flujo del proceso comienza con el concesionario preparando una orden de piezas en su DMS, como se muestra en el Paso 1 de la sección Descripción General del Proceso de Negocio de Orden de Piezas.
El segundo paso es obtener el access_token y refresh_token si ya los tienes.
Las llamadas al Validar y Crear servicio pueden ser realizadas.
❗ Una vez que se ha creado un pedido de piezas con una llamada al Crear Pedido servicio, no se puede modificar ❗
No puedes agregar o quitar artículos del pedido de piezas creado.
La única acción es cancelar un artículo llamando al Cancelar Línea de Pedido servicio.
¡Solo se puede cancelar un artículo en estado de pedido pendiente o bloqueado si el pedido está completado!
Si el estado del pedido es en proceso o pendiente, se pueden cancelar cualquier artículo.
Escenario 1: Menos de 25 Artículos en Línea
En este escenario, el distribuidor crea un pedido con menos de 25 artículos en línea.
El diagrama de secuencia muestra que el primer paso es llamar al Validar servicio para verificar el pedido. La API de Pedido de Piezas devuelve la respuesta recibida de SAP al DMS.
Su DMS debe mostrar la respuesta recibida, incluidos los mensajes de advertencia y error, así como los costos de envío.
Una vez que el concesionario haya realizado las correcciones necesarias, enviará el pedido, y su DMS llamará a la API para crearlo.
Si no hay errores, la API devuelve el pedido de piezas creado por SAP a su DMS. Este pedido de piezas debe guardarse en la base de datos del DMS para su visualización posterior.
Si ocurren errores, se muestran al concesionario.
sequenceDiagram
DMS->>DMS: El concesionario prepara el pedido
DMS->>DMS: El concesionario valida el pedido
DMS->>BOSSWeb: Iniciar sesión
BOSSWeb-->>DMS: Código de acceso
DMS->>API: Validar
API->>SAP: Validar
SAP-->>API: Respuesta de validación
API-->>DMS: Respuesta de validación
DMS->>DMS: Mostrar advertencias y mensajes de error
DMS->>DMS: El concesionario realiza correcciones y valida el pedido
DMS->>API: Validar
API->>SAP: Validar
SAP-->>API: Respuesta de validación
API-->>DMS: Respuesta de validación
DMS->>DMS: El concesionario envía el pedido
DMS->>API: Crear
API->>SAP: Crear
SAP-->>API: Respuesta de creación
API-->>DMS: Respuesta de creación
DMS->>DMS: Actualizar el pedido en la base de datos Escenario 2: 26 a 30 líneas de artículos
El concesionario crea un pedido con 26 a 30 líneas de artículos en este escenario.
En este escenario, el problema clave es que el servicio de Validar funciona correctamente (es un poco más rápido que Crear), pero el Crear el servicio devuelve un 504 Gateway Timeout.
El diagrama de secuencia muestra que el primer paso es llamar al servicio de Validar para verificar el pedido. La API de Pedido de Piezas devuelve la respuesta recibida de SAP al DMS.
Su DMS debe mostrar la respuesta recibida, incluyendo cualquier advertencia y mensajes de error, así como los costos de envío.
Una vez que el concesionario haya realizado las correcciones necesarias, enviará el pedido, y su DMS llamará a la API para crear el pedido.
En este escenario, la llamada al servicio de Crear devuelve un código de estado 504 Gateway Timeout.
Para manejar el tiempo de espera, espere un momento y luego llame al servicio de Verificar .
Sugerimos esperar un período calculado de la siguiente manera:
esperar = (número de líneas * 2 segundos) + 10 segundos
Dado que SAP tarda alrededor de 2 segundos por línea para crear el pedido, esta es la forma más eficiente de esperar.
El Servicio de Verificación devuelve el pedido de partes creado si no hay errores. Este pedido de partes debe guardarse en la base de datos DMS para su visualización posterior.
Si ocurren errores, se muestran al concesionario.
sequenceDiagram
DMS->>DMS: El concesionario prepara el pedido
DMS->>DMS: El concesionario valida el pedido
DMS->>BOSSWeb: Iniciar sesión
BOSSWeb-->>DMS: Código de acceso
DMS->>API: Validar
API->>SAP: Validar
SAP-->>API: Respuesta de validación
API-->>DMS: Respuesta de validación
DMS->>DMS: Mostrar advertencias y mensajes de error
DMS->>DMS: El concesionario hace correcciones y valida el pedido
DMS->>API: Validar
API->>SAP: Validar
SAP-->>API: Respuesta de validación
API-->>DMS: Respuesta de validación
DMS->>DMS: El concesionario envía el pedido
DMS->>API: Crear
API->>SAP: Crear
API-->>DMS: Estado de tiempo de espera 504 Gateway
DMS->>DMS: Esperar (2 segundos x número de líneas) + 10 segundos
DMS->>API: Verificar
API->>SAP: Verificar
SAP-->>API: Respuesta de verificación
API-->>DMS: Respuesta de verificación
DMS->>DMS: Actualizar el pedido en la base de datos Escenario 3: Más de 30 líneas de pedido
En este escenario, el distribuidor crea un pedido con más de 30 líneas de artículos.
Como se muestra en el diagrama de secuencia, el primer paso es, como de costumbre, llamar al servicio de Validar para verificar el pedido.
Sin embargo, el servicio de Validar devuelve un error 504 Gateway Timeout en este caso.
sequenceDiagram
DMS->>DMS: El distribuidor prepara el pedido
DMS->>DMS: El distribuidor valida el pedido
DMS->>BOSSWeb: Iniciar sesión
BOSSWeb-->>DMS: Código de acceso
DMS->>API: Validar
API->>SAP: Validar
API-->>DMS: estado 504 Gateway Timeout
DMS->>DMS: Esperar 2 segundos x cantidad de líneas de artículos
DMS->>API: Verificar
API->>SAP: Verificar
SAP-->>API: Respuesta de Verificación/Validación
API-->>DMS: Respuesta de Verificación/Validación
DMS->>DMS: Mostrar advertencias y mensajes de error
DMS->>DMS: El distribuidor hace correcciones y valida el pedido
DMS->>API: Validar
API->>SAP: Validar
API-->>DMS: estado 504 Gateway Timeout
DMS->>DMS: Esperar 2 segundos x cantidad de líneas de artículos
DMS->>API: Verificar
API->>SAP: Verificar
SAP-->>API: Respuesta de Verificación
API-->>DMS: Respuesta de Verificación
DMS->>DMS: El distribuidor envía el pedido
DMS->>API: Crear
API->>SAP: Crear
API-->>DMS: estado 504 Gateway Timeout
DMS->>DMS: Esperar 2 segundos x cantidad de líneas de artículos
DMS->>API: Verificar
API->>SAP: Verificar
SAP-->>API: Respuesta de Verificación
API-->>DMS: Respuesta de Verificación
DMS->>DMS: Actualizar el pedido en la base de datos Si el pedido de piezas tiene más de 30 líneas, debe usar el Servicio de Verificación para obtener el Estado de Validación de respuesta.
En este escenario, la llamada al Servicio de Crear devuelve un código de estado 504 Gateway Timeout.
Para manejar el tiempo de espera, espere un momento y luego llame al Servicio de Verificación.
❗ ❗ ¡No permita que el concesionario vuelva a enviar el pedido de piezas después de un tiempo de espera! ❗ ❗
¡Esto resultaría en que el mismo pedido se cree muchas veces en SAP!
Sugerimos esperar de 20 a 30 segundos entre llamadas al Servicio de Verificación hasta que el pedido sea procesado.
👉 Tenga en cuenta que SAP puede tardar más de 2 segundos en procesar un artículo de línea para algunas piezas. ¡Además, el Servicio de Verificación puede devolver un error indicando que el pedido no está listo.
El Servicio de Verificación devuelve el pedido de piezas creado si no hay errores. Este pedido de piezas debe guardarse en la base de datos DMS para su visualización posterior.
Si ocurren errores, se muestran al concesionario.
Escenario 4: Errores de Validación y Crear
El paso de validación del pedido de piezas tiene dos objetivos principales:
- Detectar errores y advertencias antes de que se llame al Crear servicio, permitiendo al concesionario realizar los cambios necesarios.
- Ejemplo de errores:
- Número de pieza inválido (número de pieza no-BRP).
- Pieza obsoleta o no vendible.
- Pieza vintage.
- Pieza descontinuada.
- Pieza en una línea de productos no autorizada para el concesionario.
- Ejemplo de advertencias:
- Parte en pedido pendiente.
- Cargos de flete.
- Estado especial.
- Paquetes.
- Redondeo de cantidad a la Cantidad Mínima de Pedido (MoQ).
- Mostrar las tarifas de envío y el costo total del pedido al distribuidor. El distribuidor puede modificar el pedido de piezas para reducir las tarifas de envío y/o el precio total.
El método de envío del distribuidor afecta las tarifas de envío cuando se crea el pedido de piezas.
Ver el API de distribuidores para información sobre los métodos de envío.
sequenceDiagram
DMS->>DMS: El distribuidor prepara el pedido
DMS->>DMS: El distribuidor valida el pedido
DMS->>BOSSWeb: Iniciar sesión
BOSSWeb-->>DMS: Código de acceso
DMS->>API: Validar
API->>SAP: Validar
SAP-->>API: Respuesta de validación
API-->>DMS: Respuesta de validación
DMS->>DMS: Mostrar advertencias y mensajes de error
DMS->>DMS: El distribuidor hace correcciones y valida el pedido
DMS->>API: Validar
API->>SAP: Validar
SAP-->>API: Respuesta de validación
API-->>DMS: Respuesta de validación
DMS->>DMS: El distribuidor envía el pedido
DMS->>API: Crear
API->>SAP: Crear
SAP-->>API: Respuesta de creación
API-->>DMS: Respuesta de creación
DMS->>DMS: Actualizar el pedido en la base de datos Escenario 5: Crear Errores
La API no debería devolver un error si el pedido de piezas se valida antes de que el método Crear es llamado.
Sin embargo, debes gestionar todos los errores devueltos por la API en todos los escenarios.
En este caso, el Crear puede devolver un error, por ejemplo:
- Número de pieza inválido (número de pieza no-BRP).
- Pieza obsoleta o no vendible.
- Pieza vintage.
- Pieza descontinuada.
- Pieza en una línea de productos no autorizada para el concesionario.
Si hay un error, el Crear servicio devuelve un estado 400 Bad Request, como este que se devuelve cuando el concesionario incluye una pieza descontinuada en el pedido:
{
"status": 400,
"id": "rrt-034a69794cf75546f-d-ea-6489-65327577-1.1",
"title": "not_found",
"meta": [
{
"service": "07",
"payload": {
"errors": [
{
"code": "Not Saleable",
"title": "PAA Order Validate (API/Method)",
"detail": "Part number is not saleable- please contact your PAA analyst",
"meta": {
"product_code": "1301200012",
"item_id": "16137d90-a062-4465-9e42-4e6c91c6f595",
"message": "014 - Warning - Your part is not available for item_id = 16137d90-a062-4465-9e42-4e6c91c6f595 product_code = 1301200012 (/BRP/PART_ORDER/061)"
}
}
]
}
}
]
}Esto significa que el pedido de piezas no se ha creado.
En este caso, el concesionario puede hacer las correcciones necesarias eliminando la pieza descontinuada y volviendo a enviar el pedido.
Obtener Pedidos
El Obtener servicio se utiliza para recuperar uno o varios pedidos de piezas enviados por el concesionario.
👉Una llamada al Obtener servicio para recuperar una lista de pedidos de piezas, por ejemplo, utilizando un rango de fechas, también devuelve los pedidos de piezas creados por el concesionario en BOSSWeb.
❗❗ El Obtener servicio es esencial para ayudar al concesionario en su proceso de recepción de pedidos de piezas. ❗❗
Si los pedidos de piezas no se cargan y actualizan en su base de datos DMS, el API de entregas y API de facturas no se pueden usar para vincular las piezas recibidas al pedido de piezas.
La búsqueda se realiza utilizando un conjunto de parámetros:
- El ID del pedido de piezas devuelto por el Crear llamada.
- El número de pedido de venta que fue devuelto por el Crear llamada.
- El número de orden del distribuidor.
- El tipo de orden.
- Un rango de fechas de creación (de/a).
- El estado de la orden.
Puedes encontrar más información sobre los Obtener parámetros del servicio en el Listar Órdenes documentación de llamada.
Al recuperar una orden de piezas con una llamada a Obtener, la información no disponible en el Crear se obtiene la respuesta del servicio.
En el Crear respuesta, la entregas propiedad de un artículo shipping_lines no contiene la información de facturación.
En el Crear respuesta, la entregas propiedad se ve así.
"deliveries": [
{
"status_code": "allocated",
"status_date": "2023-07-18T10:14:42Z",
"status_descr": "",
"qty": 1,
"availability_date": "2023-07-20",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": null,
"carrier_name": "",
"billings": []
}
],El status_code propiedad asignada indica que la parte ha sido asignada a la orden de partes pero aún no se ha enviado.
Llamando al Get servicio más tarde para recuperar la orden de partes, la entregas propiedad se ve así.
"deliveries": [
{
"status_code": "shipped",
"status_date": "2022-01-27T13:42:35.000Z",
"status_descr": null,
"qty": 1,
"availability_date": "2022-01-27",
"no": "8020007398",
"item_no": "000030",
"delivery_qty": 1,
"creation_date": "2022-01-27T06:39:28.000Z",
"carrier_name": "FEDEX",
"billings": [
{
"billing_no": "9027150046",
"billing_item_no": "000803",
"billing_creation_date": "2022-01-27T17:59:56.000Z",
"billing_qty": 1,
"is_cancelled": false
}
]
}
],La entregas propiedad ahora contiene el número de documento de entrega (no), el nombre del transportista y la información de facturación, incluyendo el número de factura (billing_no).
👉 Nota que el status_code del artículo ahora es enviado.
Esta sección explica por qué es esencial llamar al Obtener servicio para actualizar la información del pedido de piezas, incluso si algunos artículos aún están asignados.
Lo mejor es actualizar el pedido de piezas en su DMS en lotes a intervalos regulares, o cuando el pedido de piezas se muestre al concesionario.
Debe llamar al Obtener servicio para actualizar el pedido hasta que su estado sea enviado.
"header_statuses": [
{
"type": "success",
"code": "completed",
"descr": "Your order has been shipped"
}
],Cancelar artículo
El Cancelar servicio permite al concesionario cancelar un artículo de una orden de piezas si el artículo está en pedido pendiente o bloqueado.
¡Solo se puede cancelar un artículo en estado de pedido pendiente o bloqueado si la orden está completada!
Si el estado de la orden es 'en proceso' o 'pendiente', se pueden cancelar cualquier artículo.
El estado de la orden de piezas se encuentra en el header_statuses array. Si uno de los estados es en_proceso o pendiente, se pueden cancelar cualquier artículo.
"header_statuses": [
{
"type": "success",
"code": "in_process",
"descr": "Your order is in process"
},
{
"type": "warning",
"code": "",
"descr": "Pay special attention to the status of certain parts"
},
{
"type": "warning",
"code": "",
"descr": "If your order is blocked for more info please open a case"
}
],La llamada es simple: usted proporciona la lista de artículos a cancelar en un Cancelación de Orden de Piezas recurso. Si los artículos son cancelables, recibirá una orden de piezas actualizada que debe guardarse en su base de datos DMS.
sequenceDiagram
DMS->>DMS: El distribuidor selecciona un pedido
DMS->>DMS: El distribuidor selecciona uno o varios artículos
DMS->>DMS: El distribuidor cancela los artículos
DMS->>BOSSWeb: Iniciar sesión
BOSSWeb-->>DMS: Código de acceso
DMS->>API: Cancelar
API->>SAP: Cancelar
SAP-->>API: Respuesta de cancelación
API-->>DMS: Respuesta de cancelación
DMS->>DMS: Actualizar el pedido en la base de datos👉 Dado que has actualizado el pedido de piezas con una llamada al Obtener servicio cuando se muestra el pedido de piezas, puedes habilitar la función de cancelación solo en los artículos que tienen un estado de pedido pendiente o bloqueado. 😁
Ten en cuenta que si todos los artículos son cancelados, el pedido de piezas en sí es cancelado, y esto se refleja en el header_statuses propiedad.
"header_statuses": [
{
"type": "success",
"code": "completed",
"descr": "Your order has been cancelled"
}Orden de Piezas
Esta sección explica la información esencial sobre la orden de piezas que se encuentra en el Recurso: Orden de Piezas sección.
Métodos de Envío
Un campo importante del Orden de Piezas recurso es la shipping_condition propiedad (también llamada método de envío, que es lo mismo), que indica cómo se envía la orden de piezas al distribuidor.
El método de envío seleccionado afecta directamente el costo total de la orden de piezas, ya que algunos métodos son más caros que otros.
Los métodos de envío disponibles para el concesionario se enumeran en el Dealers recurso de la API de distribuidores.
Los métodos de envío disponibles para el concesionario pueden cambiar según el nivel de certificación del concesionario.
Tu DMS debe llamar a la API de distribuidores al menos una vez al día para recuperar la lista más reciente de métodos de envío disponibles para el concesionario.
El primer método de envío en el shipping_methods array es el predeterminado, y tu DMS debe seleccionarlo por defecto.
Esta es una API de distribuidores respuesta para el concesionario 0000690095.
{
"dealer_no": "0000690095",
"dealer_name": "ENGELHART SPORTS CENTER",
"legal_name": "ENGELHART, INC.",
"address": {
"street": "1589 GREENWAY CROSS",
"city": "MADISON",
"state": "WI",
"country": "US",
"postal_code": "53713-3112"
},
"language": "EN",
"time_zone": "UTC-06000",
"partners": [
{
"partner_type": "BP",
"partner_no": "0000690095",
"partner_name": "ENGELHART SPORTS CENTER",
"address": {
"street": "1589 GREENWAY CROSS",
"city": "MADISON",
"state": "WI",
"country": "US",
"postal_code": "53713-3112"
}
},
{
"partner_type": "SH",
"partner_no": "0000690095",
"partner_name": "ENGELHART SPORTS CENTER",
"address": {
"street": "1589 GREENWAY CROSS",
"city": "MADISON",
"state": "WI",
"country": "US",
"postal_code": "53713-3112"
}
}
],
"shipping_methods": [
{
"shipping_method": "S2",
"shipping_method_descr": "Vehicle Down"
},
{
"shipping_method": "S3",
"shipping_method_descr": "Veh. Down Saturday"
}
],
"product_lines": [
"SNO",
"ATV",
"3WV"
]
}La pantalla de pedido de piezas correspondiente en BOSSWeb, con el método de envío predeterminado seleccionado, también está incluida.

La información para otro distribuidor (0000694380) se muestra a continuación e indica que solo hay 2 métodos de envío disponibles para el distribuidor.
{
"dealer_no": "0000694380",
"dealer_name": "BAYCO SALES RENTALS LIMITED",
"legal_name": "BAYCO SALES RENTALS LIMITED",
"address": {
"street": "12-16 WATER STREET",
"city": "BAIE VERTE",
"state": "NL",
"country": "CA",
"postal_code": "A0K 1B0"
},
"language": "EN",
"partners": [
{
"partner_type": "BP",
"partner_no": "0000694380",
"partner_name": "BAYCO SALES & RENTALS LIMITED",
"address": {
"street": "12-16 WATER STREET",
"city": "BAIE VERTE",
"state": "NL",
"country": "CA",
"postal_code": "A0K 1B0"
}
},
{
"partner_type": "SH",
"partner_no": "0000694380",
"partner_name": "BAYCO SALES & RENTALS LIMITED",
"address": {
"street": "12-16 WATER STREET",
"city": "BAIE VERTE",
"state": "NL",
"country": "CA",
"postal_code": "A0K 1B0"
}
}
],
"shipping_methods": [
{
"shipping_method": "S1",
"shipping_method_descr": "Expedited Ground"
},
{
"shipping_method": "S2",
"shipping_method_descr": "Rush"
}
],
"product_lines": [
"SNO",
"ATV",
"SSV"
],
"ev_qualification_level": "E1",
"business_hours": [
"Mon: 09:00-17:00",
"Tue: 09:00-17:00",
"Wed: 09:00-17:00",
"Thu: 09:00-17:00",
"Fri: 09:00-17:00",
"Sat: 00:00-00:00",
"Sun: 00:00-00:00"
],
"service_hours": [
"Mon: 09:00-17:00",
"Tue: 09:00-17:00",
"Wed: 09:00-17:00",
"Thu: 09:00-17:00",
"Fri: 09:00-17:00",
"Sat: 00:00-00:00",
"Sun: 00:00-00:00"
],
"sales_attributes": {
"sales_territory_code": "001",
"sales_district": "NA0001",
"sales_office": "NA01",
"sales_group": "NAA"
}
}Esto se refleja en BOSSWeb.

Tu DMS debe comportarse de manera similar: presentar solo los métodos de envío disponibles para el distribuidor y seleccionar el predeterminado.
🛑 Los métodos de envío varían de una región a otra. Consulta una lista de métodos de envío por región.
En cualquier caso, la fuente de verdad es la información devuelta por el API de distribuidores.
Socios
Al validar o crear un pedido de piezas, la socio propiedad indica dónde se envía el pedido (ship_to_no) y el concesionario que es facturado (bill_to_no).
En la mayoría de los casos, los ship_to_no y bill_to_no números de concesionario son los mismos que el dealer_no, el concesionario que envía el pedido.
{
"pac_order_id": "guid",
"dealer_no": "0000700710",
"dealer_po_no": "PO inter1234",
"shipping_carrier": {
"shipping_condition": "30"
},
"partner": {
"bill_to_no": "0000700710",
"ship_to_no": "0000700710"
},La API de Pedido de Piezas permite que un pedido sea enviado y facturado a un número de concesionario diferente al que envía el pedido de piezas.
Esta función no se utiliza a menudo, pero permite a un concesionario de múltiples tiendas gestionar pedidos de piezas desde una ubicación central y enviarlos a varios lugares.
Los números de concesionario asociados están configurados para el concesionario y no se pueden seleccionar al azar.
Un concesionario puede optar por facturar a otra persona por su pedido de piezas...
Si el concesionario tiene diferentes números de concesionario asociados disponibles, se enumeran en el Concesionarios recurso, como se muestra en el ejemplo ficticio a continuación.
{
"dealer_no": "0000700754",
"dealer_name": "NEW 3 LACS LE MANS",
"legal_name": "NEW TROIS LACS SARL",
"address": {
"street": "AVENUE DU PANORAMA",
"city": "LE MANS",
"state": "59",
"country": "FR",
"postal_code": "72100"
},
"language": "FR",
"partners": [
{
"partner_type": "SH",
"partner_no": "0000700754",
"partner_name": "N3L NANTES SARL NEW 3 LACS NANTES",
"address": {
"street": "AVENUE DU PANORAMA",
"city": "LE MANS",
"state": "59",
"country": "FR",
"postal_code": "72100"
}
},
{
"partner_type": "BP",
"partner_no": "0000700800",
"partner_name": "NEW 3 LACS LE MANS NEW TROIS LACS SARL",
"address": {
"street": "15 RUE DES MOULINS",
"city": "KEDANGE SUR CANNER",
"state": "",
"country": "FR",
"postal_code": "57920"
}
}
],
"shipping_methods": [
{
"shipping_method": "30",
"shipping_method_descr": "BRPED-RÉGULIER"
},
{
"shipping_method": "33",
"shipping_method_descr": "BRPED-RUSH"
}
],
"product_lines": [
"PWC",
"ATV",
"SSV",
"3WV",
"PTN"
]
}Si el concesionario tiene un número de concesionario diferente para el envío, debe poder seleccionar ya sea su dirección o la dirección de envío para el envío.
Respuesta de Pedido de Piezas
Esta sección explica la información importante del pedido de piezas que se encuentra en el Recurso: Respuesta de Pedido de Piezas sección.
Variaciones Entre V3 y V4
ID de Pedido PAC
En la respuesta devuelta por el Crear servicio, la primera propiedad es el pac_order_id.
El pac_order_id es el identificador único para el pedido de piezas utilizado por SAP.
En la versión V3, el valor GUID proporcionado por su DMS en el pac_order_id propiedad es utilizado por SAP y devuelto en el Validar y Crear respuestas.
En la versión V4, SAP utiliza el valor GUID proporcionado por su DMS en el pac_order_id propiedad y lo devuelve en el Validar respuesta.
Sin embargo, SAP devuelve un valor diferente en la respuesta de Crear.
🛑 El pac_order_id propiedad devuelta en el Crear la respuesta debe ser guardada ya que es necesaria para identificar el pedido de partes en una llamada a la Cancelar y Obtener servicios.
Número de Orden de Venta
El sales_order_no propiedad contiene el número del documento de venta que el concesionario puede usar para rastrear el pedido.
En la V3 versión de la API, la sales_order_no propiedad se repite en cada objeto de línea de artículo.
En la V4 versión de la API, la sales_order_no propiedad se encuentra solo en el encabezado.
ID de Artículo de Línea Pedida
La item_id propiedad de un artículo identifica de manera única el artículo en SAP en todos los pedidos.
En la V3 versión, el valor GUID proporcionado por su DMS en la item_id propiedad es utilizado por SAP y devuelto en la Validar y Crear respuestas.
En la V4 versión, SAP utiliza el valor GUID proporcionado por su DMS en la propiedad item_id y lo devuelve en la Validar respuesta.
Sin embargo, SAP devuelve un valor diferente en la respuesta de Creación.
🛑 El item_id propiedad devuelta en la respuesta de Creación debe ser guardada ya que se necesita para identificar el pedido de partes en una llamada a los Cancelar y Obtener servicios.
Estado del Pedido
El estado global del pedido se encuentra en el header_statuses campo.
"header_statuses": [
{
"type": "success",
"code": "in_process",
"descr": "Your order is in process"
},
{
"type": "warning",
"code": "",
"descr": "Pay special attention to the status of certain parts"
},
{
"type": "warning",
"code": "",
"descr": "Your PAA order is less than 250.00$, handling fee of 40.00$ will be applied to the invoice."
}
],La primera entrada del arreglo es el estado general del pedido. Si hay otras entradas, generalmente contienen un mensaje de advertencia para el distribuidor.
Estado del Encabezado
Cuando el header_statuses.type valor es éxito, el header_statuses.codeel campo contiene uno de los valores a continuación.
Código | Descripción |
|---|---|
pendiente | El procesamiento del pedido no ha comenzado. |
en_proceso | El pedido está siendo entregado. |
completado | El procesamiento del pedido ha terminado y ha sido enviado. ¡No significa que todos los artículos hayan sido asignados y enviados! Necesitas verificar el estado de cada artículo. Ver abajo. |
en_espera | El pedido está en espera, y el distribuidor debe contactar al servicio de asistencia de BRP. Cuando el pedido está en espera, es causado por una regla comercial. Los distribuidores son conscientes de esto y saben qué hacer. |
Cuando el header_statuses.code está completado, se puede verificar el estado de cada artículo.
❗ ¡No significa que todos los artículos hayan sido asignados y enviados! Tienes que mirar el estado de cada artículo ❗
Estado de Entrega del Artículo
Para cada elemento, el campo items.shipping_lines.deliveries.status_code contiene uno de los valores a continuación.
Código | Descripción |
|---|---|
asignado | La pieza está disponible, hay stock y será enviada. |
no_asignado | La pieza no está disponible; el distribuidor debe contactar con la mesa de ayuda de BRP. |
bloqueado | La pieza está bloqueada y el distribuidor debe contactar con la mesa de ayuda de BRP. |
pedido pendiente | La pieza está en pedido pendiente y será enviada más tarde. |
rechazado | La pieza ha sido rechazada. La pieza puede estar obsoleta, o el distribuidor no tiene la línea de productos donde se utiliza la pieza. |
enviado | La pieza ha sido enviada. |
Ejemplo con BOSSWeb
En BOSSWeb, el distribuidor puede recuperar el estado de una o varias partes de un pedido. BOSSWeb muestra una pantalla de resumen con los pedidos de las partes encontradas.
En el ejemplo a continuación, el estado del pedido de partes es Completado, lo que indica que el procesamiento ha terminado.

Si el concesionario hace clic en el Número de PO enlace, BOSSWeb muestra el estado detallado del pedido de piezas.

En este ejemplo, el pedido de piezas contiene solo un artículo, que fue cancelado, por lo que el estado del pedido de piezas es Completado.
Si miras el mismo pedido de piezas a través de la API de Pedido de Piezas, se recibe la siguiente carga útil.
{
"items": [
{
"pac_order_id": "VzdGH9}I7k{O{zPIwQJddW",
"sales_order_no": "1031037087",
"creation_date": "2024-08-26T19:09:20Z",
"dealer_po_no": "BU089431",
"dealer_no": "0000690095",
"order_type": "regular",
"shipping_carrier": {
"shipping_condition": "S0",
"shipping_condition_descr": "Standard Ground"
},
"payment_terms": "F030",
"payment_terms_descr": "Fin. (PA&A) - Due in 30 days",
"partners": [],
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 62.41,
"currency": "USD"
}
],
"header_texts": [],
"header_statuses": [
{
"type": "success",
"code": "completed",
"descr": "Your order has been cancelled"
},
{
"type": "warning",
"code": "",
"descr": "Pay special attention to the status of certain parts"
}
],
"items": [
{
"ordered_line": {
"item_id": "7FD9D0449FD21EEF98FBD652E9A5279E",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "278001882",
"product_descr": "BATTERY_12 VOLT 30AH",
"order_qty": 10,
"dealer_po_item_no": "1",
"dealer_product_code": "278001882",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000101",
"parent_item_no": "000100",
"product_code": "415130650",
"product_descr": "BATTERY_12 VOLT 30AH",
"ship_qty": 10,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 10,
"msrp_unit_price": 174.99,
"wholesale_unit_price": 113.48,
"net_unit_price": 113.48,
"currency": "USD",
"is_substitute_product": true,
"substituted_product_code": "278001882",
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 1134.8,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 62.41,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "rejected",
"status_date": "2024-08-26T15:09:20Z",
"status_descr": "Cancelled by customer",
"qty": 10,
"availability_date": "2024-08-27",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "in_process",
"descr": "Your part is in process"
}
]
}
]
}
]
}
],
"links": {
"previous": null,
"next": null
}
}El header_statuses muestra que el pedido de piezas está Completado y ha sido cancelado. Mirando el estado del artículo, la información de entregas muestra que el artículo ha sido cancelado.
Socios
En el encabezado del pedido de piezas, la dealer_no propiedad indica qué concesionario presentó el pedido.
La sección de socios proporciona información sobre dónde se envía el pedido de piezas (Enviar a) y quién es facturado por el pedido de piezas (Facturar a).
"partners": [
{
"type": "BP",
"no": "0000702933",
"name": "PERFORMANCE NC - GRANBY",
"address": {
"street": "125 PIERRE-PARADIS",
"city": "ST-ALPHONSE DE GRANBY",
"state": "QC",
"country": "CA",
"postal_code": "J0E 2A0"
}
},
{
"type": "SH",
"no": "0000702933",
"name": "PERFORMANCE NC - GRANBY",
"address": {
"street": "125 PIERRE-PARADIS",
"city": "ST-ALPHONSE DE GRANBY",
"state": "QC",
"country": "CA",
"postal_code": "J0E 2A0"
}
}
],La mayoría de las veces, las direcciones de envío y facturación son las mismas que las que figuran en el pedido de piezas.
Precios
El encabezado del pedido de piezas contiene el precio array de objetos que documenta los costos generales del pedido, como se muestra a continuación.
El mismo precio array de objetos se encuentra para cada artículo del pedido de piezas para documentar los costos de los artículos.
Hay diferentes tipos de montos, y no todos ellos están siempre presentes. Como mínimo, el pricings array contiene el monto_bruto , monto_subtotal, y monto_impuesto objetos de monto.
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 68.48,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 6.32,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 20,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 90.25,
"currency": "USD"
},
{
"condition_type": "surcharge_amt",
"total_amount": 1.77,
"currency": "USD"
}
],Monto Bruto
El monto bruto (monto_bruto ) es el costo total del pedido o artículo, excluyendo otros costos como cargos por manejo, flete, recargos, impuestos, etc.
Monto subtotal
El monto subtotal ( subtotal_amt ) es el costo total del pedido o artículo, incluyendo todos los demás costos como tarifas de manejo, flete, recargos, etc., pero excluyendo impuestos.
Monto del impuesto
El monto del impuesto ( tax_amt ) es el impuesto total cobrado por el pedido o artículo. Si hay más de un impuesto cobrado, el monto total se indica en esta propiedad.
Monto total
No hay un campo que contenga el monto total del artículo o pedido. Si deseas mostrar el monto total en tu DMS, puedes agregar el gross_amt y tax_amt campos.
Líneas de artículos
Para cada artículo en el pedido de piezas, hay dos secciones presentes:
- Línea ordenada para documentar lo que está pedido por el concesionario.
- Líneas de envío para documentar lo que es enviado al distribuidor.
¿Por qué hay una diferencia?
Porque el distribuidor puede haber pedido una pieza que no se puede enviar.
Por ejemplo, si el distribuidor pidió una pieza sustituida, se documenta en la línea_pedida sección, pero la línea_envío sección contiene la información sobre la pieza sustituida.
👉 En general, debes mostrar la información de líneas de envío al distribuidor.
Puedes mostrar tanto la línea_pedida y líneas_envío si lo deseas, pero la líneas_envío debe ser mostrada ya que el documento muestra las piezas que el distribuidor recibirá.
Línea Pedida
Documentos lo que el distribuidor pidió para este artículo. El objeto también proporciona información sobre la pieza, como la cantidad mínima de pedido (min_qty_pedido), si la pieza es un kit (BOM), etc.
"ordered_line": {
"item_id": "005056840C891EEE89B74E33AF157B9B",
"item_no": "000100",
"parent_item_no" : "000000",
"product_code": "250300016",
"product_descr": "STUD_BALL M5 X 15",
"order_qty": 1,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "BRP-250300016",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Multi valid"
}
]
},Líneas de Envío
Es posible que hayas visto que shipping_lines es un array of objects.
¿Por qué?
Porque una ordered_line puede representar múltiples partes que se envían o envíos parciales.
En el ejemplo a continuación, el artículo pedido es un kit (is_sales_bom es verdadero), por lo que una parte pedida representa múltiples partes que se envían. En este ejemplo, se envían cinco partes.
👉 Cuando la parte pedida es un kit, en la respuesta, la primera ordered_line objeto es para la parte del kit.
❗ Dado que esta parte no es la que se está enviando, no hay shipping_lines ❗
Vea la sección Kits (BOM) a continuación para más información sobre kits.
"items": [
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88AE04114FF7",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "267000084",
"product_descr": "IMPELLER HOUSING",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": true,
"product_line": "PWC",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Kit part"
}
]
},
"shipping_lines": []
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88AE0411AFF7",
"item_no": "000200",
"parent_item_no": "000100",
"product_code": "267000417",
"product_descr": "IMPELLER HOUSING",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000201",
"parent_item_no": "000200",
"product_code": "271002161",
"product_descr": "HOUSING IMPELLER ANODIZED",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 289.99,
"wholesale_unit_price": 172.98,
"net_unit_price": 190.22,
"currency": "USD",
"is_substitute_product": true,
"substituted_product_code": "267000417",
"product_line": "PWC",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 172.98,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 10.46,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 190.22,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 17.24,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88AE04120FF7",
"item_no": "000300",
"parent_item_no": "000100",
"product_code": "267000469",
"product_descr": "PLUG PLASTIC, BLACK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000301",
"parent_item_no": "000300",
"product_code": "267000469",
"product_descr": "PLUG PLASTIC, BLACK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 6.79,
"wholesale_unit_price": 4.09,
"net_unit_price": 4.5,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 4.09,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.25,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 4.5,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 0.41,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88C8DD752FF7",
"item_no": "000400",
"parent_item_no": "000100",
"product_code": "271000785",
"product_descr": "WATER OUTLET",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000401",
"parent_item_no": "000400",
"product_code": "271000785",
"product_descr": "WATER OUTLET",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 3.59,
"wholesale_unit_price": 2.13,
"net_unit_price": 2.34,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "PWC",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 2.13,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.13,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 2.34,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 0.21,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88C8DD758FF7",
"item_no": "000500",
"parent_item_no": "000100",
"product_code": "267000428",
"product_descr": "IMPELLER COVER",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "PWC",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000501",
"parent_item_no": "000500",
"product_code": "267000428",
"product_descr": "IMPELLER COVER",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 16.49,
"wholesale_unit_price": 9.88,
"net_unit_price": 10.86,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "PWC",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 9.88,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.6,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 10.86,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 0.98,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 1,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": []
}
]
},
{
"ordered_line": {
"item_id": "99D2429AE98C1EEFA09E88C8DD75EFF7",
"item_no": "000600",
"parent_item_no": "000100",
"product_code": "205562560",
"product_descr": "SOCKET HEAD SCREW M6 X 25, SCOTCH GRIP",
"order_qty": 10,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000601",
"parent_item_no": "000600",
"product_code": "205562560",
"product_descr": "SOCKET HEAD SCREW M6 X 25, SCOTCH GRIP",
"ship_qty": 10,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PAC",
"in_package": {
"qty": 10,
"uom": "PC"
},
"package_count": 10,
"msrp_unit_price": 1.99,
"wholesale_unit_price": 1.16,
"net_unit_price": 1.28,
"currency": "USD",
"is_substitute_product": false,
"substituted_product_code": null,
"product_line": "SNO",
"product_type": "30",
"plant": {
"name": "BRP - BELOIT",
"city": "BELOIT",
"state": "WI",
"country": "US"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 11.6,
"currency": "USD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.7,
"currency": "USD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 12.76,
"currency": "USD"
},
{
"condition_type": "handling_fee",
"total_amount": 1.16,
"currency": "USD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2024-10-02T15:26:53Z",
"status_descr": "",
"qty": 10,
"availability_date": "2024-10-07",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": "",
"carrier_name": "",
"split_delivery_no": "",
"split_delivery_item_no": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": "",
"descr": "Your part has been created successfully"
}
]
}
]
}
]Además, si la parte es sustituida, las líneas_de_envío contienen las partes que se envían en reemplazo de la parte ordenada. Consulte la sección Sustitución a continuación para más información.
Ves en el ejemplo que las entregas propiedades están mayormente vacías.
Este es siempre el caso en la carga útil de respuesta devuelta por el Crear servicio. Como se mencionó en la Obtener Pedidos sección, debes llamar al Obtener servicio para recuperar el pedido de piezas actualizado con las actualizadas entregas propiedades.
Una vez que el pedido de piezas esté completamente procesado, el Obtener servicio devuelve el pedido de piezas completado, y las entregas propiedades están disponibles, como se muestra a continuación.
"deliveries": [
{
"status_code": "shipped",
"status_date": "2022-01-04T16:12:37.000Z",
"status_descr": null,
"qty": 1,
"availability_date": "2022-01-03",
"no": "8019846141",
"item_no": "000020",
"delivery_qty": 1,
"creation_date": "2022-01-03T09:33:59.000Z",
"carrier_name": "FEDEX",
"billings": [
{
"billing_no": "9026960406",
"billing_item_no": "002005",
"billing_creation_date": "2022-01-06T01:03:15.000Z",
"billing_qty": 1,
"is_cancelled": false
}
]
}Información Especial del Artículo
Kits (BOM)
Un kit (o BOM) es un número de parte que es un conjunto de piezas que se venden y envían juntas.
Un ejemplo es la parte 505074936, "CHOQUE FRONTAL," para una motonieve. Se envían dos piezas al distribuidor cuando se ordenan, por lo que hay tres artículos en el artículos array.
👉 Es esencial mostrar la información en el shipping_lines objeto al distribuidor para asegurar que todos los artículos enviados en el kit sean visibles.
La siguiente respuesta se devuelve para un pedido con el número de parte 505074936 (se han eliminado algunos campos para simplificar el ejemplo).
Como se muestra, la respuesta contiene:
- El primer elemento tiene un ordered_line para la parte del kit y un shipping_lines. Las shipping_lines están vacías porque no se realizan envíos para la parte del kit.
- Cada parte en el kit tiene un artículo con un ordered_line y un shipping_lines array con las partes que se están enviando.
{
"pac_order_id": "919f2871-ec31-4b4a-9218-e96516d88186",
"sales_order_no": "",
"creation_date": "2024-10-02T16:38:22Z",
"dealer_po_no": "PO 0001234",
"dealer_no": "0000690012",
"order_type": "regular",
... some fields removed ....
"items": [
{
"ordered_line": {
"item_id": "19afa98d-67f6-412c-88bc-99eda7740691",
"item_no": "000100",
"parent_item_no": "000000",
"product_code": "505074936",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": true,
"product_line": "SNO",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Kit part"
}
]
},
"shipping_lines": []
},
{
"ordered_line": {
"item_id": "",
"item_no": "000200",
"parent_item_no": "000100",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000201",
"parent_item_no": "000200",
"product_code": "505074897",
"product_descr": "FRONT SHOCK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 819.99,
"wholesale_unit_price": 573.98,
"net_unit_price": 573.98,
"currency": "USD",
"is_substitute_product": false,
... some fields removed ....
}
]
},
{
"ordered_line": {
"item_id": "",
"item_no": "000300",
"parent_item_no": "000100",
"product_code": "505074898",
"product_descr": "FRONT SHOCK",
"order_qty": 1,
"dealer_po_item_no": "",
"dealer_product_code": "",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": []
},
"shipping_lines": [
{
"item_no": "000301",
"parent_item_no": "000300",
"product_code": "505074898",
"product_descr": "FRONT SHOCK",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PC",
"in_package": {
"qty": 1,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 819.99,
"wholesale_unit_price": 573.98,
"net_unit_price": 573.98,
"currency": "USD",
"is_substitute_product": false,
... some fields removed ....
}
]
}
]
}👉 Tenga en cuenta lo siguiente para las partes incluidas en un kit, como cualquier parte.
- El código_de_producto en la línea_de_envío el artículo puede ser diferente del línea_pedida código_de_producto. Esto sucede cuando la parte es automáticamente reemplazada.
- Una parte puede tener más de una líneas_de_envío en un artículo. Esto ocurre cuando las partes se envían desde diferentes almacenes.
Paquete
Un paquete es una parte que se vende solo en una caja con una cantidad específica. Por ejemplo, las arandelas generalmente se venden en paquetes: cuando el distribuidor pide uno, recibe un paquete de 10.
En el ejemplo a continuación, el distribuidor pidió 2 partes (20037), pero puedes ver en las líneas de envío que se envía una cantidad de 10.
"ordered_line": {
"item_id": "005056840C891EEE89B666B2DB26B162",
"item_no": "000100",
"product_code": "20037",
"product_descr": "Washers A4,3 DIN9021-St m Zne(1=10pcs)",
"order_qty": 10,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "BRP-20037",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "ATV",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Multi valid"
}
]
},
"shipping_lines": [
{
"item_no": "000101",
"product_code": "20037",
"product_descr": "Washers A4,3 DIN9021-St m Zne(1=10pcs)",
"ship_qty": 10,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PAC",
"in_package": {
"qty": 10,
"uom": "PC"
},
"package_count": 10,
"msrp_unit_price": 1.79,
"wholesale_unit_price": 1.09,
"net_unit_price": 1.11,
"currency": "USD",Suplantación
Una suplantación ocurre cuando una parte es reemplazada por otra. Puedes encontrar una descripción completa de la suplantación en la Suplantación de Parte sección de la API de piezas página.
Si el distribuidor pide una pieza sustituida, el shipping_lines documentos de propiedad indican la pieza que está reemplazando a la sustituida.
En el ejemplo, el distribuidor pidió la pieza 20104, que es sustituida por la pieza 23408141. El shipping_lines propiedad indica que la pieza 20104 está sustituida (is_substitute_product es verdadero).
{
"ordered_line": {
"item_id": "005056840C891EEE89B644DA48AC301E",
"item_no": "000100",
"product_code": "20104",
"product_descr": "RONDELLE*FLAT WASHER",
"order_qty": 1,
"dealer_po_item_no": "A-0010",
"dealer_product_code": "BRP-20104",
"sales_uom": "PC",
"min_order_qty": 1,
"is_sales_bom": false,
"product_line": "SNO",
"product_type": "30",
"texts": [
{
"code": "memo_field",
"descr": "Multi valid"
}
]
},
"shipping_lines": [
{
"item_no": "000101",
"product_code": "234081410",
"product_descr": "FLAT WASHER 8 MM",
"ship_qty": 1,
"sales_uom": "PC",
"price_uom": "PC",
"package_uom": "PAC",
"in_package": {
"qty": 10,
"uom": "PC"
},
"package_count": 1,
"msrp_unit_price": 0.95,
"wholesale_unit_price": 0.57,
"net_unit_price": 0.57,
"currency": "CAD",
"is_substitute_product": true,
"substituted_product_code": "20104",
"product_line": "PTN",
"product_type": "30",
"plant": {
"name": "BRP - SAINT-JEAN-SUR-RICHELIEU",
"city": "ST-JEAN-SUR-RICHELIEU",
"state": "QC",
"country": "CA"
},
"pricings": [
{
"condition_type": "gross_amt",
"total_amount": 0.57,
"currency": "CAD"
},
{
"condition_type": "tax_amt",
"total_amount": 0.09,
"currency": "CAD"
},
{
"condition_type": "subtotal_amt",
"total_amount": 0.57,
"currency": "CAD"
}
],
"deliveries": [
{
"status_code": "allocated",
"status_date": "2023-07-18T17:29:04Z",
"status_descr": "",
"qty": 1,
"availability_date": "2023-07-20",
"no": "",
"item_no": "",
"delivery_qty": 0,
"creation_date": null,
"carrier_name": "",
"billings": []
}
],
"statuses": [
{
"type": "success",
"code": null,
"descr": "Your part has been created successfully"
}
]
}
]
}Recuperando Pedido de Piezas
Tiempo de espera de pedidos
El Obtener pedidos punto final se utiliza para recuperar una lista de pedidos de piezas según criterios, como la fecha de creación del pedido de piezas o el estado del pedido.
Digamos que deseas recuperar los pedidos de piezas de los últimos 30 días para un gran concesionario con muchos pedidos de piezas de 50, 60 y más artículos. Tu DMS utiliza la siguiente llamada a la API de pedidos de piezas.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts/orders?dealer_no=0000690012&limit=100&creation_date_from=2024-01-01&creation_date_to=2024-02-01' \
--header 'Authorization-Dealer: THE_ACCESS_TOKEN' \
--header 'Authorization: Bearer REPLACE_ME'Digamos que la API de pedidos de piezas devuelve un error de tiempo de espera 504 Gateway porque SAP tarda demasiado en responder en segundo plano.
Una opción es solicitar el pedido de piezas para un período de tiempo más corto, como dos días a la vez.
Podría funcionar, pero la API de pedidos de piezas aún puede devolver un tiempo de espera si se crean muchos pedidos de piezas grandes en un día.
👉 Durante las pruebas, también recibimos el error 413 Contenido demasiado grande, lo que significa que el backend devolvió una respuesta mayor a 10 MB...
Resumen de pedidos de piezas
La solución es solicitar el resumen del pedido de piezas resumen, en lugar de la respuesta completa.
El resumen del pedido de piezas se obtiene utilizando el resumen parámetro de consulta en la llamada al Obtener Pedidos punto final.
El enfoque es llamar al Obtener Pedidos punto final para obtener la sección del encabezado del pedido de piezas.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts/orders?dealer_no=0000690012&creation_date_from=2024-01-01&creation_date_to=2024-02-01&summary=header_status,pricing&limit=3' \
--header 'Authorization-Dealer: THE_ACCESS_TOKEN' \
--header 'Authorization: Bearer REPLACE_ME'Cuando el distribuidor quiere ver los detalles del pedido de piezas, llamas al Obtener Pedido punto final para recuperar el pedido completo de piezas utilizando el número de pedido de ventas.
curl --location 'https://cloud-api.brp.com/dcp/v4/parts/order/1030781664?dealer_no=0000690012' \
--header 'Authorization-Dealer: THE_ACCESS_TOKEN' \
--header 'Authorization: Bearer REPLACE_ME'