BRIDGE - Manual de servicios de integración JSON / OAuth 2.0


© 2024 Napse. Todos los derechos reservados.

CONTENIDO



IMPORTANTE


Recomendaciones

Se sugieren los siguientes puntos a modo de recomendación para los envíos de información mediante los servicios de integración:

  • Envío en lotes:

    • Se recomienda realizar el envío de registros en lotes siempre que el tipo de servicio lo permita.
    • A su vez, es recomendable el envío de registros en orden, para evitar errores por claves foráneas inexistentes.
    • Evitar el envío de un registro por solicitud. Por ejemplo, para la actualización del maestro de artículos, es preferible enviar lotes de registros en lugar de uno a uno.
  • Cantidad recomendada por lote:

    • Para la mayoría de los servicios, se recomienda enviar lotes de hasta 5000 registros para garantizar un procesamiento eficiente.
    • En casos donde se manejan entidades grandes, el servicio de "ítems" específicamente, es preferible reducir el tamaño del lote a un máximo de 3000 registros.
    • Para el caso del servicio de "customer", se recomienda utilizar un tamaño de lote de 1000 registros.
  • Peso máximo por lote:

    • El tamaño máximo recomendado para cada lote es de 5 MB, considerando tanto los datos enviados como los recursos de red y procesamiento.
  • Recomendaciones adicionales para optimizar el funcionamiento:

    • En conexiones menos estables, limitar los lotes a un máximo de 2000 registros (a excepción del servicio de "customer" que se recomienda 1000 registros).
    • Realizar los envíos durante horarios de baja demanda para reducir la carga del sistema y mejorar el tiempo de respuesta.

INTRODUCCIÓN

En un entorno digital cada vez más interconectado, la integración eficiente de sistemas es fundamental para garantizar el flujo seguro y estructurado de información entre plataformas. Bridge es una solución que permite la gestión centralizada de datos mediante la importación y actualización de información a través de servicios web basados en JSON y autenticación OAuth 2.0.


¿Qué es Bridge API?

Bridge API permite la comunicación entre distintos sistemas utilizando servicios basados en JSON y autenticación mediante OAuth 2.0. Su objetivo es proporcionar un mecanismo seguro y eficiente para la carga, actualización y consulta de datos dentro del ecosistema de Bridge.


¿Qué es JSON y por qué se usa?

JSON (JavaScript Object Notation) es un formato ligero y legible para el intercambio de datos. Su estructura basada en clave-valor permite la representación de objetos complejos de manera clara y eficiente, lo que lo hace ideal para la integración de APIs como Bridge.


¿Cómo funciona OAuth 2.0?

OAuth 2.0 es un protocolo de autorización utilizado para validar el acceso a los servicios de Bridge. En lugar de enviar credenciales en cada solicitud, se genera un token de acceso que debe incluirse en cada petición a la API. Este mecanismo garantiza seguridad y control en las transacciones.


Para acceder a los servicios de Bridge, es necesario obtener un token de autenticación. El procedimiento detallado para la generación, uso y renovación del token se encuentra en el documento BRIDGE API - REST – Autenticación: token, donde se explica paso a paso cómo gestionar el proceso de autenticación.

Se recomienda revisar dicho documento para comprender el flujo completo de autenticación y asegurarse de que las solicitudes a la API se realicen con un token válido.


Objetivo

Este manual tiene como propósito proporcionar una guía detallada sobre el uso de los servicios de integración de Bridge, explicando la estructura de los mensajes en formato JSON, los métodos de autenticación mediante OAuth 2.0, y los pasos necesarios para enviar información de manera correcta y segura. Se detallarán los distintos tipos de datos que pueden integrarse, las rutas de servicio, y las mejores prácticas para asegurar una implementación eficiente.


Público 

Este documento está dirigido a equipos técnicos y de desarrollo de software, incluyendo analistas funcionales, desarrolladores, arquitectos de software e integradores de sistemas que necesiten interactuar con la plataforma Bridge. Se espera que los lectores tengan conocimientos básicos sobre API REST, JSON y autenticación OAuth 2.0, aunque se proporcionarán explicaciones claras y ejemplos prácticos para facilitar su comprensión e implementación.


PUNTOS IMPORTANTES

  • Son servicios REST
  • En los servicios, irá información en formato JSON
  • Se deberá realizar una autenticación previa, obteniendo un token, siguiendo el siguiente instructivo: BRIDGE API - REST – Autenticación: token
  • Se deberá invocar al servicio según la siguiente ruta: https://demo.napse:8381/api/v1/import (o la que corresponda según el proyecto)
  • Si la tienda es "0", significa que va a todas las tiendas.
  • A partir de ahora, se deberá enviar cada maestro según la prioridad y el formato definido en el presente documento.



ESTRUCTURA GENERAL DEL SERVICIO

El servicio de importación de datos en Bridge permite la carga y actualización de diversas entidades a través de solicitudes en formato JSON. Esta estructura estandarizada facilita la integración con otros sistemas y asegura la consistencia en el envío de información.

Cada solicitud debe incluir información clave, como el tipo de entidad a procesar, el identificador de la tienda (si aplica) y un conjunto de datos organizados en una colección de entidades. La estructura general es flexible y se adapta a distintos tipos de información, como marcas, productos, categorías, entre otros.


A continuación, se detalla la estructura general del JSON utilizado en las solicitudes de importación.

ClaveTipo de DatoDescripción
serviceStringTipo de entidad que se está enviando (ej. "brand" para marcas).
storeString / NúmeroIdentificador de la tienda donde se aplicarán los datos.
entityCollectionObjetoContiene el conjunto de datos a cargar, agrupados según el tipo de entidad.
nombre_entidad_pluralArrayLista de objetos que representan las entidades a cargar. Ejemplo: "brands" si se están enviando marcas.
nombre_entidad_singularObjetoContiene los atributos específicos de la entidad a cargar. Ejemplo: "brand" para cada marca dentro de "brands".
atributo1VariableUn atributo de la entidad (Ej: "name" para el nombre de la marca).
atributo2VariableOtro atributo de la entidad (Ej: "description" para la descripción de la marca).


Todas las solicitudes a Bridge API siguen un esquema similar:

INPUT
{
  "service": "<nombre_del_servicio>",
  "store": "<id_tienda>",
  "entityCollection": {
    "<nombre_entidad_plural>": [
      {
        "<nombre_entidad_singular>": {
          "<atributo1>": "<valor1>",
          "<atributo2>": "<valor2>",
          "<atributoN>": "<valorN>"
        }
      }
    ]
  }
}



Ejemplo simple de envío - Bridge / Importe Service:

  • CASO DE USO: Envío de marca.
POST                http://demo.napse:8381/api/v1/import                            


INPUT
{
    "service": "brand",
    "store": "0",
    "entityCollection": {
        "brands": [
            {
                "brand": [
                    {
                        "name": "Jeep",
                        "description": "Jeep !!!"
                    },
                    {
                        "name": "Peugeot",
                        "description": "Peugeot !!!"
                    }
                ]
            }
        ]
    }
}


OUTOUT
{
	"ack": "0",
	"detail": "2 registros fueron creados/actualizados",
}






PROVEEDORES

El servicio de integración de proveedores en Bridge permite la carga y actualización de información sobre los proveedores dentro del sistema.


Nombre del Servicio: supplier
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

Suppliers

List

Lista de proveedores a crear o actualizar.

Si



La lista suppliers debe contener entidades del tipo "supplier", cada una representando un proveedor con su información correspondiente.

Propiedad

Tipo de dato

Descripción

Requerido

code

String (100)

Identificador del proveedor.

Si

name

String (100)

Nombre o razón social del proveedor.

Si

fantasyName

String (100)

Nombre de fantasía del proveedor.

No

address

String (100)

Dirección del proveedor.

No

phone

String (100)

Teléfono del proveedor.

No

email

String (100)

Email del proveedor

No

fiscalId

String (100)

Identificador fiscal del proveedor, en Argentina corresponde al CUIT.

No

activeFlag

Boolean

(true/false)

Flag que indica que el proveedor está habilitado en el sistema.

default: true

Si

caiRequired

Boolean

Flag que indica si requiere CAI para las recepciones del módulo de abastecimiento

No

asn

Boolean

Flag que indica si esta integrado con la recepción de remitos electrónicos o ASN

No

frequency

Integer(4)

Días que transcurren entre órdenes de compras

No

automaticMail

Boolean

Indica si se debe enviar de forma automática la orden de compra confirmada al proveedor

No

mail

String(100)

Email al  que se debe enviar de forma automática la orden de compra confirmada al proveedor

No



INPUT - CREACIÓN / EDICIÓN
{
    "service": "supplier",
    "store": "0",
    "entityCollection": {
        "suppliers": [
            {
                "supplier": [
                    {
                        "code": "Proveedor1244",
                        "name": "Proveedor1244",
                        "fantasyName": "Proveedor1244",
                        "address": "VEDIA 2944",
                        "phone": "123456789",
                        "email": "[email protected]",
                        "fiscalId": "36-12345674-1",
                        "activeFlag": true,
                        "caiRequired": false,
                        "asn": true,
                        "frequency": 0
                    }
                ]
            }
        ]
    }
}
OUTOUT - OK
{
    "ack": 0,
    "detail": "1 registro fue creado"
}
OUTPUT OK - UPDATE
{
    "ack": 0,
    "detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
	"ack":999,
	"detail":"El supplier ingresado en el orden 1 no posee nombre (name), 
	 CODE: Proveedor1244"
}




MARCA DEL ARTÍCULO

El servicio de integración de marcas de artículos en Bridge permite la carga y actualización de información sobre las marcas asociadas a los artículos dentro del sistema.


Nombre del Servicio: brand
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

Brands

List

Lista de marcas a crear o actualizar.

Si



La lista brands debe contener entidades del tipo "brand", cada una representando una marca con su información correspondiente. La estructura del JSON para este servicio es la siguiente:

Propiedad

Tipo de dato

Descripción

Requerido

name

String(100)

Identificador de la marca comercial.

Si

description

String(200)

Nombre de la marca.

Si

disabled

Boolean

Flag que indica si la marca está habilitada en el sistema.

No



INPUT - CREACIÓN / EDICIÓN
{
    "service": "brand",
    "store": "0",
    "entityCollection": {
        "brands": [
            {
                "brand": [
                    {
                        "name": "Jeep Compass",
                        "description": "Jeep Compass",
                        "disabled": false
                    }
                ]
            }
        ]
    }
}
OUTOUT - OK
{
    "ack": 0,
    "detail": "1 registro fue creado"
}
OUTPUT OK - UPDATE
{
    "ack": 0,
    "detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
    "ack": 999,
    "detail": "entityImport -> brandImportFromWebService -> ERROR -> Error al crear/actualizar Brand: Jeep Compass, el campo 'description' es obligatorio."
}




NIVELES DE JERARQUÍA DE LOS ARTÍCULOS

El servicio de integración de Niveles de Jerarquía en Bridge permite la carga y actualización de información la lista de niveles de jerarquía que posee la estructura departamental en la cual se agruparán los artículos o Lista de departamentos y secciones que contiene la estructura departamental.



Nombre del Servicio: merchandiseHierarchy

Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

merchHierarchyLevels

List

Lista de niveles de jerarquía que posee la estructura departamental en la cual se agruparán los artículos.

No

merchHierarchyGroups

List

Lista de departamentos y secciones que contiene la estructura departamental.

No



La lista merchHierarchyLevels debe contener entidades "hierarchyLevel", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

code

String (25)

Código del nivel jerárquico.

Si

description

String (100)

Nombre del nivel jerárquico.

Si

level

Integer

Profundidad del nivel, siendo 1 el nivel más alto en la jerarquía.

Si

active

Boolean

Flag que indica que el nivel está habilitado en el sistema. Por default es true.

No



La lista merchHierarchyGroups debe contener entidades "hierarchyGroup", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

code

String (10)

Código de la agrupación jerárquica.

Si

description

String (100)

Descripción de la agrupación.

Si

level

String (25)

Código del nivel jerárquico en que se encuentra esta agrupación.

Si

parentGroup

String (10)

Código de la agrupación "padre" de esta agrupación jerárquica. Si esta agrupación es de nivel 1, entonces no posee un valor en esta propiedad.

No

departamentalItemCode

String (25)

Código del artículo genérico utilizado para ventas departamentales. Sirve para indicar qué artículo se agregará a la transacción al momento de realizar una venta departamental. En general el artículo debería requerir precio, para que obligue al operador a ingresarlo.

No

disabled

Boolean

Flag que indica que la agrupación está deshabilitada en el sistema. Por default es false.

No

isWeb

Boolean

Flag que indica si es una categoría para la web o no (nuevo campo agregado para Bridge Web)

No



INPUT - CREACIÓN / EDICIÓN
{
	"service": "merchandiseHierarchy",
	"store": "0",
	"entityCollection": {
		"merchHierarchyLevels": [
			{
				"hierarchyLevel": [
					{
						"code": "DPT220",
						"description": "Departamento220",
						"level": 220,
						"active": true
					}
				]
			}
		],
		"merchHierarchyGroups": [
			{
				"hierarchyGroup": [
					{
						"code": "MUJ220",
						"description": "Mujer",
						"level": "RUB220",
						"parentGroup": "INDU",
						"departamentalItemCode": "",
						"disabled": false,
						"isWeb": true
					}
				]
			}
		]
	}
}

OUTOUT - OK
{
	"ack": 0,
	"detail": "1 registro fue creado"
}
OUTPUT OK - UPDATE
{
    "ack": 0,
    "detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
    "ack": 999,
    "detail": "No se pudo ingresar ninguna categoria"
}




ATRIBUTOS DE UN ARTICULO

Son atributos que puede tomar un artículo con valores u  opciones asociados


Nombre del Servicio: itemAttribute
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

itemAttributes

List

Lista de atributos del ítem a crear o actualizar.

Si



La lista itemAttributes debe contener entidades “itemAttribute”, las cuales poseen la siguiente estructura:

Propiedad

tipo de dato

Descripción

Requerido

code

String

Código del atributo del ítem

Si

name

String

Descripción del atributo del ítem

Si

dataType

String

Tipo de dato que puede tomar el atributo

Los tipos posibles son: list, string, number, date, boolean

editOpcionsFlag

Boolean

Un campo que NO es requerido, que permita habilitar/deshabilitar la opción de permitir editar opciones en el POS

No

showInfo

Boolean

Indicador si se requiere mostrar o no la información de la opción del atributo (default si no se recibe: false)

No

showRgbBooleanIndicador si se requiere mostrar o no el RGB asignado a la opción del atributo (default si no se recibe: false)No
disabledBooleanIndicador de atributo deshabilitado o no (default si no se recibe: false)No
optionsList

Lista de opciones o valores que tendrá el atributo del ítem

El tag debe agregarse aunque no sea del tipo lista el atributo. <options/>

Requerido con todos los datos cuando el atributo es tipo "lista"

No



INPUT - CREACIÓN / EDICIÓN
{
	"service": "itemAttribute",
	"store": "0",
	"entityCollection": {
		"itemAttributes": [
			{
				"itemAttribute": [
					{
						"code": "outlet",
						"dataType": "list",
						"name": "outlet",
						"disabled": false,
						"showInfo": true,
						"showRgb": false,
						"options": [
							{
								"option": [
									{
										"value": "NACoul",
										"order": 1,
										"info": "NACoul"
									},
									{
										"value": "IMPORTADOoul",
										"order": 2,
										"info": "IMPORTADOoul"
									}
								]
							}
						]
					}
				]
			}
		]
	}
}
OUTOUT - OK
{
	"ack": 0,
	"detail": "1 registro fue creado"
}
OUTPUT OK - UPDATE
{
    "ack": 0,
    "detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
    "ack": 999,
    "detail": "No se pudo ingresar ningun atributo"
}




MAESTRO DE ARTÍCULOS

Este servicio tiene dependencias de otros maestros (marca, proveedores, niveles de jerarquía, unidades de medida, impuesto IVA, depósitos, taxCategory) En caso de que se envíen artículos con datos de los maestros mencionados como dependencias, se debe considerar que esas referencias se hayan informado previamente a Bridge.


Nombre del Servicio: item
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

items

List

Lista de artículos a crear o actualizar.

Si



La lista items debe contener entidades "item", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

Campo de importación

itemCode

String (25)

Código del artículo.

Si


description

String (50)

Descripción del artículo

Si


hierarchyGroupCode

String (10)

Código de la agrupación jerárquica de nivel más bajo al que pertenece el artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla MerchandiseHierarchy (code)

No


price

Decimal(11,2)

Precio de venta por unidad.

Si


unitCostPrice

Decimal(11,2)

Costo de la unidad.

No


specialPrice

Decimal(11,2)

Precio especial de venta para clientes.

No


vatCode

String (3)

Código del tipo de IVA asociado al artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla VAT (campo code)
Los valores que vendrán dados de alta por defecto:
Código – descripción
1 (IVA 0%, utilizado para artículos exentos)
2 (IVA 21%, utilizado para el gral de los artículos de consumo)
3 (IVA 10.5%, utilizado gralmente para los artículos frescos)
4 (IVA 27%, utilizado en servicios como LUZ, GAS, etc.)

Si


notForSaleFlag

Boolean

Flag que indica que el artículo no está a la venta.

No


notForDiscountsFlag

Boolean

Flag que indica que el artículo no admite descuentos.

No


priceRequiredFlag

Boolean

Flag que indica que el artículo requiere el ingreso del precio.

No


weightRequiredFlag

Boolean

Flag que indica que el artículo requiere el ingreso de peso.

No


quantityRequiredFlag

Boolean

Flag que indica que el artículo requiere el ingreso de una cantidad o magnitud.

No


quantityAllowedFlag

Boolean

Flag que indica que el artículo admite el ingreso de cantidad.

No


restrictedSaleFlag

Boolean

Flag de venta en horario restringido

No


logExceptionFlag

Boolean

Flag que indica si debe registrarse en el log de excepciones.

No


authorizationRequiredFlag

Boolean

Flag que indica que el artículo requiere autorización del supervisor.

No


foodStampFlag

Boolean

Flag Food Stamp, indica si está asociado al medio de pago Food Stamp.

No


serialNumberRequiredFlag

Boolean

Flag que indica que el artículo requiere el ingreso de número de serie.

No


returnNotAllowedFlag

Boolean

Flag que indica que el artículo no admite ser devuelto.

No


supplierCode

String (100)

Código del proveedor del artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Supplier (campo code)

No


brandCode

String (100)

Código de la marca del artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Brand (campo name)

No


itemType

String (25)

Código del tipo de artículo.
En este campo los valores admitidos son:

  • CONT (Envase)
  • MISC(Miscelaneos)
  • CHRG (Recargos)
  • NORM (Normal)
  • DEPT(Departamental)
  • GRAL (Generico)
  • WRTY (Garantias)
  • SERV(Servicios)
  • GFCD (GiftCard)
  • FUEL(Combustible)
  • ADJM (Ajuste de combustible)
  • TAE(Tiempo Aire)
  • EXTRACASH(Adelanto en efectivo)

Si


promotionalPrice

Decimal(11,2)

Precio promocional.

No


promotionalPriceDateFrom

DateTime

Fecha y hora de inicio de la vigencia del precio promocional

No


promotionalPriceDateTo

DateTime

Fecha de hora de finalización de la vigencia del precio promocional

No


uomCode

String (25)

Código de la unidad de medida para el artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Uom (campo LU_UOM)
Ej: <uomCode>u<uomCode> – para unidad

  • u (unidad)
  • kg (kilo)
  • g (gramo)
  • l (litro)
  • c3 (centímetros cúbicos)
  • m (metro)
  • cm (centímetro)

Si


lastUpdateSaleUnitPrice

DateTime

Fecha y hora de la última actualización del precio de venta.

No


genericItemFlag

Boolean

Flag que indica que el artículo es genérico.

Si


kitComponentFlag

Boolean

Flag que indica que el artículo es un componente de un kit.

Si


inventoryLocationCode

Varchar (25)

Código del almacén o depósito por defecto
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Location (campo code, tabla Location)

Si

Se importa en el campo location

commissionPercent

Decimal(6,2)

Porcentaje de comisión sobre el artículo que le corresponde al asociado.

No


disabled

Boolean

Flag que indica que el artículo está deshabilitado

Si


itemVATCategory

String (2)

Categoría de IVA del ítem. Los valores posibles son: C, E, F, o G:
C: Exento a Consumidor Final
E: Exento
F: Fresco
G: General

Si


uom2Code

String (1)

Código de la segunda unidad de medida para el artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Uom (campo code)

No


uom2Units

Decimal(14,2)

Factor de conversión entre la primera y la segunda unidad de medida

No


uom2Operation

String (1)

Tipo de conversión.
Posibles valores:
M = Multiplicar
D = Dividir

No


stockReservationRequired

Boolean

Indicador de requiere reserva de stock. Default false. Modifica el flag "Requiere reserva de stock" (FL_STKRES_RQ))

No

 Si el parámetro  store.itemSerializedFlagWithReservationByService  = true cuando en el servicio de importación el item venga con el campo serialNumberRequiredFlag = true, importar

item.stockReservationRequired = true

 Si el parámetro  store.itemSerializedFlagWithReservationByService  = false procede como actualmente (si viene el valor en este campo lo setea con ese valor sino importa el default: false)

genericFieldString1

String (50)

Campo para uso genérico
Todos los campos generic se importan en la tabla
ITM_USR_DATA

No

Importar en ITM_USR_DATA, campo USR_I_STRNG

genericFieldString2

String (50)

Campo para uso genérico

No

Importar USR_II_STRNG

genericFieldString3

String (50)

Campo para uso genérico

No

Importar USR_III_STRNG

genericFieldString4

String (50)

Campo para uso genérico

No

Importar USR_IV_STRNG

genericFieldBoolean1

Boolean

Campo para uso genérico

No

Importar en USR_I_FL

genericFieldBoolean2

Boolean

Campo para uso genérico

No

Importar en USR_II_FL

genericFieldBoolean3

Boolean

Campo para uso genérico

No

Importar en USR_III_FL

genericFieldBoolean4

Boolean

Campo para uso genérico

No

Importar en USR_IV_FL

genericFieldDecimal1

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_I_INT

genericFieldDecimal2

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_II_INT

genericFieldDecimal3

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_III_INT

genericFieldDecimal4

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_IV_INT

importDocReq

Boolean

Indicador si requiere de documento de importación (para serializables)

No


sellerRequired

Boolean

Indicador si requiere el ingreso del vendedor

No


webDescription

Varchar (max)

Descripción ampliada del artículo para la web

No


extendedWebDescription

Varchar (max)

Descripción detallada del artículo para la web

No


internalTaxes

List

Lista de impuestos internos

No


itemPictures

List

Lista de imágenes asociadas

No


formRequiredFlag

boolean

Flag indicador de formulario requerido

No (opcional)

Default = false si no viene informado
Se importará en el campo USR_V_FL de la tabla ITM_USR_DATA

upcStringCódigo Universal de Producto del ArticuloNoEs un dato que permite agrupar varios artículos para listas de precios por umbral y su acumulación de unidades
manufacturerstring

Código del fabricante

En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla manufacturer (campo code)

No (opcional)


exemptFlagboolean

Flag de item exento

No (opcional)

Default = false si no viene informado

otherUnitOfMeasurelist

Lista de unidades de medida complementarias

otherUnitOfMeasure

<uomCode>blister</uomCode>

<conversionFactor>0.1</conversionFactor>

No (opcional)


printCommandsFlagbooleanFlag de ítem para impresión de comandaNo (opcional) 

Default = False si no viene informado.

maxStock Decimal(11,2)Stock Máximo que la Tienda puede tener por ProductoNo (opcional) 

Default = 0 si no viene informado.

securityStockDecimal(11,2)Stock de Seguridad Adicional al forecast

No (opcional)

Default = 0 si no viene informado.

attributesListAtributos de un itemNo (opcional)

  "attributes":[

                  {                     
                     "attribute":[
                        {                         
                           "code": "C-39 ",
                           "option":"0"
                        }
                     ]
                  }
               ]

creditAllowedboolean

Flag que indica si el articulo puede ser vendido con crédito propio

No (opcional, default=false)


blockedForIcd 



boolean

Flag para Artículo bloqueado para Compras y Reposición:

No permite reposición

No (opcional)

Default = false si no viene informado

alcoholicBeverageboolean

Flag que indica si el articulo debe ser validado como bebida alcohólica

No (opcional) 

default=false


affiliateBenefitboolean

Flag que indica si el articulo tiene el beneficio de Afiliado

No (opcional, default=false)


affiliateboolean

Flag que indica si el cliente es Afiliado

No (opcional, default=false)


serialFormatstringPermite definir el tipo de formato admitido para el nro de serie opcional
externalCodenumber

Permite definir el código externo del item

No (opcional)


singleSaleFlagboolean

No admite otro artículo en la venta

No (opcional)


returnRestricctionboolean

Aplica restricciones a la devolución.

No (opcional)


requiresDateboolean

Requiere Fecha.

No (opcional)


minSalePrice

Decimal

Precio mínimo de venta (para cálculo de márgenes para pedidos si aplicara por configuración)

No

minSalePrice

minStockForChannels

number

Cantidad de unidades definidas como stock mínimo para canales 

No


fullDescriptionstringDescripcion ampliadaNo (opcional)


stockItemFlagobject

¿Es un artículo que maneja stock?

  • Es una condicionante que el stockItemFlag viaje en true para que luego se pueda setear valor a los demás campos.
  • Si se envía false luego de haber enviado true, el artículo no pasa a ser "No stockeable"
  • Si viaja en false, omite el valor seteado en los campos:

<itemDepth>1</itemDepth> (Decimal)

<itemHeight>2</itemHeight> (Decimal)

<itemWidth>3</itemWidth> (Decimal)

<itemDiameter>4</itemDiameter> (Decimal)

No (opcional)


itemDepth
NumberDecimalProfundidad del ítem

No (opcional)


itemHeight
NumberDecimalAltura del ítemNo (opcional)


itemNetWeight
NumberDecimalPeso del ítem

No (opcional)


minStockForChannels

NumberDecimalStock Minimo para Canales

No (opcional)


itemGrossWeight
NumberDecimalPeso bruto del ítem

No (opcional)


itemDiameter
NumberDecimalDiámetro del ítem

No (opcional)


itemWidth
NumberDecimalAncho del ítem

No (opcional)


calculateCommissionbooleanCalcula comision

No (opcional)


relevanceintegerRelevancia

No (opcional)


publishedbooleanPublicado

No (opcional)


detailedDescriptionstringDescripcion detallada

No (opcional)


barcodestringCodBarra

No (opcional)


requiresPrescriptionFlagbooleanRequiere recetaNo (opcional)


onConsignmentbooleanConsignado

No (opcional)


classificationstringClasificacion

No (opcional)


daysToReturnintegerDias para devoluciones y cambios

No (opcional)


invoiceNotAllowedbooleanNo permite facturar 

No (opcional)


notForSalebooleanNo admite otro artículo en la venta 

No (opcional)


packQtyintegerEmpaque Mínimo

No (opcional)


gtinintegerCódigo GTIN No (opcional)


requiresValidationExternalFlagbooleanRequiere Validación Externa

No (opcional)


restrictedSaleGroupstringDefine el grupo con el cual se va a permitir vender el ítem dentro de la una misma venta

No (opcional)


exemptTaxedFlagbooleanIndica si el Item es exento de impuestos

No (opcional)

Default = false si no viene informado.

fiscalCategory

string (25)

Clave fiscal del producto o servicio.

Nota para México: este valor está relacionado al campo ClaveProdServ de un CFDI y se deben utilizar las claves de los diversos productos o servicios de conformidad con el catálogo c_ClaveProdServ publicado en el Portal del SAT.

No


saleLocationCode

string

Código del "Depósito para la Venta"

No (opcional)

Se importa en el campo saleLocation



INPUT - CREACIÓN / EDICIÓN
{
    "service": "item",
    "store": "0",
    "entityCollection": {
    "items": [
        {
            "@_type": "list",
            "item": [
                {
                    "@_type": "bean",
                    "itemCode": "22042010",
                    "noBalanceControlRequired": true,
                    "description": "Mate Stanley",
                    "hierarchyGroupCode": "IND",
                    "price": 15000,
                    "promotionalPrice": 15000,
                    "itemType": "NORM",
                    "vatCode": 1,
                    "uomCode": "u",
                    "daysToChange": 4,
                    "genericItemFlag": false,
                    "kitComponentFlag": false,
                    "inventoryLocationCode": "DEP1",
                    "saleLocationCode": "DEP1", 
                     "disabled": false,
                    "itemVATCategory": "G",
                    "restrictedSaleGroup": "TEST"
                }
            ]
        }
    ]
    }
}

Request de item con atributo

INPUT - CREACIÓN / EDICIÓN
   {
    "service": "item",
    "store": "0",
    "entityCollection": {
    "items":[
      {
         "item":[
            {
               "itemCode":"300100002537",
               "noBalanceControlRequired":true,
               "description":"Termo Stanley 900ml",
               "hierarchyGroupCode":"IND",
               "price":80000,
               "itemType":"NORM",
               "vatCode":1,
               "uomCode":"u",
               "daysToChange":4,
               "genericItemFlag":false,
               "kitComponentFlag":false,
               "inventoryLocationCode":"DEP1",
               "saleLocationCode":"DEP1",
               "disabled":false,
               "itemVATCategory":"G",
               "restrictedSaleGroup":"T1",
               "attributes":[
                  {
                     "attribute":[
                        {
                           "code":"COLOR",
                           "option":"AZUL"
                        }
                     ]
                  }
               ]
            }
         ]
      }
   ]
}
}
OUTOUT - OK
{
    "ack": 0,
    "detail": "1 registro fue creado"
}
OUTPUT OK - UPDATE
{
"ack": 0,
"detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": "Item con codigo: , /itemCode must NOT have fewer than 1 characters."
}




CÓDIGOS DE BARRAS – ALIAS

Este servicio tiene dependencia de otro maestro (items) En caso de que se envíen códigos de barras asociados a artículos, los mismos se deben haber informado previamente a Bridge.

Validaciones

Se validará que el código de barras no exista asociado a otro ítem.

  • Un ítem puede tener N códigos de barra asignados 
  • Un código de barras sólo puede estar asignado a un único ítem (si existe el código se pisa el ítem) 

UPDATE 7.9

Se incorpora el campo disabledInPos Indicando si el codigo de barras se encuentra habilitado o no para ser consultado y viaualizado en el POS. Default false


Nombre del Servicio: alias
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

aliases

List

Lista de códigos de barra a crear o actualizar.

Si

La lista aliases debe contener entidades "alias", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

itemCode

String (25)

Código del artículo para el que se agregará o actualizará el código de barras.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Item (campo ItemCode)

Si

barcode

String (25)

Código de barras.

Si

description

String (255)

Descripción del código de barras.

Si

units

Integer

Unidades (si no viene informado se setea = 1) 

No

storeCode

Varchar (20)

Tienda (se guarda luego el ID de tienda en CD_STR_RT)

No

disabled

Boolean

Si el mismo se encuentra activo o no. Default false

No

disabledInPos

Boolean

Indica si el codigo de barras se encuentra habilitado o no para ser consultado y viaualizado en el POS. Default false

No


UPDATE 7.9

Se incorpora el campo disabledInPos Indicando si el codigo de barras se encuentra habilitado o no para ser consultado y viaualizado en el POS. Default false


INPUT - CREACIÓN / EDICIÓN
{
	"service": "alias",
	"store": "0",
	"entityCollection": {
		"aliases": [
			{
				"alias": [
					{
						"itemCode": "2025",
						"barcode": "7791821477292",
						"description": "Item 2025",
						"units": 20,
						"storeCode": 15,
						"disabled": false,
						"disabledInPos": true
					}
				]
			}
		]
	}
}



OUTOUT - OK
{
    "ack": 0,
    "detail": "1 registro fue creado"
}
OUTPUT OK - UPDATE
{
    "ack": 0,
    "detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
    "ack": 999,
    "detail": "El barcode ingresado en el orden 1 no posee código de barras y un campo requerido (barcode)"
}




ARTÍCULOS DE TIPO STOCK

Este servicio tiene dependencia de otro maestro (items) En caso de que se envíen artículos para ser definidos del tipo stock, los artículos se deben haber informado previamente a Bridge.


Nombre del Servicio: stockItems
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

stockItems

List

Lista de artículos de tipo stock a crear o actualizar.

Si

La lista stockItems debe contener entidades "stockItem", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

itemCode

String (25)

Código del artículo de tipo stock que se agregará o acutalizará.

Si

styleCode

String (25)

Código de estilo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Style (campo code. Servicio a implementar)

No

colorCode

String (25)

Código de color.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Color (campo code. Servicio a implementar)

No

sizeCode

String (25)

Código de tamaño.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Size (campo code. Servicio a implementar)

No

containerCode

String (25)

Código de envase.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Container (campo code. Servicio a implementar)

No

Type

String (2)

Código de tipo de stock ítem.

No

saleWeightOrUnitCountCode

String

Código identificador de venta por peso o por unidad. Indica si se vende por peso o como una unidad.

No

pickupCode

String(2)

Código de retiro. Define dónde y cómo un cliente puede retirar este artículo.

No

unitPriceFactor

Decimal(10,4)

Número de unidades de medida por unidad de venta. Se utiliza como divisor en el cálculo del precio de venta de la unidad del artículo común, por ejemplo, 1,67 dólares por libra o $ 2,59 por 32 floz.

No

availableForSaleDate

DateTime

Fecha de disponibilidad para la venta. Por ejemplo, ciertos libros tienen fechas de publicación específicos, fechas de lanzamiento de entretenimiento de música.

No

inventoryAccountingMethodCode

String (2)

Código que define el método de contabilidad del artículo. Ej. Venta al por menor, etc.

No

sellUnitLastReceivedBaseCostAmount

Money

Costo base de la unidad. Excluye subsidios, descuentos, cargos y otros importes que pueden cambiar el costo del artículo.

No

sellUnitLastReceivedNetCostAmount

Money

Costo neto de la unidad. Incluye subsidios, descuentos, cargos y demás sumas que pueden cambiar el costo del artículo. Donde no hay subsidios, etc el costo neto será igual al costo base para un artículo.

No

sellUnitLandedCostAmount

Money

Costo del artículo más servicios. El costo del artículo más el seguro, acarreo, transporte, entrega, seguros, derechos de aduana, etc, que se suman al costo total de entrega de un artículo importado a la tienda.

No

sellUnitLastReceivedCostsEstablishedDate

DateTime

Fecha en que se establecieron los últimos costos recibidos (neto y de base).

No

shrinkFlag

Boolean

Flag que indica que el artículo NO estará disponible en las funcionalidades de conteo y ajuste de stock (se aplicaria al caso de items padre de kits donde el stock sólo se lleva por hijos y no por padre)

No

swellFlag

Boolean

Flag por aumento de peso. Para indicar que el artículo podría aumentar peso desde el momento del pedido hasta el momento de su recepción.

No

model

String

Número o nombre de modelo asignado por el fabricante del artículo.

No

depth

Decimal (15,4)

Medida de la profundidad del artículo.

No

width

Decimal (15,4)

Medida del ancho del artículo.

No

height

Decimal (15,4)

Medida del alto del artículo.

No

diameter

Decimal (15,4)

Medida del diámetro del artículo.

No

grossWeight

Decimal (15,4)

Peso bruto del artículo.

No

netWeight

Decimal (15,4)

Peso neto del artículo.

No

drainedWeight

Decimal (15,4)

Peso drenado del líquido.

No

sizeUomCode

String (25)

Código de unidad de medida utilizada para indicar el tamaño del artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Uom (campo code)

No

weightUomCode

String (25)

Código de unidad de medida utilizada para indicar el peso del artículo.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Uom (campo code)

No

repositionPoint

Decimal (15,4)

Refiere al umbral de reposición necesario para el cálculo del pedido sugerido

No



INPUT - CREACIÓN / EDICIÓN
{
	"service": "stockItems",
	"store": "0",
	"entityCollection": {
		"stockItems": [
			{
				"stockItem": [
					{
						"itemCode": "2025",
						"pickupCode": 1,
						"depth": 10,
						"width": 20,
						"height": 300,
						"grossWeight": 400,
						"sizeUomCode": "cm",
						"weightUomCode": "g"
					}
				]
			}
		]
	}
}



OUTOUT - OK
{
"ack": 0,
"detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": "No se pudo ingresar ningun item"
}



RELACIÓN DE ARTÍCULOS CON PROVEEDORES

Este servicio permitetener por proveedor la lista de artículos que el mismo puede entregar a la tienda. Será utilizada para la generación de órdenes de compra con sus respectivos costos y su código de articulo para el proveedor.


Nombre del Servicio: itemSupplierItem
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

itemSupplierItems

List

Lista de relación entre artículos y proveedores a crear o actualizar.

Si

La lista itemSupplierItems debe contener entidades "itemSupplierItem", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

item

String(25)

Código del artículo.

Si

supplier

String (100)

Identificador del proveedor.

Si

barcode

String (25)

Código de barras para identificar la presentación del artículo

No

lastReceiptSaleByUnitCount

Decimal (19,3)

Ultima cantidad recibida

No

lastReceiptSaleUnitBaseCost

Decimal (19,3)

Costo base por unidad

No

countMinOrder

Decimal (19,3)

Cantidad mínina por pedido

No

countMaxOrder

Decimal (19,3)

Cantidad máxima por pedido

No

disabled

boolean

Indica si la relación está deshabilitada  (Def=false)

No

defaultBarcodeboolean

Indica Código de Barras por defecto

No

effectiveDateTime

date

Fecha vigencia inicio del barcode para el pedido sugerido (barcodes de temporada)

No
expirationDateTimedate

Fecha vigencia fin del barcode para el pedido sugerido (barcodes de temporada)

No
supplierItemCodestring

Código SKU del Proveedor

No
store.codestring

Código de la Tienda.

No



INPUT - CREACIÓN / EDICIÓN
{
	"service": "itemSupplierItem",
	"store": "0",
	"entityCollection": {
		"itemSupplierItems": [
			{
				"itemSupplierItem": [
					{
						"item": 2025,
						"supplier": 1808,
						"lastReceiptSaleByUnitCount": 50,
						"lastReceiptSaleUnitBaseCost": 20
					}
				]
			}
		]
	}
} 
OUTOUT - OK
{
"ack": 0,
"detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": "No se importaron algunos registros"
}



LISTA DE PRECIOS DE ARTÍCULOS

Este servicio tiene dependencia de otro maestro (items).

En caso de que se envíen listas de precios, los artículos se deben haber informado previamente a Bridge.

El lote de registros debería pertenecer a la misma tienda. Por tal motivo en el request a enviar, el campo <store>codigoTienda</store> debería venir informado el código de la tienda a la cual pertenecen los registros informados dentro del mismo lote.

No se debería enviar <store>0</store>. Esto es para evitar que todas las tiendas reciban registros que no son de esa tienda.



Nombre del Servicio: itemSellingPrices
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

itemSellingPrices

List

Lista de listas de precios

Si

La lista itemSellingPrices debe contener entidades "itemSellingPrice", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

Detalle

itemSellingPriceNumber

Integer

Número de lista de precios

Si


stores

List

Lista de tiendas

(opcional) si no vienen informados códigos de tienda se asume que es para todas

Ej: <stores></stores>

<stores type="list">

      <store type="bean">

             <storeCode>1</storeCode>

      </store>

 </stores>

No

con cada Code recibido, se busca el id del store

  • BusinessUnitGroupItem.store
    Admite una lista

Cuando se importa la lista de precios, se considera la o las tiendas informadas dentro del request, para las cuales se generará la replicación.

Si viene la lista vacía <stores></stores> se debe generar la replicación a todas las tiendas, sino solo a las tiendas informadas

Ya no se tendrá en cuenta el parámetro externo para definir las tiendas a las que se debe replicar

effectiveDateTime

Date

Fecha de inicio de vigencia.

Si


expirationDateTime

Date

Fecha de expiración de la vigencia.

Si


Ítems

List

Lista de precios de artículos a crear o actualizar.

Si


partyRoleCode

Varchar (25)

Código de tipo de rol de un cliente

No


currencyCodeVarchar (3)

Código de la moneda

Descripción de moneda

Código de moneda

DOLAR

USD

EURO

EUR

GUARANI

PYG

PESO MEXICANO

MXN

PESO ARGENTINO

ARS

PESO CHILENO

CLP

PESO URUGUAYO

UYU

REAL

BRL

SOL

PEN

No

itemSellingPricesStatus

Integer

Estado de la lista de precios.
Enviar 1 → si se encuentra "activo"
Enviar 2 → si se encuentra "inactivo"

No
Si no se envía se guarda el default: 1

NOTA: si se encuentra configurada la propiedad "Workflow de aprobación lista de precios" = SI, siempre se importará como "Pendiente de aprobación" ignorando el valor que se setea en este campo Status (a partir de v7.9)

channels

Lista        

Lista de canales de la lista de precios (opcional)

Ej: <channels></channels>

<channels type="list">

           <channel type="bean">

               <code>bridge</code>

           </channel>

</channels>

No



storeGroups


Lista de grupo de tiendas (opcional)

<storeGroups  type="list">

    <storeGroup type="bean">           

                 <code>NORTE</code>

     </storeGroup>

</storeGroups>

No

NOTA: modificaciones al grupo de tienda posteriores al envío de las listas no afectarán las listas. 

La lista items debe contener entidades "item", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

itemCode

Varchar (25)

Código de producto

Si

Barcode

Varchar (25)

Código de alias

No

currentSaleUnitRetailPriceAmount

float

Precio actual.

Si

currentSaleUnitRetailPriceEffectiveDate

Date

Fecha de vigencia desde para el precio actual

Si

currentSaleUnitRetailPriceExpirationDate

Date

Fecha de vigencia hasta para el precio actual

Si

permanentSaleUnitRetailPriceAmount

Float

Precio permanente.

Si

PermanentSaleUnitRetailPriceEffectiveDate

Date

Fecha de vigencia desde para el precio permanente

Si

currentSaleUnitRetailPriceTypeCode

Varchar (50)

Tipo de precio representado por el precio actual (current). Default 'pr1'

No

manufacturerSaleUnitRecommendedRetailPriceAmount

Money

Precio de venta recomendado por el proveedor.

Si

supplierItem

varchar (100)

Código del proveedor del ítem

no (opcional)

supplierItemAmount

Money

Monto que el proveedor reconoce (monto del recupero)

no (opcional)

supplierFinancial

varchar (100)

Código del proveedor financiero del ítem

no (opcional)

supplierFinancialAmount

money

monto que el proveedor Financiero reconoce 

no (opcional)

limit

number

límite de unidades que se podrán vender a ese precio
paso ese límite dentro de la transacción Promo informará el precio de lista

no (opcional)

discountable

boolean

Indicador si aplica o no promociones (si no se envía default: true)

no (opcional)

manualDiscount

boolean

Indicador si aplica descuento manual si o no (si no se envía default: true)

no (opcional)

currentPackagePriceQuantity

number

Cantidad a superar para precio mayorista (umbral)

no (opcional)

currentPackagePrice

number

Precio mayorista superando la cantidad definida como umbral

no (opcional)

currentPackagePriceInitEffectiveDate

date

Fecha de inicio de vigencia de umbral

no (opcional)

currentPackagePriceEndEffectiveDate

date

Fecha de fin de vigencia del umbral

no (opcional)

isDefault (v1.3)booleanIndicador si la lista es default (para los casos en los cuales se trabaja con código de barras en listas de precios)no (opcional)
currentSalePriceUnitOfMeasureNumberDecimalPrecio por Unidad de Medida Actual.no (opcional)
currentSalePriceUnitOfMeasurePermanentNumberDecimalPrecio por Unidad de Medida Permanente.no (opcional)
unitOfMeasurestringUnidad de Medida de Precio Actual.no (opcional)



INPUT - CREACIÓN / EDICIÓN
{
	"service": "itemSellingPrices",
	"store": "0",
	"entityCollection": {
		"itemSellingPrices": [
			{
				"itemSellingPrice": [
					{
						"itemSellingPriceNumber": 221,
						"stores": [
							{
								"store": [
									{
										"storeCode": 15
									}
								]
							}
						],
						"effectiveDateTime": "05-01-2025",
						"expirationDateTime": "12-12-2025",
						"partyRoleCode": "",
						"currencyCode": "",
						"items": [
							{
								"item": [
									{
										"itemCode": "1112",
										"barcode": "",
										"currentSaleUnitRetailPriceAmount": 15000,
										"currentSaleUnitRetailPriceEffectiveDate": "05-01-2025",
										"currentSaleUnitRetailPriceExpirationDate": "12-12-2025",
										"currentSaleUnitRetailPriceTypeCode": "pr1",
										"permanentSaleUnitRetailPriceAmount": 8000,
										"permanentSaleUnitRetailPriceEffectiveDate": "12-12-2025",
										"manufacturerSaleUnitRecommendedRetailPriceAmount": 8000,
									}
								]
							}
						]
					}
				]
			}
		]
	}
}
OUTOUT - OK
{
"ack": 0,
"detail": "1 registro fue creado"
}
OUTPUT OK - UPDATE
{
"ack": 0,
"detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": "En la lista de precio ingresada en orden 1, La tienda 46 no existe, por lo tanto no se procesará nada dentro de esa lista"
}




STOCK POR DEPÓSITO

Este servicio tiene dependencias de otros maestros (ítems y depósitos) En caso de que se envíen las unidades en stock, los artículos y depósitos ya se deben haber informado previamente a Bridge.
Este servicio es utilizado para realizar la carga inicial de stock en una tienda ya sea porque se trata de una nueva tienda o porque se quiere pisar el stock al inicio del período con el stock del ERP. Es preciso especificar en el request a qué tienda debe ser replicado el stock.
Consideraciones:

  • Si se trata de una tienda Bridge, la misma debe estar cerrada para que el stock se actualice. 
  • Las reservas realizadas serán dadas de baja
  • Si hubieran artículos serializables o que requieren lote, se deberá enviar el listado completo de series / lotes con stock. 
    • Si hubiera diferencias entre la lista de series / lotes y las cantidades informadas, el stock de ese artículo no será actualizado.
  • No se actualizará el stock de los ítems no informados. Es decir, si la relación entre la tienda/depósito/SKU/estado no fuera enviada en el servicio, el stock de la base de datos no será actualizado



Nombre del Servicio: stock
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

stocks

List

Lista de artículos con su respectivo stock para un depósito en particular

Si



La lista stocks debe contener entidades "stock", las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

storeCode

Varchar (20)

Código de la tienda

Si

locationCode

String (25)

Código del depósito

Si

itemInventoryState

String (25)

Estado del depósito. La lista de valores disponibles es:
'onSale' (ítems a la venta)
'OnLayaway' (Items apartados)
'TransitIn' (Items en tránsito de entrada)
'TransitOut' (Items en tránsito de salida)

Si

revenueCenter

String (50)

Código identificador del Centro de Costo al que está asociado por default el depósito
(enviar el valor RCD)

Si

items

List

Lista de artículos en el depósito junto con su cantidad de unidades en stock

Si


La lista items debe contener entidades “item”, las cuales poseen la siguiente estructura: 

Propiedad

Tipo de dato

Descripción

Requerido

itemCode

String (25)

Código del artículo

Si

stockUnits

Decimal (7)

Cantidad de unidades en stock (default 0)

Si

serializedItems 

List

Lista de series o lotes del artículo

Sólo se procesará esta lista cuando el parámetro store.serialStockImportProcess = true

Si cuando el ítem requiere serie o lote.


La lista items serializables o que requieren lote/despacho debe contener entidades “serializedItem”, las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

serialNumber

String (50)

Nro de serie

NOTA: se podrá recibir el mismo nro de serie siempre y cuando pertenezca a un item diferente

ejemplo de combinación posible:

heladera art 123, serie 1122

microondas art 980, serie 1122

Si cuando el ítem requiere serie

serializedUnitCode

String (50)

Código del serialized

NOTA: este código debe ser único por item (se importa en el campo SerializedUnit.code)

Si cuando el ítem requiere serie

importDocNumber

String (50)

Nro de lote o pedimento

Si cuando el ítem requiere lote

customsNumber

String (50)

Número de aduana

No

customsDate

DateTime

Fecha de aduana

No

manufacturingDate

DateTime

Fecha de fabricación

No

stockUnits

Decimal (7)

Cantidad de unidades en stock (default 0)
Nota: si el ítem requiere serie, se debe enviar cantidad 1

Si


IMPORTANTE

La sumatoria de stockUnits de la lista debe ser igual a la cantidad de stockUnits informada en el ítem.



INPUT - CREACIÓN / EDICIÓN
{
	"service": "stock",
	"store": "0",
	"entityCollection": {
		"stocks": [
			{
				"stock": [
					{
						"storeCode": 15,
						"locationCode": "DEP1",
						"revenueCenter": "RCD",
						"itemInventoryState": "OnSale",
						"items": [
							{
								"item": [
									{
										"itemCode": "1112",
										"stockUnits": 3,
										"serializedItems": [
											{
												"serializedItem": [
													{
														"serialNumber": "000000000000000020",
														"stockUnits": 1,
														"serializedUnitCode": "0000000001"
													},
													{
														"serialNumber": "000000000000000021",
														"serializedUnitCode": "0000000002",
														"stockUnits": 1
													},
													{
														"serialNumber": "000000000000000022",
														"serializedUnitCode": "0000000003",
														"stockUnits": 1
													}
												]
											}
										]
									}
								]
							}
						]
					}
				]
			}
		]
	}
}
OUTOUT - OK
{
"ack": 0,
"detail": "Se importo con exito"
}
OUTOUT - ERROR
{
"ack": 0,
"detail": "No se importaron algunos registros"
}




MONEDA/MEDIO DE PAGO: COTIZACIÓN DE MONEDAS

Se podrá enviar la cotización asociada a una moneda que tomará el medio de pago que así lo tenga asociado.

Este servicio tiene dependencia de otro maestro (tender).

Las configuraciones del medio de pago deben aplicar sobre un medio de pago ya existente con lo cual ya tendrá su configuración de tienda y mediante el servicio se actualizará.



Nombre del Servicio: storeTender
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

storeTenders

List

Lista de configuraciones de medios de pago del tipo efectivo a actualizar.

Si



La lista "storeTenders" debe contener entidades “storeTender”, las cuales poseen la siguiente estructura:

Propiedad

Tipo de dato

Descripción

Requerido

tenderTypeCode

String (25)

En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla tender (código)

si

supervisorRequired

Boolean

Flag requiere autorización del supervisor

no - default: false

foreignCurrency

Boolean

Indicador de moneda extranjera

si

foreignCurrencyQuoteFactor


Decimal

Cotización de  moneda extranjera

Debe ser mayor a 0

si

foreignCurrencySellingQuoteFactor


Decimal

Cotización de  moneda extranjera tipo de vendedor (utilizado para facturación en moneda extranjera)

Debe ser mayor a 0

si



INPUT - CREACIÓN / EDICIÓN
{
	"service": "storeTender",
	"store": "0",
	"entityCollection": {
		"storeTenders": [
			{
				"storeTender": [
					{
						"tenderTypeCode": "Dllr",
						"supervisorRequired": false,
						"foreignCurrency": true,
						"foreignCurrencyQuoteFactor": 6130,
						"foreignCurrencySellingQuoteFactor": 6660
					}
				]
			}
		]
	}
}



OUTOUT - OK
{
"ack": 0,
"detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": "No se pudo ingresar ninguna configuración de medio de pago"
}




CLIENTES

Servicios relacionados al cliente, condición impositiva y tipo de cliente

Este servicio permitirá informar la lista de clientes con sus datos tanto personales (nombre, apellido, etc), de contacto (domicilio, teléfono, mail) como los fiscales (tipo de categoría impositiva, CUIT, IIBB, etc)

Dependiendo del tipo de cliente podrá ser persona u organización.



Nombre del Servicio: customer

Parámetros de entrada:

  Propiedad

Tipo de dato

Descripción

Requerido

customers

List

Lista de clientes a crear o actualizar.

Si


La lista customers debe contener entidades “customer”, las cuales poseen la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

code

Varchar (50)

Código del cliente

Las posibles configuraciones son:

A) DocNbr&Store

  • Tipo de documento (2 dígitos – se completa con ceros a la izquierda)
  • Nro de Documento (11 dígitos – se completa con ceros a la izquierda)
  • Código de la tienda   (sin conversión, es un campo varchar)


Ejemplo

<CustomerID> 0100099988877ABC1 </CustomerID> - Código del cliente

       <Type>1</Type> -- tipo de doc DNI

       <Identifier>99988877</Identifier> -- Nro de documento

       <RetailStoreID>ABC1</RetailStoreID> -- código de tienda


B) DocNbr  

  • Tipo de documento   (2 dígitos – se completa con ceros a la izquierda)
  • Documento   (11 dígitos – se completa con ceros a la izquierda)


Ejemplo

<CustomerID> 0100099988877 </CustomerID> - código del cliente

       <Type>1</Type> -- tipo de doc DNI

       <Identifier>99988877</Identifier> - Nro de documento


Tipos de documentos:

  • 1 – DNI
  • 2 – Pasaporte
  • 3 – CUIT
  • 4 – CUIL


Si

store

Varchar (10)

Código de identificación de la tienda

No

origin

String

Origen de creación del cliente (el texto que se recibe se guarda en el campo party.origin)

No

birthCountryCode

String

Nacionalidad

No

highestEducationLevelName

Varchar (100)

Nivel educativo

No

lifeCycleType

Varchar (50)

Tipo de ciclo de vida del cliente en la tienda

No

annualIncomeAmount

Decimal

Ingreso anual

No

maritalStatusCode

code

 

Varchar (50)

Estado civil - Código del Estado civil (tiene que ser un valor existente de la CR_MaritalStatus (campo CODE)

Ejemplo:

<maritalStatusCode>
       <code>2</code>
</maritalStatusCode>


No

religiousAffiliationName

Varchar (50)

Preferencia religiosa

No

itemSellingPriceNumber


int

Lista de precios asociada al cliente (debe ser un nro de lista existente en tienda) Opcional

No

customerAccounts

 

List

Cuentas del cliente con el retailer (ver “ Cuenta del cliente ” para el detalle de su estructura)

Es opcional (se utiliza para asociar cuentas y tarjetas) Si no se enviará esta información se podrá enviar la lista vacía

<accounts type="list"></accounts>

No

party

Bean

Entidad que representa al Participante con sus datos ( la estructura puede verse bajo el título "Tipo de cliente")

Si

email

Varchar (100)

Direccion de email (se utilizará generar el usuario web para Bridge Web)

No

disabled

boolean

Indicador de cliente deshabilitado

No (default: false)

exemptFlag

boolean

Indicador de cliente exento

No (default: false)

partyCrParty

Varchar(25)

Personería del cliente: F para física, J para jurídica, E para extranjero

No

partyCrSegment

Varchar(25)

Clase de cliente: VIP, Dificil de cobrar, etc. Enviar el código

No

partyCrWorkActivity

Varchar(25)

Corresponde al Ramo del cliente. Enviar el código

No

partyCrProfile

Varchar(25)

Corresponde al tipo de cliente crediticio (Z1 / Z2)

No

isCreditParty (a partir de v7.4)booleanIndica si es un "Cliente de crédito"

No (default: false)

creditDisabledbooleanIndica si "Cuenta corriente deshabilitada"

No (default: false)

creditLimitAmountnumberMonto límite de créditoNo 
creditTransactionLimitAmountnumberMonto límite de compra (en una sola transacción)No

creditDayLimitAmount

numberMonto límite de compra por díaNo
billPeriodstring

Período de facturación (semanal: 7, quincenal: 15, mensual: 30)

Si se envía, se deben enviar solo los valores 7, 15 o 30

No
billExpirationDaysnumberDías de vencimiento facturaNo
isPrePaidPartybooleanIndica si "es un cliente de prepago"No (default: false)
prepaidDisabledbooleanCliente de prepago deshabilitadoNo (default: false)
affiliatebooleanIndica si el cliente se encuentra habilitado para realizar operaciones con productos que posean el beneficio de Afiliado (recaudos, Colombia)No (default: false)
partyFiscalRegimestringCódigo de regimen fiscal (utilizado en Mx para su factura electrónica)No 



Tipo de cliente

Se informa detalle sobre el cliente, el cual dependiendo de si es persona física u organización se requieren de algunos datos puntuales:

  • Persona física: firstName, lastName, genderType, type, birthday, month year
  • Organización: name, type, taxesRegistrations
    • Ambos: identifications, roleAssignments


La entidad <party> posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

firstName

Varchar (50)

Primer nombre (Persona Física)

Si para persona (es requerido si es cliente del tipo persona)

No para organización (no es requerido si es un cliente del tipo organización)

middleNames

Varchar (50)

Segundo nombre (Persona Física)

No

lastName

Varchar (50)

Apellido (Persona Física)

Si para persona (es requerido si es cliente del tipo persona)

No para organización (no es requerido si es un cliente del tipo organización)

secondLastName

Varchar (50)

Segundo apellido (Persona Física)

No

genderType

Char (1)

Genero (Persona Física)   “F” o “M”

No

name

Varchar (150)

Nombre de la organización (Organizacion)

No para persona (no es requerido si es cliente del tipo persona)

Si para organización (si es requerido si es un cliente del tipo organización)

typecode

Varchar (3)

Tipo de participante. Posibles valores: PRS o OGN

Persona (PRS) o Organización (OGN)

Si

birthCountryCode

Varchar (15)

Nacionalidad (se debe enviar el código. Para Argentina enviar ARG)

Código

País

ARG

Argentina

BOL

Bolivia

BRA

Brazil

CHL

Chile

ECU

Ecuador

MEX

México

PAN

Panamá

PRY

Paraguay

PER

Peru

URY

Uruguay

VEN

Venezuela

No

birthDayNumber

Integer

Dia de nacimiento

No

birthMonthNumber

Integer

Mes del nacimiento

No

birthYearNumber

Integer

Año de nacimiento

No

roleAssignments

List

Lista de roles que puede tener el participante (L a estructura puede verse bajo el título "Rol del participante", ver “Rol del participante”)

Si  

identifications

List

Lista de identificaciones del participante ( La estructura puede verse bajo el título "Identificaciones", ver “Identificaciones” )

Si

taxesRegistration

List

Lista de impuestos del cliente (L a estructura puede verse bajo el título "Impuestos" , ver “Impuestos” ) Es opcional.

No



Rol del cliente

Los roles de un participante permiten definir que tipo de relación mantiene el participante con el retailer, pudiendo ser su cliente, empleado, etc.

La asignación de rol para el participante es requerida. La lista no puede venir vacía. El tipo de rol del cliente, es el dato que el POS utilizará para su envío a PROMO para cálculo de promociones por tipo de cliente.


La lista roleAssignments debe contener entidades “ partyRoleAssignment ”, las cuales poseen la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

partyRole id

 

Varchar (15)

Identificador del rol.

Este campo será utilizado para el envío a PROMO por tipo de cliente. Este listado es del tipo de roles que se crean por setup en la instalación.


Puede ser unos de los siguientes valores:

  1. (Cliente)
  2. (Empleado)
  3. (Posible cliente)
  4. (Proveedor)
  5. (Ejecutivo de ventas)
  6. (Ejecutivo de compras)


TY_RO_PRTY

NM_RO_PRTY

DE_RO_PRTY

CD_RO_PRTY

1

Cliente

Denota un cliente de la empresa

1

2

Empleado

Denota un empleado de la empresa cliente/proveedora

2

3

Posible cliente

Denota un cliente potencial para la empresa

3

4

Proveedor

Entidad que provee de mercaderías a la empresa

4

5

Ejecutivo de ventas

Denota un ejecutivo de ventas de la empresa proveedora

5

6

Ejecutivo de compras

Denota un ejecutivo de compras de la empresa cliente

6

Si

Name

Varchar

Nombre del rol.  Se valida que corresponda al nombre del rol indicado en el campo partyRoleId (campo NM_RO_PRTY)

Ej: “Cliente”, “Empleado”

Este campo es caseSensitive, con lo cual debe enviarse tal cual se encuentra creado en el ABM de tipos de clientes (campo nombre) 

Si

effectiveDate

Date

Fecha de inicio de vigencia del rol

Si

expirationDate

Date

Fecha de expiración del rol

Si

statusCode

Integer

Estado de la asignación del rol al party

No

contactMethods

List

Lista de métodos de contacto (L a estructura puede verse bajo el título "Metodos de contacto"   , ver “ Metodos de contacto” )

SI  (al menos debe tener uno)



Métodos de contacto del cliente

Un cliente puede tener más de un medio de contacto con el retailer. Por cada método de contacto del cliente (ej: laboral, particular) se podrá recibir una dirección, un teléfono, un mail


La lista contactMethods debe contener entidades “ partyContactMethod ”, las cuales poseen la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

purposeType id

Integer

Id del tipo de propósito del contacto. El listado de los valores ya precargados por setup son los siguientes valores:

1 – Emergencia

2 – Consulta (default)

Si

methodType id

Integer

Id del tipo de método de contacto. Estos valores vienen configurados en el setup o podrán ser ajustados por BM.

Puede ser unos de los siguientes valores:

1 – Particular

2 – Laboral

Si

name

String

Nombre del método de contacto (ej: personal, laboral) 

No

externalSellerID 

String

Opcional 

ID del vendedor externo

No

externalSellerName 


String

Opcional

Nombre del vendedor externo 

Ejemplo

<partyContactMethod type="bean">
    <purposeType id="2" />
    <methodType id="2" />
    <effectiveDate format="dd-MM-yyyy">01-01-2000</effectiveDate>
    <expirationDate format="dd-MM-yyyy">31-12-2050</expirationDate>
    <externalSellerID>123</externalSellerID>                     
    <externalSellerName>Juan Perez</externalSellerName>        

</partyContactMethod>
No

effectiveDate

Date

Fecha de inicio vigencia

Si

expirationDate

Date

Fecha expiración del contacto

Si

address

Bean

Domicilio (L a estructura puede verse bajo el título "Domicilio", ver “Domicilio” )

No

emailAddress

Bean

Correo Electrónico(L a estructura puede verse bajo el título "Correo electrónico", ver “Correo electrónico” )

No

telephone

Bean

Teléfono(L a estructura puede verse bajo el título "Teléfono"   , ver “Teléfono” )

No

itemSellingPriceNumber

int

Lista de precios asociada al cliente (debe ser un nro de lista existente en tienda) para ese domicilio en particular (disponible a partir de versión 7.8)

No

deliveryCode

String

Código del reparto o distribución (a partir de v7.8)

No



Domicilio

Permite dar de alta la dirección de un cliente para un determinado tipo de contacto con el mismo. Es requerido contar con la primera línea de la dirección, su ciudad.


La entidad address posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

city

Bean

Ciudad. (L a estructura puede verse bajo el título "Ciudad", ver Ciudad )

Si

country

Bean

País. (L a estructura puede verse bajo el título "País", ver País )

No

state

Bean

Estado. (L a estructura puede verse bajo el título "Estado", ver Estado )

No

firstLine

Varchar (150)

1ra línea de la dirección

Si

secondLine

Varchar (100)

2da línea de la dirección

No

thirdLine

Varchar (100)

3ra línea de la dirección

No

fourthLine

Varchar (100)

4ta línea de la dirección

No

postalCode

Varchar (20)

Código postal (si se envia cityLocation, lo toma automáticamente )

No

postalCodeEx

Varchar (20)

Extensión del código postal

No

betweenStreets

Varchar (100)

Entre calles

No

cityLocation

Varchar (20)

Colonia (País, Estado, ciudad y Colonia)

No


{
    "address": [
        {
            "@_type": "bean",
            "city": [
                {
                    "@_type": "bean",
                    "code": "004CMX"
                }
            ],
            "country": [
                {
                    "@_type": "bean",
                    "code": "MEX"
                }
            ],
            "state": [
                {
                    "@_type": "bean",
                    "code": "CMX"
                }
            ],
            "cityLocation": [
                {
                    "@_type": "bean",
                    "code": "286605410"
                }
            ],
            "firstLine": "Av. Juarez",
            "secondLine": "5432",
            "thirdLine": "Numero interior",
            "betweenStreets": "Entre calles",
            "postalCode": "05000"
        }
    ]
}


Ciudad

La entidad ciudad posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

code

Varchar (15)

Código de ciudad

Enviar campo CODE de tabla CITY

Si


País

La entidad país posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

code

Varchar (15)

Código de país

Enviar campo CODE de la tabla COUNTRY

Si


Estado

La entidad estado posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

code

Varchar (15)

Código de estado

Enviar campo CODE de la tabla STATE

Si


Correo electrónico

La entidad emailAddress posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

name

Varchar (100)

Correo Electronico

Si


Telefono

La entidad telephone posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

areaCode

Varchar (6)

Código de área

Si

telephoneNumber

Varchar (20)

Número de teléfono local

Si

countryCode

Varchar (3)

Código de país

Si

extensionNumber

Varchar (15)

Número de extensión telefónica

No

completeNumber

Varchar (32)

Número telefónico completo

No


Identificaciones

Las identificaciones asociadas al cliente permitiendo registrar su documento, pasaporte o CUIT.

Si un cliente es del tipo persona tendrá su DNI o pasaporte. Un cliente del tipo organización su CUIT.

La lista de identificaciones no puede estar vacía. En caso de que el cliente no sea consumidor final, se valida que la primera identificación sea tipo CUIT (Requisito de la impresora fiscal)


La lista “identifications” debe contener entidades “partyIdentification”, las cuales poseen la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

identificationType id

 

Integer

Id del tipo de identificador. Puede ser unos de los siguientes valores

Para Argentina:

  • 1 (DNI)
  • 2 (Pasaporte)
  • 3 (CUIT)
  • 4 (CUIL)


Para Uruguay

  • 1 (NIE)
  • 2 (RUC UY) 
  • 3 (Cédula UY)
  • 4 (Otros)
  • 5 (Pasaporte)
  • 6 (DNI)
  • 7 (NIFE)


Para México

  • 8 (INE)
  • 9 (RFC)
  • 10 (CURP)


Para Chile

  • 11 (RUT)


Para Colombia 

  • 12 (Cedula de Ciudadanía)
  • 13 (Cédula de extranjería)
  • 14 (Nit)
  • 15 (Pasaporte)
  • 16 (Registro Civil)
  • 17 (Tarjeta de identidad)
  • 18 (Certificado de Nacido Vivo)
  • 19 (Permiso Especial de Permanencia)


Si

identifierValue

Varchar (20)

Nro de la identificación

Si

issueDate

Date

Fecha de emisión de la identificación

No

expirationDate

Date

Fecha de expiración de la identificación

No



Cliente Persona

INPUT - CREACIÓN / EDICIÓN
{
	"service": "customer",
	"store": "0",
	"entityCollection": {
		"customers": [
			{
				"@_type": "list",
				"customer": [
					{
						"@_type": "bean",
						"code": 123456,
						"store": 1,
						"party": [
							{
								"@_type": "bean",
								"firstName": "DANIEL",
								"lastName": "GONZALEZ",
								"genderType": "M",
								"typeCode": "PRS",
								"birthCountryCode": "ARG",
								"birthDayNumber": 22,
								"birthMonthNumber": "08",
								"birthYearNumber": 1994,
								"roleAssignments": [
									{
										"@_type": "list",
										"partyRoleAssignment": [
											{
												"@_type": "bean",
												"partyRole": [
													{
														"@_id": "1",
														"name": "Cliente"
													}
												],
												"effectiveDate": [
													{
														"#text": "23-08-2017",
														"@_format": "dd-MM-yyyy"
													}
												],
												"expirationDate": [
													{
														"#text": "30-12-2200",
														"@_format": "dd-MM-yyyy"
													}
												],
												"contactMethods": [
													{
														"@_type": "list",
														"partyContactMethod": [
															{
																"@_type": "bean",
																"purposeType": [
																	{
																		"@_id": "2"
																	}
																],
																"methodType": [
																	{
																		"@_id": "1"
																	}
																],
																"effectiveDate": "2017-08-23T16:32:37.947",
																"expirationDate": "2200-12-30 00:00:00.000",
																"address": [
																	{
																		"@_type": "bean",
																		"city": [
																			{
																				"@_type": "bean",
																				"code": 7346
																			}
																		],
																		"country": [
																			{
																				"@_type": "bean",
																				"code": "PER"
																			}
																		],
																		"state": [
																			{
																				"@_type": "bean",
																				"code": 7
																			}
																		],
																		"firstLine": "AVDA SAN MARTIN 486",
																		"postalCode": 3206
																	}
																],
																"emailAddress": [
																	{
																		"@_type": "bean",
																		"name": "[email protected]"
																	}
																],
																"telephone": [
																	{
																		"@_type": "bean",
																		"areaCode": 11,
																		"telephoneNumber": 23878065,
																		"countryCode": 54
																	}
																]
															}
														]
													}
												],
												"sequenceNumber": 1
											}
										]
									}
								],
								"identifications": [
									{
										"@_type": "list",
										"partyIdentification": [
											{
												"@_type": "bean",
												"identificationType": [
													{
														"@_id": "1"
													}
												],
												"identifierValue": 95873666
											}
										]
									}
								]
							}
						]
					}
				]
			}
		]
	}
}



Tipo de cliente empresa

Adicionalmente tiene datos impositivos asociados



  • IMPUESTOS

La lista de impuestos asociadas al cliente, permiten tener su información fiscal dependiendo sea un participante del tipo persona u organización (CUIT e IIBB)

Es opcional si es del tipo persona, pero requerido para una organización.


La lista taxRegistrations debe contener entidades “taxRegistration”, las cuales poseen la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

number

Varchar (30)

Número de registro (nro de CUIT o de IIBB)

Si

name

Varchar (50)

Nombre de la persona u organización para el registro (es solo informativo para dejar registro del tipo de registro impostivo del cliente. Ej: “Resp iscripto IVA”)

Si

taxTypes

List

Tipos de impuestos ( La estructura puede verse bajo el título "Tipos de impuestos", ver “Tipos de impuestos” )

Si



  • TIPOS DE IMPUESTOS

Se informarán todos los datos impositivos del cliente referidos a certificado de eximición (si los tuviera) y los datos de alícuota del mismo (si tuviera una diferencial por padrón)


La lista taxTypes debe contener entidades “ taxRegistrationTaxType ”, las cuales poseen la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

jurisdictionNType

Bean

Identificador del tipo de jurisdicción e impuesto (La estructura puede verse bajo el título “Tipo de jurisdicción e impuestos”, ver “ Relaciones impositivas   anidadas

Si

inscEffectiveDate

Date

Fecha efectiva desde la cual la jurisdicción reconoce el registro impositivo del cliente

Si

inscExpirationDate

Date

Fecha de expiración   desde la cual la jurisdicción ya no reconoce el registro impositivo del cliente

Si

unifiedFactor

Integer

Coeficiente unificado (es un valor que se le asigna al cliente en base a su nivel de facturación que permite eximirlo del cobro de la alícuota si el coeficiente unificado del cliente supera el determinado valor configurado para el coeficiente unificado para el impuesto)

No

certificates

List

Lista de certificados(L a estructura puede verse bajo el título "Certificados", ver “Certificados”)

Es opcional y se informan los certificados de eximición de IIBB

No

aliquot

decimal

Alícuota del cliente (es el porcentaje que se debe aplicar de percepción según padrón, en caso de contar con esta alícuota, se utilizará ésta en lugar de la alícuota configurada por defecto para el impuesto, siempre y cuando la misma se encuentre en vigencia fecha de alícuotas vigentes)

No

aliqEffectiveDate

date

Fecha de vigencia de alícuota (desde) Si se envía la alícuota se validará la fecha de vigencia en el POS

No

aliqExpirationDate

date

Fecha de vigencia de alícuota (hasta) Si se envía la alícuota se validará la fecha de vigencia en el POS

No



  • CERTIFICADOS

Es una lista opcional. Su fin es informar los certificados de eximición de IIBB con su vigencia y su porcentaje de eximición del cliente. Estos certificados deben estar relacionados con la jurisdicción en la cual el cliente se encuentre registrado.

Si no tiene certificados asociados la lista irá vacía. <certificates type="list"></certificates>


La lista certificates debe contener entidades “certificate”, las cuales poseen la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

sequenceNumber

Integer

Número secuencia para los certificado de exención, ya que podrían recibirse más de un certificado cada uno con vigencia y jurisdicción diferente

Si

certificateIssueDate

Date

Fecha de validez del certificado de exención (desde)

Si

certificateExpirationDate

Date

Fecha de vencimiento del certificado de exención (hasta)

Si

percentage

real

Porcentaje de liberación impositiva

Si

rateClass

Bean

Código de clase de impuesto L a estructura puede verse bajo el título "Clase de impuesto", ver Clase de impuesto )

Si



  • CLASE DE IMPUESTOS

La entidad clase de impuesto posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

code

Varchar (25)

Código de clase de impuesto

  (lista válida: IIBBBsAs, IIBBSL, IIBBStFe, IIBBTU, IVA, IVAPer)

Si



  • RELACIONES IMPOSITIVAS ANIDADAS

Permiti definir cuál es el tipo de impuesto, la categoría del cliente ante ese impuesto y la jurisdicción


  Propiedad

Tipo de dato

Descripción

Requerido

jurisdiction

Bean

Jurisdicción. L a estructura puede verse bajo el título "Jurisdicción", ver Jurisdicción” )

Si

taxCategory

Bean

Categoría impositiva del cliente. L a estructura puede verse bajo el título "Categoría del cliente", ver Categoría del cliente )

Si

type

Bean

Tipo de impuesto. L a estructura puede verse bajo el título “Impuesto", ver Impuesto )

Si



    • JURISDICCIÓN

  Propiedad

Tipo de dato

Descripción

Requerido

taxJurisdictionCode

String (25)

Identificador de la jurisdicción

Ejemplo: BA= Buenos Aires

Si


    • CATEGORÍA DEL CLIENTE

  Propiedad

Tipo de dato

Descripción

Requerido

code

String (25)

Identificador de la categoría impositiva del cliente

Ejemplo: IBBCM

Si


    • IMPUESTO

 Propiedad

Tipo de dato

Descripción

Requerido

code

String (25)

Identificador del tipo de impuesto

Valores posibiles: IVA, IB, MNC

Si



INPUT - CREACIÓN / EDICIÓN
{
	"service": "customer",
	"store": "0",
	"entityCollection": {
		"customers": [
			{
				"@_type": "list",
				"customer": [
					{
						"@_type": "bean",
						"code": 920180,
						"store": 1,
						"party": [
							{
								"@_type": "bean",
								"name": "PINTURERIA ORO SA",
								"typeCode": "OGN",
								"roleAssignments": [
									{
										"@_type": "list",
										"partyRoleAssignment": [
											{
												"@_type": "bean",
												"contactMethods": [
													{
														"@_type": "list",
														"partyContactMethod": [
															{
																"@_type": "bean",
																"purposeType": [
																	{
																		"@_id": "2"
																	}
																],
																"methodType": [
																	{
																		"@_id": "1"
																	}
																],
																"name": "Laboral",
																"effectiveDate": "2017-01-20T16:12:17",
																"expirationDate": "2200-12-30 00:00:00.000",
																"address": [
																	{
																		"@_type": "bean",
																		"city": [
																			{
																				"@_type": "bean",
																				"code": 10859
																			}
																		],
																		"country": [
																			{
																				"@_type": "bean",
																				"code": "ARG"
																			}
																		],
																		"state": [
																			{
																				"@_type": "bean",
																				"code": "AR-B"
																			}
																		],
																		"firstLine": "CASA 60 SAN JOSE LA HERAS",
																		"postalCode": 9017
																	}
																],
																"emailAddress": [
																	{
																		"@_type": "bean",
																		"name": "[email protected]"
																	}
																]
															}
														]
													}
												],
												"sequenceNumber": 1,
												"partyRole": [
													{
														"@_id": "1",
														"name": "Cliente"
													}
												],
												"effectiveDate": [
													{
														"#text": "20-01-2017",
														"@_format": "dd-MM-yyyy"
													}
												],
												"expirationDate": [
													{
														"#text": "30-12-2200",
														"@_format": "dd-MM-yyyy"
													}
												]
											}
										]
									}
								],
								"identifications": [
									{
										"@_type": "list",
										"partyIdentification": [
											{
												"@_type": "bean",
												"identificationType": [
													{
														"@_id": "3"
													}
												],
												"identifierValue": 20225939420
											}
										]
									}
								],
								"taxRegistrations": [
									{
										"taxRegistration": [
											{
												"@_type": "bean",
												"name": "PINTURERIA ORO SA",
												"number": 20225939420,
												"taxTypes": [
													{
														"@_type": "list",
														"taxRegistrationTaxType": [
															{
																"@_type": "bean",
																"inscEffectiveDate": "2017-01-20T16:12:17",
																"inscExpirationDate": "2155-01-20T16:12:17",
																"jurisdictionNType": [
																	{
																		"@_type": "list",
																		"jurisdiction": [
																			{
																				"#text": "-- en caso del IVA siempre es ARG porque",
																				"@_type": "bean",
																				"taxJurisdictionCode": "ARG"
																			}
																		],
																		"taxCategory": [
																			{
																				"@_type": "bean",
																				"code": "RI"
																			}
																		],
																		"type": [
																			{
																				"@_type": "bean",
																				"code": "IVA"
																			}
																		]
																	}
																]
															}
														]
													}
												]
											},
											{
												"@_type": "bean",
												"name": "PINTURERIA ORO SA",
												"number": 20225939420,
												"taxTypes": [
													{
														"@_type": "list",
														"taxRegistrationTaxType": [
															{
																"@_type": "bean",
																"inscEffectiveDate": "2017-01-20T16:12:17",
																"inscExpirationDate": "2155-01-20T16:12:17",
																"certificates": [
																	{
																		"@_type": "list"
																	}
																],
																"jurisdictionNType": [
																	{
																		"@_type": "list",
																		"jurisdiction": [
																			{
																				"@_type": "bean",
																				"taxJurisdictionCode": "BA"
																			}
																		],
																		"taxCategory": [
																			{
																				"@_type": "bean",
																				"code": "L"
																			}
																		],
																		"type": [
																			{
																				"@_type": "bean",
																				"code": "IB"
																			}
																		]
																	}
																]
															}
														]
													}
												]
											}
										]
									}
								]
							}
						]
					}
				]
			}
		]
	}
}
OUTOUT - OK
{
"ack": 0,
"detail": "1 registro fue creado"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": "No se pudo ingresar ningun cliente"
}




CONFIGURACIÓN POR TIENDA

Mediante  este servicio se genera una nueva configuración de Productos por Tienda en la base de datos.



Nombre del servicio: itemStore

Parámetros de Entrada:

PropiedadTipo de datoDescripciónRequerido
itemStoreslistLista de itemStore a crear o actualizarSi

Se podrá recibir una lista de itemStores conteniendo elementos del tipo itemStore", que posee la siguiente estructura:

PropiedadTipo de datoDescripciónRequeridoCampo a importar en ItemStore

internalCode

String (25)

Código de artículo 

Si

  • "internalCode" 
  • "item": se importa el ObjectID que corresponda al código del item enviado item.internalCode) Si no existe informar error

storeCode

String

Código de tienda

Si

  • "storeCode" = código de tienda recibido
  • "store": se importa el ObjectID que corresponda al código de la tienda enviado store.code) Si no existe informar error

notForSale

Integer

Item no a la venta.

Valores posibles:

  • 0 = sin cambios
  • 1 = SI
  • 2 = NO

No

"notForSale"

disabled

Integer

Item deshabilitado

Valores posibles:

  • 0 = sin cambios
  • 1 = SI
  • 2 = NO

No

"disabled"

blockedForIcd

Integer

Item Bloqueado para la compra (solo en órdenes de compra)

Valores posibles:

  • 0 = sin cambios
  • 1 = SI
  • 2 = NO

No

"blockedForIcd"

ivaType

String (3)

Código del tipo de IVA asociado al artículo.

En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla VAT (campo code)

No

  • "ivaType" (ObjectID que corresponda al código de la marca enviado itemIvaType.code) Si no existe informar error


brand

String (100)

Código de la marca del artículo.

En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Brand (campo name)

No

  • "brand" (ObjectID que corresponda al código de la marca enviado brand.name) Si no existe informar error

itemType

String (25)

Código del tipo de artículo.

En este campo los valores admitidos   son:

  • CONT (Envase)
  • MISC   (Miscelaneos)
  • CHRG (Recargos)
  • NORM (Normal)
  • DEPT   (Departamental)
  • GRAL (Generico)
  • WRTY (Garantias)
  • SERV   (Servicios)
  • GFCD (GiftCard)
  • FUEL   (Combustible)
  • ADJM (Ajuste de combustible)
  • TAE   (Tiempo Aire)
  • EXTRACASH   (Adelanto en efectivo)

No

  • "itemType" (ObjectID que corresponda al código de la marca enviado itemIvaType.code) Si no existe informar error

maxStock

Decimal(11,2)

Cantidad máxima de stock permitida utilizado únicamente para la funcionalidad de pedido sugerido

No

"maxStock"

securityStock

Decimal(11,2)

Stock de seguridad  utilizado únicamente para la funcionalidad de pedido sugerido

No

 "securityStock"

price

NumberDecimal("0.0000")

Precio de venta

No

"price"

unitCost

NumberDecimal("0.0000")

Precio de costo - Si método de costeo = ppp, se actualizará en tienda, únicamente en la carga inicial. Cualquier costo posterior que se envíe, no pisará el costo de la tienda.

No

"unitCost"

minSalePrice

Decimal

Precio mínimo de venta (para cálculo de margenes si aplicara por configuración)

No

minSalePrice

minStockForChannels

Decimal

Cantidad de stock mínimo para canales por tienda

No

minStockForChannels

location Varchar(25)Código del almacén o depósito por default.No"location"
saleLocation Varchar(25)Código del almacén o depósito para la venta.No"saleLocation"
onConsignment 

Integer

Item en consignación

Valores posibles:

  • 0 = sin cambios
  • 1 = SI
  • 2 = NO

No

 "onConsignment"


Consideraciones de algunos campos no informados en el servicio:

PropiedadTipo de datoDescripción

internalCode

itemStore.item →  item.internalCode

Con el código del ítem recibido, se obtiene el ID del ítem

description

itemStore.item →  item.description

Con el ID del item se obtiene el item.description

storeCode

itemStore.store → store.code

Con el código de la tienda recibido, se obtiene el ID del store

processed

por defecto false


notForSale

Si no es informado, por defecto deben ser 0


disabled

Si no es informado, por defecto deben ser 0


blockedForIcd

Si no es informado, por defecto deben ser 0


createdAt

Si es un nuevo registro importar la fecha actual, sino no se modifica


updatedAt

Actualizar con la fecha actual 


hierarchyGroup



processed

Importar con valor false (para que luego lo tome el job de API que los procesa) 

 

onConsignment

Si no es informado, por defecto debe ser 0




INPUT - CREACIÓN / EDICIÓN
{
	"service": "itemStore",
	"store": "0",
	"entityCollection": {
		"itemStores": [
			{
				"itemStore": [
					{
						"internalCode": 2025,
						"storeCode": 15
					},
					{
						"internalCode": 1112,
						"storeCode": 15
					}
				]
			}
		]
	}
}

OUTPUT OK - UPDATE
{
"ack": 0,
"detail": "1 registros fueron actualizados"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": " - Errores: el internalCode 98222000000000000 no existe o no esta informado."
}




AJUSTE DE INVENTARIO

Por medio de este servicio se genera un nuevo ajuste de inventario en la base de datos.



Nombre del servicio: inventoryAdjustmentDocument

Parámetros de Entrada:

PropiedadTipo de datoDescripciónRequerido

createDateTimestamp

date

Fecha de creación del ajuste

SI

sourceRetailStore

String 

Código de la tienda

Si

receiptDate

date

Fecha de finalización del ajuste

No

contractReferenceNumber

String

Descripción del ajuste

No

location

String

Depósito

Si

state

String

Estado (OnSale corresponde a Items a la venta)

SI

inventoryAdjustmentType

String

Motivo del ajuste

Debe ser un código de tipo de ajuste existente en Administración -> Motivos -> Motivos de ajuste de inventario

SI

InventoryControlDocument

LineItems

List

Lista de artículos del ajuste

SI



La lista inventoryControlDocumentLineItems debe contener entidades "inventoryControlDocumentLineItem", las cuales poseen la siguiente estructura:

PropiedadTipo de datoDescripciónRequerido

itemCode

String 

Código del artículo.

Si

unitCount

Decimal

Cantidad a ajustar por unidad de compra

Si

barcode

String

Código de barras

No.

Si no se envía, la unidad de compra será por defecto 1






INPUT - CREACIÓN / EDICIÓN
{
	"service": "inventoryAdjustmentDocument",
	"store": "0",
	"entityCollection": {
		"adjustmentDocument": [
			{
				"createDateTimestamp": "2025-02-25",
				"sourceRetailStore": 15,
				"receiptDate": "2025-02-25",
				"contractReferenceNumber": 2020,
				"location": "DEP1",
				"state": "OnSale",
				"inventoryAdjustmentType": "JUSTIFIED_DEPLETIONS",
				"inventoryControlDocumentLineItems": [
					{
						"inventoryControlDocumentLineItem": [
							{
								"item": 2025,
								"unitCount": 5
							}
						]
					}
				]
			}
		]
	}
}
OUTOUT - OK
{
    "ack": 0,
    "detail": "Se importo con exito"
}
OUTOUT - ERROR
{
"ack": 0,
"detail": "El tipo de ajuste Js no existe o no es admitido para ajustes."
}




LISTA DE PRECIOS PROMOCIONALES

Una Lista de Precios Promocional es un mecanismo que permite aplicar precios especiales a ciertos artículos dentro de una tienda o grupo de tiendas durante un período determinado. Estas listas permiten establecer descuentos fijos, porcentuales o precios específicos sobre una lista de precios base, facilitando la gestión de promociones en el punto de venta.

El servicio de Carga de Listas Promocionales permite la creación, activación, desactivación y gestión de estas listas de manera automatizada mediante una API. Esto mejora la eficiencia en la administración de precios promocionales, asegurando que los descuentos se apliquen correctamente y con la trazabilidad necesaria en el sistema.


UPDATE 7.9

El servicio de Lista de Precios Promocionales está disponible a partir de la versión 7.9 de Bridge. Para utilizar esta funcionalidad, es necesario asegurarse de que el sistema esté actualizado a esta versión o una superior.


Consideraciones para su Uso

Para utilizar correctamente el servicio de Carga de Listas Promocionales, es importante tener en cuenta los siguientes aspectos:

  • Dependencia de Artículos:

    • Los artículos incluidos en la lista promocional deben haber sido previamente informados en Bridge.
    • No es posible cargar descuentos para productos inexistentes en el sistema.
  • Vinculación con Tiendas:

    • El lote de registros debe pertenecer a la misma tienda.
    • En el request de creación, el campo <store><codigoTienda></store> debe indicar el código de la tienda correspondiente.
    • No se deberá enviar <store>0</store>, ya que esto provocaría que la promoción se aplique a todas las tiendas sin distinción.
  • Parámetros de Configuración:

    • Las listas promocionales pueden aplicar descuentos de tres tipos:
      • 4: Descuento por importe fijo.
      • 5: Descuento por porcentaje.
      • 6: Nuevo precio específico.
    • Se deben establecer fechas de vigencia (inicio y fin) para cada lista promocional.
    • Es posible incluir información adicional en los campos text1, text2 y text3, que pueden ser utilizados para mostrar mensajes personalizados en el POS.
  • Estados de la Lista Promocional:

    • Una lista de precios promocional se encuentra en estado PROCESADO=FALSE hasta que el sistema ejecute el proceso de actualización de precios.
    • Es posible inactivar una lista promocional mediante el campo disabled=true.

Este servicio está diseñado para optimizar la gestión de precios promocionales, asegurando una aplicación correcta en los puntos de venta y proporcionando herramientas para su administración eficiente en Bridge.



Nombre del Servicio: itemSellingPricesPromo
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

itemSellingPricesPromo

List

Lista de listas de precios promocionales

Si

La lista itemSellingPricesPromo debe contener entidades "itemSellingPricePromo", las cuales poseen la siguiente estructura:

PropiedadTipo de datoDescripciónRequerido
promoPriceListNameStringNombre que identifica a la lista de precios promocional
promoPriceListNumberNumberNúmero de la lista de precios que se va adeshabilitarSí cuando disabled = true
effectiveDateDate

Fecha de inicio de vigencia

expirationDateDate

Fecha de fin de vigencia

disabledBooleanIndica si la lista está deshabilitada o no (default si no se recibe: false)
  Si se recibe, debe enviarse el campo promoPriceListNumber
No
itemsListaLista de ítems que tendrán precios promocionalesSí para carga
No para desactivar la lista
StoresListaLista de tiendas que tendrán precios promocionales.
  • Sí para la creación de la lista de precios promocionales.
  • No para desactivar la lista de precios promocionales.
StoresGroupListaLista de grupos de tiendas que tendrán precios promocionales
  • Sí para la creación de la lista de precios promocionales.
  • No para desactivar la lista de precios promocionales.


UPDATE V7.9

Se actualiza el servicio itemSellingPricesPromo para permitir segmentación por tiendas (stores) y grupos de tiendas (storesGroup) al momento de aplicar listas de precios promocionales. Esta funcionalidad permite diferenciar descuentos aplicados por segmentos geográficos o comerciales específicos.



La lista ítems debe contener entidades "item", las cuales poseen la siguiente estructura:

PropiedadTipo de datoDescripciónRequerido
internalCodeStringCódigo del item (SKU)
valueTypeNumberTipo de descuento
Valores posibles:
·         4: Importe
·         5: Porcentaje
·         6: Nuevo precio
valueNumberDecimalValor
effectiveDateDateFecha de inicio de la vigencia del precio promocional
Formato dd-mm-yyyy
expirationDateDateFecha de fin de la vigencia del precio promocional
Formato dd-mm-yyyy
sellingPriceListNumberNumberNúmero de lista de precio para el que aplica el precio promocional
text1StringTexto 1No
text2StringTexto 2No
text3StringTexto 3No


Consideraciones del servicio itemSellingPricePromo

  • El número de la lista promocional [ItemSellingPricePromoHeader.promoPriceListNumber] se genera automáticamente y es un consecutivo.
  • Deben aplicarse todas las validaciones necesarias para que, una vez aceptada la lista promocional por servicio, quede en estado Completa (status=0)
  • Todos los registros de ItemSellingPricePromo deben se crean con el flag processed=false
  • Es posible desactivar una lista promocional por servicio. Cuando se recibe disabled=true



INPUT - CREACIÓN / EDICIÓN
{
	"service": "itemSellingPricesPromo",
	"store": "0",
	"entityCollection": {
		"ItemSellingPricesPromo": [
			{
				"ItemSellingPricePromo": [
					{
						"promoPriceListName": 15,
						"effectiveDate": "01-01-2025",
						"expirationDate": "12-03-2026",
						"disabled": false,
						"items": [
							{
								"item": [
									{
										"internalCode": 1715,
										"valueType": 4,
										"value": 40,
										"effectiveDate": "01-01-2025",
										"expirationDate": "12-03-2026",
										"sellingPriceListNumber": 15,
										"text1": "rebaja golosinas",
										"text2": "ofertas",
										"text3": "caramelos"
									}
								]
							}
						]
					}
				]
			}
		]
	}
}
OUTOUT - OK
{
"ack": 0,
"detail": "1 registro fue creado"
}
OUTOUT - ERROR
{
"ack": 999,
"detail": "Error en lista de precios promocional (15):\n Error en item (17102025): El item no existe."
}




  • Sem rótulos

1 comentário