Está en la página 1de 41

BRIDGE

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.

2021-04-28 1.5 Ajustes Horacio


Denegri
2021-04-28 1.6 En el servicio item, se indoca el campo en el que se enviará el ARTICLE_ID. Horacio
Denegri
2021-05-03 1.7 Se agrega ejemplo de mensaje json de una venta Horacio
En stoc se cambia el nombre del campo crp para dejarlo igual a la interfaz de Denegri
ventas
En la ineterfaz de ventas se eliminan los campos repetidos ivaTaxAmount,
internalTaxAmount, perceptionAmount (ver control de cambios)

2021-05-05 1.8 Ajustes menores en la estructura del ejemplo de ventas Horacio


Denegri
2021-05-26 1.9 y Se agregan campos con valores de inventario en transacciones de stock y ventas Horacio
1.10 Denegri
2021-08-17 1.11 Cambios según nuevas especificaciones de Adidas Horacio
Denegri
2021-08-20 1.12 Ajustes luego de revisión interna Horacio
Denegri
2021-08-23 1.13 Se quitó de todos los ejemplos el campo qtyOntransit ya que no se va a enviar. Horacio
Denegri
Ottero
2022-02-02 1.14 Se agrega información e conexión a Rabbit Cristian
Otttero Cristian
2022-04-11 1.17 Se agrega descripción de API de Bridge y archivo de errores

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:

1. Operaciones: ventas, devoluciones y cambios.


2. Movimientos de stock: ventas, devoluciones, cambios, pedidos, recepciones, ajustes,
devoluciones a proveedor, transferencias entre tiendas y entre depósitos.

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.

1. Se invoca de la siguiente manera: https://[direccion_ip]:[puerto]/auth/login -


Ejemplo: https://localhost:8090/auth/login
2. Se invoca via POST.
3. En el cuerpo se debe enviar
. clientId
a. clientSecret

Nota
Debe existir el registro en la colección “Client”

Ejemplo de request con CURL:


CURL
curl --location --request POST
'http://localhost:8090/auth/login' \
--header 'Content-Type:
application/json' \
--data-raw '{

"clientId":"clientId",

"clientSecret":"clientSecret"
}'

Importante: Cada franquiciado deberá solicitar un ClientId y un ClientSecret a Adidas para la


generación del token de la API.

DESCRIPCIÓN DE LOS CAMPOS:


Campo Tipo Descripción Requerido Ejemplos

clientId String Identificador único del usuario que quiere SI bridge-


acceder al servicio api

clientSecret String Valor alfanumérico asociado al ClientId SI

7
RESPUESTA DEL SERVICIO:
Respuesta

"ack": 0,

"token":
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjEifQ.eyJpZCI6IjVlYjQzODgzNzYwNjM2MDNm
OGFhOWM3MCIsImlhdCI6MTU5MzUzMTUxNywiZXhwIjoxNTkzNzA0MzE3LCJhdWQiOiJteWF1Z
CIsImlzcyI6Im15aXNzdWVyIiwic3ViIjoiY2xpZW50IiwianRpIjoiMSJ9.ghrJlsem6HRo1X_nKfN85NPq
y3duRsA5_l8Peiqm5HU",

1. ack es el código de respuesta, en caso de ser un error, mirar tabla a continuación.


2. token es el token asignado a ese usuario.

Con el token ahora se puede acceder a los métodos protegidos de Bridge Api

ENVIAR EL TOKEN EN UN SERVICIO:


Una vez que se obtuvo el token, este se debe enviar en el HEADER de para ser evaluado por el servicio.

1. Se envía de la siguiente manera: https://[direccion_ip]:[puerto]/auth/me -


Ejemplo: https://localhost:8090/auth/me
2. Se invoca vía POST.
3. El token se debe enviar en el header (cabecera) con el nombre x-access-token

Nota
El método /auth/me sirve para probar si el token es valido

Ejemplo de request con CURL

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

0 La operación es exitosa. 200

899 Error al autentificarse. ClientId o ClienteSecret no son correctos. 500

898 Error desconocido solicitando el Token. Puede ser que el token enviado este 500
mal formado.

897 Token expirado 500

896 x-access-token es vacío o no se envió en el header. 500

999 Error desconocido 500

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

Formato JSON a recibir:

{ "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"
}
]
}

Descripción de los campos:

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.

Campo Descripción Tipo Dato ejemplo Mand Observaciones


de atorio
dato

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 .

Franquiciado: Manejarlo como


un parámetro de configuración

countryCode Código de País String Coincide con el valor de


REPORTING_UNIT que maneja
Adidas.

Franquiciado: Manejarlo como


un parámetro de configuración

storeCode Código de la tienda String "AY42433" Si Se debe enviar el código


coincidente con el de Adidas .

11
Franquiciado: Manejarlo como
un parámetro de configuración

locationCode Código del String "DEP1" Si Se define por setup


depósito
Será un valor fijo a enviar:
“DEP1”

Franquiciado: Manejarlo como


un parámetro de configuración

locationStatus Estado del String "OnSale" Si Posibles estados del depósito


depósito
"OnSale" (a la venta)
"TransitIn" (en tránsito de
entrada, casos de transferencia
en tienda destino aún no
recepcionados)
"TransitOut" (en tránsito de
salida, casos de transferencia
en tienda origen aún no
recepcionados en tienda
destino)

Franquiciado: valores fijos a


enviar según tipo de transacción

Posibles estados del depósito

"OnSale" (a la venta) - default

"TransitIn" (en tránsito de


entrada, casos de transferencia
en tienda destino aún no
recepcionados)

NOTA: si informan en este


estado, luego que la
transferencia se haga efectiva
deberían quitarlo de este estado
"TransitIn" y darlo de alta en
OnSale

12
"TransitOut" (en tránsito de
salida, casos de transferencia
en tienda origen aún no
recepcionados en tienda
destino)

NOTA: si informan en este


estado, luego que la
transferencia se haga efectiva
deberían quitarlo de este estado
"TransitOut" y darlo de baja en
OnSale

Iportannte: sólo deberían enviar


movimientos de inventario que
no provengan de ventas o
devoluciones ya que estas se
procesarán con la operación de
venta o devolución informada.

revenueCenter Centro de costo String "RCD" Si Será un valor fijo a enviar: “RCD”
utilizar siempre este valor RCD

Franquiciado: Manejarlo como


un parámetro de configuración

itemCode Código del ítem String "7721234567 Si Franquiciado: enviar el barcode


89" del artículo

Adidas: Se envía a BMC al


maestro de artículos por interfaz
de integración interfaz item.

itemDescription Nombre o String "Producto Si Franquiciado: enviar el nombre


descripción del modelo A70 del artículo según Adidas.
ítem gris"

13
date Fecha del String 2020-07-01 Si
movimiento 08:51:00
Formato:
yyyy-MM-dd
HH:mm:ss

originatorChann Canal que originó String "BRIDGE" Si Lista de valores posibles:


el el movimiento de Canal Observaciones
inventario

"BRIDGE" Movimientos
generados desde la
tienda (punto de ve
o módulo de
inventario de BMT)

Otros canales según


sean definidos en la
entidad "Channel"

Será un valor fijo a enviar:


“BRIDGE”

Franquiciado: Manejarlo como


un parámetro de configuración

qty Cantidad de Numb 1 Si Enviar la cantidad del producto


unidades del er correspondiente a la transacción
movimiento que se informa.

qtyOnHand Stock final en Numb Si Enviar el stock del producto en


tienda luego del er tienda luego de aplicarse este
movimiento movimiento.
informado.

Ver cuadro

14
currencyISOCod Código de moneda Numb Si Código de moneda utilizado por
e er Adidas.

Franquiciado : Manejarlo como


un parámetro de configuración

actualUnitPrice Precio de venta Incluye todos los descuento


actual aplicados al item y a toda la
venta y sin impuestos. Es el
(Current Retail precio que paga finalmente el
Price) numb
SI comprador por unidad de
er producto.

Franquiciado: enviar

Ídem Interfaz de Stock

serialNumber Número de serie String "ABC1234567 opcion No aplica, enviar vacío


del artículo 89" al

importDocNum Número de String "IC11123456 opcion No aplica, enviar vacío


ber pedimento/lote/gu 78" al
ía de importación

customsNumbe Código de la String "BSAS" opcion No aplica, enviar vacío


r aduana al

customsDate Fecha del String 2020-07-01 opcion No aplica, enviar vacío


pedimento/lote/gu 08:51:00 al
ía de importación Formato:
yyyy-MM-dd
HH:mm:ss

originatorDocu Operación o String "Venta" Si Lista de valores posibles:


ment documento de
inventario que
origina el

15
movimiento de
Documento/movim Movimie
stock
iento nto
generado
desde

Venta POS
(punto de
venta)

Devolución POS

Importación ASN BMT

Recepción ASN BMT

Devolución a BMT
proveedor

Transferencia BMT

Recepción BMT
Transferencia

Ajuste BMT

Recepción de orden BMT


de compra

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

substractFlag Indica si el String "true" Si Valores posibles:


movimiento "true"/"false"
suma o resta del
Ej:
stock del artículo
en la Movimientos que suman
tienda/depósito/ stock:
estado del
depósito ▪ una recepción de Orden
informado de compra suma
▪ una transferencia de
Si se informa entrada suma
"true" = resta ▪ un ajuste positivo suma
stock
Si se informa
Movimientos que restan
"false" = suma
stock:
stock
▪ una transferencia de
salida resta
▪ una devolución a
proveedor resta
▪ un ajuste negativo resta

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.

En cada operación de venta o devolución informarán datos relativos al item.

Habrá un servicio de API expuesta por Bridge para ventas y devoluciones, donde se deberá postear un JSON
con cada operación a informar

Formato JSON a recibir:

{
"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

El tipo de transacción, Franquiciado: enviar


pueden ser los
trxType valores 'Sale', 'Return' string SI
o 'Exchange'

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

Es el tipo de la Franquiciado: enviar


transacción, en
trxTypeLang string SI
español, Venta,
Devolución o Cambio

companyCode Código de compañía string SI Idem Interfaz de stock

Nombre de la Franquiciado: enviar la razón


companyName string SI
compañía social propia.

countryCode Código de País Idem Interfaz de stock

storeCode Código de la tienda string SI Idem Interfaz de stock

storeName Nombre de la tienda string SI Franquiciado: enviar

Es un código que no se repite


dentro de un store.
terminalCode Código de la terminal string SI
Franquiciado: enviar el código
correspondiente a cada terminal.

Número que se incrementa cada


periodNumber Numero de período number SI
vez que cambia el día fiscal.

7
sbPeriodNumber Número de turno number SI Franquiciado enviar siempre 1.

businessDayDate Dia fiscal Date SI Franquiciado: enviar

Franquiciado: si no está
Fecha de inicio de la
beginDateTime Date SI disponible puede enviarse la
transacción
fecha hora de la transacción.

Fecha de fin de la Franquiciado: fecha hora de la


endDateTime Date SI
transacción 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

Requerido, se utiliza para


Fecha inicio de la
reportes. Enviar el número de la
beginDateTimeHour transacción, como number SI
hora expresada en formato 24hs.
entero
Ej: 6 (para las 6am), 23 (para las
11pm)

Será un valor fijo a enviar:


“OPER1”

Franquiciado: Manejarlo como


operatorCode Código de operador o string SI un parámetro de configuración
cajero
Tomar previsión de que puedan
enviarse en el futuro los valores
actuales

operatorName Nombre del operador string SI Franquiciado enviar “Operador


1” Franquiciado : Manejarlo

8
como un parámetro de
configuración

Tomar previsión de que puedan


enviarse en el futuro los valores
actuales

Código de moneda utilizado por


Adidas.
currencyISOCode Código de moneda SI
Franquiciado : Manejarlo como
un parámetro de configuración

Cantidad de items de
itemCount number SI
la venta Franquiciado: enviar

Monto bruto, con Franquiciado: enviar


grossAmount impuestos incluidos, number SI
sin descuentos

taxAmount Importe de impuestos number SI 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”

Si es una transacción No aplica


suspendedFlag boolean SI
suspendida Franquiciado: enviar en “false”

Si es una transacción No aplica


cancelFlag boolean SI
cancelada Franquiciado: enviar en “false”

9
Si es una transacción No aplica
offlineFlag boolean SI
offline Franquiciado: enviar en “false”

Si es una transacción No aplica


contingencyFlag cargada en boolean SI
contingencia 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

o monto total acumulado


de productos vendidos (sin
descuentos) si es una venta o los
vendidos en una transacción de
grossPositiveAmoun Monto positivo de la cambio.
number SI
t venta (productos) o monto total acumulado
de productos anulados (sin
descuentos) si es una devolución
o si es una transacción de
cambio

monto total acumulado de


productos devueltos (sin
grossNegativeAmount number
Monto negativo de la descuentos) si es una devolución o
venta si es una transacción de cambio
Impuesto al valor Franquiciado: enviar si aplicara.
ivaTaxAmount number SI
agregado total De otra forma va en cero

Impuestos internos Franquiciado: enviar si aplicara.


total, para la De otra forma va en cero
internalTaxAmount number SI
transacción para la
transacción

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

Monto de la venta Condic No Aplica


iva0Amount con impuestos al 0% number
(solo Argentina) ional Franquiciado: enviar vacío

Monto de la venta Condic No Aplica


iva21Amount con impuestos al number
ional Franquiciado: enviar vacío
21% (solo Argentina)

Monto de la venta Condic No Aplica


iva10Amount con impuestos al number
10% (solo Argentina) ional Franquiciado: enviar vacío

Monto de la venta Condic No Aplica


iva27Amount con impuestos al number
27% (solo Argentina) ional Franquiciado: enviar vacío

fiscalPosNumb Número de centro String Franquiciado: enviar si está


er emisor para factura disponible el número de
electrónica Condici terminal del punto de venta.
onal Cada punto de venta cuenta con
un identificador o número de
caja

11
Tipo de Tipo de comprobante del
comprobante,las documento fiscal (Factura, Nota
billType opciones son FC y NT string de crédito)

En Argentina para En caso de que esto no aplique en


contribuyentes que el país debe ir vacío.
tienen que discriminar el
serieOfficialBill string
IVA se usa la letra A y
para un no
contribuyente la letra B
Numero de factura Franquiciado: informar el nro de
billNumber string SI
electrónica comprobante

Número de Franquiciado: enviar vacio


fiscalCAENumber autorización de string No
factura electrónica

fiscalCAEDate Fecha de autorización Date No Franquiciado: enviar vacío


de factura electrónica

currentZNumber Número de Z fiscal number No Franquiciado: enviar vacío

Descripción de la
currencyDescription moneda de la string No
Franquiciado: enviar
operación vacío

originalSerieOfficial nota de crédito,


string No Franquiciado enviar vacío
Bill referencia a la factura
original

originalFiscalPOSNu En caso de ser una Franquiciado enviar vacío


string No
mber nota de crédito,

12
referencia a la factura Franquiciado: no enviar
original

En caso de ser una No aplica


nota de crédito,
originalBillNumber string No Franquiciado enviar vacío
referencia a la factura
original

Se envía en “false” esta etapa.


Si posee un cliente
hasCustomer boolean SI
asociado o no

El nombre del cliente, Franquiciado enviar vacío


denomination en caso de poseer string No
uno asociado

El código del cliente, Franquiciado enviar vacío


partyCode generalmente es su string No
identificación

La categoría Franquiciado enviar vacío


impositiva del cliente,
puede ser CF
partyTaxCategory string No
(Consumidor Final) o
RI (responsable
Inscripto)

Franquiciado enviar vacío


Si es persona PRS o
partyType string No
Organización OGN

Franquiciado enviar vacío


Primer nombre del
partyFirstName string No
cliente

Franquiciado enviar vacío


partyLastName Apellido del cliente string No

Franquiciado enviar vacío


partyPerson Si es una persona boolean No

13
Franquiciado enviar vacío
partyOrganization Si es una organización boolean No

Tipo de identificación. Franquiciado enviar vacío


partyIdentificationT
1 DNI 2 Pasaporte 3 string No
ype
CUIT 4 CUIL

Franquiciado enviar vacío


partyIdentificationN Numero de
string No
umber identificación

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

Código de barras del


producto. Debe ser
internalCode string SI
un valor existente en
Bridge. Franquiciado: enviar El barcode

Descripción del
description string SI
producto Franquiciado: enviar

merchandiseHierarc Código de grupo de la string No


hyGroupCode estructura jerárquica Franquiciado: enviar vacío

merchandiseHierarc Nombre del grupo de


la estructura string No
hyGroupName
jerárquica Franquiciado: enviar vacio

Franquiciado: enviar el precio


Precio unitario del
unitPrice number SI actual manejado por el
producto
franquiciado, sin impuestos

actualUnitPrice Precio de venta actual number Incluye todos los descuentos


(Current Retail Price) aplicados al intem y a toda la
venta. Es el precio que paga
finalmente, el comprador por
SI unidad de producto y sin los
impuestos.

Franquiciado: enviar

Ídem Interfaz de Stock

15
manufacturerSaleU Precio de venta number Franquiciado: enviar el precio
nitRecommendedRe recomendado recomendado de venta sin
tailPriceAmount SI impuestos
(Recommended Retail
Price)

wholesalePrice Precio de lista number SI Sólo si está disponible, enviar el


mayorista (Wholesale precio mayorista sin impuestos
List Price)
unitCost number Franquiciado: enviar el precio al
Precio en la factura
que fue facturado el item en la
de compra SI compra a Adidas, sin impuesto.

Cantidad del
quantity number SI
producto Franquiciado: enviar

Cantidad del Franquiciado: enviar siempre


units number SI
producto “u”

Stock final en tienda number Es la cantidad de stock que


luego del movimiento queda luego de una
informado. transacción, en caso de no
poder enviar esta cantidad, se
envía la cantidad en mano final
qtyOnHand SI una vez que cierre la tienda.
Ejemplo si al comienzo del día
tenemos 10 unidades y al
finalizar el día la cantidad de
stock es 5, en este campo se
enviar 5.
Precio total del
extendedPrice producto (precio number SI
unitario x cantidad) Franquiciado: enviar

Franquiciado: enviar
Importe final o neto
netAmount number SI
del producto Es el monto a pagar neto de
todos los impuestos.

Monto del IVA del Franquiciado: enviar


ivaTaxAmount number Si
item

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

Se repite el mismo No aplica.


trainingModeFlag boolean SI
dato que la cabecera
Franquiciado: Enviar en false

Se repite el mismo No aplica.


suspendedFlag boolean SI
dato que la cabecera Franquiciado: Enviar en false

Se repite el mismo No aplica.


cancelFlag boolean SI
dato que la cabecera Franquiciado: Enviar en false

Código de almacen Franquiciad; enviar


locationCode desde donde el string SI
producto sale Idem stock

Franquiciado: enviar un código


Código del vendedor
sellerCode string SI único “001”. Tener previsión de
del item
que pueda enviarse en el futuro.

Franquiciado: no aplica en esta


promoDiscountAmo Descuento otorgado etapa y va en cero. Tener
number SI
unt por promociones previsión de que pueda enviarse
en el futuro.

Descuentos manuales Franquiciado:


manualDiscountAm sobre el producto
number SI Enviar todos los decuentos
ount aplicados al item sumarizados en
este campo.

17
Se repite el mismo Franquiciado: enviar
trxType string SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


trxNumber number SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


storeName string SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


storeCode string SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


terminalCode string SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


periodNumber number SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


sbPeriodNumber number SI
dato que la cabecera

beginDateTime:Dat Se repite el mismo Franquiciado: enviar


Date SI
e, dato que la cabecera

Se repite el mismo Franquiciado: enviar


beginDateTimeAsInt dato que la cabecera number SI

Se repite el mismo Franquiciado: enviar


beginDateTimeHour dato que la cabecera number SI

Se repite el mismo Franquiciado: enviar


operatorCode string SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


operatorName string SI
dato que la cabecera

Código del medio de Franquiciado: enviar el nombe


tenderCode
pago “UNI”

tenderName Nombre del medio de string SI Franquiciado: enviar el nombe


pago “UNICO”

18
Monto del medio de
amount number SI
pago Franquiciado: enviar

Cambio (en caso de No aplica.


change number SI
ser efectivo) Franquiciado: enviar en cero

Recargo (para casos No aplica.


surcharge number SI
como tarjetas) Franquiciado: Enviar en cero.

voided Si fue anulado boolean SI Franquiciado: Enviar en false

voiding Si fue anulado boolean SI Franquiciado: Enviar en false

Franquiciado: enviar mismo


netAmount Monto neto del pago number SI
valor que en amount

Se repite el mismo
trainingModeFlag boolean SI
dato que la cabecera Franquiciado: enviar

Se repite el mismo Franquiciado: enviar


suspendedFlag boolean SI
dato que la cabecera

Se repite el mismo Franquiciado: enviar


cancelFlag boolean SI
dato que la cabecera

Numero de centro Franquiciado: enviar


fiscalPosNumber string SI
emisor

Tipo de comprobante, Franquiciado: enviar


billType las opciones son FC A, string SI
FCB,NCA,NCB

A o B de acuerdo a si Franquiciado: enviar


es un comprobante a
serieOfficialBill responsable inscripto string SI
o no

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.

Franquiciado: enviar el mismo


currencyISOCode Código de la moneda string SI
que el de la transacción.

Franquiciado: no aplica en esta


card Código de tarjeta boolean Condic etapa. Tener previsión de que
ional
pueda enviarse en el futuro.

Franquiciado: no aplica en esta


externalId string Condic etapa. Tener previsión de que
ional
pueda enviarse en el futuro.

Franquiciado: no aplica en esta


vtolStore Código de tienda de string Condic etapa. Tener previsión de que
VTOL ional
pueda enviarse en el futuro.

Franquiciado: no aplica en esta


vtolTerminal Código de terminal de string Condic etapa. Tener previsión de que
VTOL ional
pueda enviarse en el futuro.

Franquiciado: no aplica en esta


cardNumber Número de tarjeta string Condic etapa. Tener previsión de que
enmascarado ional
pueda enviarse en el futuro.

Franquiciado: no aplica en esta


cardType Tipo de tarjeta string Condic etapa. Tener previsión de que
ional
pueda enviarse en el futuro.

Franquiciado: no aplica en esta


lotNumber Número de lote string Condic etapa. Tener previsión de que
ional
pueda enviarse en el futuro.

20
referenceNumber Número de referencia string Condic Enviar vacío
ional

provider Autorizador string Condic Enviar vacío


ional

planDescriptor Plan de pagos string Condic Enviar vacío


ional

sellerName Código de comercio string Condic Enviar vacío


ional

Código de
cardAuthorizationC autorización de la string Condic Enviar vacío
ode ional
tarjeta

cardCouponNumber Número de cupón de string Condic Enviar vacío


la tarjeta ional

Número de lote de la Condic


cardLotNumber string Enviar vacío
tarjeta ional

installments Cantidad de cuotas string Condic Enviar vacío


ional

cardReferenceNum Codigo de referencia Condic


string Enviar vacío
ber de la tarjeta ional

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

beginDateTimeHour Se repite el mismo number SI


dato que la cabecera 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

Codigo interno del


internalCode string SI Enviar vacío
producto

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

promoDescription promoción string SI Enviar vacío

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)

Valor del beneficio,


por ejemplo, el Condic
benefitValue number
porcentaje de ional Enviar vacío
descuento

Condic
couponCode Codigo de cupon string
ional Enviar vacío

Código de tarjeta de Condic


cardCode string
fidelidad ional Enviar vacío

Tipo de tarjeta de Condic


cardType string Enviar vacío
fidelidad ional

Monto en puntos de Condic


currentCardAmount la tarjeta number ional Enviar vacío

cancelFlag Se repite el mismo boolean Condic Enviar vacío


dato que la cabecera ional

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:

• Código de franquiciado no existe en los registros.


• Código de País no existe en los registros.
• Código de moneda no existe en los registros.
• Código de tienda no existe en los registros.
• Código de artículo no existe en los registros.

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.

Formato de archivos de errores

El formato de los archivos de errores para franquiciados será csv y tendrá el siguiente modelo de datos:

Campo Descripción

processExecuted Indica que proceso fue ejecutado, si fue una


transacción o un movimiento de stock

errorDate Fecha del error


errorCode Código de error
errorMessage Mensaje de error
interpretedMessage Línea que fue rechazada en del json

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:

Transacción informada Stock on hand informado

(qtyOnHand)

Venta Disminuye

Devolución de cliente Aumenta

Recepción de orden de Aumenta


compra

Devolución a proveedor Disminuye

Transferencia Disminuye en la tienda que


envía

Recepción de transferencia Aumenta en la tienda que


recibe

26

También podría gustarte