Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Franquicias ADIDAS Envío de Stock y Ventas v1.17 (Final)
Franquicias ADIDAS Envío de Stock y Ventas v1.17 (Final)
MODELO DE INTEGRACIÓN DE
DATOS PARA FRANQUICIADOS
Versión1.17
1
1 Revisiones
Fecha Versión Descripción Autor
28/01/2021 1.0 Creación del documento Ignacio Angulo
2021-02-12 1.1 Detallado de los apartados Horacio
Denegri
2021-02-20 1.2 Ajustes en base a revisión Producto Horacio
Denegri
2021-02-23 1.3 Ajustes en base a 2evisión Producto Horacio
Denegri
2021-04-27 1.4 Se eliminan las jerarquías de los maestros a enviar. Horacio
Se elimina el campo específico barcode de ambas interfaces ya que el barcode se Denegri
va a enviar como sku del item. Por otro lado el ARTICLE_ID ya no se envía pues
la relación con el barcoide está en el maestro.
Se elimina el maestro de jerarqúas dentro del los servicios a enviar.
Se aclara que algunos maestros se crean en el setup y no van por servicio.
Se agregan notas sobre los valores a enviar en maestros.
2
2 Índice
1. Revisiones ........................................................................................................................................................... 2
2. Índice .................................................................................................................................................................... 3
3. Acerca del manual ............................................................................................................................................ 4
3.1 Propósito y alcance ...................................................................................................................................................
4. Diseño HLD de arquitectura para integración de aplicaciones ............................................................ 5
5. Sobre el servicio de Api de Bridge……….................................................................................................... 7
Enviar un mensaje a la Api...........................................................................................................................................
6. BRIDGE - MOVIMIENTOS DE STOCK DE TIENDAS .............................................................................. 10
Descripción de los campos ............................................................................................................................................. 11
7. BRIDGE API - Operaciones venta, devoluciones y cambios ............................................................... 18
8. Errores ............................................................................................................................................................ 24
9. Apéndice ............................................................................................................................................................ 26
3
3 Acerca del manual
3.1 Propósito y alcance
En el marco del proyecto de implementación de Bridge API en Adidas Latam, desarrollamos el presente
documento a los efectos de brindar información detallada, sobre la forma de enviar información de stock y
ventas desde las franquicias.
Dentro de este manual, encontraremos la arquitectura propuesta para el Proyecto, interacción entre aplicaciones,
así como también los formatos y métodos para enviar la información.
Asimismo, este descriptivo tiene como finalidad brindar información a ADIDAS LATAM y a sus diferentes franquicias,
para poder utilizar estos servicios provistos por Bridge y de esta forma integrar la información requerida y
necesaria, a saber:
• Ventas
• Stock
• Devoluciones
• Cambio
Nota: la operación de cambio en muchas implementaciones no existe como tal y en su lugar el movimiento se
registra mediante transacciones separadas de devolución y venta.
Nota: la información desarrollada en todo el documento podría tener modificaciones en la medida que se avance
con el relevamiento. Se sugiere, antes de tomar acciones o definiciones, validar la fecha de modificación del
documento.
4
4 Diseño HLD de arquitectura para
integración de aplicaciones
El siguiente diagrama HLD (High level definition), propone y sugiere la siguiente composición e interacción entre
aplicaciones, tanto franquiciados, Adidas, y bridge, en una visión macro y de alto nivel.
Lo expuesto en dicho gráfico podrá sufrir modificaciones según la información a relevar, los datos de los servicios
son del ambiente de QA.
5
Composición del esquema
Se reciben en el servicio de Api de Bridge, de soluciones de terceros (franquiciados), los siguientes tipos de
transacciones:
6
5 Sobre el servicio de Api de Bridge
Este servicio permite consultar un JWT (Json Web Token) para poder consultar los métodos seguros de
Bridge Api.
Nota
Debe existir el registro en la colección “Client”
"clientId":"clientId",
"clientSecret":"clientSecret"
}'
7
RESPUESTA DEL SERVICIO:
Respuesta
"ack": 0,
"token":
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.eyJpZCI6IjVlYjQzODgzNzYwNjM2MDNm
OGFhOWM3MCIsImlhdCI6MTU5MzUzMTUxNywiZXhwIjoxNTkzNzA0MzE3LCJhdWQiOiJteWF1Z
CIsImlzcyI6Im15aXNzdWVyIiwic3ViIjoiY2xpZW50IiwianRpIjoiMSJ9.ghrJlsem6HRo1X_nKfN85NPq
y3duRsA5_l8Peiqm5HU",
Con el token ahora se puede acceder a los métodos protegidos de Bridge Api
Nota
El método /auth/me sirve para probar si el token es valido
Ejemplo
curl --location --request POST 'http://localhost:8090/auth/me' \
--header 'x-access-token:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.eyJpZCI6IjVlYjQzODgzNzYwNjM2
MDNmOGFhOWM3MCIsImlhdCI6MTU5MzUzMTUxNywiZXhwIjoxNTkzNzA0MzE3LCJhdWQiOiJteWF1ZCI
sImlzcyI6Im15aXNzdWVyIiwic3ViIjoiY2xpZW50IiwianRpIjoiMSJ9.ghrJlsem6HRo1X_nKfN85
NPqy3duRsA5_l8Peiqm5HU' \
--data-raw ''
8
CÓDIGOS DE ERROR GENERALES:
ACK Descripción HTTP
898 Error desconocido solicitando el Token. Puede ser que el token enviado este 500
mal formado.
9
6 BRIDGE - MOVIMIENTOS DE STOCK DE
TIENDAS.
Mediante este servicio de API se informarán a Bridge movimientos de stock generados en las
diferentes tiendas.
En cada operación que implique un movimiento de stock, se informarán datos relativos al depósito,
su estado, el item que genera el movimiento y si el mismo suma o resta la cantidad informada del
stock del depósito informado.
Habrá un servicio de API expuesta por Bridge para stock, donde se deberá postear un JSON con
cada operación a informar
{ "info":"stockJournal",
"dateTime":"10/07/2020 08:00:00",
"operations":[
{
"companyCode":"HT233",
"countryCode":"054",
"storeCode":"Z10212",
"locationCode":"DEP1",
"locationStatus":"OnSale",
"revenueCenter":"RCD",
"itemCode":"779123456789",
"itemDescription":"Producto modelo A70 gris",
"date":"2020-07-01 08:51:00",
"originatorChannel":"BRIDGE",
"qty":1,
"qtyOnHand":57,
"currencyISOCode":"007",
"actualUnitPrice":"290.39",
"originatorDocument":" Recepción de orden de compra",
"substractFlag":"true"
},
{
"companyCode":" HT233",
"countryCode":"054",
"storeCode":" Z10212",
"locationCode":"DEP1",
"locationStatus":"OnSale",
"revenueCenter":"RCD",
"itemCode":"779123456783",
10
"itemDescription":"Producto modelo SamA70 gris",
"date":"2020-07-01 08:52:00",
"originatorChannel":"BRIDGE", "qty":1,
"qtyOnHand":19,
"currencyISOCode":"007",
" actualUnitPrice":"290.39",
"originatorDocument":" Recepción de orden de compra",
"substractFlag":"true"
}
]
}
Importante: los movimientos de stock sólo se envían en operaciones de stock: Para las
transacciones de ventas no se deben enviar movimiento de stock ya que éstas lo contemplan.
Strin
companyCode Código de g "ZC12312" Si Código del franquiciado. Se
compañía envía el código coincidente con
el de Adidas .
11
Franquiciado: Manejarlo como
un parámetro de configuración
12
"TransitOut" (en tránsito de
salida, casos de transferencia
en tienda origen aún no
recepcionados en tienda
destino)
revenueCenter Centro de costo String "RCD" Si Será un valor fijo a enviar: “RCD”
utilizar siempre este valor RCD
13
date Fecha del String 2020-07-01 Si
movimiento 08:51:00
Formato:
yyyy-MM-dd
HH:mm:ss
"BRIDGE" Movimientos
generados desde la
tienda (punto de ve
o módulo de
inventario de BMT)
Ver cuadro
14
currencyISOCod Código de moneda Numb Si Código de moneda utilizado por
e er Adidas.
Franquiciado: enviar
15
movimiento de
Documento/movim Movimie
stock
iento nto
generado
desde
Venta POS
(punto de
venta)
Devolución POS
Devolución a BMT
proveedor
Transferencia BMT
Recepción BMT
Transferencia
Ajuste BMT
En venta y devolución no se
envían movimientos de stock, ya
que van por la otra interfaz
1
Franquiciado: enviar según la
operación
2
7 BRIDGE API - Operaciones venta,
devoluciones y cambios
Mediante este servicio se informarán a Bridge movimientos de ventas en las diferentes tiendas.
Habrá un servicio de API expuesta por Bridge para ventas y devoluciones, donde se deberá postear un JSON
con cada operación a informar
{
"trxType":"Sale",
"trxNumber":"12345678",
"trxTypeLang":"Venta",
"companyCode":"HT233",
"companyName":"Adidas",
"storeCode":"Z10212",
"storeName":"Boulevard",
"terminalCode":"10",
"periodNumber":"12",
"sbPeriodNumber":"1",
"businessDayDate":"2021-04-30 00:00:00",
"beginDateTime":"2021-04-30 12:33:45",
"endDateTime":"2021-04-30 12:34:57",
"beginDateTimeAsInt":"20210430",
"beginDateTimeHour":"123345",
"operatorCode":“OPER1”,
"operatorName":"Operador uno",
"currencyISOCode":"ARS",
"itemCount":"2",
"grossAmount":"7370.84",
"taxAmount":"1279.24",
"promoDiscountAmount":"0.00",
"manualDiscountAmount":"0.00",
"trainingModeFlag":"false",
"suspendedFlag":"false",
"cancelFlag":"false",
"offlineFlag":"false",
"contingencyFlag":"false",
"netSalesAmount":"6091.60",
3
"returnAmount":"0.00",
"grossPositiveAmount":"7370.84",
"grossNegativeAmount":"0.00",
"ivaTaxAmount":"1279.24",
"internalTaxAmount":"0.00",
"perceptionAmount":"0.00",
"transactionDiscountAmount":"0.00",
"fiscalPosNumber":"12345",
"billType":"FC B",
"serieOfficialBill":"B",
"billNumber":"12345-12345678",
"currencyDescription":"Peso Argentino",
"hasCustomer":"false",
"items": [
{
"trxType":"Sale",
"trxNumber":"12345678",
"storeCode":"Z10212",
"storeName":"Boulevard",
"terminalCode":"10",
"periodNumber":"12",
"sbPeriodNumber":"1",
"beginDateTime":"2021-04-30 12:33:45",
"beginDateTimeAsInt":"20210430",
"beginDateTimeHour":"123345",
"operatorCode":“OPER1”,
"operatorName":"Operador uno",
"internalCode":"779123456789",
"description":"Tenis",
"unitPrice":"3045.80",
"actualUnitPrice":"3045.80",
"manufacturerSaleUnitRecommendedRetailPriceAmount":"3045.80",
"wholesalePrice":"1500.00",
"unitCost":"1350.00",
"quantity":"1",
"qtyOnHand":57,
"units":"u",
"extendedPrice":"3045.80"",
"netAmount":"3045.80"",
"ivaTaxAmount":"639.62",
"internalTaxAmount":"0.00",
"voiding":"false",
"voidFlag":"false",
"trainingModeFlag":"false",
"suspendedFlag":"false",
4
"cancelFlag":"false",
"locationCode":"DEP1",
"sellerCode":"001",
"promoDiscountAmount":"0.00",
"manualDiscountAmount":"0.00"
},
{
"trxType":"Sale",
"trxNumber":"12345678",
"storeCode":"Z10212",
"storeName":"Boulevard",
"terminalCode":"10",
"periodNumber":"12",
"sbPeriodNumber":"1",
"beginDateTime":"2021-04-30 16:33:45",
"beginDateTimeAsInt":"20210430",
"beginDateTimeHour":"163345",
"operatorCode":“OPER1”,
"operatorName":"Operador uno",
"internalCode":"779123456321",
"description":"Tenis",
"unitPrice":"3045.80",
"actualUnitPrice":"3045.80",
"manufacturerSaleUnitRecommendedRetailPriceAmount":"3045.80",
"wholesalePrice":"1500.00",
"unitCost":"1350.00",
"quantity":"1",
"qtyOnHand ":48,
"units":"u",
"extendedPrice":"3045.80"",
"netAmount":"3045.80"",
"ivaTaxAmount":"639.62",
"internalTaxAmount":"0.00",
"voiding":"false",
"voidFlag":"false",
"trainingModeFlag":"false",
"suspendedFlag":"false",
"cancelFlag":"false",
"locationCode":"DEP1",
"sellerCode":"001",
"promoDiscountAmount":"0.00",
"manualDiscountAmount":"0.00"
}
]
5
"payments": [
{
"trxType":"Sale",
"trxNumber":"12345678",
"storeCode":"Z10212",
"storeName":"Boulevard",
"terminalCode":"10",
"periodNumber":"12",
"sbPeriodNumber":"1",
"beginDateTime":"2021-04-30 12:33:45",
"beginDateTimeAsInt":"20210430",
"beginDateTimeHour":"123345",
"operatorCode":“OPER1”,
"operatorName":"Operador uno",
"tenderCode":"UNI"
"tenderName":"UNICO"
"amount":"7370.84"
"change":"0.00"
"surcharge":"0.00"
"voided":"false"
"voiding":"false"
"netAmount":"7370.84"
"trainingModeFlag":"false"
"suspendedFlag":"false"
"cancelFlag":"false"
"fiscalPosNumber":"12345",
"billType":"FC B",
"serieOfficialBill":"B",
"billNumber":"12345-12345678",
"foreignCurrencyQuote":"0.00",
"foreignAmount":"0.00",
"foreignChange":"0.00",
"currencyDescription":"Peso Argentino",
“foreignAmount”: "0.00",
“foreignChange”: "0.00",
“currencyISOCode: "ARS"
}
]
}
Este servicio permitirá crear desde fuentes externas, una transacción de venta, devolución o cambio a partir de
postear en la API expuesta por Bridge, el JSON bajo el formato definido en el siguiente doc.
6
Campo Descripción Tipo Oblig. Observaciones
Franquiciado: enviar
Numero de
trxNumber transacción de la number SI Tener en cuenta entonces que
terminal para cada terminal el trxNumber
no puede repetirse nunca.
En caso de No aplica
devoluciones, es
trxNumberOriginal requerido el numero number Opcion
al
original de la
transacción
7
sbPeriodNumber Número de turno number SI Franquiciado enviar siempre 1.
Franquiciado: si no está
Fecha de inicio de la
beginDateTime Date SI disponible puede enviarse la
transacción
fecha hora de la transacción.
Franquiciado enviar
Es la concatenación de
Fecha de inicio de la AAAAMMDD
beginDateTimeAsInt transacción, como number SI
entero - para 05/02/2021 (5 de
febrero de 2012)
EJEMPLO: 20210205
Franaquiciado: enviar
8
como un parámetro de
configuración
Cantidad de items de
itemCount number SI
la venta Franquiciado: enviar
Descuentos
promoDiscountAmo otorgados por Se envía en cero en esta etapa.
number SI
unt promociones
generales
Descuentos
manualDiscountAm
otorgados por number SI Franquiciado: enviar la suma de
ount
descuentos manuales todos los descuentos
Si es modo No aplica
trainingModeFlag boolean SI
entrenamiento Franquiciado: enviar en “false”
9
Si es una transacción No aplica
offlineFlag boolean SI
offline Franquiciado: enviar en “false”
Monto neto de la
netSalesAmount number SI
transacción Franquiciado: enviar
Monto de la
returnAmount devolución, para el number SI Franquiciado: enviar si aplicara.
caso de los cambios De otra forma va en cero
10
Importe de Franquiciado: enviar si aplicara.
perceptionAmount number SI
percepciones De otra forma va en cero
Importe general de
descuentos de la
transacción
transactionDiscount (descuentos por number SI
Amount
promociones +
descuentos
manuales) Franquiciado: enviar
11
Tipo de Tipo de comprobante del
comprobante,las documento fiscal (Factura, Nota
billType opciones son FC y NT string de crédito)
Descripción de la
currencyDescription moneda de la string No
Franquiciado: enviar
operación vacío
12
referencia a la factura Franquiciado: no enviar
original
13
Franquiciado enviar vacío
partyOrganization Si es una organización boolean No
Se repite el mismo
trxType string SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
trxNumber number SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
storeName string SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
storeCode string SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
terminalCode string SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
periodNumber number SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
sbPeriodNumber number SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
beginDateTime Date SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
beginDateTimeAsInt dato que la cabecera number SI Franquiciado: enviar
Se repite el mismo
beginDateTimeHour dato que la cabecera number SI Franquiciado: enviar
14
Se repite el mismo
operatorCode string SI
dato que la cabecera Franquiciado: enviar
Se repite el mismo
operatorName string SI
dato que la cabecera Franquiciado: enviar
Descripción del
description string SI
producto Franquiciado: enviar
Franquiciado: enviar
15
manufacturerSaleU Precio de venta number Franquiciado: enviar el precio
nitRecommendedRe recomendado recomendado de venta sin
tailPriceAmount SI impuestos
(Recommended Retail
Price)
Cantidad del
quantity number SI
producto Franquiciado: enviar
Franquiciado: enviar
Importe final o neto
netAmount number SI
del producto Es el monto a pagar neto de
todos los impuestos.
16
Franquiciado: enviar. En caso de
Monto de impuestos
internalTaxAmount number no aplicar el impuesto, enviar en
del item
cero
Si es un producto
anulado, es decir, no
voiding boolean SI No aplica.
forma parte de la
venta Franquiciado: Enviar en false
Si es un producto No aplica.
anulado, es decir, no
voidFlag forma parte de la boolean SI Franquiciado: Enviar en false
venta
17
Se repite el mismo Franquiciado: enviar
trxType string SI
dato que la cabecera
18
Monto del medio de
amount number SI
pago Franquiciado: enviar
Se repite el mismo
trainingModeFlag boolean SI
dato que la cabecera Franquiciado: enviar
Numero fe factura
billNumber string SI
electrónica Franquiciado: enviar
foreignCurrencyQuo
number SI
te Franquiciado: enviar en cero.
19
Franquiciado: Enviar en 0. no
Monto en moneda aplica en esta etapa. Tener
foreignAmount number SI
extranjera previsión de que pueda enviarse
en el futuro.
Franquiciado: Enviar en 0. no
foreignChange Cambio de la moneda number SI aplica en esta etapa. Tener
extranjera previsión de que pueda enviarse
en el futuro.
20
referenceNumber Número de referencia string Condic Enviar vacío
ional
Código de
cardAuthorizationC autorización de la string Condic Enviar vacío
ode ional
tarjeta
Se repite el mismo
trxType string SI Enviar vacío
dato que la cabecera
21
Se repite el mismo
trxNumber number SI Enviar vacío
dato que la cabecera
Se repite el mismo
storeName string SI Enviar vacío
dato que la cabecera
Se repite el mismo
storeCode string SI Enviar vacío
dato que la cabecera
Se repite el mismo
terminalCode string SI Enviar vacío
dato que la cabecera
Se repite el mismo
periodNumber number SI Enviar vacío
dato que la cabecera
Se repite el mismo
sbPeriodNumber number SI Enviar vacío
dato que la cabecera
Se repite el mismo
beginDateTime Date SI Enviar vacío
dato que la cabecera
Se repite el mismo
beginDateTimeAsInt dato que la cabecera number SI Enviar vacío
Se repite el mismo
operatorCode string SI
dato que la cabecera Enviar vacío
Se repite el mismo
operatorName string SI Enviar vacío
dato que la cabecera
Descripción del
description string SI Enviar vacío
producto
Código interno de la
promoCode string SI Enviar vacío
promoción
Descripción de la
22
Clase de beneficio
Condic
benefitClass (monetario o no string Enviar vacío
ional
monetario)
Tipo de beneficio
(descuento fijo, Condic
benefitType string
descuento ional Enviar vacío
porcentaje)
Condic
couponCode Codigo de cupon string
ional Enviar vacío
23
8 Errores
Para generar el proceso de errores se definen dos archivos, un archivo de error por franquicia y un archivo de error para
Adidas con los errores de todas las franquicias.
Estos serán depositados en directorios asignados de forma separada para evitar el acceso a los archivos entre
franquicias (configuración realizada por medio de permisos vía SFTP). Los archivos se continuarán generando por rango
de fechas desde el menú “Exportar archivos” de la consola de Bridge Manager seleccionando el tipo de archivo
“errores”.
En caso de que al procesar cualquiera de las colas anteriores (transacción o stock) se detecte algún error en la
información se generara un registro en la colección de ExternalError [Imagen E.4] y el json con la cola procesada en ese
momento se persistirá en ExternalQueueMessage [Imagen E.5], las validaciones realizadas son las siguientes:
E.4
24
Carpeta de errores
Para el acceso a cada carpeta de error de cada franquiciado se dará la ip, el puerto y credenciales de manera individual
solo con permisos a la carpeta con el código de franquiciado.
En esta carpeta solo se podrá descargar el archivo con los errores. No se podrá subir las transacciones corregidas.
Estas deben ser enviadas nuevamente al servicio de API para ser reprocesadas.
El formato de los archivos de errores para franquiciados será csv y tendrá el siguiente modelo de datos:
Campo Descripción
25
9 Apéndice
Cuadro de variación de stock según transacciones
En cada transacción se informa el stock on hand y en tránsito con los valores finales luego de la transacción
mencionada.
Luego de dicha transacción deberán variar los nuevos valores a informar según la transacción que se envíe y con
el detalle siguiente:
(qtyOnHand)
Venta Disminuye
26