Manual de Servicios de integración B7.X




© 2024 Napse. Todos los derechos reservados.

REVISIONES

FechaVersiónDescripciónAutor
1

 


Se agregan campos opcionales de fechas de inscripción al servicio de padrones.

Se agrega nota para el servicio ítem con el flag requiere reserva si por configuración se debe importar automáticamente

2

 

2.0Creación del documento basado en v7.0 actualizado a v7.1
3

 

2.1Se agregan servicios itemAttribute y atributos del item
4

 

2.2Se agrega anexo de recomendaciones y se actualizan con nuevos servicios
5

 

2.3Se agrega servicio transferDocument (para caso particular simulando tienda de abastecimiento store.erpFlag = true)
6

 

2.4Se agregan los tipos de identificación del customer para otros países
7

 

2.5Se agregan campos de crédito al servicio customer (a partir de v7.4) y al item el flag de creditAllowed
8

 

2.6Se agregan dos nuevos campos (a partir de v7.4) al servicio customer e item (affiliate y partyFiscalRegime). Al servicio ítem se agrega el campo serialFormat
9

 

2.7Se agrega el servicio de itemStore.
10

 

2.8Se agrega dentro de la request de itemAttribute, un campo obligatorio "dataType"
11

 

2.9Se ajustan campos del servicio customer (se elimina disabled dentro de party, se ajusta título partyData por party)
12

 

3.0Se agrega el servicio itemInternalTax.
13

 

3.1Se corrige el nombre de inventoryControlDocumentSerializedtLineItems y se agrega el externalCode en Item y unitOfMeasure
14

 

3.2Se ajusta en el servicio itemSellingPrices (lista de precios) el envío de las tiendas y canales 
15

 

3.3Se ajusta el servicio itemSellingPrices (lista de precios)  con campos deprecados
16

 

3.4Se cambia la descripción del campo "order" a una mas representativa.


17

 

3.5Se agregan los campos minStockForChannels y minSalePrice al servicio item y a itemStore (disponible a partir de v7.5.2)
18

 

3.6Se agregan notas y ajustes al servicio de item (por atributos) y al servicio itemAttribute
19

 

3.7Se actualiza el campo serialFormId e inventoryControlDocumentState del servicio de "transferDocument"
20

 

3.8Se actualiza el servicio de customer con el agregado de campos en el partyContactMethod 
21

 

3.9Se actualiza el servicio itemStore con el agregado de los campos onConsignment, location y saleLocation
22

 

4.0Se agregan los servicios de consulta de Proveedores, Jerarquías y campos adicionales sobre el servicio existente de Item.
23

 

4.1Se agrega nuevo campo "dateFormatPattern" al servicio "itemInternalTaxes" (a partir de Bridge v7.8)
24

 

4.2Se agrega nuevo campo "deliveryCode" al servicio customer en partyContactMethod
25

 

4.3Se agrega como obligatorio el campo "itemVATCategory"
26

 

4.4Se agrega el campo "ssoUser" al servicio "user"  (a partir de v7.8) y el campo "classification"
27

 

4.5Se agregan campos al servicio de listas de precios (a partir de v7.5)
28

 

4.6Se agrega el servicio de ajuste de inventario "inventotyAdjustmentDocument".
29

 

4.7Se cambia el nombre del campo stockItem por stockItemFlag del servicio "item". También se agrega información en la descripción del campo.
30

 

4.8Se agrega el campo lista de grupo de tiendas al servicio de itemSellingPrices (lista de precios)
31

 

4.9Se agrega nota en el campo itemSellingPricesStatus al servicio de itemSellingPrices (lista de precios)
32

 

5.0Se agregan validaciones y manejo de errores implementados en el servicio de importación de listas de precios en formato XML.
33

 

5.1Se agrega el servicio de Lista de precios promocionales "ItemSellingPricesPromo".
34

 

5.2Se agregan los cambios en el servicio purchaseOrderDocument. Nuevo campo transferDocumentCancel opcional
35

 

5.3Se agregan los cambios en el servicio purchaseOrderDocument. Nuevo campo orderDocumentCancel opcional
36

 

5.4Se ajusta el servicio customer (certificates, taxCertificates)
37

 

5.5Se agrega el campo "saleLocationCode" al servicio item
38

 

5.6

Se agrega el campo "traceReq" al servicio item

39

 

5.7

Se actualiza el tipo de dato del campo originatorNumber a String en el servicio  purchaseOrderDocument


CONTENIDO




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 los siguientes puntos a modo de recomendación para los envíos de información mediante los servicios de integración:

  • Envío en lotes:

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

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

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

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




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:

Request ejemplo: supplier
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
  <params>
    …
  </params>
</bridgeCoreRequest>
  • operation: Nombre de la operación
  • params: Parámetros de la operación.




Servicios de integración SOAP con seguridad

Para habilitar la autenticación del servicio, se debe activar en Bridge Manager, accediendo desde Configuración > Sistema > Sistema > Seguridad, se debe habilitar el parámetro "Solicitar autenticación para el uso de servicios SOAP"

La autenticación se realiza vía el mecanismo Basic, por lo que deberían enviar en el request el header "Authorization: Basic xxxxxxxxxx", donde xxxxxxxxxx es "clientId:clientSecret" (separado por ":" y sin comillas), codificado en base64 . Ejemplo: Authorization: Basic YnJpZGdlLWFwaTpEQTM5QTNFRTVFNkI0QjBEMzI1NUJGRUY5NTYwMTg5MEFGRDgwNzA= 

Los valores para clientId y clientSecret son los mismos que se utilizan para obtener el token de API (colección Client)

  • Se debe ir al menú debajo “Auth”


  • Al presionar “Auth” se podrá agregar “Basic”


  • Se selecciona “Add New Authorization”, elegir Type “Basic” y presionar “OK”


  • Se abrirá un menú donde
    • en el campo Username se debe ingresar el ClientID de API
    • en el ampo Password se debe ingresar el ClientSecret
    • Seleccionar “Authenticate pre-emptively”

UPDATE en Bridge 7.7

La funcionalidad de servicios de integración SOAP con seguridad que agrega seguridad a los servicios de importación xml, se encuentra disponible en la versión 7.5 y a partir de la versión 7.7 de Bridge Api. La versión intermedia no cuenta con dicha funcionalidad.


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

Request ejemplo: 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)

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







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

email

String (100)

Email del proveedor

No

fiscalId

String (100)

Identificador fiscal del proveedor, en Argentina corresponde al CUIT.

No

activeFlag

Boolean

(true/false)

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

default: true

Si

caiRequired

Boolean

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

No

asn

Boolean

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

No

frequency

Integer(4)

Días que transcurren entre órdenes de compras

No

automaticMail

Boolean

(a partir de v7.3) Indica si se debe enviar de forma automática la orden de compra confirmada al proveedor

No

mail

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.


Nota: A partir de la versión BR 7.5.6, se ha incorporado una nueva funcionalidad en la mensajería de request. En la respuesta actual del ACK 999, dentro del campo "additional", se añadirá una lista con los códigos de las entidades que no pudieron ser cargadas, junto con la posición en el XML donde se encontraban y un mensaje explicando el motivo del error.

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


Nota: A partir de la versión BR 7.5.6, se ha incorporado una nueva funcionalidad en la mensajería de request. En la respuesta actual del ACK 999, dentro del campo "additional", se añadirá una lista con los códigos de las entidades que no pudieron ser cargadas, junto con la posición en el XML donde se encontraban y un mensaje explicando el motivo del error.

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.
Enviar campo en true para habilitarlo

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
(enviar el valor RCD)

Si

itemInventoryState

String (50)

Código identificador del estado del depósito (ej.: OnSale)
Valores disponibles:
ID – Código - Descripción

  • 'OnSale', 'Items a la venta'
  • 'TransitIn', 'Items en tránsito de entrada'
  • 'TransitOut', 'Items en tránsito de salida'

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
Si no se recibe el campo importar el Default = false

erpCode

numeric

Codigo ERP

Si

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


UPDATE V7.7

En la nueva versión de Bridge V7.7, se han incorporado ajustes en el comportamiento del servicio de ítems que permiten generar nuevas opciones para atributos. Estos cambios tienen como objetivo mejorar la flexibilidad al gestionar los atributos de los artículos en el sistema.

Ajustes realizados:

  1. Nuevas opciones de atributos: Se ha agregado una propiedad configurada desde BM en el menú Configuración → Sistema → Tienda → Artículos que habilita la creación de nuevas opciones de atributos a través del servicio de ítems.

    • store.enableCreateOptions:
      • Descripción: Al habilitar esta propiedad, se permite la creación de nuevas opciones de atributos mediante el servicio de ítems.
      • Comportamiento: Si está activada, el sistema permitirá asignar nuevos atributos a los artículos, creando estas opciones dentro de la colección itemAttribute en caso de que no existan previamente.
      • Valor por defecto: False.
  2. Modificación del ABM de ítems:

    • En el ABM de Atributos por Artículo, ahora se pueden crear y asignar opciones de atributos a los artículos directamente desde las interfaces del sistema.
    • Este cambio se refleja tanto en la creación de nuevos ítems como en la edición y en la carga masiva de artículos a través de Importar Artículos.

Comportamiento modificado:

  • Al generar un atributo de tipo Texto (string), Fecha o Numérico, ya no será obligatorio ingresar una lista predefinida de valores. Estos atributos ahora son de contenido libre, lo que significa que el usuario puede ingresar cualquier valor sin restricciones.
  • Este cambio también aplica a las integraciones con el servicio de ítems a través de la API, donde la creación de atributos y opciones será automática si la propiedad está activada.

Importante: Si la propiedad no está habilitada, el sistema mantendrá su comportamiento nativo, permitiendo asignar solo opciones existentes sin la creación de nuevas.

Este cambio ha sido solicitado por el proyecto Farmacity, y está disponible a partir de la versión V7.7.

UPDATE 7.5.6

Nota: A partir de la versión BR 7.5.6, se ha incorporado una nueva funcionalidad en la mensajería de request. En la respuesta actual del ACK 999, dentro del campo "additional", se añadirá una lista con los códigos de las entidades que no pudieron ser cargadas, junto con la posición en el XML donde se encontraban y un mensaje explicando el motivo del error.



Nombre del Servicio: itemAttribute
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

itemAttributes

List

Lista de atributos del ítem a crear o actualizar.

Si


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

Propiedad

Tipo de dato

Descripción

Requerido

code

String

Código del atributo del ítem

Si

name

String

Descripción del atributo del ítem

Si

dataType

String

Tipo de dato que puede tomar el atributo

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

editOpcionsFlag

Boolean

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

No

showInfo

Boolean

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

No

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

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

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

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

No

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

infoStringInformación adicional de la opción del atributoNo
disabledBooleanIndicador 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.

UPDATE V7.7

En la nueva versión de Bridge V7.7, se han incorporado ajustes en el comportamiento del servicio de ítems que permiten generar nuevas opciones para atributos. Estos cambios tienen como objetivo mejorar la flexibilidad al gestionar los atributos de los artículos en el sistema.

Ajustes realizados:

  1. Nuevas opciones de atributos: Se ha agregado una propiedad configurada desde BM en el menú Configuración → Sistema → Tienda → Artículos que habilita la creación de nuevas opciones de atributos a través del servicio de ítems.

    • store.enableCreateOptions:
      • Descripción: Al habilitar esta propiedad, se permite la creación de nuevas opciones de atributos mediante el servicio de ítems.
      • Comportamiento: Si está activada, el sistema permitirá asignar nuevos atributos a los artículos, creando estas opciones dentro de la colección itemAttribute en caso de que no existan previamente.
      • Valor por defecto: False.
  2. Modificación del ABM de ítems:

    • En el ABM de Atributos por Artículo, ahora se pueden crear y asignar opciones de atributos a los artículos directamente desde las interfaces del sistema.
    • Este cambio se refleja tanto en la creación de nuevos ítems como en la edición y en la carga masiva de artículos a través de Importar Artículos.

Comportamiento modificado:

  • Al generar un atributo de tipo Texto (string), Fecha o Numérico, ya no será obligatorio ingresar una lista predefinida de valores. Estos atributos ahora son de contenido libre, lo que significa que el usuario puede ingresar cualquier valor sin restricciones.
  • Este cambio también aplica a las integraciones con el servicio de ítems a través de la API, donde la creación de atributos y opciones será automática si la propiedad está activada.

Importante: Si la propiedad no está habilitada, el sistema mantendrá su comportamiento nativo, permitiendo asignar solo opciones existentes sin la creación de nuevas.

Este cambio ha sido solicitado por el proyecto Farmacity, y está disponible a partir de la versión V7.7.

UPDATE 7.5.6

Nota: A partir de la versión BR 7.5.6, se ha incorporado una nueva funcionalidad en la mensajería de request. En la respuesta actual del ACK 999, dentro del campo "additional", se añadirá una lista con los códigos de las entidades que no pudieron ser cargadas, junto con la posición en el XML donde se encontraban y un mensaje explicando el motivo del error.


Nombre del Servicio: item
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

items

List

Lista de artículos a crear o actualizar.

Si

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

Propiedad

Tipo de dato

Descripción

Requerido

Campo de importación

itemCode

String (25)

Código del artículo.

Si


description

String (50)

Descripción del artículo

Si


hierarchyGroupCode

String (10)

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

No


price

Decimal(11,2)

Precio de venta por unidad.

Si


unitCostPrice

Decimal(11,2)

Costo de la unidad.

No


specialPrice

Decimal(11,2)

Precio especial de venta para clientes.

No


vatCode

String (3)

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

Si


notForSaleFlag

Boolean

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

No


notForDiscountsFlag

Boolean

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

No


priceRequiredFlag

Boolean

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

No


weightRequiredFlag

Boolean

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

No


quantityRequiredFlag

Boolean

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

No


quantityAllowedFlag

Boolean

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

No


restrictedSaleFlag

Boolean

Flag de venta en horario restringido

No


logExceptionFlag

Boolean

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

No


authorizationRequiredFlag

Boolean

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

No


foodStampFlag

Boolean

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

No


serialNumberRequiredFlag

Boolean

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

No


returnNotAllowedFlag

Boolean

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

No


supplierCode

String (100)

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

No


brandCode

String (100)

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

No


itemType

String (25)

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

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

Si


promotionalPrice

Decimal(11,2)

Precio promocional.

No


promotionalPriceDateFrom

DateTime

Fecha y hora de inicio de la vigencia del precio promocional

No


promotionalPriceDateTo

DateTime

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

No


uomCode

String (25)

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

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

Si


lastUpdateSaleUnitPrice

DateTime

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

No


genericItemFlag

Boolean

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

Si


kitComponentFlag

Boolean

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

Si


inventoryLocationCode

Varchar (25)

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

Si

Se importa en el campo location

commissionPercent

Decimal(6,2)

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

No


disabled

Boolean

Flag que indica que el artículo está deshabilitado

Si


itemVATCategory

String (2)

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

Si


uom2Code

String (1)

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

No


uom2Units

Decimal(14,2)

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

No


uom2Operation

String (1)

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

No


stockReservationRequired

Boolean

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

No

 Si el parámetro store.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
Todos los campos generic se importan en la tabla
ITM_USR_DATA

No

Importar en ITM_USR_DATA, campo USR_I_STRNG

genericFieldString2

String (50)

Campo para uso genérico

No

Importar USR_II_STRNG

genericFieldString3

String (50)

Campo para uso genérico

No

Importar USR_III_STRNG

genericFieldString4

String (50)

Campo para uso genérico

No

Importar USR_IV_STRNG

genericFieldBoolean1

Boolean

Campo para uso genérico

No

Importar en USR_I_FL

genericFieldBoolean2

Boolean

Campo para uso genérico

No

Importar en USR_II_FL

genericFieldBoolean3

Boolean

Campo para uso genérico

No

Importar en USR_III_FL

genericFieldBoolean4

Boolean

Campo para uso genérico

No

Importar en USR_IV_FL

genericFieldDecimal1

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_I_INT

genericFieldDecimal2

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_II_INT

genericFieldDecimal3

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_III_INT

genericFieldDecimal4

Decimal(8,2)

Campo para uso genérico

No

Importar en campo USR_IV_INT

importDocReq

Boolean

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

No


sellerRequired

Boolean

Indicador si requiere el ingreso del vendedor

No


webDescription

Varchar (max)

Descripción ampliada del artículo para la web

No


extendedWebDescription

Varchar (max)

Descripción detallada del artículo para la web

No


internalTaxes

List

Lista de impuestos internos

No


itemPictures

List

Lista de imágenes asociadas

No


formRequiredFlag

boolean

Flag indicador de formulario requerido

No (opcional)

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

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

Código del fabricante

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

(a partir de Bridge7.2)

No (opcional)

(a partir de Bridge 7.2)

exemptFlagboolean

Flag de item exento

(a partir de Bridge7.2)

No (opcional)

Default = false si no viene informado

(a partir de Bridge 7.2)

otherUnitOfMeasurelist

Lista de unidades de medida complementarias

otherUnitOfMeasure

<uomCode>blister</uomCode>

<conversionFactor>0.1</conversionFactor>

No (opcional)

(a partir de 7.2)

printCommandsFlagbooleanFlag de ítem para impresión de comandaNo (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 ProductoNo (opcional) 

Default = 0 si no viene informado. 

(a partir de Bridge 7.3)

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

No

(opcional)

Default = 0 si no viene informado. 

(a partir de Bridge 7.3)

attributesListAtributos de un itemNo (opcional)

<attributes type="list">

            <attribute type="bean">

               <code>PROCEDENCIA</code>

               <option>NAC</option>

            </attribute>

        </attributes>

creditAllowedboolean

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)

alcoholicBeverageboolean

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

No (opcional) 

default=false

(a partir de 7.5)

affiliateBenefitboolean

Flag que indica si el articulo tiene el beneficio de Afiliado

No (opcional, default=false)

(a partir de 7.4)

affiliateboolean

Flag que indica si el cliente es Afiliado

No (opcional, default=false)

v1.15 (a partir de 7.4)

serialFormatstringPermite definir el tipo de formato admitido para el nro de serie opcional(a partir de 7.4)
externalCodenumber

Permite definir el código externo del item

No (opcional)

v1.17 (a partir de 7.5)

singleSaleFlagboolean

No admite otro artículo en la venta

No (opcional)

v.1.19 (a partir de 7.6)

returnRestricctionboolean

Aplica restricciones a la devolución.

No (opcional)

v1.20 (a partir de 7.5.4)

requiresDateboolean

Requiere Fecha.

No (opcional)

v1.21 (a partir de 7.7)

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


fullDescriptionstringDescripcion ampliadaNo (opcional)

v1.23 (a partir de 7.7)

stockItemFlagobject

¿Es un artículo que maneja stock?

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

<itemDepth>1</itemDepth> (Decimal)

<itemHeight>2</itemHeight> (Decimal)

<itemWidth>3</itemWidth> (Decimal)

<itemDiameter>4</itemDiameter> (Decimal)

No (opcional)

v1.23 (a partir de 7.7)

itemDepth
NumberDecimalProfundidad del ítem

No (opcional)

v1.23 (a partir de 7.7)

itemHeight
NumberDecimalAltura del ítemNo (opcional)

v1.23 (a partir de 7.7)

itemNetWeight
NumberDecimalPeso del ítem

No (opcional)

v1.23 (a partir de 7.7)

minStockForChannels

NumberDecimalStock Minimo para Canales

No (opcional)

v1.23 (a partir de 7.7)

itemGrossWeight
NumberDecimalPeso bruto del ítem

No (opcional)

v1.23 (a partir de 7.7)

itemDiameter
NumberDecimalDiámetro del ítem

No (opcional)

v1.23 (a partir de 7.7)

itemWidth
NumberDecimalAncho del ítem

No (opcional)

v1.23 (a partir de 7.7)

calculateCommissionbooleanCalcula comision

No (opcional)

v1.23 (a partir de 7.7)

relevanceintegerRelevancia

No (opcional)

v1.23 (a partir de 7.7)

publishedbooleanPublicado

No (opcional)

v1.23 (a partir de 7.7)

detailedDescriptionstringDescripcion detallada

No (opcional)

v1.23 (a partir de 7.7)

barcodestringCodBarra

No (opcional)

v1.23 (a partir de 7.7)

requiresPrescriptionFlagbooleanRequiere recetaNo (opcional)

v1.23 (a partir de 7.7)

onConsignmentbooleanConsignado

No (opcional)

v1.23 (a partir de 7.7)

classificationstringClasificacion

No (opcional)

v1.23 (a partir de 7.7)

daysToReturnintegerDias para devoluciones y cambios

No (opcional)

v1.23 (a partir de 7.7)

invoiceNotAllowedbooleanNo permite facturar 

No (opcional)

v1.23 (a partir de 7.7)

notForSalebooleanNo admite otro artículo en la venta 

No (opcional)

v1.23 (a partir de 7.7)

packQtyintegerEmpaque Mínimo

No (opcional)

v1.23 (a partir de 7.7)

gtinintegerCódigo GTIN No (opcional)

v1.23 (a partir de 7.7)

requiresValidationExternalFlagbooleanRequiere Validación Externa

No (opcional)

v1.23 (a partir de 7.7)

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

No (opcional)

(a partir de 7.8)

exemptTaxedFlagbooleanIndica si el Item es exento de impuestos

No (opcional)

Default = false si no viene informado.

(a partir de Bridge 7.8)

saleLocationCodestring

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

No (opcional) 

Se importa en el campo saleLocation 

v5.5 

traceReqboolean

Indicador que permite definir si el artículo va a requerir el ingreso de su traza (utilizado para farmacias. A partir de Bridge v7.9.10) 

No (opcional)

Se importa en el campo traceReq (a partir de Bridge v7.9.10) 

Default: false si no viene informado 

v5.6

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>NORM</itemType>
                <promotionalPrice>8000.00</promotionalPrice>
                <vatCode>1</vatCode> 
                <uomCode>u</uomCode> 
                <daysToChange>4</daysToChange> 
                <genericItemFlag>false</genericItemFlag> 
                <kitComponentFlag>false</kitComponentFlag> 
                <inventoryLocationCode>DEP1</inventoryLocationCode>
                <disabled>false</disabled> 
                <itemVATCategory>G</itemVATCategory> 
                <restrictedSaleGroup>TEST</restrictedSaleGroup>
                <saleLocationCode>DEP1</saleLocationCode>              
	        </item>
            <item type="bean">
                <price>10.00</price> 
                <itemCode>itemTest1</itemCode>
                <noBalanceControlRequired>true</noBalanceControlRequired>
                <description>IPHONE 12 128 GB BRANCO</description> 
                <itemType>NORM</itemType>
                <promotionalPrice>8000.00</promotionalPrice>
                <vatCode>1</vatCode> 
                <uomCode>u</uomCode>
                <genericItemFlag>false</genericItemFlag> 
                <kitComponentFlag>false</kitComponentFlag> 
                <inventoryLocationCode>DEP1</inventoryLocationCode>
                <disabled>false</disabled> 
                <itemVATCategory>G</itemVATCategory> 
                <restrictedSaleGroup>CELULARES</restrictedSaleGroup>
            </item>
            <item type="bean">
                <itemCode>000000000100002538</itemCode>
                <price>50.00</price> 
                <noBalanceControlRequired>true</noBalanceControlRequired>
                <description>IPHONE 12 128 GB BRANCO</description> 
                <itemType>NORM</itemType>
                <promotionalPrice>8000.00</promotionalPrice> 
                <vatCode>1</vatCode>
                <uomCode>u</uomCode> 
                <genericItemFlag>false</genericItemFlag> 
                <kitComponentFlag>false</kitComponentFlag> 
                <inventoryLocationCode>DEP1</inventoryLocationCode> 
                <disabled>false</disabled> 
                <itemVATCategory>G</itemVATCategory>
                <restrictedSaleGroup>CELULARES</restrictedSaleGroup>
                <exemptTaxedFlag>false</exemptTaxedFlag> 
              </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.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Item (campo ItemCode)

Si

barcode

String (25)

Código de barras.

Si

description

String (255)

Descripción del código de barras.

Si

units

Integer

Unidades (si no viene informado se setea = 1) 

No

storeCode

Varchar (20)

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

No

disabled

Boolean

Si el mismo se encuentra activo o no. Default false

No

disabledInPos

Boolean

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

No

IMPORTANTE BRIDGE 7.8.8

A partir de esta version el parámetro <storeCode> no se toma como parámetro disponible en este servicio.

Tener en cuenta que: 

  • Los Barcodes se replican automáticamente a todas las tiendas.

  • Esta replicación ocurre independientemente del store indicado en el request general.

Ahora, los códigos de barra se cargan de manera centralizada y se replican automáticamente a todas las tiendas, sin depender del valor de store en el request.

Nota: A partir de la versión BR 7.5.6, se ha incorporado una nueva funcionalidad en la mensajería de request. En la respuesta actual del ACK 999, dentro del campo "additional", se añadirá una lista con los códigos de las entidades que no pudieron ser cargadas, junto con la posición en el XML donde se encontraban y un mensaje explicando el motivo del error.

UPDATE 7.9

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

Request de alias

<bridgeCoreRequest>
    <operation>createOrUpdate</operation>
    <params>
        <aliases type='list'>
            <alias type='bean'>
                <itemCode>999</itemCode>
                <barcode>7791825307292</barcode>
                <description>yerba</description>
                <units>1</units>
                <disabled>false</disabled>
                <disabledInPos>false</disabledInPos>                                
            </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.
En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Style (campo code. Servicio a implementar)

No

colorCode

String (25)

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

No

sizeCode

String (25)

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

No

containerCode

String (25)

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

No

Type

String (2)

Código de tipo de stock ítem.

No

saleWeightOrUnitCountCode

String

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

No

pickupCode

String(2)

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

No

unitPriceFactor

Decimal(10,4)

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

No

availableForSaleDate

DateTime

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

No

inventoryAccountingMethodCode

String (2)

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

No

sellUnitLastReceivedBaseCostAmount

Money

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

No

sellUnitLastReceivedNetCostAmount

Money

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

No

sellUnitLandedCostAmount

Money

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

No

sellUnitLastReceivedCostsEstablishedDate

DateTime

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

No

shrinkFlag

Boolean

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

No

swellFlag

Boolean

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

No

model

String

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

No

depth

Decimal (15,4)

Medida de la profundidad del artículo.

No

width

Decimal (15,4)

Medida del ancho del artículo.

No

height

Decimal (15,4)

Medida del alto del artículo.

No

diameter

Decimal (15,4)

Medida del diámetro del artículo.

No

grossWeight

Decimal (15,4)

Peso bruto del artículo.

No

netWeight

Decimal (15,4)

Peso neto del artículo.

No

drainedWeight

Decimal (15,4)

Peso drenado del líquido.

No

sizeUomCode

String (25)

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

No

weightUomCode

String (25)

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

No

repositionPoint

Decimal (15,4)

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

No

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:

PropiedadTipo de datoDescripciónRequerido

itemCode

String(25)

Código del artículo al cual se asocian los enlazados

<Item type="bean">  
    <itemCode>ACA</itemCode>

Si

kitBoolean

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
linkedListLista

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
linkedItemBean

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

Si

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

CódigoDetalle
SIArticulos similares
CIArtículos complementarios
CSServicios complementarios
WRTGarantías
SCSimilares por color
STSimilares por talle
SSSimilares por tamaño

Si

itemRelated

String

Código del artículo relacionado

Si

nameRelated

String

Descripción del tipo de relación (texto opcional)

No

disabledBooleanIndicador de habilitadoNo


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
(Def=false)

No

defaultBarcodeboolean

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
expirationDateTimedate

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

(a partir de Bridge 7.3)

No
supplierItemCodestring

Código SKU del Proveedor

(a partir de Bridge 7.3)

No
store.codestring

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.

Nota: A partir de la versión BR 7.5.6, se ha incorporado una nueva funcionalidad en la mensajería de request. En la respuesta actual del ACK 999, dentro del campo "additional", se añadirá una lista con los códigos de las entidades que no pudieron ser cargadas, junto con la posición en el XML donde se encontraban y un mensaje explicando el motivo del error.


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

  • BusinessUnitGroupItem.store
    ahora admite una lista

<field name="stores" type="[Object]" required="false">
<field name="store" type="Store" required="true"/>
</field>


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


currencyCodeVarchar (3)

Código de la moneda

Descripción de moneda

Código de moneda

DOLAR

USD

EURO

EUR

GUARANI

PYG

PESO MEXICANO

MXN

PESO ARGENTINO

ARS

PESO CHILENO

CLP

PESO URUGUAYO

UYU

REAL

BRL

SOL

PEN

No

itemSellingPricesStatus

Integer

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

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

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

<channels  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>005</channel>

</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


<storeGroups  type="list">

    <storeGroup type="bean">           <code>NORTE         </code>

     </storeGroup>

</storeGroups>


Lista de grupo de tiendas (opcional)

<storeGroups  type="list">

    <storeGroup type="bean">           <code>NORTE         </code>

     </storeGroup>

</storeGroups>

No

v4.8 a partir de BridgeAPI v7.9

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

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

Propiedad

Tipo de dato

Descripción

Requerido

itemCode

Varchar (25)

Código de producto

Si

Barcode

Varchar (25)

Código de alias

No

currentSaleUnitRetailPriceAmount

float

Precio actual.

Si

currentSaleUnitRetailPriceEffectiveDate

Date

Fecha de vigencia desde para el precio actual

Si

currentSaleUnitRetailPriceExpirationDate

Date

Fecha de vigencia hasta para el precio actual

Si

permanentSaleUnitRetailPriceAmount

Float

Precio permanente.

Si

PermanentSaleUnitRetailPriceEffectiveDate

Date

Fecha de vigencia desde para el precio permanente

Si

currentSaleUnitRetailPriceTypeCode

Varchar (50)

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

No

manufacturerSaleUnitRecommendedRetailPriceAmount

Money

Precio de venta recomendado por el proveedor.

Si

saleCreditPrice

Money

Precio de crédito

NOTA: campo deprecado (v3.3)

no (opcional)

supplierItem

varchar (100)

Código del proveedor del ítem

no (opcional)

supplierItemAmount

Money

Monto que el proveedor reconoce (monto del recupero)

no (opcional)

supplierFinancial

varchar (100)

Código del proveedor financiero del ítem

no (opcional)

supplierFinancialAmount

money

monto que el proveedor Financiero reconoce 

no (opcional)

limit

number

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

no (opcional)

discountable

boolean

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

no (opcional)

manualDiscount

boolean

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

no (opcional)

alternativeRetailPrice

float

Precio alternativo

NOTA: campo deprecado (v3.3)

no (opcional)

currentPackagePriceQuantity

number

Cantidad a superar para precio mayorista (umbral)

no (opcional)

currentPackagePrice

number

Precio mayorista superando la cantidad definida como umbral

no (opcional)

currentPackagePriceInitEffectiveDate

date

Fecha de inicio de vigencia de umbral

no (opcional)

currentPackagePriceEndEffectiveDate

date

Fecha de fin de vigencia del umbral

no (opcional)

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

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>
					</store>
				</stores>
                <storeGroups ype="list">
                        <storeGroup type="bean">
                                 <code>NORTE</code>
                        </storeGroup>
                </storeGroups>     
                <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>




Lista de Precios Promocionales

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

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


UPDATE 7.9

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


Consideraciones para su Uso

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

  • Dependencia de Artículos:

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

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

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

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

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


Nombre del Servicio: itemSellingPricesPromo
Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

itemSellingPricesPromo

List

Lista de listas de precios promocionales

Si

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

PropiedadTipo de datoDescripciónRequerido
promoPriceListNameStringNombre que identifica a la lista de precios promocional
promoPriceListNumberNumberNúmero de la lista de precios que se va adeshabilitarSí cuando disabled = true
effectiveDateDateFecha de inicio de vigencia
expirationDateDateFecha de fin de vigencia
disabledBooleanIndica si la lista está deshabilitada o no (default si no se recibe: false)
  Si se recibe, debe enviarse el campo promoPriceListNumber
No
itemsListaLista de ítems que tendrán precios promocionalesSí para carga
No para desactivar la lista
StoresListaLista de tiendas que tendrán precios promocionales
  • Sí para la creación de la lista de precios promocionales.
  • No para desactivar la lista de precios promocionales.
StoresGroupListaLista de grupos de tiendas que tendrán precios promocionales
  • Sí para la creación de la lista de precios promocionales.
  • No para desactivar la lista de precios promocionales.

UPDATE V7.9

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


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

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


Consideraciones del servicio itemSellingPricePromo

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



Request de lista de precios promocionales

request
<bridgeCoreRequest>
    <operation>createOrUpdate</operation>
    <params>
        <ItemSellingPricesPromo type="list">
            <ItemSellingPricePromo type="bean">
                <promoPriceListName>33</promoPriceListName>
                <effectiveDate format="DD-MM-YYYY">25-07-2025</effectiveDate>
                <expirationDate format="DD-MM-YYYY">12-01-2026</expirationDate>
                <disabled>false</disabled>
                <items type="list">
                    <item type="bean">
                        <internalCode>Art1</internalCode>
                        <valueType>4</valueType>
                        <value>100</value>
                        <effectiveDate format="DD-MM-YYYY">25-07-2025</effectiveDate>
                        <expirationDate format="DD-MM-YYYY">12-01-2026</expirationDate>
                        <sellingPriceListNumber>10</sellingPriceListNumber>
                        <text1>rebaja invierno</text1>
                        <text2>Liquidacion</text2>
                        <text3>2x1</text3>
                        <stores type="bean">
                            <storeCode>1</storeCode>
                            <storeCode>2</storeCode>
                        </stores>
                        <storesGroup type="bean">
                            <storeGroupCode>GP1</storeGroupCode>
                            <storeGroupCode>GP2</storeGroupCode>
                            <storeGroupCode>GP3</storeGroupCode>
                            <storeGroupCode>GP4</storeGroupCode>
                        </storesGroup>
                    </item>
                </items>
            </ItemSellingPricePromo>
        </ItemSellingPricesPromo>
    </params>
</bridgeCoreRequest>


Request de Deshabilitar lista de precios promocionales

request
<bridgeCoreRequest>
  <operation>createOrUpdate</operation>
  <params>
       <ItemSellingPricesPromo type="list">
       <ItemSellingPricePromo type="bean">
       <promoPriceListNumber>16</promoPriceListNumber>                
       <disabled>true</disable>
       </ItemSellingPricePromo>
       </ItemSellingPricesPromo>
  </params>
</bridgeCoreRequest>


Response OK de lista de precios promocionales

response
<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 ItemSellingPricesPromo son: 21."
    }
] </message>
<operationResult/>
</bridgeCoreResponse>


Response ERROR de lista de precios promocionales

<bridgeCoreResponse>
<ack>-1</ack>
 <message> [{ 
        "ack": 999,
        "message":Error en lista de precios promocional (): \n          El nombre de la lista de precios promocional es requerido."
    }
] </message>
<operationResult/>
</bridgeCoreResponse>




Manejo de Errores y Validaciones en la Importación de Listas de Precios

En esta sección se detallan las validaciones y el manejo de errores implementados en el servicio de importación de listas de precios en formato XML. Con estas mejoras, el sistema garantiza que la importación de listas de precios se realice de manera correcta y coherente, evitando inconsistencias en la asignación de precios a tiendas y grupos de tiendas.


UPDATE v7.9

El manejo de errores y validaciones en la importacion de Lista de Precios especificados en este apartado fueron incluidas a partir de la version 7.9 de Bridge.


Las validaciones aplicadas permiten:

  • Evitar errores de datos al asegurar que las tiendas y grupos de tiendas especificados en la solicitud existen y están habilitados.
  • Garantizar la consistencia al permitir la combinación de listas de tiendas y grupos de tiendas sin generar duplicaciones.
  • Mejorar la trazabilidad proporcionando respuestas claras con mensajes de error detallados en caso de que alguna condición impida la importación.

Aquí se cubren los distintos escenarios posibles en la importación, describiendo las reglas de validación aplicadas y los resultados esperados, con ejemplos de respuestas XML para cada caso. Estas validaciones aseguran que la información cargada en el sistema sea precisa y refleje correctamente la estructura organizativa de tiendas y grupos en Bridge.


Validaciones generales en la importación

Se han agregado validaciones para verificar el estado de las tiendas y los grupos de tiendas antes de la importación de una lista de precios.


Condiciones generales

  • Se puede enviar una lista de tiendas (<stores>) y/o una lista de grupos de tiendas (<storeGroups>).
  • Si se envían ambos, el sistema fusionará las tiendas incluidas en los grupos con las especificadas en <stores>, evitando duplicaciones.
  • Si una tienda pertenece a más de un grupo, solo se la procesará una vez.
  • Si un grupo de tiendas se edita posteriormente, las listas de precios no se actualizarán automáticamente; la asociación es solo en el momento de la importación.


Manejo de Errores en la Respuesta del Servicio

El servicio de importación de listas de precios devuelve un XML de respuesta con detalles sobre el resultado del proceso. Para facilitar la interpretación de estos mensajes, se han definido distintos códigos de respuesta y estructuras de error.


Estructura de la Respuesta del Servicio

La respuesta del servicio sigue la estructura general:

response
<bridgeCoreResponse>
    <ack>CODIGO</ack>
    <message>
        [{"ack":CODIGO,"message":"DESCRIPCIÓN DEL RESULTADO","additional":[DETALLES_ADICIONALES]}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Donde:

  • ack: Código de estado de la operación.
  • message: Mensaje descriptivo del resultado de la importación.
  • additional (opcional): Información detallada sobre errores o advertencias.


Códigos de Respuesta y su Significado

Código ackSignificadoAcción Requerida
0ÉxitoLa lista de precios se importó correctamente.
999Error parcialSe importaron algunas tiendas, pero otras fueron rechazadas. Revisar el mensaje para conocer los detalles.
-1Error totalNinguna tienda pudo ser procesada. Se debe corregir el request antes de reintentar.



Escenarios y validaciones aplicadas


  • Tienda No Existente

Condición:  Si una tienda incluida en la lista de importación no existe en el sistema, se devuelve un error y no se procesará la lista de precios para esa tienda.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>999</ack>
    <message>
        [{"ack":999,"message":"Error: La tienda con código NONEXIST no existe en el sistema"}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • Verificar que el storeCode sea correcto y esté registrado en el sistema.
    • Si la tienda fue eliminada, deberá crearse antes de reintentar la importación.



  • Tienda Deshabilitada

Condición: Si una tienda está deshabilitada en el sistema, se omitirá y se continuará con las demás tiendas habilitadas en la lista.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>999</ack>
    <message>
        [{"ack":999,"message":"La tienda A1 está deshabilitada, por lo tanto no se procesará nada dentro de esa lista"}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • Habilitar la tienda en el sistema antes de reintentar la importación.
    • Si la tienda no debe recibir la lista de precios, eliminarla del request.



  • Grupo de Tiendas No Existente

Condición: Si un storeGroup no existe en el sistema, se rechaza la importación de la lista de precios para ese grupo.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>999</ack>
    <message>
        [{"ack":999,"message":"El grupo de tiendas GrupoX no existe, por lo tanto no se procesará nada dentro de esa lista"}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • Confirmar que el código del grupo (groupCode) sea correcto.
    • Crear el grupo en el sistema si aún no existe.



  • Grupo de Tiendas Deshabilitado

Condición: Si un grupo de tiendas está deshabilitado, se rechaza la importación para ese grupo.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>999</ack>
    <message>
        [{"ack":999,"message":"El grupo de tiendas GrupoD está deshabilitado, por lo tanto no se procesará nada dentro de esa lista"}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • Habilitar el grupo en el sistema antes de reintentar la importación.

    • Si el grupo no debe recibir la lista de precios, eliminarlo del request.



  • No Se Encontraron Tiendas Habilitadas

Condición: Si todas las tiendas y grupos de tiendas indicados en el request están deshabilitados o no existen, se rechaza completamente la importación.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>-1</ack>
    <message>
        [{"ack":999,"message":"No se encontraron tiendas para la lista de precios ingresada"}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • Revisar si al menos una tienda o grupo está habilitado antes de enviar la solicitud.
    • Eliminar las tiendas deshabilitadas del request.



  • Error en las Fechas de la Lista de Precios

Condición: Si la fecha de expiración es anterior a la fecha de inicio, se rechaza la importación.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>999</ack>
    <message>
        [{"ack":999,"message":"Error: La fecha de expiración 15-03-2024 no puede ser menor a la fecha de inicio 01-04-2024"}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • Corregir las fechas en el request antes de reintentar la importación.
    • Asegurar que la fecha de expiración sea siempre mayor o igual a la fecha de inicio.



  • Combinación de Tiendas y Grupos sin Tiendas Habilitadas

Condición: Si se especifica una tienda y un grupo de tiendas pero al unir todas las tiendas resultantes ninguna está habilitada, no se importará la lista de precios y se informará un error.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>-1</ack>
    <message>
        [{"ack":999,"message":"No se encontraron tiendas habilitadas en la combinación de tiendas y grupos de tiendas especificados"}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • Revisar si al menos una tienda dentro de la combinación de <stores> y <storeGroups> está habilitada.
    • Ajustar el request para excluir tiendas o grupos deshabilitados.



  • Grupo de Tiendas con Tiendas Deshabilitadas Parcialmente

Condición: Si se envía un grupo de tiendas y algunas de las tiendas dentro del grupo están deshabilitadas, solo las tiendas habilitadas recibirán la lista de precios.

Ejemplo de Respuesta XML

response
<bridgeCoreResponse>
    <ack>0</ack>
    <message>
        [{"ack":0,"message":"1 registro fue creado","additional":[{"message":"La tienda A1 del grupo Grupo2 está deshabilitada, por lo tanto no se procesará nada dentro de esa lista"}]}]
    </message>
    <operationResult/>
</bridgeCoreResponse>

Acción Correctiva:

    • No es obligatorio corregir el request, ya que el sistema automáticamente filtra las tiendas deshabilitadas.
    • Si es necesario asegurar que todas las tiendas dentro de un grupo sean procesadas, verificar su estado antes de la importación.



  • Canales de Venta en la Lista de Precios

Condición: El request de importación permite definir canales de venta a los que se aplicará la lista de precios.  Si este campo no es informado, la lista se aplicará a todos los canales por defecto.

Ejemplo de Request con Canales de Venta

request
<bridgeCoreRequest>
  <operation>createOrUpdate</operation>
  <params>
    <itemSellingPrices type="list">
      <itemSellingPrice type="bean">
        <channels type="list">
          <channel type="bean">
            <code>bridge</code>
          </channel>
          <channel type="bean">
            <code>ODV</code>
          </channel>
        </channels>
      </itemSellingPrice>
    </itemSellingPrices>
  </params>
</bridgeCoreRequest>

Acción Correctiva:

    • Si se requiere restringir la lista de precios a ciertos canales, asegurarse de informar el campo <channels>.



Consideraciones

Los errores más críticos (como falta de tiendas habilitadas, fechas incorrectas o códigos inexistentes) requieren corrección en el request antes de reintentar la importación. Otros, como tiendas deshabilitadas dentro de un grupo, no detendrán el proceso pero pueden generar advertencias en la respuesta XML.


Ejemplo de Request con nuevo campo  <storeGroups>

El servicio de importación de listas de precios en formato XML ha sido actualizado para permitir el uso de grupos de tiendas además de la lista de tiendas individuales. Este cambio facilita la asignación de precios a múltiples tiendas sin necesidad de especificarlas una por una, mejorando la eficiencia y reduciendo posibles errores en la carga de datos.

En este apartado, se muestra un ejemplo de request XML que ilustra cómo incluir tanto una lista de tiendas (<stores>) como una lista de grupos de tiendas (<storeGroups>). Esto permite una mayor flexibilidad en la gestión de listas de precios y garantiza que el proceso de importación pueda manejar diferentes configuraciones de tiendas.

El request XML debe cumplir con las validaciones descritas previamente, asegurando que las tiendas y grupos de tiendas especificados existan y estén habilitados al momento de la importación. En caso de errores, el servicio devolverá una respuesta con detalles específicos sobre las incidencias encontradas.

A continuación, se presenta un ejemplo de request XML que incluye estos nuevos campos y muestra la estructura esperada para una correcta integración con el sistema.


Formato del request XML

Se puede incluir tanto la lista de tiendas (<stores>) como la lista de grupos (<storeGroups>).

response
<bridgeCoreRequest>
  <operation>createOrUpdate</operation>
  <params>
    <itemSellingPrices type="list">
      <itemSellingPrice type="bean">
        <itemSellingPriceNumber>370</itemSellingPriceNumber>
        <stores type="list">
          <store type="bean">
            <storeCode>DRC001</storeCode>
          </store>
        </stores>
        <storeGroups type="list">
          <storeGroup type="bean">
            <code>NORTE</code>
          </storeGroup>
        </storeGroups>
        <effectiveDateTime format="dd-MM-yyyy">06-03-2024</effectiveDateTime>
        <expirationDateTime format="dd-MM-yyyy">30-04-2024</expirationDateTime>
        <currencyCode>ARS</currencyCode>
        <itemSellingPricesStatus>1</itemSellingPricesStatus>
      </itemSellingPrice>
    </itemSellingPrices>
  </params>
</bridgeCoreRequest>


Estas validaciones garantizan que la importación de listas de precios solo se aplique a tiendas habilitadas y grupos de tiendas existentes y activos. Además:

  • Se permite la combinación de tiendas y grupos.
  • Se generan errores específicos para tiendas o grupos inexistentes o deshabilitados.
  • Se asegura que no se creen listas de precios sin tiendas habilitadas.




Servicio de importación impuestos internos por artículos

Configuración de impuestos internos por ítem.


Servicio de importación 

  • Alta/actualización de impuestos internos por artículo y tienda

Nombre del Servicio: itemInternalTaxStore

Parámetros de entrada:

Propiedad

Tipo de dato

Descripción

Requerido

internalItemTaxesStore

List

Lista de impuesto internos por artículo+tienda para crear o actualizar.

Si


La lista de itemInternalTaxStore debe contener entidades, las cuales poseen la siguiente estructura:


Campo

Tipo de dato

Requerido

Descripción 

Campo en el cual importar en la tabla "itemInternalTaxStore"

Default

itemstring

si

Código del artículo. Se guarda el ID del ítem cuyo internalCode coincida. Si no existe, se informa error.

item 

-

internalTaxTypestringsiCódigo del impuesto internointernalTaxType

-

storestringsiCódigo de la tienda. Se guarda el ID de la tienda cuyo código coincida.store-

amount

numbre

siMonto de impuestoamount-

effectiveDateTime

date

noInicio de vigencia del impuestoeffectiveDateTime-

expirationDateTime

date

noFin de vigencia del impuestoexpirationDateTime-

description

string

noDescripción libredescription -

disabled

boolean

noIndica si el registro queda deshabilitadodisabledfalse

Fuera de la lista de impuestos se podrá definir este parámetro que permite definir el formato de la fecha con minutos y segundos

 dateFormatPattern

string

noPatrón de formato de fecha

(v7.8) Se puede enviar este campo con el formato en el cual se deberá considerar el envío de los campos fecha del servicio

En este caso para: 

  • effectiveDateTime
  • expirationDateTime

En caso que ese parámetro no esté especificado, el servicio seguirá tomando el formato que se utiliza hoy en día: dd-MM-yyyy
De esta forma el servicio queda retro compatible con versiones anteriores y además queda variable el formato de fecha a utilizar.



Request ejemplo

<bridgeCoreRequest>
  <operation>createOrUpdate</operation>
  <params>
    <internalItemTaxesStore type="list">

      <itemInternalTaxStore type="bean">
        <item>NAFTA_SUPER_95</item>
        <internalTaxType>IE_NAFTA</internalTaxType>
        <store>AR-001</store>
        <amount>97.4250</amount>
        <effectiveDateTime>10-11-2025 00:00:00</effectiveDateTime>
        <expirationDateTime>30-11-2025 23:59:59</expirationDateTime>
        <description>IE NAFTA Nov – Tienda AR-001</description>
        <disabled>false</disabled>
      </itemInternalTaxStore>

      <itemInternalTaxStore type="bean">
        <item>NAFTA_SUPER_95</item>
        <internalTaxType>IE_NAFTA</internalTaxType>
        <store>AR-002</store>
        <amount>102.0000</amount>
        <effectiveDateTime>10-11-2025 00:00:00</effectiveDateTime>
        <description>IE NAFTA Nov – Tienda AR-002</description>
        <disabled>false</disabled>
      </itemInternalTaxStore>

    </internalItemTaxesStore>

    <!-- Opcional: define el formato de fechas -->
    <dateFormatPattern>dd-MM-yyyy HH:mm:ss</dateFormatPattern>
  </params>
</bridgeCoreRequest>


Cambios en itemInternalTax a partir de 7.9.9

Para versiones previas a 7.9.9, el servicio de importación de impuestos internos por artículos itemInternalTax se utilizaba como única vía para registrar el impuesto por artículo.
Desde la versión 7.9.9, se separan responsabilidades:

  • itemInternalTax queda como registro maestro (por artículo, sin tienda).

  • itemInternalTaxStore gestiona los valores específicos por tienda (por artículo + tienda), con su propia clave única y auditoría.


¿Por qué se cambió?
  • Separación de maestro vs. por tienda: evitar mezclar en un mismo servicio los datos base con configuraciones específicas de cada tienda.

  • Integridad y unicidad: asegurar una clave única por (artículo, tipo, vigencia, tienda) y prevenir duplicados/ambigüedades.

  • Trazabilidad y gobierno de datos: registrar auditoría por operación (p. ej., userName, createdAt) y tener un punto claro de alta/edición de overrides.

  • Replicación y desempeño: simplificar la replicación Central→Tiendas y la aplicación local en tienda, reduciendo lógica ad-hoc en POS o integraciones.

  • Escalabilidad: habilitar evoluciones futuras (importaciones masivas, filtros, reportes por tienda) sin impactar el contrato maestro.


Impacto y migración

  • Si existía cualquier lógica previa que guardara “impuestos por tienda” dentro de itemInternalTax, en tablas intermedias o mediante procesos alternativos, debe deshacerse y reemplazarse por el uso de itemInternalTaxStore.

  • Las integraciones deben:

    • Continuar usando itemInternalTax para el maestro (sin tienda).

    • Usar itemInternalTaxStore para crear/actualizar los valores por tienda (mismo artículo y tipo, indicando la tienda y la vigencia).

  • Compatibilidad de fechas: se recomienda dateFormatPattern = dd-MM-yyyy HH:mm:ss para precisión a segundos; si no se envía, se mantiene la interpretación histórica.


Nombre del ServicioitemInternalTax

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

1item

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)

  • Si no existe el código en la tabla item.internalCode debería informar error

2internalTaxType

string

siCó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

  • Si no existe el código en la tabla internalTaxType.code debería informar error

3amountnumbersiMonto del impuesto (este sobre escribe el del impuesto para el artículo)amount
4

effectiveDateTime

datesiFecha inicio de validez del impuestoeffectiveDateTime
5

expirationDateTime

datesiFecha fin de validez del impuestoexpirationDateTime
6

description

stringnoDescripción de la relación del impuesto-artículodescription
7

disabled

booleansiIndicador de habilitado o no la relación del item-impuesto internodisabledfalse
8Fuera de la lista de impuestos se podrá definir este parámetro que permite definir el formato de la fecha con minutos y segundos
9 dateFormatPattern

string

noPatrón de formato de fecha

(v7.8) Se puede enviar este campo con el formato en el cual se deberá considerar el envío de los campos fecha del servicio

En este caso para: 

  • effectiveDateTime
  • expirationDateTime

En caso que ese parámetro no esté especificado, el servicio seguirá tomando el formato que se utiliza hoy en día: dd-MM-yyyy
De esta forma el servicio queda retro compatible con versiones anteriores y además queda variable el formato de fecha a utilizar.


<dateFormatPattern>dd-MM-yyyy HH:mm:ss</dateFormatPattern>


  • 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>25-03-2023 11:00:00</effectiveDateTime>
                <expirationDateTime>15-05-2023 23:00:59</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>25-03-2023 10:00:59</effectiveDateTime>
                <expirationDateTime>15-05-2023 23: 59:00</expirationDateTime>
            </itemInternalTax>         
         </itemInternalTaxes>
         <dateFormatPattern>dd-MM-yyyy HH:mm:ss</dateFormatPattern>     
</params>
</bridgeCoreRequest>



Update 7.8

Cambios en el Servicio de Importación de Impuestos Internos por Artículo en la Versión 7.8

Con la versión 7.8 de Bridge Manager, el Servicio de Importación de Impuestos Internos por Artículo ha sido actualizado para admitir el formato de fecha y hora con precisión de segundos. Los campos effectiveDateTime y expirationDateTime ahora aceptan el formato dd-MM-yyyy HH:mm

Esto asegura que los tiempos de vigencia de los impuestos sean importados con la máxima exactitud. Si no se especifica este formato, el servicio continuará utilizando el formato anterior dd-MM-yyyy, manteniendo compatibilidad con versiones anteriores




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:
'onSale' (ítems a la venta)
'OnLayaway' (Items apartados)
'TransitIn' (Items en tránsito de entrada)
'TransitOut' (Items en tránsito de salida)

Si

revenueCenter

String (50)

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

Si

items

List

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

Si


La lista í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 el stockUnits = 0, no debe enviarse la lista serializedItems. Sin importar que esté habilitada la propiedad que requiere serie o lote.

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

lot

String (50)

Nro de lote o pedimento

Si cuando el ítem requiere lote

customsNumber

String (50)

Número de aduana

No

customsDate

DateTime

Fecha de aduana

No

manufacturingDate

DateTime

Fecha de fabricación

No

stockUnits

Decimal (7)

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

Si


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
Ej: A-01132-00090985
(serie-5 dígitos para centro emisor-8 dígitos para nro de comprobante)

Si

receiptType

String (10)

Tipo de documento fiscal. Valores posibles FC = Recepción NC = Devolución
RM = Remito electrónico

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 enviadoNo

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

<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>
<service>advancedShipmentNotice</service>
<request>
<![CDATA[ <bridgeCoreRequest>
  <operation>createOrUpdate</operation>
  <params>
    <advanceShipmentNotices type="list">
      <advanceShipmentNotice type="bean">
        <destinationRetailStoreID>20</destinationRetailStoreID>
        <supplier>COCA COLA</supplier>
        <contractReferenceNumber>150520230003</contractReferenceNumber>
        <originatorNumber/>
        <createDateTimestamp format="dd-MM-yyyy">28-02-2025</createDateTimestamp>
        <receiptNumber>A-0003-00000003</receiptNumber>
        <receiptType>RM</receiptType>
        <receiptDate format="dd-MM-yyyy">28-02-2025</receiptDate>
        <netAmount>10</netAmount>
        <totalAmount>10</totalAmount>
        <inventoryControlDocumentLineItems type="list">
          <inventoryControlDocumentLineItem type="bean">
            <item>1987</item>
            <unitBaseCostAmount>0</unitBaseCostAmount>
            <unitCount>10.000000</unitCount>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0000</serialNumber>
              <aduana/>
              </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0001</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0002</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0003</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0004</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0005</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0006</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0007</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0008</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>
            <inventoryControlDocumentSerializedLineItem type="bean">
              <serialNumber>0001GUSTAVOPRUEBA0009</serialNumber>
              <aduana/>
             
            </inventoryControlDocumentSerializedLineItem>

          </inventoryControlDocumentLineItem>
        </inventoryControlDocumentLineItems>
      </advanceShipmentNotice>
    </advanceShipmentNotices>
  </params>
</bridgeCoreRequest> ]]>
</request>
<store>0</store>
</ser:execute>
</soapenv:Body>
</soapenv:Envelope> 




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:

PropiedadTipo de dato DescripciónRequerido 
inventoryControlDocumentStateStringEstado de la orden de compraSi
serialFormIdStringIdentificador único de la orden de compraSi


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

String

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

transferDocumentCancel

Boolean

Permite consultar y actualizar algunos de los estados de los documentos de transferencias. Posibles valores:

  • True: se pueden actualizar los siguientes estados de las transferencias:
    • De CONFIRMADA a CANCELADA.
    • De RECEPCION PARCIAL a CERRADO PARCIAL.

    • Cualquier otro estado, debe devolver un error y no realizar ninguna modificación.
  • False: se realiza el proceso actual del servicio. Sin actualizar el estado de los documentos de transferencias.

No

orderDocumentCancel

Boolean

El parámetro orderDocumentCancel se utiliza en el servicio purchaseOrderDocument para permitir el cierre automático de órdenes de compra en estado CONFIRMADA o RECEPCIÓN PARCIAL cuando su valor es true.

Si el parámetro se establece en false o se omite, el sistema no realiza cambios en el estado de la orden, manteniendo el flujo estándar.

No


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  
DEFAULT: 1

No

barcode

(disponible a partir de v7.8.1)

String

Código de barras del item en relación al proveedor (itemSupplierItem) 

Validaciones: 

  • El código de barras debe estar asociado al artículo/proveedor de la OC (itemSupplierItem.supplier = al proveedor recibido y itemSupplierItem.barcode = codigo de barras recibido). Sino informar error
  • Válida si está habilitado el código de barras para ese proveedor (itemSupplierItem.disabled)Sino informar error.

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>


UPDATE v7.8

A partir de la versión Bridge 7.8, el servicio purchaseOrderDocument incorpora validaciones sobre los artículos incluidos en la Orden de Compra enviada por servicio.

Se validará, para cada ítem de la Orden de Compra:

  • Si existe un registro en itemStore para la tienda de destino, se controlarán los siguientes flags:

    • itemStore.disabled = true: el artículo se encuentra deshabilitado para la tienda ➔ Se rechaza el ítem.

    • itemStore.blockedForIcd = true: el artículo está bloqueado para compras ➔ Se rechaza el ítem.

  • Si no existe relación específica en itemStore, se continúa con las validaciones estándar del servicio.


En caso de validaciones negativas, se retornarán errores en la respuesta XML del servicio, bajo el formato:


  • Artículo deshabilitado en tienda
<bridgeCoreResponse>
   <ack>-1</ack>
   <message>[{"ack":999,"message":"purchaseOrderDocumentFromWebService => El item [Código_Item] se encuentra deshabilitado en la tienda [Código_Tienda] | "}]</message>
   <operationResult/>
</bridgeCoreResponse>


  • Artículo bloqueado para compras en tienda
<bridgeCoreResponse>
   <ack>-1</ack>
   <message>[{"ack":999,"message":"purchaseOrderDocumentFromWebService => El item [Código_Item] se encuentra bloqueado para inventario en la tienda [Código_Tienda] | "}]</message>
   <operationResult/>
</bridgeCoreResponse>


  • Artículo deshabilitado en central (sin configuración por tienda)
<bridgeCoreResponse>
   <ack>-1</ack>
   <message>[{"ack":999,"message":"purchaseOrderDocumentFromWebService => El item [Código_Item] se encuentra deshabilitado | "}]</message>
   <operationResult/>
</bridgeCoreResponse>


  • Relación inválida entre artículo y proveedor
<bridgeCoreResponse>
   <ack>-1</ack>
   <message>[{"ack":999,"message":"purchaseOrderDocumentFromWebService => No existe relación del item [Código_Item] con el proveedor [Código_Proveedor]. Por favor verifique que el artículo esté asociado al proveedor indicado | "}]</message>
   <operationResult/>
</bridgeCoreResponse>


UPDATE v7.9 - Actualización del servicio purchaseOrderDocument - Nuevo campo transferDocumentCancel

A partir de la versión Bridge 7.9, en el servicio purchaseOrderDocument de Bridge se incorpora el campo <transferDocumentCancel>true</transferDocumentCancel> para poder actualizar los siguientes estados de los documentos de transferencias asociados a la OC.

  • De CONFIRMADA a CANCELADA.
  • De RECEPCION PARCIAL a CERRADO PARCIAL.


A continuación, se detallan las nuevas validaciones del servicio:

  • Verificar que la transferencia exista antes de intentar el cambio de estado. Si no existe debe mostrar error.
  • Consultar el estado actual del documento de transferencia:
    • Si es CONFIRMADA solo se permite cambiar a CANCELADA.
    • Si es RECEPCION PARCIAL solo se permite cambiar a CERRADO PARCIAL.
    • Cualquier otro estado, debe devolver un error y no realizar ninguna modificación.
  • El servicio no está disponible para uso a través de Bridge Manager. Es decir, que los cambios de estados solo se podrán realizar mediante el servicio purchaseOrderDocument.


El campo <transferDocumentCancel>  puede tener los siguientes valores:

  • True: se realiza la consulta y actualización de los estatus de los documentos transferencias mencionadas anteriormente para la v7.9.
  • False o no se envía el campo: se realiza el flujo actual del servicio, es decir, no entra a la nueva funcionalidad que corresponde a la actualización de los estados de los documentos de transferencias.
Request:
<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>purchaseOrderDocument</service>
			<!--Optional:-->
			<request>
 
<![CDATA[ 
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<purchaseOrderDocument>
<destinationRetailStoreID>1</destinationRetailStoreID>
<supplier>MOBO</supplier>
<serialFormId>2383001568</serialFormId>
<originatorNumber>2383001568</originatorNumber>
<transferDocumentCancel>true</transferDocumentCancel>
<createDateTimestamp format="dd-MM-yyyyy">22-07-2025</createDateTimestamp>
</purchaseOrderDocument>
</params>
</bridgeCoreRequest>
]]></request>
			<!--Optional:-->
			<store>0</store>
		</ser:execute>
	</soapenv:Body>
</soapenv:Envelope>


A continuación, se especifican las diferentes respuestas del servicio:

No existe la transferencia: 

Response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://services.business.soap.bridge.synthesis.com/">
<soap:Body>
<ns2:executeResponse>
<return><![CDATA[<bridgeCoreResponse><ack>-1</ack><message>[{"ack":999,"message":"No se encontró una Transferencia válida con serialFormId: 2383001567 | "}]</message><operationResult/></bridgeCoreResponse>]]></return>
</ns2:executeResponse>
</soap:Body>
</soap:Envelope>


El estado de la transferencia no es válido (estatus diferente a confirmada/ entrega parcial):

Response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://services.business.soap.bridge.synthesis.com/">
<soap:Body>
<ns2:executeResponse>
<return><![CDATA[<bridgeCoreResponse><ack>-1</ack><message>[{"ack":999,"message":"purchaseOrderDocumentFromWebService => La tienda 1 no existe. | La Transferencia con serialFormId 2383001571 no está en estado CONFIRMADA ni RECEPCION PARCIAL. | "}]</message><operationResult/></bridgeCoreResponse>]]></return>
</ns2:executeResponse>
</soap:Body>
</soap:Envelope>

La transferencia existe y se encuentra en un estado válido (CONFIRMADA o RECEPCION PARCIAL) para realizar la actualización:

Response:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://services.business.soap.bridge.synthesis.com/">
<soap:Body>
<ns2:executeResponse>
<return><![CDATA[<bridgeCoreResponse><ack>0</ack><message>[{"ack":0,"message":"Transfer document updated successfully"}]</message><operationResult/></bridgeCoreResponse>]]></return>
</ns2:executeResponse>
</soap:Body>
</soap:Envelope>


A partir de la versión Bridge 7.9, en el servicio purchaseOrderDocument de Bridge se incorpora el campo <orderDocumentCancel>VALOR</orderDocumentCancel> para permitir el cierre de órdenes de compra (OC) desde el servicio, en lugar de hacerlo manualmente a través de la consola o interfaz de usuario.

  • Tipo de dato: Booleano (true / false).

  • Ubicación: Dentro del bloque <purchaseOrderDocument> en el request XML.

  • Funcionalidad:

    • Si el valor es true, el sistema intenta cerrar la OC que se encuentra en un estado CONFIRMADA o RECEPCIÓN PARCIAL, actualizándola a CERRADA o CERRADO PARCIAL, respectivamente.

    • Si el valor es false o no se incluye, el servicio no realiza ningún cambio en el estado de la OC y mantiene el flujo tradicional de actualización.

  • Restricciones:

    • Solo puede aplicarse sobre órdenes de compra que se encuentren en los estados CONFIRMADA o RECEPCIÓN PARCIAL.

    • Si se intenta aplicar en otro estado (por ejemplo, PENDIENTE, CERRADA, etc.), el servicio devuelve un error y no realiza ninguna modificación en la OC.


Impacto en el flujo

  • Con true: El sistema cierra la OC si cumple con las condiciones (estado válido).

  • Con false o omitido: El sistema mantiene el estado de la OC sin modificaciones.

Este parámetro es clave para automatizar el cierre de órdenes de compra de manera controlada y evitar intervenciones manuales en la consola.





Recepciones de Órdenes de Compra

Este servicio permite registrar la recepción de artículos asociados a una orden de compra. Al registrar la recepción, las cantidades de los artículos se actualizan y, dependiendo de las cantidades recibidas, el estado de la orden de compra puede cambiar a CERRADA o ENTREGA PARCIAL.

Nombre del Servicio: inventoryReceptionDocument

Parámetros de entrada:

PropiedadTipo de datoDescripciónRequerido
createDateTimestampDateFecha de creación de la recepciónSi
destinationRetailStoreStringCódigo de la tienda destinoSi
supplierStringCódigo de proveedorSi
receiptNumberStringNúmero de recepciónSi
inventoryControlDocumentReferenceObjectReferencia a la orden de compra asociadaNo
inventoryControlDocumentLineItemsArrayLista de artículos recibidos con cantidades y ubicacionesSi

Request de Ejemplo:

<bridgeCoreRequest>
  <operation>createOrUpdate</operation>
  <params>
    <receiptDocument>
      <createDateTimestamp>2023-09-25</createDateTimestamp>
      <destinationRetailStore>1</destinationRetailStore>
      <supplier>XIAOMI</supplier>
      <inventoryControlDocumentState>4</inventoryControlDocumentState>  <!-- CERRADA -->
      <receiptNumber>A-04090-00000002</receiptNumber>
      <inventoryControlDocumentReference>
        <serialFormId>1560382</serialFormId>
      </inventoryControlDocumentReference>
      <inventoryControlDocumentLineItems>
        <inventoryControlDocumentLineItem>
          <item>1560382</item>
          <location>DEP1</location>
          <unitCount>1</unitCount>
        </inventoryControlDocumentLineItem>
      </inventoryControlDocumentLineItems>
    </receiptDocument>
  </params>
</bridgeCoreRequest>


UPDATE V7.9 - Actualización de Servicios de Órdenes de Compra

A partir de la versión v7.9 de Bridge, se implementaron mejoras y nuevas funcionalidades en los servicios relacionados con las Órdenes de Compra. Estas actualizaciones incluyen la capacidad de actualizar el estado de las órdenes de compra y la integración con servicios de recepciones de órdenes de compra.

Cambios Implementados:

  1. Actualización del Servicio de Órdenes de Compra:

    • Se ha añadido la funcionalidad para actualizar el estado de las órdenes de compra. Ahora es posible cambiar el estado de una orden de compra a CERRADA o ENTREGA PARCIAL a través del servicio purchaseOrderDocument.

    • Validaciones adicionales para asegurar que los cambios de estado se apliquen solo si las condiciones son las adecuadas, como la recepción completa de artículos antes de marcar una orden como CERRADA.

  2. Nuevo Servicio de Recepción de Órdenes de Compra:

    • Se ha introducido el nuevo servicio inventoryReceptionDocument, que permite registrar la recepción de artículos asociados a las órdenes de compra.

    • Este servicio actualiza automáticamente las cantidades recibidas y ajusta el estado de la orden de compra a CERRADA o ENTREGA PARCIAL en función de las cantidades de productos recibidos.

    • Validaciones y reglas de negocio para evitar excedentes de recepción y asegurar la correcta asignación de productos a su proveedor.




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

sourceRetailStoreStringCódigo de la tienda origenSi
destinationRetailStoreIDStringCódigo de la tienda destinoSi
originatorNumberStringNúmero de la orden de transferencia externoNo
createDateTimestampDateFecha de creaciónSi
expectedDeliveryDateDateFecha esperada de entregaNo
serialFormIDNumberCódigo de la orden de transferenciaSi
inventoryControlDocumentStateNumberEstado de la transferenciaSi
inventoryControlDocumentLineItemListLista de artículos de la transferenciaSi=SerialFormID
No=sin SerialFormID
itemStringCodigo del artículoSi
unitCountDecimalCantidad del artículoSi


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>


Response Error de pedido de transferencia

<bridgeCoreResponse>
<ack>-1</ack>
 <message> [{
        "ack": 999,
        "message": "El originatorNumber 75321468748 ya existe en la InventoryControlDocument para el tipo _class TransferDocument",
    }
] </message>
<operationResult/>
</bridgeCoreResponse>




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

(informação) 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

(informação) Ver apartado 3.7 por modificación del


Condiciones:

Configuraciones:

  • Tienda → "store.erpFlag = true"
  • Tienda → "disabled = false"
  • Parámetro → "disabled = false"

Tienda es ERP → el mismo servicio genera los registros en la journal.

Tienda NO es ERP → el servicio no genera registros en la journal. Si se tratara de una tienda Bridge, los registros de la journal los generará el BM al procesar la InventoryControlDocument. El registro de la InventoryControlDocument replica a Tienda cuando Destino NO es ERP

---->>>>>PASO 1 : Validación de estados:

En código se valida que el estado enviado dependiendo de la tienda origen y destino sea el correcto.

Si no se envía estado, el estado por defecto es Cerrado

1) Transferencia de ERP a ERP

  • Confirmado: error
  • Cerrado: ok
  • Cancelado: error
  • serialFormID -> vacío

2) Transferencia de ERP a Tienda

  • Confirmado: ok
  • Cerrado: error 
  • Cancelado: error 
  • serialFormID -> vacío

3) Transferencia Tienda a ERP

  • Confirmado: error 
  • Cerrado: ok
  • Cancelado: ok
  • serialFormID: debe existir

4) Transferencia Tienda a Tienda

  • Confirmado: error 
  • Cerrado: error 
  • Cancelado: error 

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>
       <code>2</code>
</maritalStatusCode>

No


religiousAffiliationName

Varchar (50)

Preferencia religiosa

No


itemSellingPriceNumber


int

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

No


customerAccounts

 

List

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

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

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

No


party

 

Bean

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

Si


email

Varchar (100)

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

No


disabled

boolean

Indicador de cliente deshabilitado

No (default: false)


exemptFlag

boolean

Indicador de cliente exento

No   (default: false)


partyCrParty

Varchar(25)

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

No


partyCrSegment

Varchar(25)

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

No


partyCrWorkActivity

Varchar(25)

Corresponde al Ramo del cliente. Enviar el código

No


partyCrProfile

Varchar(25)

Corresponde al tipo de cliente crediticio (Z1 / Z2)

No


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

No

(default: false)

  "isCreditParty" : true,


creditDisabledbooleanIndica si "Cuenta corriente deshabilitada"

No

(default: false)

 "creditDisabled" : true,
creditLimitAmountnumberMonto límite de créditoNo   "creditLimitAmount" : NumberDecimal("100000"),
creditTransactionLimitAmountnumberMonto límite de compra (en una sola transacción)No  "creditTransactionLimitAmount" : NumberDecimal("80000"),

creditDayLimitAmount

numberMonto límite de compra por díaNo "creditDayLimitAmount" : NumberDecimal("70000"),
billPeriodstring

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

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

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

Tipo de cliente

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

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


La entidad <party> posee la siguiente estructura:

  Propiedad

Tipo de dato

Descripción

Requerido

disabled

campo deprecado

boolean

Indicador de cliente deshabilitado (a nivel party)

Si se envía en true, no se verá el cliente en la consulta de clientes

No   (default: false)

firstName

Varchar (50)

Primer nombre (Persona Física)

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

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

middleNames

Varchar (50)

Segundo nombre (Persona Física)

No

lastName

Varchar (50)

Apellido (Persona Física)

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

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

secondLastName

Varchar (50)

Segundo apellido (Persona Física)

No

genderType

Char (1)

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

No

name

Varchar (150)

Nombre de la organización (Organizacion)

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

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

typecode

Varchar (3)

Tipo de participante. Posibles valores: PRS o OGN

Persona (PRS) o Organización (OGN)

Si

birthCountryCode

Varchar (15)

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

Código

País

ARG

Argentina

BOL

Bolivia

BRA

Brazil

CHL

Chile

ECU

Ecuador

MEX

México

PAN

Panamá

PRY

Paraguay

PER

Peru

URY

Uruguay

VEN

Venezuela

No

birthDayNumber

Integer

Dia de nacimiento

No

birthMonthNumber

Integer

Mes del nacimiento

No

birthYearNumber

Integer

Año de nacimiento

No

roleAssignments

List

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

Si  

identifications

List

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

Si

taxesRegistration

List

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

No

userCode

string

Código del usuario (debe corresponder con el userName de la tabla user de BRIDGE)

Campo donde se Importa: party.user 

a) validar que exista en la tabla user.userName, sino informar error

b) si es válido, se debe guardar en la tabla party.user el ID del usuario

No


UPDATE 7.9

El campo userCode se incorpora al servicio de alta y edición de clientes a partir de la versión 7.9 de Bridge.
Su uso es opcional y permite vincular al cliente con el usuario del sistema BRIDGE.


Rol del cliente

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

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

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

  Propiedad

Tipo de dato

Descripción

Requerido

partyRole id

 

Varchar (15)

Identificador del rol.

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

Puede ser unos de los siguientes valores:

1-     (Cliente)

2-     (Empleado)

3-     (Posible cliente)

4-     (Proveedor)

5-     (Ejecutivo de ventas)

6-     (Ejecutivo de compras)

TY_RO_PRTY

NM_RO_PRTY

DE_RO_PRTY

CD_RO_PRTY

1

Cliente

Denota un cliente de la empresa

1

2

Empleado

Denota un empleado de la empresa cliente/proveedora

2

3

Posible cliente

Denota un cliente potencial para la empresa

3

4

Proveedor

Entidad que provee de mercaderías a la empresa

4

5

Ejecutivo de ventas

Denota un ejecutivo de ventas de la empresa proveedora

5

6

Ejecutivo de compras

Denota un ejecutivo de compras de la empresa cliente

6

Si

Name

Varchar

Nombre del rol

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

Ej: “Cliente”, “Empleado”

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 

Ejemplo

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

                        <externalSellerID>123</externalSellerID>                     

                        <externalSellerName>Juan Perez</externalSellerName>        

                     </partyContactMethod>
                  </contactMethods>

No

effectiveDate

Date

Fecha de inicio vigencia

Si

expirationDate

Date

Fecha expiración del contacto

Si

address

Bean

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

No

emailAddress

Bean

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

No

telephone

Bean

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

No

itemSellingPriceNumber

int

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

No

deliveryCode

String

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

No

Domicilio

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

La entidad 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

Tropicalización Mexico

  • Delegación/Municipio

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

Tropicalización Mexico

  • Nro Exterior

No


thirdLine


Varchar (100)

3ra línea de la dirección

No

Tropicalización Mexico

  • Nro Interior

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

cityLocation

Alfanumérico

Tropicalización Mexico

  • Colonia

No

betweenStreets

Varchar (100)

Entre calles o referencias    

No


UPDATE 7.9

Cambios en el servicio de cliente (customer) – Tropicalización para México

📍 Dirección (address)

Se requiere contemplar los campos de dirección específicos según la normativa mexicana:

  • Calle

  • Número exterior

  • Número interior

  • Referencia

Estos campos deben estar presentes tanto en el alta de personas físicas como en personas jurídicas (empresas).


<bridgeCoreRequest>
    <operation>createOrUpdate</operation>
    <params>
        <customers type="list">
            <customer type="bean">
                <code>44444555</code>
                <party type="bean">
                    <firstName>Maria</firstName>
                    <lastName>Venegas</lastName>
                    <typeCode>PRS</typeCode>
                    <birthDayNumber>5</birthDayNumber>
                    <birthMonthNumber>2</birthMonthNumber>
                    <birthYearNumber>1978</birthYearNumber>
                    <creditAllowed>false</creditAllowed>
                    <affiliate>false</affiliate>
                    <roleAssignments type="list">
                        <partyRoleAssignment type="bean">
                            <partyRole id="1">
                                <name>Cliente</name>
                            </partyRole>
                            <effectiveDate format="dd-MM-yyyy">23-08-2017</effectiveDate>
                            <expirationDate format="dd-MM-yyyy">30-12-2200</expirationDate>
                            <contactMethods type="list">
                                <partyContactMethod type="bean">
                                    <name>Casa</name>
                                    <effectiveDate format="dd-MM-yyyy">23-08-2017</effectiveDate>
                                    <expirationDate format="dd-MM-yyyy">30-12-2200</expirationDate>
                                    <address type="bean">
                                        <city type="bean">
                                            <code>SAL_0028</code>
                                        </city>
                                        <country type="bean">
                                            <code>AR</code>
                                        </country>
                                        <state type="bean">
                                            <code>SAL</code>
                                        </state>
                                        <firstLine>sss</firstLine>
                                        <secondLine>sss</secondLine>
                                        <thirdLine>ss</thirdLine>
                                        <fourthLine>ss</fourthLine>
                                        <postalCode>07800</postalCode>
                                        <cityLocation>
                                            <code>x</code>
                                        </cityLocation>
                                    </address>
                                    <emailAddress type="bean">
                                        <name>[email protected]</name>
                                    </emailAddress>
                                    <telephone type="bean">
                                        <areaCode>54</areaCode>
                                        <telephoneNumber>numero</telephoneNumber>
                                        <countryCode>11</countryCode>
                                    </telephone>
                                </partyContactMethod>
                                <partyContactMethod type="bean">
                                    <name>Trabajo</name>
                                    <effectiveDate format="dd-MM-yyyy">23-08-2017</effectiveDate>
                                    <expirationDate format="dd-MM-yyyy">30-12-2200</expirationDate>
                                    <address type="bean">
                                        <city type="bean">
                                            <code>SAL_0028</code>
                                        </city>
                                        <country type="bean">
                                            <code>AR</code>
                                        </country>
                                        <state type="bean">
                                            <code>SAL</code>
                                        </state>
                                        <firstLine>Oficina 1</firstLine>
                                        <secondLine>Edificio ABC</secondLine>
                                        <thirdLine>ss</thirdLine>
                                        <fourthLine>ss</fourthLine>
                                        <postalCode>07800</postalCode>
                                        <cityLocation>
                                            <code>x</code>
                                        </cityLocation>
                                    </address>
                                    <emailAddress type="bean">
                                        <name>[email protected]</name>
                                    </emailAddress>
                                    <telephone type="bean">
                                        <areaCode>54</areaCode>
                                        <telephoneNumber>11354232247553027123456789123</telephoneNumber>
                                        <countryCode>11</countryCode>
                                    </telephone>
                                </partyContactMethod>
                            </contactMethods>
                        </partyRoleAssignment>
                    </roleAssignments>
                    <identifications type="list">
                        <partyIdentification type="bean">
                            <identificationType id="1"/>
                            <identifierValue>36541870</identifierValue>
                        </partyIdentification>
                    </identifications>
                    <partyCRSegment type="bean">
                        <code></code>
                    </partyCRSegment>
                </party>
            </customer>
        </customers>
    </params>
</bridgeCoreRequest>
<bridgeCoreRequest>
    <operation>createOrUpdate</operation>
    <params>
        <customers type="list">
            <customer type="bean">
                <code>34584893070</code>
                <store>1</store>
                <party type="bean">
                    <name>ESTUDIO CERVINI</name>
                    <typeCode>OGN</typeCode>
                    <roleAssignments type="list">
                        <partyRoleAssignment type="bean">
                            <partyRole id="1">
                                <name>Cliente</name>
                            </partyRole>
                            <effectiveDate format="dd-MM-yyyy">20-12-2022</effectiveDate>
                            <expirationDate format="dd-MM-yyyy">30-12-2130</expirationDate>
 				    <contactMethods type="list">                            
    				       <partyContactMethod type="bean">
                                    <purposeType id="2"/>
                                    <methodType id="2"/>
                                    <effectiveDate format='dd-MM-yyyy'>15-01-2022</effectiveDate>
                                    <expirationDate format='dd-MM-yyyy'>10-01-2123</expirationDate>
                                    <address type="bean">
                                        <city type="bean">
                                            <code>12237</code>
                                        </city>
                                        <country type="bean">
                                            <code>ARG</code>
                                        </country>
                                        <state type="bean">
                                            <code>BSAS</code>
                                        </state>
                                        <firstLine>Suipacha 123</firstLine>
                                      </address>
                                    </partyContactMethod>
                            </contactMethods>
                        </partyRoleAssignment>
                    </roleAssignments>
                    <identifications type="list">
                        <partyIdentification type="bean">
                            <identificationType id="3"/>
                            <identifierValue>34584893070</identifierValue>
                        </partyIdentification>
                    </identifications>
                    <taxRegistrations>
                          <taxRegistration type="bean">
                            <name>ESTUDIO CERVINI</name>
                            <number>34584893070</number>
                            <taxTypes>
                                <taxRegistrationTaxType>
                                    <inscEffectiveDate>2015-01-01 00:00:00.0 ART</inscEffectiveDate>
                                    <inscExpirationDate>2025-01-01 00:00:00.0 ART</inscExpirationDate>
                                     <jurisdictionNType type="list">
                                        <jurisdiction type="bean">
                                            <taxJurisdictionCode>CABA</taxJurisdictionCode>
                                        </jurisdiction>
                                         <taxCategory>
                      				    <code>CM</code>
                   			           </taxCategory>
                   				      <type>
                      				   <code>IB</code>
                  				     </type>
                                    </jurisdictionNType>
                               </taxRegistrationTaxType>
                         </taxTypes>
                       </taxRegistration>
                       <taxRegistration type="bean">
                          <name>ESTUDIO CERVINI</name>
                          <number>34584893070</number>
                          <taxTypes>
                              <taxRegistrationTaxType>
                                <inscEffectiveDate>2010-01-01 00:00:00.0 ART</inscEffectiveDate>
                                <inscExpirationDate>2025-01-01 00:00:00.0 ART</inscExpirationDate>
                               <jurisdictionNType type="list">
                                  <jurisdiction type="list">
                                       <taxJurisdictionCode>ARG</taxJurisdictionCode>
                                  </jurisdiction>
                                  <taxCategory>
                                    <code>RI</code>
                                  </taxCategory>
                                    <type>
                                     <code>IVA</code>
                                    </type>
                              </jurisdictionNType>
                            </taxRegistrationTaxType>
                        </taxTypes>
                     </taxRegistration>
                  </taxRegistrations>
                </party>
            </customer>
        </customers>
    </params>
    <replicationStore>0</replicationStore>
</bridgeCoreRequest>


En el ABM de clientes del Bridge Manager los campos para dirección tienen la misma lógica que ya se tiene en el ABM del POS:

  • No podrán capturarse manualmente los siguientes campos ya que el valor debe seleccionarse del drop-down o llenarse automáticamente:
    • País
    • Estado
    • Ciudad
    • Colonia
    • Código Postal.
  • El País es ser México y estarán precargadas las opciones de Estado
  • Al seleccionar estado se cargan en automático las opciones de Ciudad y serán únicamente las ciudades dentro del estado seleccionado
  • Al seleccionar la ciudad se cargan en automático las opciones de Colonia y serán únicamente las colonias dentro de la ciudad seleccionada
  • Al seleccionar la colonia, el código postal se cargará automáticamente.


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

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

Para México

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

Para Chile

  • 11 (RUT)

Para Colombia 

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

Si

identifierValue

Varchar (20)

Nro de la identificación

Si

issueDate

Date

Fecha de emisión de la identificación

No

expirationDate

Date

Fecha de expiración de la identificación

No


UPDATE V7.8

El módulo Administración → Clientes → Clientes en Bridge ha sido actualizado en la versión v7.8 con nuevas validaciones que dependen de la configuración habilitada en Configuración → Sistema → Tienda → Clientes. Estas validaciones aseguran la integridad de los datos relacionados con los clientes, específicamente en cuanto al tipo de documento y el formato permitido en el campo correspondiente. Para mayor información ver ADMINISTRACIÓN --> CLIENTES --> Clientes.

Detalles de la Actualización (activado mediante properties):

  1. Si la propiedad store.customerPassportCharacters está habilitada, el campo "Número de documento" permitirá únicamente caracteres alfanuméricos, es decir, letras y números. No se permitirá la inclusión de caracteres especiales, garantizando así que los datos sean válidos y consistentes con los formatos internacionales de pasaportes. Valor por defecto: False.

  2. Si la propiedad store.customerNoPassportCharacters está habilitada, el campo "Número de documento" permitirá únicamente caracteres numéricos. No se permitirán caracteres especiales, excepto el punto ("."). Esto asegura un formato consistente con los requisitos nacionales para estos documentos. Valor por defecto: False.

Prerrequisitos

Para que se opere con este comportamiento se deben configurar dos propiedades clave en el menú BM → Configuración → Sistema → Tienda → Clientes, que habilitan la validación de los caracteres permitidos en el campo "Número de documento" según el tipo de identificación del cliente. Para mayor información ver en CONFIGURACIÓN --> SISTEMA --> Tienda: Clientes.

Request de tipo persona

<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
  <customers type="list">
   <customer type="bean">
    <code>65449999</code>
    <store>1</store>
    <party type="bean">
     <firstName>Maria</firstName>
     <lastName>Robledo</lastName>
     <genderType>M</genderType>
     <typeCode>PRS</typeCode>
     <birthCountryCode>ARG</birthCountryCode>
     <birthDayNumber>22</birthDayNumber>
     <birthMonthNumber>08</birthMonthNumber>
     <birthYearNumber>1944</birthYearNumber>
     <roleAssignments type="list">
      <partyRoleAssignment type="bean">
       <partyRole id="1">
    	<name>Cliente</name>
       </partyRole>
       <effectiveDate format="dd-MM-yyyy">23-08-2017</effectiveDate>
       <expirationDate format="dd-MM-yyyy">30-12-2200</expirationDate>
       <contactMethods type="list">
        <partyContactMethod type="bean">
         <purposeType id="2"/>
         <methodType id="1"/>
         <effectiveDate>2017-08-23T16:32:37.947</effectiveDate>
         <expirationDate>2200-12-30 00:00:00.000</expirationDate>
       <address type="bean">
          <city type="bean">
           <code>7346</code>
          </city>
          <country type="bean">
           <code>PER</code>
          </country>
          <state type="bean">
           <code>7</code>
          </state>
          <firstLine>AVDA SAN MARTIN 486</firstLine>
          <postalCode>3206</postalCode>
       </address>
	<emailAddress type="bean">
		<name>[email protected]</name>
	</emailAddress>
	<telephone type="bean">
		<areaCode>11</areaCode>
		<telephoneNumber>23878065</telephoneNumber>
		<countryCode>54</countryCode>
	</telephone>
        </partyContactMethod>
       </contactMethods>
       <sequenceNumber>1</sequenceNumber> 
      </partyRoleAssignment>
     </roleAssignments>
     <identifications type="list">
      <partyIdentification type="bean">
       <identificationType id="1"/>
       <identifierValue>95873666</identifierValue>
      </partyIdentification>
     </identifications>
    </party>
    </customer>
  </customers>
</params>
</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 “taxCertificate”, 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


UPDATE 7.7.10

La lista certificates que contiene entidades “taxCertificate”  se encuentra disponible a partir de Bridge v7.7.10


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"/>
                                                                    <certificates type="list">
                                                                         <taxCertificate type="bean">
                                                                         <sequenceNumber>1</sequenceNumber>
                                                                         <certificateExpirationDate>2024-11-30T00:00:00</certificateExpirationDate>
                                                                         <certificateIssueDate>2018-01-01T00:00:00</certificateIssueDate>
                                                                         <percentage>100.0000</percentage>
                                                                         <rateClass type="bean">
                                                                               <code>BA</code>
                                                                         </rateClass>
                                                                       </taxCertificate>
                                                                    </certificates>
                                                                    <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"/>
inscripcionDesdeDate

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

inscripcionHastaDate

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>   


CLIENTE-SALDO DE CREDITO

El servicio PartyCredit permite la importación de saldos de crédito de clientes desde un sistema externo hacia la base de datos de Bridge. Este servicio facilita la actualización de los saldos de crédito por tienda y cliente, asegurando que los datos estén siempre actualizados para el proceso de ventas y devoluciones.

Este servicio tiene como objetivo permitir la importación de saldos de crédito de los clientes de manera centralizada, asegurando que cada tienda tenga acceso a la información más actualizada del crédito disponible. La importación de los saldos de crédito debe realizarse periódicamente, y no es necesario importar todo el maestro de clientes en cada actualización, sino solo los cambios y novedades.


UPDATE 7.8

El nuevo servicio PartyCredit se incorporó a partir de la versión 7.8.7 de Bridge. Este servicio permite la importación y actualización de los saldos de crédito de los clientes desde sistemas externos hacia la base de datos de Bridge. Su principal funcionalidad es mantener la información de crédito actualizada para cada cliente, permitiendo que las tiendas consulten y gestionen los saldos de crédito de manera eficiente. A través de este servicio, los saldos de crédito se sincronizan en tiempo real, garantizando que las operaciones de venta y devolución sean precisas y se realicen de acuerdo con el crédito disponible en el sistema.


Nombre del Servicio: PartyCredit
Operación: createOrUpdate

Parámetros de entrada:

PropiedadTipo de datoDescripciónRequerido
partyCreditsListLista de clientes con sus saldos de crédito.


La lista partyCredits debe contener entidades partyCredit, las cuales poseen la siguiente estructura:

PropiedadTipo de datoDescripciónRequerido
customerCodeString (50)Código del cliente. Debe existir previamente en el sistema.
creditBalanceAmountDecimalMonto del saldo de crédito disponible para el cliente.
creditDisabledBooleanIndicador de si el crédito está habilitado para el cliente (por defecto: false).No
creditLimitAmountDecimalLímite total de crédito disponible para el cliente.No
creditTransactionLimitAmountDecimalLímite del crédito por transacción para el cliente.No
creditDayLimitAmountDecimalLímite de crédito disponible por día para el cliente.No


Ejemplo de Request XML:

<bridgeCoreRequest>
    <operation>createOrUpdate</operation>
    <params>
        <partyCredits type="list">
            <partyCredit type="bean">
                <customerCode>32125412</customerCode>
                <creditBalanceAmount>300000</creditBalanceAmount>
                <creditDisabled>false</creditDisabled>
                <creditLimitAmount>100000</creditLimitAmount>
                <creditTransactionLimitAmount>80000</creditTransactionLimitAmount>
                <creditDayLimitAmount>70000</creditDayLimitAmount>
            </partyCredit>
        </partyCredits>
    </params>
</bridgeCoreRequest>


  • Manejo de errores:

    • Si el cliente especificado no existe en el sistema, se generará un error con el mensaje "Cliente no existente".

    • Si los valores de los campos no son válidos (por ejemplo, creditBalanceAmount no es numérico), se devolverá un error.

  • Actualización de registros:
    Si el cliente ya tiene un registro en el sistema, se actualizarán los valores de su saldo de crédito. Si no existe, se creará un nuevo registro.

  • Frecuencia de actualización:
    La actualización de los saldos de crédito debe realizarse periódicamente, antes de cada transacción para garantizar que los saldos sean correctos en el momento de la venta o devolución.




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:

  • Usuarios Nuevos: sino se informa, se guarda la contraseña encriptada "changeme" y el flag "mustChangePassword = true", independientemente del valor que haya recibido en el campo "mustChangePassword"
  • Si se envía la contraseña encriptada, se guarda como tal.
  • Si se informa este campo y no passwordSalt, se asume que la contraseña está en texto plano. Esto va a provocar que se encripte la contraseña y se guarden tanto el password como el passwordSalt.

passwordSalt

String (50)

Contraseña de usuario

No

Validaciones:

  • Usuarios Nuevos: sino se informa, se guarda la contraseña encriptada "changeme" y el flag "mustChangePassword = true", independientemente del valor que haya recibido en el campo "mustChangePassword"
  • Si se envía la contraseña encriptada, se guarda como tal.
  • Si se informa password y no passwordSalt, se asume que la contraseña está en texto plano. Esto va a provocar que se encripte la contraseña y se guarden tanto el password como el passwordSalt.

codeStore

Integer (20)

Código de identificación de la tienda

No

email

String (100)

Dirección email del usuario

No

roleGroups

List

Lista de roles para los usuarios

Se debe informar la relación grupo-tienda

Ejemplo:

 <roleGroups type="list"> <roleGroup type="bean"> <group>Cajero</group> <store>10</store> </roleGroup> <roleGroup type="bean">

<group>Vendedor</group> <store>10</store> </roleGroup> </roleGroups>

No

Validaciones:

  • Si roleGroup.store tiene valor, se asigna el grupo a esa tienda.
  • Si roleGroup.store no tiene valor y el store base es distinto de cero, se usa esa tienda.
  • Si roleGroup.store no tiene valor y el store base es igual a cero, el grupo queda asignado para central (store = null)

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)

classification

Varchar

Código de la clasificación del usuario  (tiene que existir en el maestro de clasificaciones) 

No, opcional

Ejemplo:  <classification>A</classification>

ssoUser

Boolean

Indicador si está integrado a la funcionalidad de SingleSignOn o ActiveDirectory (validación del usuario con un sistema externo) 


No, opcional (default si no se recibe false) a partir de v7.8

Ejemplo: <ssoUser>false</ssoUser>

fingerPrintNotRequired

Boolean

Indica si el usuario está exento de validar mediante huella digital al autorizar operaciones en el POS. Si está en true, el usuario podrá ingresar usuario y contraseña aunque la tienda requiera huella

No, opcional (default: false si no se informa)

 Ejemplo: <fingerPrintNotRequired>false</fingerPrintNotRequired>


UPDATE 7.9

Este campo fingerPrintNotRequired se incorpora a partir de la versión 7.9.4 de Bridge como parte de la funcionalidad de autorización de supervisor mediante lector de huella. Si se omite, el usuario será tratado como no exento, y deberá validar mediante huella cuando se requiera.



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>
            <fingerPrintNotRequired>false</fingerPrintNotRequired>
            <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>

Carga de huellas de un usuario ya existente en BRIDGE


UPDATE 7.9

El servicio userBiometricFingerPrint está disponible a partir de la versión 7.9.4 de Bridge.
Este servicio permite registrar o actualizar las huellas digitales asociadas a usuarios ya existentes en el sistema, y es utilizado en el marco de la funcionalidad de autorización por huella en el POS.

📌 Para que el POS pueda validar correctamente la huella del supervisor, es necesario que las huellas hayan sido previamente cargadas mediante este servicio y replicadas a tiendas y terminales.


Nombre del Servicio: userBiometricFingerPrint
Operación: createOrUpdate
Descripción: Permite registrar o actualizar las huellas digitales asociadas a un usuario existente en Bridge. Este servicio es utilizado para cargar las huellas biométricas necesarias para la autorización por lector de huella en POS.

Parámetros de entrada:

PropiedadTipo de datoDescripciónRequerido
fingerPrintsListLista de huellas digitales a crear o actualizar


La lista fingerPrints debe contener entidades fingerPrint, las cuales poseen la siguiente estructura:

PropiedadTipo de datoDescripciónRequeridoObservaciones
userNameStringNombre del usuario (user.userName)Debe existir previamente en la tabla user.
fingerPrintNameStringNombre o descripción de la huellaEj.: “Pulgar derecho”
fingerPrintHashStringHash biométrico codificado de la huellaNoPuede dejarse vacío para deshabilitar o actualizar sin hash.
disabledBooleanIndicador si la huella está habilitadaNoValor por defecto: false si no se especifica.


Consideraciones del servicio

  • Cada huella se vincula con un usuario ya existente en el sistema.

  • Se permite cargar múltiples huellas para un mismo usuario en una misma solicitud.

  • Las huellas registradas se replican automáticamente a tiendas y terminales.

  • Este servicio está disponible a partir de la versión 7.9 de Bridge.


Request de userBiometricFingerPrint

userBiometricFinguerPrint
<soapenv:Envelope 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ser="http://services.business.soap.bridge.xx.com/">
<soapenv:Header/>
<soapenv:Body>
<ser:execute>
<service>userBiometricFingerPrint</service>
<request>
<![CDATA[
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<fingerPrints type="list">
<fingerPrint type="bean">
<userName>[email protected]</userName>
<fingerPrintName>Pulgar derecho</fingerPrintName>
<fingerPrintHash>E885766BC4D314BC3FEE33BAE85B1284147BA4796
7560CE13973A675C57A493F46FB0060000EB03000004000000C20600006
C00000002000000EA0600007200000002000000F5060000790000000600000000070000890
10000020000001A07000090010000020000002C070000970100000400000
03A0700009D010000060000004C070000A40100000400000057070000AA010000060000006
6
070000B10100000400000074070000B70100000600000086070000BE010000040000009C07
0000C801000006000000A7070000D001000006000000B0070000D501
000002000000CA070000DC01000002000000DC070000E301000004000000EA070000E90100
0006000000FC070000F00100000400000007080000F6010000060000
0016080000FD01000004000000240800000302000006000000360800000A02000004000000
4C0800001402000006000000570800001C0200000600000060080000
21020000020000007A0800002802000002000000960800003402000006000000A80800003B
02000004000000B30800004102000006000000C20800004802000004000000D00800004E0
2000006000000E20800005502000004000000F80800005F0200000600000003090000F9030
0000200000006090
000FDFFFFFF00000000140900001400000002000000300900003900000002000000</finge
rPrintHash>
<disabled>false</disabled>
</fingerPrint>
<fingerPrint type="bean">
<userName>[email protected]</userName>
<fingerPrintName>Pulgar izquierdo</fingerPrintName>
<fingerPrintHash></fingerPrintHash>
<disabled>false</disabled>
</fingerPrint>
</fingerPrints>
</params>
</bridgeCoreRequest>
]]>
</request>
</ser:execute>
</soapenv:Body>
</soapenv:Envelope>



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:

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

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

PropiedadTipo de datoDescripciónRequeridoCampo a importar en ItemStore

internalCode

String (25)

Código de artículo 

Si

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

storeCode

String

Código de tienda

Si

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

notForSale

Integer

Item no a la venta.

Valores posibles:

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

No

"notForSale"

disabled

Integer

Item deshabilitado

Valores posibles:

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

No

"disabled"

blockedForIcd

Integer

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

Valores posibles:

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

No

"blockedForIcd"

ivaType

String (3)

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

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

No

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


brand

String (100)

Código de la marca del artículo.

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

No

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

itemType

String (25)

Código del tipo de artículo.

En este campo los valores admitidos   son:

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

No

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

maxStock

Decimal(11,2)

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

No

"maxStock"

securityStock

Decimal(11,2)

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

No

 "securityStock"

price

NumberDecimal("0.0000")

Precio de venta

No

"price"

unitCost

NumberDecimal("0.0000")

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

No

"unitCost"

minSalePrice

Decimal

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

No

minSalePrice

minStockForChannels

Decimal

Cantidad de stock mínimo para canales por tienda

No

minStockForChannels

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

Integer

Item en consignación

Valores posibles:

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

No

 "onConsignment"

supplierCode

String (100)

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

No

"suplplierCode" (ObjectID que corresponda al código del proveedor enviado supplier.code).



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>2345K</internalCode>
            <storeCode>1</storeCode>
            <vatCode>2</vatCode>
            <supplierCode>PRV001</supplierCode>
         </itemStore>

         <itemStore>
            <internalCode>2345</internalCode>
            <storeCode>2</storeCode>
            <vatCode>1</vatCode>
            <supplierCode>PRV002</supplierCode>
         </itemStore>

         <itemStore>
            <internalCode>312</internalCode>
            <storeCode>2</storeCode>
            <disabled>2</disabled>
            <supplierCode>PRV003</supplierCode>
         </itemStore>

      </itemStores>
   </params>
</bridgeCoreRequest>
            ]]>
         </request>
         <!--Optional:-->
      </ser:execute>
   </soapenv:Body>
</soapenv:Envelope>

Ajuste de Inventario

Mediante la importación, se genera un nuevo ajuste de inventario en la base de datos.


Nombre del servicio: inventoryAdjustmentDocument

Parámetros de Entrada:

PropiedadTipo de datoDescripciónRequerido

createDateTimestamp

date

Fecha de creación del ajuste

SI

sourceRetailStore

String 

Código de la tienda

Si

receiptDate

date

Fecha de finalización del ajuste

No

contractReferenceNumber

String

Descripción del ajuste

No

location

String

Depósito

Si

state

String

Estado (OnSale corresponde a Items a la venta)

SI

inventoryAdjustmentType

String

Motivo del ajuste

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

SI

InventoryControlDocument

LineItems

List

Lista de artículos del ajuste

SI

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

 

PropiedadTipo de datoDescripciónRequerido

itemCode

String 

Código del artículo.

Si

unitCount

Decimal

Cantidad a ajustar por unidad de compra

Si

barcode

String

Código de barras

No.

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

InventoryControlDocument

MerchandiseSerializedUnits

List

Lista de códigos de serie o lote por cada ITEM 

No


La lista inventoryControlDocumentMerchandiseSerializedUnits debe contener entidades "inventoryControlDocumentMerchandiseSerializedUnit ", las cuales poseen la siguiente estructura:

PropiedadTipo de datoDescripciónRequerido

unitCount

NumberDecimal

Cantidad del lote 

No -cuando el artículo requiere serie (es siempre 1)

Sí - cuando el artículo requiere lote

customsNumber 

String 

Aduana

No

customsDate

Date

Fecha aduana

No

importDocNumber

String 

Nro de lote / pedimento

No - cuando el artículo requiere serie

Sí - cuando el artículo requiere lote

serialNumber

String 

Nro de serie

Si - cuando el artículo requiere serie

No - cuando el artículo requiere lote

received

Boolean

 false

No, por defecto "false"

deleted

Boolean

 false

No, por defecto "false"

Request de inventoryAdjustmentDocument

<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>inventoryAdjustmentDocument</service>

         <!--Optional:-->

         <request>

      <![CDATA[  

<bridgeCoreRequest>

<operation>createOrUpdate</operation>

<params>

<adjustmentDocument type="bean">

                <createDateTimestamp format="yyyy-MM-dd">2024-06-04</createDateTimestamp>

                <sourceRetailStore>1</sourceRetailStore>

                <receiptDate format="yyyy-MM-dd">2024-06-04</receiptDate>

                <contractReferenceNumber>2020</contractReferenceNumber>

                <location>DEP1</location>

                <state>OnSale</state>                  

                <inventoryAdjustmentType>AJ_MERMAS</inventoryAdjustmentType>

                <inventoryControlDocumentLineItems type="list">

                               <inventoryControlDocumentLineItem>

                                               <item>21052</item>

                                                <unitCount>5</unitCount>               

                               </inventoryControlDocumentLineItem> 

                               <inventoryControlDocumentLineItem>

                                               <item>155070313</item>

                                                  <unitCount>5</unitCount>               

                               </inventoryControlDocumentLineItem>   

</adjustmentDocument>

</params>

</bridgeCoreRequest>

 

         ]]>     

         </request>

         <!--Optional:-->

         <store>0</store>

      </ser:execute>

   </soapenv:Body>

</soapenv:Envelope>









  • Sem rótulos

1 comentário

  1. Muy completa la Documentacion.