Manual de Servicios de integración B7.X
© 2024 Napse. Todos los derechos reservados.
Acerca del manual
Propósito y alcance
El presente manual de usuario tiene como finalidad la capacitación al usuario que desee utilizar los servicios provistos por Bridge para la integración con otros sistemas que provean de la información requerida de maestros y configuraciones generales para el funcionamiento de Bridge en su operatoria de tiendas con sus puntos de venta.
Se detallan los campos requeridos por cada entidad, los errores posibles y se proveen algunos escenarios de aplicación del servicio para las diferentes entidades.
En el presente documento se detallan las entidades de los maestros de Bridge que se podrán actualizar en la versión de API v7.1
Importante
Recomendaciones
Se sugieren algunos puntos a modo de recomendación para los envíos de información a través de los servicios de integración.
- Se recomienda el envío de lotes de registros (siempre y cuando el tipo de servicio lo admita)
- Esto permitirá que el procesamiento sea más performante
- No enviar requerimientos de a un registro (ej: para la actualización del maestro de artículos, no se deberían enviar de a un articulo por request sino por lotes)
- Contemplar como cantidad máxima: 5000 registros/lote para la general de entidades, y de 3000 registros/lote para entidades grandes (Ej. Items, Productos).
- Máximo de peso de cada lote: 5MB
Bridge Core Server SOAP
Los servicios de BCore son expuestos via SOAP definiendo métodos genéricos que reciben el nombre de la interfaz que agrupa servicios relacionados, y un xml como parámetro, el cual tiene nombre de la operación y parámetros de la misma. Dicho servicio retorna un xml como respuesta. Este xml se recibe como un simple string.
Por ejemplo, para ejecutar los servicios de proveedor de item, se deberá invocar el método SOAP
String execute(String service, String request, String store)
- String store: este parámetro opcional (el cual permite definir que el envío se realiza a una tienda específica, de no definirse o encontrarse con el valor 0 será para todas las tiendas)
a la siguiente url:
~ /bridge/services/bridgeCoreSOAP?wsdl
Por ejemplo:
http://localhost:8181/bridge/services/bridgeCoreSOAP?wsdl
NOTA: IP: PUERTO DE API (generalmente es el que termina en 1, con respecto al puerto de instalación del BM)
El parámetro service, es el nombre del servicio y el parámetro request será un xml con el nombre de la operación a ejecutar y sus parámetros. Dicho xml tiene la siguiente estructura básica:
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> … </params> </bridgeCoreRequest>
- operation: Nombre de la operación
- params: Parámetros de la operación.
Ejemplo de invocaciones a servicio:
El primer ejemplo muestra como invocar un servicio para crear o modificar uno o más proveedores:
Ejemplo Service: supplier
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <suppliers type="list"> <supplier type="bean"> <code>PR1</code> <name>Proveedor1</name> <fantasyName>Proveedor1</fantasyName> <address>Avda. Santa Fe 1234</address> <phone>011-155669800</phone> <fiscalId>3-55555555-66</fiscalId> <activeFlag>true</activeFlag> </supplier> <supplier type="bean"> <code>PR2</code> <name>Proveedor2</name> <fantasyName>Proveedor2</fantasyName> <address>Avda. Garibaldi 9874</address> <phone>011-1541878591</phone> <fiscalId>3-44444444-66</fiscalId> <activeFlag>true</activeFlag> </supplier> </suppliers> </params> </bridgeCoreRequest>
- Donde operation es el nombre del método especifico a ejecutar para proveedores y params son los parámetros pasados a dicho método.
- Cómo se puede ver en este ejemplo, se está pasando un listado de proveedores (suppliers). Dentro de este tag, hay un tag por cada proveedor (supplier) y dentro de este, los atributos propios del proveedor.
<supplier type="bean"> <code>PR2</code> <name>Proveedor2</name> <fantasyName>Proveedor2 Fantastico</fantasyName> <address>Avda. Garibaldi 9874</address> <phone>011-1541878591</phone> <fiscalId>3-44444444-66</fiscalId> <activeFlag>true</activeFlag> </supplier>
Este método devolverá un xml como el siguiente de respuesta:
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreResponse> <ack>0</ack> <message /> </bridgeCoreResponse>
- Donde ack es el código de error y message es el mensaje de dicho error.
- En el caso de ack sea 0, significa que el servicio se ejecutó sin errores.
Request de referencia
Los mensajes de requerimiento tendrán la siguiente estructura.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.business.soap.bridge.synthesis.com/"> <soapenv:Header/> <soapenv:Body> <ser:execute> <!-Optional:-> <service>?</service>** nombre del servicio a invocar ** <!-Optional:-> <request>?</request>** request de BridgeCoreRequest según ejemplo de cada servicio (en punto 7 - apéndice) ** <!-Optional:-> <store>?</store>** tiendas a ser enviado el requerimiento, puede ir vacío o con un 0 para todas las tiendas** </ser:execute> </soapenv:Body> </soapenv:Envelope>
Ejemplo de request de marca (brand)
Documentación de capacitación interna Napse
Manejo de errores
Cuando en la ejecución de BridgeCore ocurre un error, en la propiedad ack de la response se devuelve el código del mismo y en la propiedad message, el mensaje de dicho error.
Por ejemplo, el siguiente error es retornado cuando se intenta ejecutar algo, y la sesión de la terminal ha expirado:
<bridgeCoreResponse>
<ack>-1</ack>
<message>'000000000100265919ST' no existe. </message>
</bridgeCoreResponse>
Servicio de actualización
Implementado desde Version Bridge 7.X
A continuación se describen los servicios disponibles para la actualización de maestros, catálogos y documentos de inventario. Cada uno de los servicios permite crear o actualizar las entidades mediante la operación “createOrUpdate”.
Para no repetir para cada servicio los valores de retorno en caso de éxito, se describirá aquí los campos relevantes que sirven para todos los casos, y cualquier particularidad será descripta en el punto correspondiente.
Los valores de retorno relevantes son:
Propiedad | Tipo de dato | Descripción |
---|---|---|
ack | String | Código de respuesta. Si es 0, significa que el servicio se ejecutó exitosamente. Cualquier otro valor indica que ocurrió algún error, en cuyo caso se podrá obtener una descripción del mismo desde la propiedad “message”. |
message | String | Descripción del error que pudiera haber ocurrido. |
Maestros de artículos y sus complementarios
A continuación se describen los servicios que se ofrecen para la actualización de maestros de artículos, y sus entidades relacionadas. Cada uno de los servicios permite crear o actualizar las entidades mediante la operación "createOrUpdate".
Para no repetir para cada servicio los valores de retorno en caso de éxito, se describirá aquí los campos relevantes que sirven para todos los casos, y cualquier particularidad será descripta en el punto correspondiente.
Los valores de retorno relevantes son:
Propiedad | Tipo de dato | Descripción |
---|---|---|
ack | String | Código de respuesta. Si es 0, significa que el servicio se ejecutó exitosamente. Cualquier otro valor indica que ocurrió algún error, en cuyo caso se podrá obtener una descripción del mismo desde la propiedad "message". |
message | String | Descripción del error que pudiera haber ocurrido. |
NOTA: Ejemplos de requerimientos para cada servicio pueden encontrarse a continuación de cada entidad
Proveedores
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 "supplier", las cuales poseen la siguiente estructura:
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 |
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 | (a partir de v7.3) Indica si se debe enviar de forma automática la orden de compra confirmada al proveedor | No |
String(100) | (a partir de v7.3) Email al que se debe enviar de forma automática la orden de compra confirmada al proveedor | No |
NOTA: Para el servicio suppplier al validar el email se utiliza una librería de Apache, que se encarga de determinar si un mail es válido o no (https://commons.apache.org/proper/commons-validator/) El email "[email protected]" para la librería es inválido.
Request de Proveedor
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <suppliers type="list"> <supplier type="bean"> <code>Proveedor1</code> <name>Proveedor1</name> <fantasyName>Proveedor1</fantasyName> <address>VEDIA 2900</address> <phone/> <email/> <fiscalId>36-68514022-1</fiscalId> <activeFlag>true</activeFlag> <caiRequired>false</caiRequired> <asn>true</asn> <frequency>0</frequency> </supplier> <supplier type="bean"> <code>Proveedor2</code> <name>Proveedor2</name> <fantasyName>Proveedor2</fantasyName> <address>VEDIA 29300</address> <phone/> <email/> <fiscalId>36-68514022-2</fiscalId> <activeFlag>true</activeFlag> <caiRequired>false</caiRequired> <asn>true</asn> <frequency>0</frequency> </supplier> </suppliers> </params> <replicationStore/> </bridgeCoreRequest>
Response OK de Proveedor
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "2 registros fueron actualizados" } ] </message> <operationResult/> </bridgeCoreResponse>
Response Parcial de Proveedor
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "1 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo Supplier son: Proveedor2." }, { "ack": 999, "message": "El supplier ingresado en el orden 1 no posee nombre (name), CODE: Proveedor1", "additional": [{ "code": "Proveedor1", "detail": "Nombre inexistente. [code] - undefined", "position": 1 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
Response Error de Proveedor
<bridgeCoreResponse> <ack>-1</ack> <message> [{ "ack": 999, "message": "El supplier ingresado en el orden 1 no posee nombre (name), CODE: Proveedor1,El supplier ingresado en el orden 2 no posee nombre (name), CODE: Proveedor2", "additional": [{ "code": "Proveedor1", "detail": "Nombre inexistente. [name] - undefined", "position": 1 }, { "code": "Proveedor2", "detail": "Nombre inexistente. [name] - undefined", "position": 2 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
Marca del artículo
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 "brand", las cuales poseen la siguiente estructura:
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 |
Request de Marca
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <brands type="list"> <brand type="bean"> <name>Marca-496094907</name> <description>Marca 1</description> <activeFlag>true</activeFlag> </brand> <brand type="bean"> <name>Marca-496094908</name> <description>Marca 2</description> </brand> <brand type="bean"> <name>Marca-496094909</name> <description>Marca 3</description> </brand> <brand type="bean"> <name>Marca-496094910</name> <description>Marca 4</description> </brand> </brands> </params> </bridgeCoreRequest>
Response OK de Marca
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "4 registros fueron actualizados" } ] </message> <operationResult/> </bridgeCoreResponse>
Response Parcial de Marca
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "3 registros fueron actualizados" }, { "ack": 999, "message": "entityImport -> brandImportFromWebService -> ERROR -> Error al crear/actualizar Brand: undefined, must have required property 'name'.", "additional": [{ "detail": "must have required property 'name'", "position": 1 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
Response Error de Marca
<bridgeCoreResponse> <ack>-1</ack> <message>[{ "ack": 999, "message": "entityImport -> brandImportFromWebService -> ERROR -> Error al crear/actualizar Brand: undefined, must have required property 'name'. Brand: undefined, must have required property 'name'. Brand: undefined, must have required property 'name'. Brand: undefined, must have required property 'name'." } ]</message> <operationResult/> </bridgeCoreResponse>
Niveles de Jerarquía de los artículos
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 |
Request de jerarquías y categorías departamentales
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <merchHierarchyLevels type="list"> <hierarchyLevel type="bean"> <code>DPT</code> <description>Departamento</description> <level>1</level> <active>true</active> </hierarchyLevel> <hierarchyLevel type="bean"> <code>RUB</code> <description>Rubro</description> <level>2</level> <active>true</active> </hierarchyLevel> </merchHierarchyLevels> <merchHierarchyGroups type="list"> <hierarchyGroup type="bean"> <code>HOM</code> <description>Hombre</description> <level>RUB</level> <parentGroup>INDU</parentGroup> <departamentalItemCode></departamentalItemCode> <disabled>false</disabled> <isWeb>true</isWeb> </hierarchyGroup> <hierarchyGroup type="bean"> <code>MUJ</code> <description>Mujer</description> <level>RUB</level> <parentGroup>INDU</parentGroup> <departamentalItemCode></departamentalItemCode> <disabled>false</disabled> <isWeb>true</isWeb> </hierarchyGroup> </merchHierarchyGroups> </params> </bridgeCoreRequest>
Unidades de medida
Nombre del Servicio: unitOfMeasure
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
uoms | List | Lista de unidades de medida a crear o actualizar. | Si |
La lista uoms debe contener entidades "uom", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
code | String (25) | Código de la unidad de medida. | Si |
name | String (100) | Nombre de la unidad de medida. | Si |
decQty | Decimal (0,100) | Cantidad de decimales que se van a manejar para la unidad de medida. Si no se especifica, por default se asume cero decimales. | No |
disabled | Boolean | Flag que indica si la unidad de medida está deshabilitada para el sistema. Por default se asume false. | No |
externalCode | Number | Permite definir el código externo de la unidad de medida | No |
Request de unidad de Medida
Request:<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <uoms type="list"> <uom type="bean"> <code>M3</code> <name>Metro Cubico</name> <decQty>2</decQty> <disabled>false</disabled> </uom> <uom type="bean"> <code>M2</code> <name>Metro Cuadrado</name> <decQty>2</decQty> <disabled>true</disabled> </uom> </uoms> </params> </bridgeCoreRequest>
Depósitos
Los depósitos son los lugares físicos donde el retailer guarda mercadería.
Nombre del Servicio: location
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
locations | List | Lista de depósitos a crear o actualizar. | Si |
La lista locations debe contener entidades "location", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
code | String (25) | Código del depósito. | Si |
name | String (100) | Nombre del depósito | Si |
saleAllowed | Boolean | Indica si el depósito está habilitado para la venta. True por defecto. | No |
disabled | Boolean | Indica si el almacén está deshabilitado en el sistema. False por defecto. | No |
distributionCenter | Boolean | Indica si el depósito funciona como centro de distribución. False por defecto. | No |
revenueCenter | String (50) | Código identificador del Centro de Costo al que está asociado por default el depósito | Si |
itemInventoryState | String (50) | Código identificador del estado del depósito (ej.: OnSale)
| Si |
storeCode | Varchar (20) | Código de la tienda cuando actúa como centro de distribución (se setea el campo cd_ctr_dbn y tiene utilidad cuando el campo distributionCenter = true) (v7.7) | No |
stockVerificationReqFlag | boolean | Flag que permite identificar si el depósito requiere de verificación de stock físico o no. | No |
Request de location
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <locations type="list"> <location type="bean"> <code>DEP6</code> <name>DEP6</name> <revenueCenter>RCD</revenueCenter> <itemInventoryState>OnSale</itemInventoryState> <saleAllowed>true</saleAllowed> </location> <location type="bean"> <code>DEP7</code> <name>DEP7</name> <revenueCenter>RCD</revenueCenter> <itemInventoryState>OnSale</itemInventoryState> </location> </locations> </params> </bridgeCoreRequest>
Atributos de un articulo
Son atributos que puede tomar un artículo con valores u opciones asociados
Quedan deprecados servicios de 4x de product y productAttribute
Nombre del Servicio: itemAttribute
Parámetros de entrada:
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 | Sí |
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 |
showRgb | Boolean | Indicador si se requiere mostrar o no el RGB asignado a la opción del atributo (default si no se recibe: false) | No |
disabled | Boolean | Indicador de atributo deshabilitado o no (default si no se recibe: false) | No |
options | List | 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 |
Request de Atributos de un articulo
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <itemAttributes type="list"> <itemAttribute type="bean"> <code>PROCEDENCIA</code> <dataType>list</dataType> <name>Procedencia</name> <showInfo>true</showInfo> <showRgb>false</showRgb> <options type="list"> <option type="bean"> <value>NAC</value> <order>1</order> <info>hola</info> </option> <option type="bean"> <value>IMPORTADO</value> <order>2</order> <info>pepe</info> </option> </options> </itemAttribute> <itemAttribute type="bean"> <code>DISCONTINUADO</code> <dataType>list</dataType> <name>Discontinuado</name> <disabled>false</disabled> <showInfo>true</showInfo> <showRgb>false</showRgb> <options type="list"> <option type="bean"> <value>NAC</value> <order>1</order> <info>hola</info> </option> <option type="bean"> <value>IMPORTADO</value> <order>2</order> <info>pepe</info> </option> </options> </itemAttributes> </params> </bridgeCoreRequest>
Response OK de Atributos de un articulo
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "2 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo ItemAttribute son: PROCEDENCIA,DISCONTINUADO." } ] </message> <operationResult/> </bridgeCoreResponse>
Response Parcial de Atributos de un articulo
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "1 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo ItemAttribute son: PROCEDENCIA." }, { "ack": 999, "message": "El atributo ingresado en el orden 2 Sus opciones no existen. CODE: DISCONTINUADO", "additional": [{ "code": "DISCONTINUADO", "detail": "Opciones inexistentes. [options] - undefined", "position": 2 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
Response Error de Atributos de un articulo
<bridgeCoreResponse> <ack>-1</ack> <message> [{ "ack": 999, "message": "No se pudo ingresar ningun atributo de item", "additional": [{ "message": "El atributo ingresado en el orden 1 no posee dataType, CODE: PROCEDENCIA" }, { "message": "El atributo ingresado en el orden 2 Sus opciones no existen. CODE: DISCONTINUADO" } ] } ] </message> <operationResult/> </bridgeCoreResponse>
La lista options debe contener entidades "option”, las cuales poseen la siguiente estructura:
<options type="list"> <option type="bean"> <value>Rojo</value> <rgb>ff0000</rgb> <order>1</order> <info>hola</info> </option> </options>
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
value | String | Valor de la opción del atributo | Si |
rgb | String | Código del RGB (enviar sin #) | No |
order | Integer | Indica como quedará listada la opción de los atributos. Permite definir un orden de búsqueda en el POS. | No |
info | String | Información adicional de la opción del atributo | No |
disabled | Boolean | Indicador de atributo deshabilitado o no (default si no se recibe: false) | No |
Request de un atributo
<?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.business.soap.bridge.synthesis.com/"> <soapenv:Header /> <soapenv:Body> <ser:execute> <!--Optional:--> <service>itemAttribute</service> <!--Optional:--> <request><![CDATA[ <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <itemAttributes type="list"> <itemAttribute type="bean"> <code>PROCEDENCIA</code> <dataType>list</dataType> <name>Procedencia</name> <showInfo>true</showInfo> <showRgb>false</showRgb> <options type="list"> <option type="bean"> <value>NAC</value> <order>1</order> <info>hola</info> </option> </options> <options type="list"> <option type="bean"> <value>IMPORTADO</value> <order>2</order> <info>pepe</info> </option> </options> </itemAttribute> <itemAttribute type="bean"> <code>DISCONTINUADO</code> <dataType>boolean</dataType> <name>Discontinuado</name> <disabled>false</disabled> <showInfo>true</showInfo> <showRgb>false</showRgb> </options> </itemAttributes> </params> </bridgeCoreRequest>]]></request> <!--Optional:--> <store>0</store> </ser:execute> </soapenv:Body> </soapenv:Envelope>
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. | 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. | 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 horaio 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. | No | |
brandCode | String (100) | Código de la marca del artículo. | No | |
itemType | String (25) | Código del tipo de artículo.
| 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.
| 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 | Si | |
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: | ||
uom2Code | String (1) | Código de la segunda unidad de medida para el artículo. | 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. | 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.setItemSerializedFlagWithReservationByService = 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.setItemSerializedFlagWithReservationByService = 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 | 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 |
upc | String | Código Universal de Producto del Articulo | No | Es un dato que permite agrupar varios artículos para listas de precios por umbral y su acumulación de unidades |
manufacturer | string | Código del fabricante En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla manufacturer (campo code) (a partir de Bridge7.2) | No (opcional) | (a partir de Bridge 7.2) |
exemptFlag | boolean | Flag de item exento (a partir de Bridge7.2) | No (opcional) | Default = false si no viene informado (a partir de Bridge 7.2) |
otherUnitOfMeasure | list | Lista de unidades de medida complementarias otherUnitOfMeasure <uomCode>blister</uomCode> <conversionFactor>0.1</conversionFactor> | No (opcional) | (a partir de 7.2) |
printCommandsFlag | boolean | Flag de ítem para impresión de comanda | No (opcional) | Default = False si no viene informado. (a partir de Bridge 7.3) |
maxStock | Decimal(11,2) | Stock Máximo que la Tienda puede tener por Producto | No (opcional) | Default = 0 si no viene informado. (a partir de Bridge 7.3) |
securityStock | Decimal(11,2) | Stock de Seguridad Adicional al forecast | No (opcional) | Default = 0 si no viene informado. (a partir de Bridge 7.3) |
attributes | List | Atributos de un item | No (opcional) | <attributes type="list"> <attribute type="bean"> <code>PROCEDENCIA</code> <option>NAC</option> </attribute> </attributes> |
creditAllowed | boolean | Flag que indica si el articulo puede ser vendido con crédito propio | No (opcional, default=false) | (a partir de 7.4) |
blockedForIcd | boolean | Flag para Artículo bloqueado para Compras y Reposición: No permite reposición | No (opcional) | Default = false si no viene informado (a partir de Bridge 7.4) |
alcoholicBeverage | boolean | Flag que indica si el articulo debe ser validado como bebida alcohólica | No (opcional) default=false | (a partir de 7.5) |
affiliateBenefit | boolean | Flag que indica si el articulo tiene el beneficio de Afiliado | No (opcional, default=false) | (a partir de 7.4) |
serialFormat | string | Permite definir el tipo de formato admitido para el nro de serie | opcional | (a partir de 7.4) |
externalCode | number | Permite definir el código externo del item | No (opcional) | v1.17 (a partir de 7.5) |
minSalePrice | Decimal | Precio mínimo de venta (para cálculo de márgenes para pedidos si aplicara por configuración) | No | minSalePrice (a partir de 7.5.2) |
minStockForChannels | number | Cantidad de unidades definidas como stock mínimo para canales | No | |
fullDescription | string | Descripcion ampliada | No (opcional) | v1.23 (a partir de 7.7) |
stockItem | object | ¿Es un artículo que maneja stock? | No (opcional) | v1.23 (a partir de 7.7) |
itemDepth | NumberDecimal | Profundidad del ítem | No (opcional) | v1.23 (a partir de 7.7) |
itemHeight | NumberDecimal | Altura del ítem | No (opcional) | v1.23 (a partir de 7.7) |
itemNetWeight | NumberDecimal | Peso del ítem | No (opcional) | v1.23 (a partir de 7.7) |
minStockForChannels | NumberDecimal | Stock Minimo para Canales | No (opcional) | v1.23 (a partir de 7.7) |
itemGrossWeight | NumberDecimal | Peso bruto del ítem | No (opcional) | v1.23 (a partir de 7.7) |
itemDiameter | NumberDecimal | Diámetro del ítem | No (opcional) | v1.23 (a partir de 7.7) |
itemWidth | NumberDecimal | Ancho del ítem | No (opcional) | v1.23 (a partir de 7.7) |
calculateCommission | boolean | Calcula comision | No (opcional) | v1.23 (a partir de 7.7) |
relevance | integer | Relevancia | No (opcional) | v1.23 (a partir de 7.7) |
published | boolean | Publicado | No (opcional) | v1.23 (a partir de 7.7) |
detailedDescription | string | Descripcion detallada | No (opcional) | v1.23 (a partir de 7.7) |
barcode | string | CodBarra | No (opcional) | v1.23 (a partir de 7.7) |
requiresPrescriptionFlag | boolean | Requiere receta | No (opcional) | v1.23 (a partir de 7.7) |
onConsignment | boolean | Consignado | No (opcional) | v1.23 (a partir de 7.7) |
classification | string | Clasificacion | No (opcional) | v1.23 (a partir de 7.7) |
daysToReturn | integer | Dias para devoluciones y cambios | No (opcional) | v1.23 (a partir de 7.7) |
invoiceNotAllowed | boolean | No permite facturar | No (opcional) | v1.23 (a partir de 7.7) |
notForSale | boolean | No admite otro artículo en la venta | No (opcional) | v1.23 (a partir de 7.7) |
packQty | integer | Empaque Mínimo | No (opcional) | v1.23 (a partir de 7.7) |
gtin | integer | Código GTIN | No (opcional) | v1.23 (a partir de 7.7) |
requiresValidationExternalFlag | boolean | Requiere Validación Externa | No (opcional) | v1.23 (a partir de 7.7) |
Nota: cuando la nueva property "store.internalTaxInformedWithItem" esté en false, no considerar el tag internalTaxes al importar ya que se usará el servicio de relación de artículos con impuestos internos.
Cuando la property esté en true, se mantiene la lógica actual: con cada importación del servicio "ítem" se borran los impuestos internos asociados al ítem en el modelo y se crean las relaciones incluidas en el servicio.
La lista internalTaxes debe contener entidades "internalTax", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
internalTaxCode | String(25) | Código de impuesto interno | Si |
internalTaxAmount | Decimal | Monto del impuesto interno o porcentaje (sobreescribe el general del impuesto para el item en particular, si no se informa, toma el default del impuesto) | No |
La lista de atributos debe contener entidades "attribute", las cuales poseen la siguiente estructura:
<attributes type="list"> <attribute type="bean"> <code>PROCEDENCIA</code> <option>NAC</option> </attribute> <attribute type="bean"> <code>COLOR</code> <option>AZUL</option> </attribute> <attribute type="bean"> <code>PREP Physical</code> <option>true</option> </attribute> </attributes>
NOTA: si la opción o valor enviado pertenece a un atributo del tipo "list", se validará que la opción exista previamente. No se creará el item si este valor no existe para no generar inconsistencias de datos. (a partir de 7.5.1)
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
code | String(25) | Código de impuesto interno | Si |
option | String | Según el tipo de dato | Si |
Request de artículo
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <items type="list"> <item type="bean"> <itemCode>000000000100002537</itemCode> <noBalanceControlRequired>true</noBalanceControlRequired> <description>Item test</description> <hierarchyGroupCode>IND</hierarchyGroupCode> <price>8000.00</price> <itemType>ZAWA</itemType> <promotionalPrice>8000.00</promotionalPrice> <vatCode>1</vatCode> <uomCode>u</uomCode> <daysToChange>4</daysToChange> <genericItemFlag>false</genericItemFlag> <kitComponentFlag>false</kitComponentFlag> <inventoryLocationCode>Deposito</inventoryLocationCode> <disabled>false</disabled> <itemVATCategory>G</itemVATCategory> </item> <item type="bean"> <price>10.00</price> <itemCode>itemTest1</itemCode> <noBalanceControlRequired>true</noBalanceControlRequired> <description>IPHONE 12 128 GB BRANCO</description> <itemType>ZAWA</itemType> <promotionalPrice>8000.00</promotionalPrice> <vatCode>1</vatCode> <uomCode>u</uomCode> <genericItemFlag>false</genericItemFlag> <kitComponentFlag>false</kitComponentFlag> <inventoryLocationCode>Deposito</inventoryLocationCode> <disabled>false</disabled> <itemVATCategory>G</itemVATCategory> </item> <item type="bean"> <itemCode>000000000100002538</itemCode> <price>50.00</price> <noBalanceControlRequired>true</noBalanceControlRequired> <description>IPHONE 12 128 GB BRANCO</description> <itemType>ZAWA</itemType> <promotionalPrice>8000.00</promotionalPrice> <vatCode>1</vatCode> <uomCode>u</uomCode> <genericItemFlag>false</genericItemFlag> <kitComponentFlag>false</kitComponentFlag> <inventoryLocationCode>Deposito</inventoryLocationCode> <disabled>false</disabled> <itemVATCategory>G</itemVATCategory> </item> </items> </params> </bridgeCoreRequest>
Response OK de artículo
<bridgeCoreResponse> <ack>0</ack> <message>[{ "ack": 0, "message": "1 registro fue creado", "additional": [{ "message": "3# El registro con _id=66c5f9b6eb6f1c2dff14a5da se creó con éxito", "additional": { "index": 2, "_id": "66c5f9b6eb6f1c2dff14a5da", "fieldsAndValues": [{ "field": "_id", "value": "66c5f9b6eb6f1c2dff14a5da" } ] } } ] }, { "ack": 0, "message": "2 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo Item son: 000000000100002537,itemTest1,000000000100002538." } ]</message> <operationResult/> </bridgeCoreResponse>
Response Parcial de artículo
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "2 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo Item son: 000000000100002537,000000000100002538." }, { "ack": 999, "message": "Item ingresado en orden 2 se detecto error: Item con codigo: itemTest1, must have required property 'price'.. CODE: itemTest1", "additional": [{ "code": "itemTest1", "detail": "Item ingresado en orden 2 se detecto error: Item con codigo: itemTest1, must have required property 'price'.. CODE: itemTest1", "position": 2 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
Response Error de artículo
<bridgeCoreResponse> <ack>-1</ack> <message > [{ "ack": 999, "message": "Item ingresado en orden 1 se detecto error: Item con codigo: 000000000100002537, must have required property 'price'.. CODE: 000000000100002537 Item ingresado en orden 2 se detecto error: Item con codigo: itemTest1, must have required property 'price'.. CODE: itemTest1 Item ingresado en orden 3 se detecto error: Item con codigo: 000000000100002538, must have required property 'price'.. CODE: 000000000100002538", "additional": [{ "code": "000000000100002537", "detail": "Item ingresado en orden 1 se detecto error: Item con codigo: 000000000100002537, must have required property 'price'.. CODE: 000000000100002537", "position": 1 }, { "code": "itemTest1", "detail": "Item ingresado en orden 2 se detecto error: Item con codigo: itemTest1, must have required property 'price'.. CODE: itemTest1", "position": 2 }, { "code": "000000000100002538", "detail": "Item ingresado en orden 3 se detecto error: Item con codigo: 000000000100002538, must have required property 'price'.. CODE: 000000000100002538", "position": 3 } ] } ] </message > <operationResult/> </bridgeCoreResponse>
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.
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)
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. | 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 |
Request de alias
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <aliases type='list'> <alias type='bean'> <itemCode>FANTA</itemCode> <barcode>7791825307292</barcode> <description>BERMUDA GROOVY GREEN MEN</description> <units>1</units> </alias> <alias type='bean'> <itemCode>UR_SS19010_M_1</itemCode> <barcode>7791825307308</barcode> <description>BERMUDA GROOVY GREEN MEN</description> <units>1</units> </alias> </aliases> </params> </bridgeCoreRequest>
Response OK de alias
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "1 registro fue creado", "additional": [{ "message": "2# El registro con _id=66c5e9e4eb6f1c2dff147a7f se creó con éxito", "additional": { "index": 1, "_id": "66c5e9e4eb6f1c2dff147a7f", "fieldsAndValues": [{ "field": "_id", "value": "66c5e9e4eb6f1c2dff147a7f" } ] } } ] }, { "ack": 0, "message": "1 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo Barcode son: 7791825307292,7791825307308." } ] </message> <operationResult/> </bridgeCoreResponse>
Response Parcial de alias
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "1 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo Barcode son: 7791825307292." }, { "ack": 999, "message": "Barcode ingresado en el orden 2, ERROR: El item UR_SS19010_M_1 no existe, barcode: 7791825307308", "additional": [{ "code": "7791825307308", "detail": "Item inexistente. [itemCode] - UR_SS19010_M_1", "position": 2 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
Response Error de alias
<bridgeCoreResponse> <ack>-1</ack> <message> [{ "ack": 999, "message": "Barcode ingresado en el orden 1, ERROR: El item NOEXISTE_1 no existe, barcode: 7791825307292,Barcode ingresado en el orden 2, ERROR: El item NOEXISTE_2 no existe, barcode: 7791825307308", "additional": [{ "code": "7791825307292", "detail": "Item inexistente. [itemCode] - NOEXISTE_1", "position": 1 }, { "code": "7791825307308", "detail": "Item inexistente. [itemCode] - NOEXISTE_2", "position": 2 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
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. | No |
colorCode | String (25) | Código de color. | No |
sizeCode | String (25) | Código de tamaño. | No |
containerCode | String (25) | Código de envase. | 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. | No |
weightUomCode | String (25) | Código de unidad de medida utilizada para indicar el peso del artículo. | No |
repositionPoint | Decimal (15,4) | Refiere al umbral de reposición necesario para el cálculo del pedido sugerido | No |
Request de stockItem
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <stockItems type="list"> <stockItem type="bean"> <itemCode>1122</itemCode> <pickupCode>1</pickupCode> <depth>10</depth> <width>20</width> <height>300</height> <grossWeight>400</grossWeight> <sizeUomCode>cm</sizeUomCode> <weightUomCode>g</weightUomCode> </stockItem> </stockItems> </params> </bridgeCoreRequest>
Kits/enlazados
Este servicio tiene dependencia de otro maestro (items) En caso de que se envíen artículos para ser enlazados o linkeados , los artículos se deben haber informado previamente a Bridge.
Este servicio definen las relaciones de artículos linkeados. Al venderse el código de ítem (padre del kit) automáticamente se vende el artículo del código (hijos componentes) con la cantidad que se haya definido
Se utiliza para informar los items del tipo kit o receta (con un padre y sus componentes)
- En el escenario de un padre y componentes, se informará en el campo <kit> con true
- En el caso de necesitar informar solo enlazados, en el campo <kit> irá false
Nombre del Servicio: linkedItem
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
linkedItemList <linkedItemList type="list"> <Item type="bean"> <linkedList type="list"> <linkedItem type="bean"> ..... </linkedItem> </Item> </linkedItemList> | List | Lista de asociaciones entre artículos y sus linkeados que se desea crear o actualizar. Se podrá recibir una lista de ítems, cada ítem podrá tener asociada una lista de enlazados (o componentes de kit si el item fue informado como kit) | Si |
La lista linkedItemList 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 al cual se asocian los enlazados <Item type="bean"> <itemCode>ACA</itemCode> | Si |
kit | Boolean | Indicador que identifica si los ítems son enlazados por ser componentes de kit o no <kit>true</kit> con false no es un padre de kit y solo tiene enlazados (caso cerveza + envase) | Si |
linkedList | Lista | Lista de los ítems enlazados o componentes del kit <linkedList type="list"> <linkedItem type="bean"> <linkedItemCode>38078577</linkedItemCode> <quantity>2</quantity> <memberItemPrice>50.00</memberItemPrice> </linkedItem> </linkedList> | Si |
linkedItem | Bean | Engloba las características del ítem componente o enlazado <linkedItem type="bean"> <linkedItemCode>38078577</linkedItemCode> <quantity>2</quantity> <memberItemPrice>50.00</memberItemPrice> </linkedItem> | Si |
linkedItemCode | String (25) | Código del artículo enlazado al artículo cuyo código es itemCode | Si |
quantity | Decimal | Cantidad de unidades presentes en la relación. Por default 1. | No |
memberItemPrice | Real | Precio del artículo enlazado | No |
Request de linkedItem
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <linkedItemList type="list"> <item type="bean"> <itemCode>ACA</itemCode> <kit>true</kit> --- con false no es un padre de kit y sólo tiene enlazados (caso cerveza + envase) <linkedList type="list"> <linkedItem type="bean"> <linkedItemCode>38078577</linkedItemCode> <quantity>2</quantity> <memberItemPrice>50.00</memberItemPrice> </linkedItem> <linkedItem type="bean"> <linkedItemCode>111</linkedItemCode> <quantity>1</quantity> <memberItemPrice>50.00</memberItemPrice> </linkedItem> </linkedList> </item> </linkedItemList> </params> </bridgeCoreRequest>
Artículos relacionados
Este servicio tiene dependencia de otro maestro (items) En caso de que se envíen artículos para ser relacionados, los artículos se deben haber informado previamente a Bridge.
Nombre del Servicio: itemRelated
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
itemsRelated | List | Lista de relaciones entre artículos y su tipo de relación que se desea crear o actualizar. | Si |
La lista itemsRelated debe contener entidades "itemRelated", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
item | String | Código de artículo | Si | ||||||||||||||||
itemTypeRelated | String | Código de la relación entre artículos (Valores posibles, los indicados en la columna "Código")
| Si | ||||||||||||||||
itemRelated | String | Código del artículo relacionado | Si | ||||||||||||||||
nameRelated | String | Descripción del tipo de relación (texto opcional) | No | ||||||||||||||||
disabled | Boolean | Indicador de habilitado | No |
Request de artículos relacionados
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <itemsRelated type="list"> <itemRelated type="bean"> <item>AW5420</item> <itemRelated>825301</itemRelated> <itemTypeRelated>CI</itemTypeRelated> <nameRelated>RComplementario</nameRelated> </itemRelated> <itemRelated type="bean"> <item>AW5420</item> <itemRelated>825650</itemRelated> <itemTypeRelated>SI</itemTypeRelated> <nameRelated>RSimil</nameRelated> </itemRelated> </itemsRelated> </params> </bridgeCoreRequest>
Relación de artículos con proveedores
Este servicio permite tener 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 | No |
defaultBarcode | boolean | Indica Código de Barras por defecto (a partir de Bridge 7.3) | No |
effectiveDateTime | date | Fecha vigencia inicio del barcode para el pedido sugerido (barcodes de temporada) (a partir de Bridge 7.3) | No |
expirationDateTime | date | Fecha vigencia fin del barcode para el pedido sugerido (barcodes de temporada) (a partir de Bridge 7.3) | No |
supplierItemCode | string | Código SKU del Proveedor (a partir de Bridge 7.3) | No |
store.code | string | Código de la Tienda. (a partir de Bridge 7.3) | No |
Request de itemSupplierItem
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <itemSupplierItems type="list"> <itemSupplierItem type="bean"> <item>123</item> <supplier>PR1</supplier> <lastReceiptSaleByUnitCount>50</lastReceiptSaleByUnitCount> <lastReceiptSaleUnitBaseCost>20</lastReceiptSaleUnitBaseCost> </itemSupplierItem> <itemSupplierItem type="bean"> <item>456</item> <supplier>PR2</supplier> <lastReceiptSaleByUnitCount>50</lastReceiptSaleByUnitCount> <lastReceiptSaleUnitBaseCost>15</lastReceiptSaleUnitBaseCost> </itemSupplierItem> </itemSupplierItems> </params> </bridgeCoreRequest>
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 type="list"> <store type="bean"> <storeCode>1 </storeCode> </store> </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
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 v3.2 se modifica a partir de v7.4 adoptando una lista de elementos store | ||||||||||||||||||||
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 | |||||||||||||||||||||
currencyCode | Varchar (3) | Código de la moneda
| No | |||||||||||||||||||||
itemSellingPricesStatus | Integer | Estado de la lista de precios. | No | |||||||||||||||||||||
<channels type="list"> <channel type="bean"> <code>bridge </code> </channel> </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 | v3.2 se modifica a partir de v7.4 adoptando una lista de elementos channel |
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 |
|
|
NOTA: campo deprecado (v3.3) |
|
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 | 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) |
|
|
NOTA: campo deprecado (v3.3) |
|
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) | boolean | Indicador si la lista es default (para los casos en los cuales se trabaja con código de barras en listas de precios) | no (opcional) |
Nota: los campos tachados fueron DEPRECADOS en Bridge 7.X
Request de lista de precios
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <itemSellingPrices type="list"> <itemSellingPrice type="bean"> <itemSellingPriceNumber>21</itemSellingPriceNumber> <stores> <store> <storeCode>T1</storeCode> </stpre> </stores> <effectiveDateTime format="dd-MM-yyyy">05-05-2023</effectiveDateTime> <expirationDateTime format="dd-MM-yyyy">12-12-2023</expirationDateTime> <partyRoleCode/> <currencyCode/> <items type="list"> <item type="bean"> <itemCode>COCACOLA</itemCode> <barcode/> <currentSaleUnitRetailPriceAmount>10000.00</currentSaleUnitRetailPriceAmount> <currentSaleUnitRetailPriceEffectiveDate format="dd-MM-yyyy">05-05-2023</currentSaleUnitRetailPriceEffectiveDate> <currentSaleUnitRetailPriceExpirationDate format="dd-MM-yyyy">12-12-2023</currentSaleUnitRetailPriceExpirationDate> <currentSaleUnitRetailPriceTypeCode>pr1</currentSaleUnitRetailPriceTypeCode> <permanentSaleUnitRetailPriceAmount>8000.00</permanentSaleUnitRetailPriceAmount> <permanentSaleUnitRetailPriceEffectiveDate format="dd-MM-yyyy">12-12-2023</permanentSaleUnitRetailPriceEffectiveDate> <manufacturerSaleUnitRecommendedRetailPriceAmount>8000.00</manufacturerSaleUnitRecommendedRetailPriceAmount> <alternativeRetailPrice>800.21</alternativeRetailPrice> </item> </items> </itemSellingPrice> </itemSellingPrices> </params> </bridgeCoreRequest>
Response OK de lista de precios
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "1 registro fue creado", "additional": [{ "message": "1# El registro con _id=66c5fdb8eb6f1c2dff14b222 se creó con éxito", "additional": { "index": 0, "_id": "66c5fdb8eb6f1c2dff14b222", "fieldsAndValues": [{ "field": "_id", "value": "66c5fdb8eb6f1c2dff14b222" } ] } } ] }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo ItemSellingPrices son: 21." } ] </message> <operationResult/> </bridgeCoreResponse>
Response Parcial de lista de precios
<bridgeCoreResponse> <ack>0</ack> <message> [{ "ack": 0, "message": "1 registros no se modificaron" }, { "ack": 0, "message": "Los Códigos insertados, modificados y sin cambios del tipo ItemSellingPrices son: 21." }, { "ack": 999, "message": "En la lista de precio Ingresada en orden 1, En el item orden 2, El producto ingresado no existe, CODE: NOEXISTE", "additional": [{ "code": "21.NOEXISTE", "detail": "Item inexistente. [itemCode] - NOEXISTE", "position": 1 } ] } ] </message> <operationResult/> </bridgeCoreResponse>
Response Error de lista de precios
<bridgeCoreResponse> <ack>-1</ack> <message> [{ "ack": 999, "message": "En la lista de precio Ingresada en orden 1, En el item orden 1, El producto ingresado no existe, CODE: NOEXISTE1" }, { "ack": 999, "message": "En la lista de precio Ingresada en orden 1, En el item orden 2, El producto ingresado no existe, CODE: NOEXISTE2" }, { "ack": 999, "message": "ERROR DE LISTA, no hay items para agregar/modificar" } ] </message> <operationResult/> </bridgeCoreResponse>
Servicio de importación impuestos internos por artículos
Configuración de impuestos internos por ítem
Servicio de importación
- Puedo recibir una lista
- Nombre del servicio: itemInternalTax
- Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
itemInternalTaxes | List | Lista de impuesto internos por artículo para crear o actualizar. | Si |
La lista de itemInternalTaxes debe contener entidades "itemInternalTax", las cuales poseen la siguiente estructura:
Campo del servicio -- Propiedad -- | Tipo de dato | Requerido | Descripción | Campo en el cual importar en la tabla "itemInternalTax" | Default | |
---|---|---|---|---|---|---|
1 | item | string | si | Código del ítem | Se va a recibir el código del artículo, en la tabla se guardaría el ID del objeto ítem que coincida con el internalCode recibido (de la tabla item)
| |
2 | internalTaxType | string | si | Código del impuesto interno | Se va a recibir el código del impuesto interno (campo internalTaxType.code). Se debe buscar en la tabla internalTaxType y guardar el ID del objeto
| |
3 | amount | number | si | Monto del impuesto (este sobre escribe el del impuesto para el artículo) | amount | |
4 | effectiveDateTime | date | si | Fecha inicio de validez del impuesto | effectiveDateTime | |
5 | expirationDateTime | date | si | Fecha fin de validez del impuesto | expirationDateTime | |
6 | description | string | no | Descripción de la relación del impuesto-artículo | description | |
7 | disabled | boolean | si | Indicador de habilitado o no la relación del item-impuesto interno | disabled | false |
- Los campos updatedAt (si se actualiza o se crea el registro) y createdAt se importarán al momento de la creación del registro
Request ejemplo
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <itemInternalTaxes type="list"> <itemInternalTax type="bean"> <item>BR1</item> <internalTaxType>FP93</internalTaxType> <amount>10.0</amount> <disabled>false</disabled> <description>FEEP Gasolina al 93</description> <effectiveDateTime format="dd-MM-yyyy">25-03-2023</effectiveDateTime> <expirationDateTime format="dd-MM-yyyy">15-05-2023</expirationDateTime> </itemInternalTax> <itemInternalTax type="bean"> <item>BR1</item> <internalTaxType>FP95</internalTaxType> <amount>8.0</amount> <disabled>false</disabled> <description>FEEP Gasolina al 95</description> <effectiveDateTime format="dd-MM-yyyy">25-03-2023</effectiveDateTime> <expirationDateTime format="dd-MM-yyyy">15-05-2023</expirationDateTime> <expirationDateTime></expirationDateTime> </itemInternalTax> </itemInternalTaxes> </params> </bridgeCoreRequest>
Stock
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: | Si |
revenueCenter | String (50) | Código identificador del Centro de Costo al que está asociado por default el depósito | Si |
items | List | Lista de artículos en el depósito junto con su cantidad de unidades en stock | Si |
La lista ítems 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 ítems serializables o que requieren lote/despacho debe contener entidades “serializedItem”, las cuales poseen la siguiente estructura:
Nota: la sumatoria de stockUnits de la lista debe ser igual a la cantidad de stockUnits informada en el ítem
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) | Si |
Request de stock por deposito
bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <stocks type="list"> <stock type="bean"> <storeCode>1</storeCode> <locationCode>DEP1</locationCode> <revenueCenter>RCD</revenueCenter> <itemInventoryState>OnSale</itemInventoryState> <items type="list"> <item type="bean"> <itemCode>S21GRIS</itemCode> <stockUnits>3</stockUnits> <serializedItems type="list"> <serializedItem type="bean"> <serialNumber>000000000000000020</serialNumber> <stockUnits>1</stockUnits> <serializedUnitCode>0000000001</serializedUnitCode> </serializedItem> <serializedItem type="bean"> <serialNumber>000000000000000021</serialNumber> <serializedUnitCode>0000000002</serializedUnitCode> <stockUnits>1</stockUnits> </serializedItem> <serializedItem type="bean"> <serialNumber>000000000000000022</serialNumber> <serializedUnitCode>0000000003</serializedUnitCode> <stockUnits>1</stockUnits> </serializedItem> </serializedItems> </item> </items> </stock> </stocks> </params> </bridgeCoreRequest>
Abastecimiento
Servicios que permiten el envío a Bridge de documentos de inventario que luego se podrán acceder desde el menú Inventario.
Documento fiscal
Mediante la importación de una interface, se genera un nuevo documento dentro del menú "Mercadería a recepcionar". No será necesaria la intervención del operador para que el remito fiscal esté disponible.
El estado con que se importa el documento es Pendiente Recepción.
Nombre del Servicio: advancedShipmentNotice
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
advanceShipmentNotices | List | Lista de documentos fiscales. | Si |
La lista advanceShipmentNotices debe contener entidades "advanceShipmentNotice", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
destinationRetailStoreID | String (20) | Código de la tienda / estación | Si |
supplier | String (100) | Código del proveedor | Si |
contractReferenceNumber | Varchar(255) | Documento fiscal del proveedor | Si |
originatorNumber | Integer | Número del pedido externo del proveedor si existiera | No |
createDateTimestamp | date | Fecha de imputación del documento fiscal | Si |
receiptNumber | String (50) | Número del documento fiscal o del documento de devolución a proveedor o del documento de recepción | Si |
receiptType | String (10) | Tipo de documento fiscal. Valores posibles FC = Recepción NC = Devolución | Si |
receiptDate | Date | Fecha del documento fiscal | Si |
caiNumber | Integer | Número CAI | No |
caiDate | Date | Fecha de Vencimiento CAI | No |
pagesQuantity | Integer(2) | Cantidad de Hojas | No |
netAmount | Numeric(19,3) | Valor Neto | Si |
exemptAmout | Numeric(19,3) | Valor Exento | No |
taxAmount | Numeric(19,3) | Impuestos Internos | No |
vatAmount | Numeric(19,3) | IVA Base | No |
servicesVATAmount | Numeric(19,3) | IVA Servicios | No |
differencialVATAmount | Numeric(19,3) | IVA Diferencial | No |
ivaTaxAmount | Numeric(19,3) | Percepción IVA | No |
iibbTaxAmount | Numeric(19,3) | Percepción IIBB | No |
totalAmount | Numeric(19,3) | Importe total del doc | Si |
inventoryControlDocumentState | String (25) | Estado del documento ASN enviado | No |
inventoryControlDocumentLineItems | List | Lista de artículos del pedido | Si |
La lista inventoryControlDocumentLineItems debe contener entidades "inventoryControlDocumentLineItem", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
item | String (25) | Código del artículo. | Si |
unitBaseCostAmount | Numeric(19,3) | Costo neto del artículo en el documento fiscal | Si |
unitTotalCostAmount | Numeric(19,3) | Costo bruto del artículo en el documento fiscal | No |
unitCount | Numeric(19,3) | Cantidad del artículo en el documento fiscal | Si |
uomUnits | Numeric(19,3) | Cantidad de unidades de la presentación DEFAULT: 1 | No |
inventoryControlDocumentSerializedtLineItem | Bean | Datos del ítem serializable | No |
La entidad inventoryControlDocumentSerializedLineItem posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
serialNumber | String (100) | Nro de serie | No |
pedimento | String (100) | Nro de pedimento | No |
aduana | String (100) | Aduana | No |
customsDate | Date | Fecha aduana | No |
aggregateCode | String (100) | Se utiliza cuando el registro corresponde al producto hijo de un kit. En este campo se guardará el código identificador único del producto padre | No |
Request de Documento Fiscal
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <advanceShipmentNotice> <destinationRetailStoreID></destinationRetailStoreID> <supplier></supplier> <contractReferenceNumber></contractReferenceNumber> <originatorNumber></originatorNumber> <createDateTimestamp format="dd-MM-yyyyy"></createDateTimestamp> <receiptNumber></receiptNumber> <receiptType></receiptType> <receiptDate format="dd-MM-yyyyy"></receiptDate> <caiNumber></caiNumber> <caiDate format="dd-MM-yyyyy"></caiDate> <pagesQuantity></pagesQuantity> <netAmount></netAmount> <exemptAmout></exemptAmout> <taxAmount></taxAmount> <vatAmount></vatAmount> <servicesVATAmount></servicesVATAmount> <differencialVATAmount></differencialVATAmount> <ivaTaxAmount></ivaTaxAmount> <iibbTaxAmount></iibbTaxAmount> <totalAmount></totalAmount> <inventoryControlDocumentState>CERRADA</inventoryControlDocumentState> <inventoryControlDocumentLineItems> <inventoryControlDocumentLineItem> <item></item> <unitBaseCostAmount></unitBaseCostAmount> <unitTotalCostAmount></unitTotalCostAmount> <unitCount></unitCount> <uomUnits></uomUnits> <inventoryControlDocumentSerializedLineItem> <serialNumber></serialNumber> <pedimento></pedimento> <aduana></aduana> <customsDate format="dd-MM-yyyyy"></customsDate> <aggregateCode></aggregateCode> </inventoryControlDocumentSerializedLineItem> </inventoryControlDocumentLineItem> </inventoryControlDocumentLineItems> </advanceShipmentNotice> </params> </bridgeCoreRequest>
Orden de compra
Mediante la importación de una interface, se genera una nueva orden de compra en la base de datos. No será necesaria la intervención del operador para que la orden de compra esté disponible en la administración de órdenes de compra. El estado con que se importa la orden de compra es Confirmada
Disponible a partir de Bridge 7.2
Nombre del Servicio: purchaseOrderDocument
Parámetros de entrada:
Entidad “ purchaseOrderDocument ", que posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
destinationRetailStoreID | String (20) | Código de la tienda | Si |
supplier | String (100) | Código del proveedor | Si |
originatorNumber | Integer | Número de la orden de compra externo | No |
createDateTimestamp | date | Fecha de creación | Si |
orderDocumentType | Integer | 1= Normal / 2=Especial | No (Si no se envía se asume 1) |
frequency | Numeric(19,3) | Frecuencia en que se realizan las órdenes de compra para el proveedor. | No |
inventoryControlDocumentLineItems | List | Lista de artículos del pedido | Si |
Ejemplo:
La lista inventoryControlDocumentLineItems debe contener entidades "inventoryControlDocumentLineItem", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
item | String (25) | Código del artículo. | Si |
unitCount | Numeric(19,3) | Cantidad del artículo | Si |
uomUnits | Numeric(19,3) | Cantidad de unidades de la presentación | No |
InventoryControlDocumentLineItemOrder | Int | Orden de la línea dentro del documento ICD a efectos de ser visualizado | No |
Request de Orden de compra
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <purchaseOrderDocument> <destinationRetailStoreID>1</destinationRetailStoreID> <supplier>3054668997</supplier> <originatorNumber>1</originatorNumber> <createDateTimestamp format="dd-MM-yyyyy">19-08-2019</createDateTimestamp> <inventoryControlDocumentLineItems> <inventoryControlDocumentLineItem> <item>7290</item> <unitCount>1</unitCount> <uomUnits>2</uomUnits> </inventoryControlDocumentLineItem> </inventoryControlDocumentLineItems> </purchaseOrderDocument> </params> </bridgeCoreRequest>
Pedido de transferencia
Este servicio permite enviar desde un sistema externo un pedido de transferencia hacia una tienda que se podrá visualizar luego desde el menú Inventario/Transferencias.
Disponible a partir de Bridge 7.2
Nombre del Servicio: transferOrderDocument
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
sourceRetailStore | String | Código de la tienda origen | Si |
destinationRetailStoreID | String | Código de la tienda destino | Si |
originatorNumber | String | Número de la orden de transferencia externo | No |
createDateTimestamp | Date | Fecha de creación | Si |
expectedDeliveryDate | Date | Fecha esperada de entrega | No |
serialFormID | Number | Código de la orden de transferencia | Si |
inventoryControlDocumentState | Number | Estado de la transferencia | Si |
inventoryControlDocumentLineItem | List | Lista de artículos de la transferencia | Si=SerialFormID No=sin SerialFormID |
item | String | Codigo del artículo | Si |
unitCount | Decimal | Cantidad del artículo | Si |
Request de pedido de transferencia
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <transferDocument type="bean"> <sourceRetailStore>1</sourceRetailStore> <destinationRetailStoreID>2</destinationRetailStoreID> <originatorNumber /> <createDateTimestamp format="yyyy-MM-dd">2019-08-19</createDateTimestamp> <expectedDeliveryDate format="yyyy-MM-dd">2019-08-19</expectedDeliveryDate> <serialFormID /> <inventoryControlDocumentState /> <inventoryControlDocumentLineItems type="list"> <inventoryControlDocumentLineItem> <item>1234</item> <unitCount>1</unitCount> </inventoryControlDocumentLineItem> </inventoryControlDocumentLineItems> </transferDocument> </params> </bridgeCoreRequest>
Transferencia
Disponible a partir de Bridge 7.2
Este servicio permite enviar desde un sistema externo una transferencia hacia una tienda que se podrá visualizar luego desde el menú Inventario/Transferencias. Este es un caso particular donde la tienda origen es una tienda que debe encontrarse configurada como erpFlag=true (emulando ser un centro de distribución) Solo se mostrará en BMC y en la tienda destino. Esta transferencia ingresa en estado confirmada
Nombre del Servicio: transferDocument
Parámetros de entrada
Entidad “transferDocument", que posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
sourceRetailStore | String (20) | Código de la tienda origen | Si |
destinationRetailStoreID | String (20) | Código de la tienda destino | Si |
originatorNumber | Integer | Número de la transferencia externo | No |
createDateTimestamp | date | Fecha de creación | Si |
ExpectedDeliveryDate | date | Fecha esperada de entrega | No |
serialFormID | Integer | Código de la transferencia | Ver apartado 3.7 por modificación del del campo inventoryControlDocumentState. |
inventoryControlDocumentState | String | "CONFIRMADA" (2) -> Nueva transferencia "CERRADA" 4 -> Recepción "CANCELADA" 5 -> Recepción Cancelada | Sí Ver apartado 3.7 por modificación del |
ICDReference | Integer | Número de la orden de transferencia | No |
inventoryControlDocumentLineItems | List | Lista de artículos de la transferencia | Si cuando serialFormID no informado. No cuando el serialFormID informado |
La lista inventoryControlDocumentLineItems debe contener entidades "inventoryControlDocumentLineItem", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
item | String (25) | Código del artículo. | Si |
unitCount | Numeric(19,3) | Cantidad del artículo | Si |
destinationLocation | String(25) | Código del depósito destino | No |
sourceLocation | String(25) | Código del depósito origen | No |
inventoryControlDocumentMerchandiseSerializedUnits | List | Datos del ítem serializable | No |
La lista inventoryControlDocumentMerchandiseSerializedUnits debe contener entidades "inventoryControlDocumentSerializedtLineItem", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
serialNumber | String (100) | Nro de serie | Si cuando el artículo requiere serie No cuando el artículo requiere lote |
lot | String (100) | Nro de lote / pedimento | No cuando el artículo requiere serie Sí cuando el artículo requiere lote |
aduana | String (100) | Aduana | No |
customsDate | Date | Fecha aduana | No |
unitCount | Numeric(19,3) | Cantidad del lote | No cuando el artículo requiere serie Sí cuando el artículo requiere lote |
Request de transferencia
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <transferDocument type="bean"> <sourceRetailStore>1</sourceRetailStore> <destinationRetailStoreID>2</destinationRetailStoreID> <originatorNumber /> <createDateTimestamp format="yyyy-MM-dd">2022-09-16</createDateTimestamp> <expectedDeliveryDate format="yyyy-MM-dd">2022-09-26</expectedDeliveryDate> <serialFormID /> <inventoryControlDocumentState /> <icdReference /> <inventoryControlDocumentLineItems type="list"> <inventoryControlDocumentLineItem> <item>2022</item> <unitCount>1</unitCount> <destinationLocation>DEP1</destinationLocation> <sourceLocation>DEP1</sourceLocation> <inventoryControlDocumentMerchandiseSerializedUnits type="list"> <inventoryControlDocumentMerchandiseSerializedUnit type="bean"> <serialNumber/> <lot></lot> <aduana/> <customsDate /> <unitCount></unitCount> </inventoryControlDocumentMerchandiseSerializedUnit> </inventoryControlDocumentMerchandiseSerializedUnits> </inventoryControlDocumentLineItem> </inventoryControlDocumentLineItems> </transferDocument> </params> </bridgeCoreRequest>
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>USD</tenderTypeCode> | String (25) | En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla tender (código) | si |
<supervisorRequired>false</supervisorRequired> | Boolean | Flag requiere autorización del supervisor | no default: false |
<foreignCurrency>true</foreignCurrency> | Boolean | Indicador de moneda extranjera | si |
<foreignCurrencyQuoteFactor>6130</foreignCurrencyQuoteFactor> | Decimal | Cotización de moneda extranjera Debe ser mayor a 0 | si |
<foreignCurrencySellingQuoteFactor>6000</foreignCurrencySellingQuoteFactor> | Decimal | Cotización de moneda extranjera tipo de vendedor (utilizado para facturación en moneda extranjera) Debe ser mayor a 0 | si |
Request de cotización de moneda
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <storeTenders type="list"> <storeTender type="bean"> <tenderTypeCode>USD</tenderTypeCode> <supervisorRequired>false</supervisorRequired> <foreignCurrency>true</foreignCurrency> <foreignCurrencyQuoteFactor>6130</foreignCurrencyQuoteFactor> <foreignCurrencySellingQuoteFactor>6660</foreignCurrencySellingQuoteFactor> </storeTender> </storeTenders> </params> </bridgeCoreRequest>
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.
Clientes
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: i. A) DocNbr&Store ii. - Tipo de documento (2 dígitos – se completa con ceros a la izquierda) iii. - Nro de Documento (11 dígitos – se completa con ceros a la izquierda) iv. - 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 a. B) DocNbr i. - Tipo de documento (2 dígitos – se completa con ceros a la izquierda) ii. - Documento (11 dígitos – se completa con ceros a la izquierda) iii. iv. Ejemplo v. <CustomerID> 0100099988877 </CustomerID> - código del cliente vi. <Type>1</Type> -- tipo de doc DNI vii. <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 | No | (el texto que se recibe se guarda en el campo party.origin) |
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) <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 | Si | |
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) | boolean | Indica si es un "Cliente de crédito" | No (default: false) | "isCreditParty" : true, |
creditDisabled | boolean | Indica si "Cuenta corriente deshabilitada" | No (default: false) | "creditDisabled" : true, |
creditLimitAmount | number | Monto límite de crédito | No | "creditLimitAmount" : NumberDecimal("100000"), |
creditTransactionLimitAmount | number | Monto límite de compra (en una sola transacción) | No | "creditTransactionLimitAmount" : NumberDecimal("80000"), |
creditDayLimitAmount | number | Monto límite de compra por día | No | "creditDayLimitAmount" : NumberDecimal("70000"), |
billPeriod | string | 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 | "billPeriod" : "7", |
billExpirationDays | number | Días de vencimiento factura | No | "billExpirationDays" : 10, |
isPrePaidParty | boolean | Indica si "es un cliente de prepago" | No (default: false) | "isPrePaidParty" : true, |
prepaidDisabled | boolean | Cliente de prepago deshabilitado | No (default: false) | "prepaidDisabled" : true, |
affiliate | boolean | Indica si el cliente se encuentra habilitado para realizar operaciones con productos que posean el beneficio de Afiliado (recaudos, Colombia) | No (default: false) | |
partyFiscalRegime | string | Có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 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
campo deprecado |
|
|
| ||||||||||||||||||||||||
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)
| 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)
| 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” NOTA: 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
| 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 Electronico(L a estructura puede verse bajo el título "Correo electrónico", ver “Correo electrónico” ) | No |
telephone | Bean | Telefono(L a estructura puede verse bajo el título "Telefono" , ver “Telefono” ) | 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 adress 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 | No |
postalCodeEx | Varchar (20) | Extensión del código postal | No |
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 RS_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 RS_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 RS_STATE | Si |
Correo electrónico
La entidad emailAdress 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
Para México
Para Chile
Para Colombia
| 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 |
Request de tipo persona
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <customers type="list"> <customer type="bean"> <code>23125518494</code> <origin>ML</origin> <party type="bean"> <name>D Aversa Leticia Josefina</name> <typeCode>PRS</typeCode> <roleAssignments type="list"> <partyRoleAssignment type="bean"> <partyRole id="1"> <name>Cliente</name> </partyRole> <effectiveDate format="dd-MM-yyyy">01-01-2000</effectiveDate> <expirationDate format="dd-MM-yyyy">31-12-2050</expirationDate> <contactMethods type="list"> <address type="bean"> <city type="bean"> <cityCode>12237</cityCode> </city> <firstLine>Sarmiento 543</firstLine> <state type="bean"> <code>BSAS</code> </state> </address> <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> </partyContactMethod> </contactMethods> <sequenceNumber>1</sequenceNumber> </partyRoleAssignment> </roleAssignments> <identifications type="list"> <partyIdentification type="bean"> <identificationType id="1" /> <identifierValue>23-12551849-4</identifierValue> </partyIdentification> </identifications> </party> </customer> </customers> </bridgeCoreRequest>
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 impuesto
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 |
Request de tipo de cliente empresa
<bridgeCoreRequest> <operation>createOrUpdate</operation><params> <customers type="list"> <customer type="bean"><code>920180</code> <store>1</store><party type="bean"> <name>PINTURERIA ORO SA</name> <typeCode>OGN</typeCode> <roleAssignments type="list"><partyRoleAssignment type="bean"> <contactMethods type="list"> <partyContactMethod type="bean"> <purposeType id="2"/><methodType id="1"/> <name>Laboral</name> <effectiveDate>2017-01-20T16:12:17</effectiveDate> <expirationDate>2200-12-30 00:00:00.000</expirationDate> <address type="bean"> <city type="bean"> <code>10859</code> </city><country type="bean"> <code>ARG</code></country> <state type="bean"> <code>AR-B</code></state> <firstLine>CASA 60 SAN JOSE LA HERAS</firstLine> <postalCode>9017</postalCode> </address><emailAddress type="bean"> <name>[email protected]</name> </emailAddress> </partyContactMethod> </contactMethods> <sequenceNumber>1</sequenceNumber> <partyRole id="1"> <name>Cliente</name> </partyRole> <effectiveDate format="dd-MM-yyyy">20-01-2017</effectiveDate> <expirationDate format="dd-MM-yyyy">30-12-2200</expirationDate> </partyRoleAssignment></roleAssignments> <identifications type="list"><partyIdentification type="bean"> <identificationType id="3"/><identifierValue>20225939420</identifierValue> </partyIdentification></identifications><taxRegistrations> <taxRegistration type="bean"> <name>PINTURERIA ORO SA</name> <number>20225939420</number> <taxTypes type="list"> <taxRegistrationTaxType type="bean"> <inscEffectiveDate>2017-01-20T16:12:17</inscEffectiveDate> <inscExpirationDate>2155-01-20T16:12:17</inscExpirationDate> <jurisdictionNType type="list"> <jurisdiction type="bean"> <taxJurisdictionCode>ARG</taxJurisdictionCode> -- en caso del IVA siempre es ARG porque </jurisdiction><taxCategory type="bean"> <code>RI</code> </taxCategory><type type="bean"> <code>IVA</code></type> </jurisdictionNType> </taxRegistrationTaxType> </taxTypes> </taxRegistration> <taxRegistration type="bean"> <name>PINTURERIA ORO SA</name> <number>20225939420</number> <taxTypes type="list"> <taxRegistrationTaxType type="bean"> <inscEffectiveDate>2017-01-20T16:12:17</inscEffectiveDate> <inscExpirationDate>2155-01-20T16:12:17</inscExpirationDate><certificates type="list"/> <jurisdictionNType type="list"> <jurisdiction type="bean"> <taxJurisdictionCode>BA</taxJurisdictionCode> </jurisdiction> <taxCategory type="bean"> <code>L</code> </taxCategory><type type="bean"> <code>IB</code></type> </jurisdictionNType> </taxRegistrationTaxType> </taxTypes> </taxRegistration> </taxRegistrations> </party> </customer> </customers> </params> <replicationStore>0</replicationStore> </bridgeCoreRequest>
Tipo de clientes: partyRole
A partir de Bridge 7.2 se cuenta con este servicio que permite definir los tipos de cliente
Nombre del Servicio: partyRole
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
partyRoles | List | Lista de Tipos de Clientes | Si |
La lista partyRoles debe contener entidades del tipo "partyRole", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
code | String | Código del Tipo de Identificación. | Si |
name | String | Nombre de la Descripción | Si |
description | String | Detalla Cliente, Empleado o Entidad. | No |
disabled | Boolean | Flag que indica si la unidad de medida está deshabilitada para el sistema. Por default se asume false. | No |
Request de tipo de cliente
<bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <partyRoles type="list"> <partyRole type="bean"> <code>1</code> <name>Cliente</name> <description>Denota un Cliente de la Empresa</description> <disabled>false</disabled> </partyRole> <partyRole type="bean"> <code>2</code> <name>Empleado</name> <description>Denota un Empleado</description> <disabled>true</disabled> </partyRole> </partyRoles> </params> </bridgeCoreRequest>
Registraciones fiscales (ARG: padrones)
Servicio padrones
Para un cliente del tipo organización existente en el catálogo de Bridge, se podrá actualizar su alícuota de ingresos brutos.
Se dispone de este servicio mediante el cual por medio del código de cliente, se podrá actualizar la alícuota del cliente.
Nombre del Servicio: padrones
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
padrones | List | Lista de clientes actualizar sus alícuotas según padrón. | Si |
La lista de padrones debe contener entidades “padrón”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Campo en el que se importa |
codigoCliente | String (50) | Código del cliente | Si | <!--El campo customerCode lo uso para relacionar la tabla con la tabla Party--> <field name="partyCode" type="String" required="true"/> |
jurisdiccion | String (25) | Código de la jurisdicción | Si | <field name="jurisdictionAndType" type="TaxJurisdictionTaxType" required="true"/> |
categoriaImpositivaCliente | String | Categoría del impuesto del cliente Ej: IBBCM | Si | <field name="jurisdictionAndType" type="TaxJurisdictionTaxType" required="true"/> |
alicuota | Decimal | Porcentaje de alícuota que se le aplicará al cliente según padrón | Si | <field name="aliquot" type="mongoose.Types.Decimal128" required="false"/> |
desde | Date | Fecha inicio de vigencia de la alícuota format="dd/MM/yyyy HH:mm:ss" | Si | <field name="aliqEffectiveDate" type="Date" required="false"/> |
hasta | Date | Fecha fin de vigencia de la alícuota format="dd/MM/yyyy HH:mm:ss" | Si | <field name="aliqExpirationDate" type="Date" required="false"/> |
inscripcionDesde | Date | Fecha fin de inicio de vigencia de la inscripción impositiva format="dd/MM/yyyy HH:mm:ss" Si no se recibe setear con el mismo valor recibido en "desde" (fecha de la alícuota) | No | <field name="inscEffectiveDate" type="Date" required="false"/> |
inscripcionHasta | Date | Fecha fin de vigencia de la inscripción impositiva format="dd/MM/yyyy HH:mm:ss" Si no se recibe setear con el mismo valor recibido en "hasta" (fecha hasta de la alícuota) | No | <field name="inscExpirationDate" type="Date" required="false"/> |
Request de padrones
Percepción de IIBB BS AS: <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <padrones> <padron> <codigoCliente>0100026498751</codigoCliente> <jurisdiccion>BA</jurisdiccion> <categoriaImpositivaCliente>IBBCM</categoriaImpositivaCliente> <alicuota>9</alicuota> <desde format="dd/MM/yyyy HH:mm:ss">01/11/2019 00:00:00</desde> <hasta format="dd/MM/yyyy HH:mm:ss">30/11/2019 00:00:00</hasta> </padron> </padrones> </params> </bridgeCoreRequest> Percepción IIBB CABA: <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <padrones> <padron> <codigoCliente>0100026498751</codigoCliente> <jurisdiccion>CABA</jurisdiccion> <categoriaImpositivaCliente>IBBCM</categoriaImpositivaCliente> <alicuota>5</alicuota> <desde format="dd/MM/yyyy HH:mm:ss">01/11/2019 00:00:00</desde> <hasta format="dd/MM/yyyy HH:mm:ss">30/11/2019 00:00:00</hasta> </padron> </padrones> </params> </bridgeCoreRequest>
Usuarios
Servicio que permite enviar usuarios a Bridge Manager desde oros sistemas
Actualización de Usuarios
Nombre del Servicio: user
Operación : createOrUpdate.
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
users | List | Lista de usuarios a crear o actualizar. | Si |
La lista users debe contener entidades “user”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
name | String (50) | Nombre o número de legajo del usuario | Si |
userName | String (50) | Nombre de usuario | Si para nuevo usuario No para usuario existente |
password | String (50) | Contraseña encriptada | No Validaciones:
|
passwordSalt | String (50) | Contraseña de usuario | No Validaciones:
|
codeStore | Integer (20) | Código de identificación de la tienda | No |
String (100) | Dirección email del usuario | No | |
roleGroups | List | Lista de roles para los usuarios Se debe informar la relación grupo-tienda | No Validaciones:
|
disabled | Boolean | Indicador si está habilitado o no el usuario | No (default si no se recibe = false) |
mustChangePassword | Boolean | Tiene que cambiar la contraseña cuando la misma caduque o cuando pase los XX días de inactividad. | No. Es opcional. Se tomará por defecto que deba cambiar la contraseña. |
blocksOnUserNoActivity | Boolean | Después de XX cantidad de días de inactividad, se pide cambio de contraseña. | No. Es opcional. Por defecto el usuario se bloquea después de los XX días de inactividad. |
accountLocked | Boolean | Determina si la cuenta está bloqueada (30 mins en central y hasta que se modifique la password en tienda por haber ingresado mas de XX veces mal la contraseña). | No, es opcional. Por defecto el usuario se encuentra desbloqueado. |
passwordExpire | Boolean | Determina si la contraseña expira o no. Si expira, pasados los XX días del último cambio de contraseña, se pide cambio de contraseña. | No, es opcional. Por defecto la contraseña expira. |
Alternative_user_code | Varchar (25) | Código de usuario alternativo | No, opcional (en proyectos se podrá utilizar como código de usuario del ERP) |
Request de usuario
<?xml version="1.0" encoding="UTF-8"?> <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <users type="list"> <user type="bean"> <name>prueba27</name> <userName>gonxa8</userName> <password>4AA101DDC5DC18B1B632E6540805722C</password> <passwordSalt>A057F651CDA66D6B8C6986D94E91FF7B550CCEA92FC3E7AED2B70B3A66D4B61E</passwordSalt> <enabled>true</enabled> <mustChangePassword>true</mustChangePassword> <blocksOnUserNoActivity>true</blocksOnUserNoActivity> <accountLocked>true</accountLocked> <passwordExpire>true</passwordExpire> <roleGroups type="list"> <roleGroup type="bean"> <group>Cajero</group> <store>10</store> </roleGroup> <roleGroup type="bean"> <group>Vendedor</group> <store>10</store> </roleGroup> </roleGroups> </user> <user type="bean"> <name>Gonzalo8</name> <userName>gonxa8</userName> <password>4AA101DDC5DC18B1B632E6540805722C</password> <passwordSalt>A057F651CDA66D6B8C6986D94E91FF7B550CCEA92FC3E7AED2B70B3A66D4B61E</passwordSalt> <enabled>true</enabled> <mustChangePassword>true</mustChangePassword> <blocksOnUserNoActivity>true</blocksOnUserNoActivity> <accountLocked>true</accountLocked> <lockTime>16/03/2017</lockTime> <passwordExpire>true</passwordExpire> <roleGroups type="list"> <roleGroup type="bean"> <group>Cajero</group> <store>10</store> </roleGroup> <roleGroup type="bean"> <group>Vendedor</group> <store>10</store> </roleGroup> </roleGroups> </user> </users> </params> </bridgeCoreRequest>
Configuración por Tienda
itemStore
Descripción: Mediante la importación, se genera una nueva configuración de Productos por Tienda en la base de datos.
Nombre del servicio: itemStore
Parámetros de Entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
---|---|---|---|
itemStores | list | Lista de itemStore a crear o actualizar | Si |
Se podrá recibir una lista de itemStores conteniendo elementos del tipo “itemStore", que posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Campo a importar en ItemStore |
---|---|---|---|---|
internalCode | String (25) | Código de artículo | Si |
|
storeCode | String | Código de tienda | Si |
|
notForSale | Integer | Item no a la venta. Valores posibles:
| No | "notForSale" |
disabled | Integer | Item deshabilitado Valores posibles:
| No | "disabled" |
blockedForIcd | Integer | Item Bloqueado para la compra (solo en órdenes de compra) Valores posibles:
| 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 |
|
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 |
|
itemType | String (25) | Código del tipo de artículo. En este campo los valores admitidos son:
| No |
|
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:
| No | "onConsignment" |
Consideraciones de algunos campos no informados en el servicio:
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 |
Request de itemStore
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.business.soap.bridge.synthesis.com/"> <soapenv:Header/> <soapenv:Body> <ser:execute> <!--Optional:--> <service>itemStore</service> <!--Optional:--> <request> <![CDATA[ <bridgeCoreRequest> <operation>createOrUpdate</operation> <params> <itemStores type="list"> <itemStore><internalCode>2345</internalCode><storeCode>1</storeCode> <vatCode>2</vatCode> </itemStore> <itemStore><internalCode>2345</internalCode><storeCode>2</storeCode> <vatCode>1</vatCode> </itemStore> <itemStore> <internalCode>312</internalCode><storeCode>2</storeCode> <disabled>2</disabled></itemStore> </itemStores> </params> </bridgeCoreRequest> ]]> </request> <!--Optional:--> </ser:execute> </soapenv:Body> </soapenv:Envelope>