...
BRIDGE - Manual de servicios de integración WSDL / XML (4-x)
© 2024 Napse. Todos los derechos reservados.
Painel | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Painel | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
|
3. Acerca del manual
3.1 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.
4. Bridge Core Server SOAP
4.1.1 Invocar un Servicio
Los servicios de BCore son expuestos vía 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 ítem, se deberá invocar el método SOAP
String execute(String service, String request, String store)
String store: este parámetro opcional (el cual permite definir que el envío se realiza a una tienda específica, de no definirse o encontrarse con el valor 0 será para todas las tiendas)
a la siguiente url:
~ /bridge/services/bridgeCoreSOAP?wsdl
Por ejemplo:
http://localhost:8181/bridge/services/bridgeCoreSOAP?wsdl
NOTA: IP: PUERTO DE API (generalmente es el que termina en 1, con respecto al puerto de instalación del BM)
El parámetro service, es el nombre del servicio y el parámetro request será un xml con el nombre de la operación a ejecutar y sus parámetros. Dicho xml tiene la siguiente estructura básica:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
…
</params>
</bridgeCoreRequest>
operation: Nombre de la operación
params: Parámetros de la operación.
4.1.1 Ejemplo de invocaciones a servicio:
El primer ejemplo muestra como invocar un servicio para crear o modificar uno o más proveedores:
service: supplier
request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<suppliers type=”list”>
<supplier type=”bean”>
<code>PR1</code>
<name>Proveedor1</name>
<fantasyName>Proveedor1 Fantastico</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 Fantastico</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:
<?xml version="1.0" encoding="UTF-8" ?>
<bridgeCoreResponse>
<ack>0</ack>
<message></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.
En el siguiente ejemplo, para modificar un:
service: brand
request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<brands type=”list”>
<brand type=”bean”>
<name>Marca Nueva</name>
<activeFlag>true</activeFlag>
<code>MNU</code>
</brand>
<brands>
</params>
</bridgeCoreRequest>
Y la response en caso de éxito:
<?xml version="1.0" encoding="UTF-8" ?>
<bridgeCoreResponse>
<ack>0</ack>
<message></message>
</bridgeCoreResponse>
4.1.2 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)
<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>brand</service>
<!--Optional:-->
<request> <![CDATA[ ** para el encapsulado de datos dentro del request **
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<brands type="list">
<brand type="bean">
<name>INCA</name>
<description>INCA KOLA</description>
<disabled>false</disabled>
</brand>
<brand type="bean">
<name>COCA</name>
<description>COCA COLA</description>
<disabled>false</disabled>
</brand>
</brands>
</params>
</bridgeCoreRequest> ]]>
</request>
<!--Optional:-->
<store>0</store>
</ser:execute>
</soapenv:Body>
</soapenv:Envelope>
4.2 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>
5. Servicio de actualización
A continuación se detallan los diferentes maestros que se podrán popular.
5.1 Servicios de actualización de maestros de artículos
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. |
Ejemplos de requerimientos para cada servicio pueden encontrarse en el apéndice.
5.1.1 Proveedores
Nombre del Servicio: supplier
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
Suppliers | List | Lista de proveedores a crear o actualizar. | Si |
La lista suppliers debe contener entidades “supplier”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (100) | Identificador del proveedor. | Si |
name | String (100) | Nombre o razón social del proveedor. | Si |
fantasyName | String (100) | Nombre de fantasía del proveedor. | No |
address | String (100) | Dirección del proveedor. | No |
phone | String (100) | Teléfono del proveedor. | No |
String (100) | Email del proveedor | No | |
fiscalId | String (100) | Identificador fiscal del proveedor, en Argentina corresponde al CUIT. | No |
activeFlag | Boolean | Flag que indica que el proveedor está habilitado en el sistema. | Si |
caiRequired | Boolean | Flag que indica si requiere CAI | No |
asn | Boolean | Flag que indica si esta integrado | No |
frequency | Integer(4) | Días que transcurren entre órdenes de compras | 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.
5.1.2 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. | No |
disabled | Boolean | Flag que indica si la marca está habilitada en el sistema. | Si |
5.1.3 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 |
5.1.4 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 |
5.1.5 Impuesto IVA de los artículos
Nombre del Servicio: vatType
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
vatTypes | List | Lista de IVAs a crear o actualizar. | Si |
La lista vatTypes debe contener entidades “vatType”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (3) | Código del porcentaje de IVA. | Si |
name | String (100) | Descripción o nombre del tipo de IVA. | No |
percentage | Decimal (8,2) | Porcentaje de IVA. | Si |
disabled | Boolean | Flag que indica que el porcentaje de IVA se encuentra habilitado para su uso en el sistema. | No |
5.1.6 Impuestos internos de los artículos
Nombre del Servicio:internalTax
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
internalTaxes | List | Lista de impuestos internos a crear o actualizar. | Si |
La lista internalTaxes debe contener entidades “internalTax”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (25) | Código del impuesto interno. | Si |
name | String (100) | Descripción del impuesto interno | Si |
flagOverValue | Boolean | Indica si el impuesto interno se calcula con un monto fijo | No |
flagPercentageOverNetValue | Boolean | Indica si el impuesto interno se calcula sobre el valor neto del artículo | No |
flagPercentageOverTotalValue | Boolea | Indica si el impuesto interno se calcula sobre el valor total del artículo | No |
flagOverCoast | Boolean | Indica si el impuesto interno se calcula sobre el costo | No |
disabled | Boolean | Flag que indica que el impuesto interno está deshabilitado | Si |
amountOverPercentage | Decimal(8,2) | Monto del porcentaje | No |
5.1.7 Depósitos
Los depósitos son los lugares físicos donde el retailer guarda mercadería, no incluye contenedores, barcos, o camiones que están en tránsito.
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
| Si |
|
|
|
|
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 |
5.1.8 Maestro de artículos
Este servicio tiene dependencias de otros maestros (marca, proveedores, niveles de jerarquía, unidades de medida, impuesto IVA, depósitos, taxCategory) En caso de que se envíen artículos con datos de los maestros mencionados como dependencias, se debe considerar que esas referencias se hayan informado previamente a Bridge.
Nombre del Servicio: item
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
items | List | Lista de artículos a crear o actualizar. | Si |
La lista items debe contener entidades “item”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Campo de importación |
itemCode | String (25) | Código del artículo. | Si | |
description | String (50) | Descripción del artículo | Si | |
hierarchyGroupCode | String (10) | Código de la agrupación jerárquica de nivel más alto a la 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 horaio restringido | No | |
logExceptionFlag | Boolean | Flag que indica si debe registrarse en el log de excepciones. | No | |
authorizationRequiredFlag | Boolean | Flag que indica que el artículo requiere autorización del supervisor. | No | |
foodStampFlag | Boolean | Flag Food Stamp, indica si está asociado al medio de pago Food Stamp. | No | |
serialNumberRequiredFlag | Boolean | Flag que indica que el artículo requiere el ingreso de número de serie. | No | |
returnNotAllowedFlag | Boolean | Flag que indica que el artículo no admite ser devuelto. | No | |
supplierCode | String (100) | Código del proveedor del artículo. 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:
| 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
| 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 En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla Location (campo code, tabla LO_LCN_INV) | Si | |
commissionPercent | Decimal(6,2) | Porcentaje de comisión sobre el artículo que le corresponde al asociado. | No | |
disabled | Boolean | Flag que indica que el artículo está deshabilitado | Si | |
itemVATCategory | String (2) | Categoría de IVA del ítem. Los valores posibles son: C, E, F, o G: C: Exento a Consumidor Final E: Exento F: Fresco G: General | ||
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 | |
retiredDiscountAllowedFlag | Boolean | Indicador para descuento para jubilado (no aplica uso en producto) | No | |
stockReservationRequired | Boolean | Indicador de requiere reserva de stock. Default false. Modifica el flag “Requiere reserva de stock” (FL_STKRES_RQ)) | No | |
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 |
La lista internalTaxes debe contener entidades “internalTax”, las cuales poseen la siguiente estructura:
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.
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 itemPictures debe contener entidades “itemPicture”, la cual posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
extension | Varchar (5) | Extensión del archivo (jpg, jpeg) | Si |
Content | String (soporta el envío de un encoded en base64) | Imagen encoded en base64 | Si |
thumbailFlag | boolean | True o false. Indica si la imagen será utilizada como miniatura o no (para Web) | No * |
templateFlag | boolean | True o false. Indica si la imagen será utilizada como template o no (botones para la venta departamental y para Web) | No * |
baseFlag | boolean | True o false. Indica si la imagen será utilizada como base o no (para Web y para la consulta de artículos desde el POS) | No * |
priority | integer | Número que indica la prioridad u orden de la imagen con respecto a las otras | No (**) |
activeFlag | boolean | True o false. Indica si la imagen se encuentra (true) o no activa (false). | Si (default true) |
Consideraciones del servicio para las imágenes:
En el servicio siempre se añaden nuevas imágenes. No sirve ni para editar ni para eliminar imágenes existentes. En caso de querer llevar a cabo dichas acciones, se deberá realizar desde el BM.
(*) Notas sobre configuraciónminiatura, base y template
En caso de ya existir una imagen configurada como miniatura o template, y en el servicio se especifica una nueva imagen como tal, se utilizará la nueva imagen para miniatura o template.
Si no se especifica ninguna imagen como miniatura o template, se tomará la primera como tal.
Si se especifica más de una, también se tomará la primera.
(**) Notas sobre prioridad de las imágenes
Al ser un campo opcional, si viene una prioridad indicada para la imagen, se prioriza esa.
En caso de existir una lista de imágenes ya asociadas al ítem que tenían la misma prioridad esta se pisa y queda priorizada la indicada en los últimos artículos recibidos por el servicio.
Si no viniera indicada la prioridad en la importación, se le da la prioridad siguiente a la que tenía la última imagen de ese ítem.
Ej: articulo 123 (imágenes nuevas C y D)
Imagen | Prioridad en BD | Nuevo recibido por WS | Prioridad con la cual queda en BD al importarse |
A | 1 | 3 | |
B | 2 | 4 | |
C | 1 | 1 | |
D | 2 | 2 |
Imágenes nuevas C y D sin indicar prioridad
Imagen | Prioridad en BD | Nuevo recibido por WS | Prioridad con la cual queda en BD al importarse |
A | 1 | 1 | |
B | 2 | 2 | |
C | 3 | ||
D | 4 |
El servicio actual de ítems se extiende con algunos datos adicionales como el producto (si viene informado lo asocia, sino lo crea para tener compatibilidad hacia atrás), los atributos, el displayOrder y atributos.
Se extienden los sig campos:
Imagen | Prioridad en BD | Nuevo recibido por WS | Prioridad con la cual queda en BD al importarse |
A | 1 | 3 | |
B | 2 | 4 | |
C | 1 | 1 | |
D | 2 | 2 |
5.1.9 Relación de artículos con impuestos internos
Nombre del Servicio: itemInternalTax
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
itemInternalTaxes | List | Lista de impuestos internos a crear o actualizar | Si |
La lista itemInternalTaxes debe contener entidades “itemInternalTax”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
item | String(25) | Código interno del ítem | Si |
internalTax | String(25) | Código del impuesto interno. | Si |
amountInternalTax | Decimal(8,2) | Monto del impuesto interno | No |
disabled | Boolean | Indica si la relación ítem / internalTax se debe eliminar | No |
5.1.10 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.
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 acutalizará 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. | No |
units | Integer | Unidades. | 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 |
5.1.11 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 |
5.1.12 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.
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 |
5.1.13 Lista de precios de artículos
Este servicio tiene dependencia de otro maestro (items) En caso de que se envíen listas de precios, los artículos se deben haber informado previamente a Bridge.
El lote de registros debería pertenecer a la misma tienda. Por tal motivo en el request a enviar, el campo <store>codigoTienda</store> debería venir informado el código de la tienda a la cual pertenecen los registros informados dentro del mismo lote. No se debería enviar <store>0</store>. Esto es para evitar que todas las tiendas reciban registros que no son de esa tienda.
Nombre del Servicio: itemSellingPrices
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
itemSellingPrices | List | Lista de listas de precios | Si |
La lista itemSellingPrices debe contener entidades “itemSellingPrice”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | ||||||||||||||||||||
itemSellingPriceNumber | Integer | Número de lista de precios | Si | ||||||||||||||||||||
(En B7 cambia a lista de tiendas) stores <storeCode></storeCode> | stores = List storeCode = Varchar (20) | Lista de códigos de tiendas (BSNGP_ITM_HEADER.PA_STR_RTL_HEADER la referencia a la tienda) Si aplica a todas las tiendas, enviarlo vacío <stores></stores>, sino aplica sólo a las tiendas informadas. No se tendrá en cuenta el parámetro externo para definir las tiendas a las que se debe replicar. | No | ||||||||||||||||||||
effectiveDateTime | Date | Fecha de inicio de vigencia. | Si | ||||||||||||||||||||
expirationDateTime | Date | Fecha de expiración de la vigencia. | Si | ||||||||||||||||||||
Ítems | List | Lista de precios de artículos a crear o actualizar. | Si | ||||||||||||||||||||
partyRoleCode | Varchar (25) | Código de tipo de rol de un cliente | No | ||||||||||||||||||||
currencyCode | Varchar (3) | Código de la moneda
| No | ||||||||||||||||||||
itemSellingPricesStatus | Integer | Estado de la lista de precios. Enviar 1 → si se encuentra "activo" Enviar 2 → si se encuentra "inactivo" | No Si no se envía se guarda el default: 1 |
La lista items debe contener entidades “item”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
itemCode | Varchar (25) | Código de producto | Si |
Barcode | Varchar (25) | Código de alias | No |
currentSaleUnitRetailPriceAmount | float | Precio actual. | Si |
currentSaleUnitRetailPriceEffectiveDate | Date | Fecha de vigencia desde para el precio actual | Si |
currentSaleUnitRetailPriceExpirationDate | Date | Fecha de vigencia hasta para el precio actual | Si |
permanentSaleUnitRetailPriceAmount | Float | Precio permanente. | Si |
PermanentSaleUnitRetailPriceEffectiveDate | Date | Fecha de vigencia desde para el precio permanente | Si |
currentSaleUnitRetailPriceTypeCode | Varchar (50) | Tipo de precio representado por el precio actual (current). Default ‘pr1’ | No |
manufacturerSaleUnitRecommendedRetailPriceAmount | Money | Precio de venta recomendado por el proveedor. | Si |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Nota: los campo tachados no se están importando en B7
5.1.14 Articulos de tipo Kits
En este servicio se registran los kits. Contiene un id interno de la tabla y luego la lista de todos los kits que se hayan definido.
Nombre del Servicio: aggregateItem
La lista aggregateItems debe contener entidades “aggregateItem”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
aggregateItems | List | Lista de artículos de tipo kit a crear o actualizar. | Si |
La lista aggregateItems debe contener entidades “aggregateItem”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
typeCode | String(10) | Tipo de artículo kit. Enviar “kit” | Si |
item | String (25) | Código del artículo padre | Si |
5.1.15 Artículos enlazados o linkeados
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 del campo ID_ITM (padre del kit) automáticamente se vende el artículo del código ID_ITM_MBR (hijos componentes) con la cantidad que se haya definido
Nombre del Servicio: linkedItem
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
linkedItems | List | Lista de asociaciones entre artículos y sus linkeados que se desea crear o actualizar. | Si |
La lista linkedItems debe contener entidades “linkedItem”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
itemCode | String(25) | Código de un artículo. | Si |
linkedItemCode | String (25) | Código del artículo enlazado al artículo cuyo código es itemCode. | Si |
quantity | Decimal | Cantidad de unidades presentes en la relación. Por default 1. | No |
memberItemPrice | Real | Precio del artículo enlazado | No |
En el servicio linkedItem, se considerar la <operation>delete</operation>
Afecta la tabla CO_CLN_ITM. Si existe el registro informado en el servicio, se elimina el registro sino se informa del error.
5.1.16 Relación entre artículos
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.
La entidad permite definir relaciones entre artículos (complementarios, sustitutos..)
Nombre del Servicio: itemRelated
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
itemsRelated | List | Lista de asociaciones entre artículos y sus linkeados 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(25) | Código de un artículo. | Si |
itemTypeRelated | String(25) | Código de la relación CI: artículos complementarios SI: Artículos similares WRT: Garantías | Si |
itemRelated | String(25) | Código del artículo relacionado. | Si |
nameRelated | String(100) | Descripción | si |
En el servicio itemRelated, se agrega la operación de eliminar.
<operation>delete</operation>
Impacta en la tabla CO_ASCTN_RLTD_ITM. Si existe el registro informado en el servicio, se eliminar el registro sino se informa el error.
5.1.17 Artículos del tipo servicio
Este servicio tiene dependencia de otro maestro (items) En caso de que se envíen artículos para ser definidos como servicios, los artículos se deben haber informado previamente a Bridge.
Nombre del Servicio: serviceItem
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
serviceItems | List | Lista de artículos de tipo servicio a crear o actualizar. | Si |
La lista serviceItems debe contener entidades “serviceItem”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
itemCode | String (25) | Código del artículo de tipo servicio que se agregará o actualizará. | Si |
type | Varchar (25) | Código del tipo de servicio. En este campo los valores admitidos son:
WRTY (Garantía) | Si |
baseCostAmount | Decimal (15,4) | Costo base del servicio. Este costono incluyetodos losdescuentos promocionales. | No |
netCostAmount | Decimal (15,4) | Costo neto del servicio. Estecosto incluyetodos losdescuentos promocionales. | No |
costsEstablishedDate | DateTime | Fecha de vigenciadel precio actualde costos parael elemento del servicio. | No |
5.1.18 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: ‘IISD’ (Estado de item de inventario por default) ‘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 cuando el ítem requiere serie o lote. |
La lista ítems serializables o que requieren lote 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 item
Propiedad | Tipo de dato | Descripción | Requerido |
serialNumber | String (50) | Nro de serie | Si cuando el ítem requiere serie |
importDocNumber | String (50) | Nro de lote o pedimento | Si cuando el ítem requiere lote |
customsNumber | String (50) | Número de aduana | No |
customsDate | DateTime | Fecha de aduana | No |
manufacturingDate | DateTime | Fecha de fabricación | No |
stockUnits | Decimal (7) | Cantidad de unidades en stock (default 0) Nota: si el ítem requiere serie, se debe enviar cantidad 1 | Si |
5.2 Actualización de stock por movimientos de abastecimiento externos a Bridge
5.2.1 Producto
Esta entidad agrupa los diferentes ítems cuando comparten atributos. La relación con Ítem (AS_ITM) es uno a mucho, siendo obligatorio al menos un ítem por cada producto.
No es requerido el uso de la entidad “producto” si no se utilizarán atributos y/o atributos de especificación. De ser utilizados los mismos, se requiere un orden en el envío de los datos.
Para el envío de entidades a través de los servicios de integración, se debe considerar el orden de envío de las entidades:
Alta de atributos y atributos de especificaciones (ambos casos opcionales).
Alta del producto con sus atributos y especificaciones (deben ya existir en Bridge)
Enviar el producto con la lista de atributos y especificaciones que se deseen relacionar al mismo.
Enviar el o los ítems asociados al producto.
En aquellos casos en los cuales no se requiera el alta de productos, sólo se enviará al ítem (sin atributos, especificaciones ni producto asociado).
Sólo en este caso cuando Bridge recibe por servicio al ítem, genera durante el proceso de importación el registro correspondiente al producto.
Para BridgePOS tanto para la venta como para el manejo de stock es por medio del ítem.
El producto sólo permite/facilita el agrupamiento y detalle de atributos para búsquedas y para Bridge WEB.
Nombre del Servicio:product
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
products | List | Lista de productos a crear o actualizar. | Si |
La lista products debe contener entidades “product”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | varchar(50) | Código de producto | Si | Se genera un registro en la tabla PRODUCT si no existe el código, si existe se actualiza. Se setea el campo CODE de la tabla PRODUCT |
Name | varchar(400) | Nombre del producto | Si | Se setea el campo NAME de PRODUCT |
shortDescription | varchar(MAX) | Descripción corta del producto | No | Se setea el campo SHORT_DESCRIPTION de PRODUCT |
fullDescription | varchar(MAX) | Descripción completa del producto | No | Se setea el campo FULL_DESCRIPTION de PRODUCT |
metaKeywords | varchar(400) | Meta palabras claves | No | Se setea el campo META_KEYWORDS de PRODUCT |
metaDescription | varchar(MAX) | Meta descripción | No | Se setea el campo META_DESCRIPTION de PRODUCT |
metaTitle | varchar(400) | Meta título | No | Se setea el campo META_TITLE de PRODUCT |
allowCustomerReviews | bit | Indicador de admite revisiones de cliente o no. | Si | Se setea el campo ALLOW_CUSTOMER_REVIEWS de PRODUCT |
(no es un campo enviado por servicio, el servicio de importación guarda el dato por defecto en el registro del producto. Es un dato a utilizar por Bridge Web para el rating o revisiones del producto) | int | Suma de rating aprobados | Si | APPROVED_RATING_SUM de PRODUCT |
(no es un campo enviado por servicio, el servicio de importación guarda el dato por defecto en el registro del producto. Es un dato a utilizar por Bridge Web para el rating o revisiones del producto) | int | Suma de rating no aprobados | Si | NOT_APPROVED_RATING_SUM de PRODUCT |
(no es un campo enviado por servicio, el servicio de importación guarda el dato por defecto en el registro del producto. Es un dato a utilizar por Bridge Web para el rating o revisiones del producto) | int | Revisiones totales aprobadas | Si | APPROVED_TOTAL_REVIEWS |
(no es un campo enviado por servicio, el servicio de importación guarda el dato por defecto en el registro del producto. Es un dato a utilizar por Bridge Web para el rating o revisiones del producto) | int | Revisiones totales no aprobadas | Si | NOT_APPROVED_TOTAL_REVIEWS |
isShipEnabled | bit | Indicador si admite envío o no | Si | Se setea el campo IS_SHIP_ENABLED de PRODUCT |
isFreeShipping | bit | Indicador si es envío gratis | Si | Se setea el campo IS_FREE_SHIPPING de PRODUCT |
shipSeparately | bit | Indicador de si admite envío separado | Si | SHIP_SEPARATELY de PRODUCT |
additionalShippingCharge | money | Monto de cargo de envío adicional | Si | Se setea el campo ADDITIONAL_SHIPPING_CHARGE de PRODUCT |
deliveryDate | int | ID de fecha de entrega | No | Se setea el campo DELIVERY_DATE_ID de PRODUCT |
displayStockAvailability | bit | Indicador para mostrar disponibilidad de stock o no | Si | Se setea el campo DISPLAY_STOCK_AVAILABILITY de PRODUCT |
isplayStockQuantity | bit | Indicador para mostrar cantidad de unidades en stock | Si | Se setea el campo DISPLAY_STOCK_QUANTITY de PRODUCT |
disableBuyButton | bit | Indicador para deshabilitar el botón de compra | Si | Se setea el campo DISABLE_BUY_BUTTON de PRODUCT |
disableWishlistButton | bit | Indicador para deshabilitar el botón de lista de favoritos | Si | Se setea el campo DISABLE_WISHLIST_BUTTON de PRODUCT |
basepriceBaseAmount | money | Monto base | No | Se setea el campo BASEPRICE_BASE_AMOUNT de PRODUCT |
basepriceBaseUnitId | int | ID de la unidad de monto base | No | Se setea el campo BASEPRICE_BASE_UNIT_ID de PRODUCT |
markAsNew | bit | Indicador si se marca como producto nuevo (permite promocionar productos nuevos) | Si | Se setea el campo MARK_AS_NEW de PRODUCT |
newStartDateTime <newStartDateTime format="dd/MM/yyyy"></newStartDateTime> | datetime | Fecha y hora de inicio de período como producto nuevo (se debe considerar el formato enviado a ="dd/MM/yyyy") | No | Se setea el campo NEW_START_DATE_TIME de PRODUCT |
newEndDateTime <newEndDateTime format="dd/MM/yyyy"></newEndDateTime> | datetime | Fecha y hora de fin de período como producto nuevo (se debe considerar el formato enviado a ="dd/MM/yyyy") | No | Se setea el campo NEW_END_DATE_TIME de PRODUCT |
displayOrder | int | Orden para ser mostrado/informado | Si | Se setea el campo DISPLAY_ORDER de PRODUCT |
published | bit | Indicador de si es publicado o no (visible en la tienda o no ) | Si | Se setea el campo PUBLISHED de PRODUCT |
isActive | bit | Indicador de si es activo o no | Si | Se setea el campo IS_ACTIVE de PRODUCT |
(no es un campo enviado por servicio, el servicio de importación guarda el dato por defecto en el registro del producto) | datetime | Fecha y hora de creación del producto | Si | Si el registro es nuevo y se está generando, setear el campo CREATION_DATE de PRODUCT con fecha y hora de importación. |
(no es un campo enviado por servicio, el servicio de importación guarda el dato por defecto en el registro del producto) | datetime | Última actualización del producto (fecha y hora) | Si | Si el registro ya existía, setear el campo LAST_UPDATE de PRODUCT con la fecha y hora de importación. |
defaultItemCode | int | Código IDdel ítem por defecto | No | Se debe enviar el código del ítem que se desea como default. En la importación se setea el campo DEFAULT_ITEM_ID de PRODUCT |
categories | List | Lista de categorías departamentales a las que se asociará al producto | No | Estas categorías son web no la del ítem. Es opcional. De recibirse se genera la asociación en la entidad PRODUCT_CATEGORY. Son las mismas categorías departamentales de CO_MRHRC_GP donde debe tener activo el flag IS_WEB |
specificationAttributes | List | Lista de atributos de especificaciones del producto | No | |
productAttributes | List | Lista de atributos de producto | No |
La lista categories debe contener entidades “category”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | String (10) | Código de la categoría departamental | Si | Se valida que exista el código de la categoría departamental, sino informar con error. Se genera un registro en PRODUCT_CATEGORY con el id de la categoría departamental (seteando el campo ID_MRHRC_GP) y el id del producto (seteando el campo PRODUCT_ID) |
disabled | boolean | Indicador si está o no habilitado |
La lista specificationAttributes debe contener entidades “specificationAttribute”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | varchar(50) | Código del atributo de especificación | Si | Se valida que exista el código del atributo de especificación, sino informar error (en SPEC_ATTR) Genera registro en PRODUCT_SPEC_ATTR |
value | varchar | Nombre del atributo de especificación | Si | Se setea el campo SPEC_ATTR_OPTION_ID de la tabla PRODUCT_SPEC_ATTR con el ID que corresponda al campo NAME de SPEC_ATTR_OPTION |
showOnProductPage | Boolean | Indicador si se muestra o no en la página | Si | Se setea el campo SHOW_ON_PRODUCT_PAGE de la tabla PRODUCT_SPEC_ATTR |
attributeType | Varchar (25) | Tipo de dato. Lista posible de valores:
| Si | Se setea el campo ATTR_CONTROL_TYPE de la tabla PRODUCT_SPEC_ATTR |
customValue | Varchar (400) | No | Se setea el campo CUSTOM_VALUE de la tabla PRODUCT_SPEC_ATTR | |
displayOrder | Int | Orden con el que se informa/muestra la especificación | Si | setea el campo DISPLAY_ORDER de la tabla PRODUCT_SPEC_ATTR |
disabled | boolean | Indicador si está o no habilitado | Si | De recibirse este campo se elimina el atributo de especificación |
La lista productAttributes debe contener entidades “productAttributes”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | varchar(50) | Código del atributo de especificación | Si | Se valida que exista el código del atributo de especificación, sino informar error (en SPEC_ATTR) Genera registro en PRODUCT_PRODUCT_ATTR relacionando el ID del atributo con el ID del producto (campos PRODUCT_ID y PRODUCT_ATTR_ID) |
isRequired | Boolean | Indicador de si el atributo es requerido de configuración de parte del cliente para la compra del producto | Si | Se setea el campo IS_REQUIRED de la tabla PRODUCT_PRODUCT_ATTR |
attributeType | Varchar (25) | Tipo de dato. Lista posible de valores:
| Si | Se setea el campo ATTR_CONTROL_TYPE de la tabla PRODUCT_PRODUCT_ATTR |
displayOrder | Int | Orden con el que se informa/muestra la especificación | Si | Se setea el campo DISPLAY_ORDER de la tabla PRODUCT_PRODUCT_ATTR |
disabled | boolean | Indicador si está o no habilitado | Si | NOTA: Este campo de ser recibido en el servicio como disabled, se eliminará el atributo. No existe un campo en el modelo de datos donde se registre sino que permite la baja del atributo. |
5.2.2 Múltiples categorías por producto
Esta información se encuentra incluida dentro del servicio de producto
5.2.3 Atributos en las categorías
Permite asociar atributos de producto a una categoría, puede ser enviada una lista de categorías con sus atributos
Nombre del Servicio: productAttributeCategory
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
productAttributeCategories | List | Lista de atributos a asociar a categorías (crear asociaciones o actualizar) | Si |
La lista productAttributeCategories debe contener entidades “productAttributeCategory”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
hierarchycode | varchar(10) | Código de la categoría departamental | Si | Al importar se deberá generar el registro en la PRODUCT_ATTR_CATEGORY. Se debe validar que exista el código recibido en la tabla CO_MRHRC_GP campo CD_MRHRC_GP sino informar error |
ProductAttributeCode | varchar(50) | Código del atributo | Si | Se debe validar que exista el código recibido en la tabla PRODUCT_ATTR campo CODE sino informar error |
isTemplate | Boolean | Indicador si es un atributo template para la categoría departamental | Si | Default: true Se setea el campo IS_TEMPLATE de PRODUCT_ATTR |
isFilter | Boolean | Indicador si es un atributo filtro para la categoría departamental | Si | Default: true Se setea el campo IS_FILTER de PRODUCT_ATTR |
disabled | Boolean | Indicador si esta deshabilitado el atributo para la categoría departamental | Si | Default: false Se setea el campo IS_DISABLED de PRODUCT_ATTR |
5.2.1 Atributos de especificación en las categorías
Permite asociar atributos de especificación de un producto a una categoría, puede ser enviada una lista de categorías con sus atributos
Nombre del Servicio: specificationAttributeCategory
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
specificationAttributeCategories | List | Lista de atributos de especificación a asociar a categorías (crear asociaciones o actualizar) | Si |
La lista specificationAttributeCategories debe contener entidades “specificationAttributeCategory”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
hierarchycode | varchar(10) | Código de la categoría departamental | Si | Al importar se deberá generar el registro en la SPEC_ATTR_CATEGORY. Se debe validar que exista el código recibido en la tabla CO_MRHRC_GP campo CD_MRHRC_GP sino informar error |
specificationAttributeCode | varchar(50) | Código del atributo de especificación | Si | Se debe validar que exista el código recibido en la tabla SPEC_ATTR campo CODE sino informar error |
isTemplate | Boolean | Indicador si es un atributo template para la categoría departamental | Si | Default: true Se setea el campo IS_TEMPLATE de SPEC_ATTR_CATEGORY |
isFilter | Boolean | Indicador si es un atributo filtro para la categoría departamental | Si | Default: true Se setea el campo IS_FILTER de SPEC_ATTR_CATEGORY |
disabled | Boolean | Indicador si esta deshabilitado el atributo para la categoría departamental | Si |
5.2.2 Atributos de producto
Permite crear o actualizar atributos de producto.
Nombre del Servicio: productAttribute
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
productAttributes | List | Lista de atributos de producto (crear o actualizar) | Si |
La lista productAttributes debe contener entidades “productAttribute”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | varchar(50) | Código del atributo del producto | Si | Al importar se deberá generar el registro en la PRODUCT_ATTR. Si existe el código lo actualiza |
name | varchar(max) | Nombre del atributo del producto | Si | Se setea el campo NAME de PRODUCT_ATTR. |
description | varchar(max) | Descripción | No | Si no viene informado setear con el mismo valor del campo name en el campo DESCRIPTION de PRODUCT_ATTR. |
disabled | Boolean | Indicador si está deshabilitado o no el atributo para el producto | No | Default: true Se setea el campo IS_DISABLED de PRODUCT_ATTR. |
productAttributeOptions | List | Lista de opciones del atributo del producto | Si |
La lista productAttributeOptions debe contener entidades “productAttributeOption”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | String | Código del atributo del producto | Si | Al importar se deberá generar el registro en la PRODUCT_ATTR_OPTION si no existe. Si existe el código lo actualiza |
name | varchar(MAX) | Nombre de la opción del atributo | Si | Se setea el campo NAME de PRODUCT_ATTR_OPTION |
colorSquaresRgb | varchar(100) | Código del color RGB | No | Se setea el campo COLOR_SQUARES_RGB de PRODUCT_ATTR_OPTION |
disabled | boolean | Indicador si está deshabilitado o no el atributo para el producto | No | Default: false |
5.2.3 Atributos de especificación
Permite crear o actualizar atributos de especificación de producto.
Nombre del Servicio: specificationAttribute
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
specificationAttributes | List | Lista de atributos de especificación de producto (crear o actualizar) | Si |
La lista specificationAttributes debe contener entidades “specificationAttribute”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | varchar(50) | Código del atributo de especificación del producto | Si | Al importar se deberá generar el registro en la SPEC_ATTR. Si existe el código lo actualiza |
name | varchar(max) | Nombre del atributo de especificación del producto | Si | Se setea el campo NAME de SPEC_ATTR. |
displayOrder | int | Orden en el que se muestra/informa dentro de la lista | No | Se setea el campo DISPLAY_ORDER de SPEC_ATTR. Si el “displayOrder” no viene informado se le asigne el siguiente al último. |
disabled | Boolean | Indicador si está deshabilitado o no el atributo de especificación de producto | No | Default: false |
specificationAttributeOptions | List | Lista de opciones del atributo del producto | Si |
La lista specificationAttributeOptions debe contener entidades “specificationAttributeOption”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
name | varchar(MAX) | Nombre de la opción del atributo de especificación | Si | Al importar se deberá generar el registro en la SPEC_ATTR_OPTION chequeando por el SPECIFICATION_ATTRIBUTE_ID si no existe. Si existe lo actualiza. |
colorSquaresRgb | varchar(100) | Código del color RGB | No | Se setea el campo COLOR_SQUARES_RGB de SPEC_ATTR_OPTION |
displayOrder | int | Orden en el que se muestra/informa dentro de la lista | No | Se setea el campo DISPLAY_ORDER de SPEC_ATTR_OPTION. |
disabled | boolean | Indicador si está deshabilitado o no la opción del atributo de especificación para el producto | No | Default: true Se setea el campo IS_DISABLED de SPEC_ATTR_OPTION. |
5.3 Servicios de actualización maestros de medios de pagos
A continuación se describen los servicios que se ofrecen para la actualización de medios de pago, 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. |
Ejemplos de requerimientos para cada servicio pueden encontrarse en el apéndice.
5.3.1 Medios de Pago
Nombre del Servicio: tender
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
tenders | List | Lista de medios de pago a crear o actualizar. | Si |
La lista tenders debe contener entidades “tender”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
tenderCode | String (4) | ID del medio de pago. En los medios de pago que se validan por VTOL, deben respetarse los códigos que VTOL maneja: AMEX AM Argencard AC Cabal CB Cabal 24 CV Diners DI Maestro MA Mastercard MC Mastercard Debit MD Naranja TN Nativa NV Nativa MC NM Visa VI Visa Débito EL | Si |
descriptor | String (25) | Descriptor del medio de pago. | Si |
type | Integer (4) | ID del grupo de medio de pago. En este campo, se debe enviar alguno de los siguientes valores correspondiente a la tabla CO_CLS_TND, campo CD_CLS_TND 1-Cash (sólo se admite un medio de pago del tipo efectivo habilitado para moneda local) 2-Check 3-Coupon 4-Card 5-Cash on delivery 6-Nota de crédito 7-Crédito 8-Gift Certificate 9- Charge Card 10-Loyalty Card 11- Wallet 12 -Transferencias | Si |
disabled | Boolean | Flag de deshabilitado | Si |
5.3.2 Parámetros de tienda
Permite actualizar la información de la configuración de los medios de pago a nivel tienda.
Nombre del Servicio: storeTender
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
storeTenders | List | Lista de configuración de medios de pago para la tienda a crear o actualizar. | Si |
La lista storeTenders debe contener entidades “storeTender”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Tipo de medio de pago | Requerido |
tenderTypeCode | String(25) | Tipo del medio de pago. | TODOS | Si |
workStationGroup | Integer(4) | Nombre de la categoría de terminales | TODOS | No |
supervisorRequired | Boolean | Flag requiere autorización del supervisor | TODOS | No (v8.5) Por default: false |
maxChangeAmount | Decimal (tipo money) | Monto máximo de vuelto | CASH | No |
currencySymbol | String(8) | Símbolo de moneda | TODOS | No |
foreignCurrency | Boolean | Flag moneda extranjera | CASH | No |
foreignCurrencyQuoteFactor | Decimal (tipo money) | Cotización de moneda extranjera | CASH | No |
bankRequired | Boolean | Flag requiere banco | CHECK | No |
issueDateRequired | Boolean | Flag requiere fecha de emisión | CHECK | No |
serialNumberRequired | Boolean | Flag require número de serie | CHECK | No |
printerBandReadingEnabled | Boolean | Flag lectura de banda disponible | CHECK | No |
amountRequired | Boolean | Flag monto requerido | CUPON | No |
verificationAlgorithm | Integer(4) | Método de verificación | CUPON | No |
numberLength | Integer(4) | Longitud de tarjeta | CUPON | No |
prefixLength | Integer(4) | Longitud de prefijo | CUPON | No |
minOnlineAmount | Decimal | Monto mínimo de pago | CARD | No |
maxOnlineAmount | Decimal | Monto máximo de pago | CARD | No |
offlineAllowed | Boolean | Flag admite offline | CARD | No |
maxOfflineAmount | Decimal | Monto máximo de pago en modalidad offline | CARD | No |
manualInputAllowed | Boolean | Flag ingreso manual pemitido | CARD | No |
mustControlDueDate | Boolean | Flag de control de fecha de vencimiento | CARD | No |
mustControlVerificatorDigit | Boolean | Flag de control del dígito verificador | CARD | No |
accountNumberRequired | Boolean | Flag de requiere número de cuenta | CARD CHECK | |
cvcRequired | Boolean | Flag de control del dígito verificador | CARD | No |
cvcLength | Integer(4) | Longitud del CVC | CARD | No |
effectiveDateRequired | Boolean | Flag fecha efectiva requerida | CARD | No |
lastDigitsInputRequired | Boolean | Flag requiere ingreso de últimos dígitos | CARD | No |
pinRequired | Boolean | Flag requiere ingreso de PIN | CARD | No |
expirationDateRequired | Boolean | Flag requiere fecha de expiración | NOTA DE CREDITO | No |
authorizationCodeRequired | Boolean | Flag requiere código de autorización | CARD CHECK | No |
lotRequired | Boolean | Flag requiere lote | CARD | No |
couponRequiredCARD | Boolean | Flag requiere cupón | CARD | No |
deferedDateRequired | Boolean | Flag requiere fecha diferida | CHECK | No |
accountNumberLength | Integer(4) | Longitud número de cuenta | CHECK | No |
bankLength | Integer(4) | Longitud código de banco | CHECK | No |
serialNumberLength | Integer(4) | Longitud número de cheque | CHECK | No |
bankListRequired | Boolean | Requiere se muestre los bancos disponibles en una lista | CHECK | No |
numberIdRequired | Boolean | Requiere documento | CHECK | No |
telephoneRequired | Boolean | Requiere teléfono | CHECK | No |
isoCode | String(3) | Código ISO del país de la moneda | CASH | No |
foreignCurrencySellingQuoteFactor | Decimal (tipo money) | Cotización de moneda extranjera (tipo vendedor, a utilizar para la facturación) | CASH | No |
5.3.3 Parámetros de terminal
Permite actualizar la información de la configuración de los medios de pago a nivel terminal.
Nombre del Servicio: terminalTender
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
terminalTenders | List | Lista de configuración de medios de pago para la terminal a crear o actualizar. | Si |
La lista terminalTenders debe contener entidades “terminalTender”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
terminalTenderTypeCode | String(25) | Código de configuración por terminal del medio de pago. Suele ser igual al código de medio de pago del servicio tender | Si |
tender | String(4) | ID del medio de pago informado en el servicio de medio de pago –tender | Si |
workStationGroup | Integer(4) | Nombre de la categoría de terminales | No |
optionNumber | Integer(4) | Número entero que debe ser único para cada medio de pago | Si |
showable | Boolean | Flag que indica si debe mostrarse o no el medio de pago en el menú de selección de medios de pago | Si |
descriptor | String(100) | Descripción del medio de pago | Si |
accepted | Boolean | Flag de medio de pago aceptado | Si |
maxAuthorizedPaymentAmount | Decimal | Monto máximo de pago mayor a cero | Si |
maxAuthorizedChangeAmount | Decimal | Monto máximo de vuelto | No |
paymentVerificationLimit | Decimal (tipo money) | Monto límite de verificación de pago | No |
paymentVerificationMethod | Integer(4) | Método de verificación de pago Valores:
CONTACTLESS = 14 | No |
maxPayments | Integer(4) | Máxima cantidad de pagos mayor a cero | Si |
cashdrawerOpeningRequired | Boolean | Flag requiere apertura del cajón de dinero | Si |
endorsementRequired | Boolean | Flag de requiere endoso | No |
frankingRequired | Boolean | Indica si el medio de pago requiere del franqueo a través de la estación de document insert de la impresora. | No |
documentRequired | Boolean | Flag requiere documento del cliente | No |
frankingFormatId | Integer | ID del formato de franqueo a imprimir | No |
minPaymentAmount | Decimal (tipo money) | Monto mínimo de pago | No |
maxPaymentAmount | Decimal (15,4) | Monto máximo de pago mayor a cero | Si |
maxAuthorizedCorrectionAmount | Decimal | Monto de corrección autorizada | No |
changeAllowed | Boolean | Flag de vuelto permitido para el medio de pago | Si |
acceptedIfChangeNotAllowed | Boolean | Flag de medio de pago aceptado si no permite vuelto | Si |
allowedInSales | Boolean | Flag de medio de pago admitido en ventas | Si |
allowedInRefunds | Boolean | Flag de medio de pago admitido en devoluciones | Si |
automaticTenderLoan | Decimal (tipo money) | Medio de pago con dotación automática | No |
surchargeType | String(100) | Tipo de recargo | No |
surchargeAmount | Decimal (tipo money) | Monto de recargo | No |
surchargeItemCode | String(100) | Item al cual se asigna el recargo | No |
printFrontReq | Boolean | Requiere impresión en el frente | Si |
uniquePayment | Boolean | Único pago admitido en una transacción de venta o devolución | No |
originalTenderChange | Boolean | Indica si el medio de pago admite vuelto en la moneda base del sistema. Utilizado sólo en tipo de medio de pago CASH Si se encuentra definido en NO, calculará el vuelto todo en moneda base. Si se encuentra definido en SI, calculará el vuelto en misma moneda hasta la minima denominación definida y el resto calculado al tipo de cambio de la moneda base | No |
minDenomChng | Decimal | Valor mínimo de denominación para otorgar vuelto en moneda extranjera. Utilizado sólo en tipo de medio de pago CASH | No |
automaticPickup | Boolean | Indica si un medio de pago es autoarqueable ,es decir, si la rendición se realiza de forma automática | No |
automaticSafeOutflow | Boolean | Indica si el medio de pago autoarqueable sale de forma automática del safe | No |
witnessRequired | Boolean | Indica si el medio de pago requiere testigo en la rendición | No |
extDepUpdAllowed | Boolean | indica si el medio de pago admite la edición de la cuenta externa asociada | No |
externalDepository | Integer(40) Varchar (10) | Asocia una cuenta externa al medio de pago (Código de cuenta externa, campo LO_EXTDST. CD_RPSTY_EXTRN) | No |
additionalData1 | Booelan | En la rendición, utilizado para solicitar sobres | No |
additionalData2 | Booelan | En la rendición, utilizado para solicitar numero de lote | No |
additionalData3 | Booelan | En la rendición, utilizado para solicitar datos adicionales | No |
additionalData4 | Booelan | En la rendición, utilizado para solicitar datos adicionales | No |
additionalData5 | Booelan | En la rendición, utilizado para solicitar datos adicionales | No |
extraCash | Boolean | Medio de pago admite extraCash | No |
conciliationByQuantity | Boolean | Medio de pago se concilia por cantidad de transacciones (en lugar de por monto) | No |
5.3.4 Configuración de planes para medios de pago a nivel terminal
Permite actualizar la información de la configuración de los planes asociados a un medio de pago a nivel terminal.
Nombre del Servicio: paymentPlan
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
paymentPlans | List | Lista de configuración de planes asociados a medios de pago a crear o actualizar. | Si |
La lista paymentPlans debe contener entidades “paymentPlan”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Tipo de medios de pago | Requerido |
paymentPlanCode | String(25) | Código del plan de pagos | CARD | Si |
terminalCardConfig | String(25) | Código de configuración por terminal del medio de pago. *Hace referencia a la columna CD_TND_WS de CF_TND_WS, la cual es un código para ser usado por el ERP. | CARD | Si |
planId | String(10) | Nombre del plan de pagos | CARD | Si |
description | String(70) | Descripción del plan de pagos | CARD | Si |
vtolCode | String(50) | Código VTOL | CARD | Si |
currency | String(10) | Código de moneda | CARD | No |
Configuración de planes de cuotas para medios de pago
Permite actualizar la información de los planes de cuotas asociados a un medio de pago.
Nombre del Servicio: paymentPlanInstallment
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
installments | List | Lista de configuración de planes de cuotas asociados a medios de pago a crear o actualizar. | Si |
La lista installments debe contener entidades “installment”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
terminalCardConfigPaymentPlan | String(25) | Identificador del plan de pagos En este campo los valores admitidos deben encontrarse dados de alta dentro de la tabla PaymentPlan (campo code) | Si |
paymentPlanInstallmentCode | String(25) | Código del plan de cuotas del ERP | Si |
installments | Integer(4) | Cantidad de cuotas | Si |
surchage | DecimalNumber | Recargo por cantidad de cuotas | Si |
5.3.1 Configuración de Formato de Franqueo
Permite actualizar la información de la configuración de los formatos de franqueo asociados a un PLAN DE PAGO.
Nombre del Servicio: frankingFormat
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
frankingformats | List | Lista de configuración de formatos de franqueo a crear o actualizar. | Si |
La lista frankingformats debe contener entidades “frankingformat”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
terminalsGroup | Integer(4) | Id de grupo de terminales | No |
format | String(MAX) | Texto del franqueo. Ejemplo del texto, en el cual se puede hacer uso de variables. ===== CHEQUE ENDOSADO ===== CUENTA Nro.: @a Total $@bbbbbbbbbb @g | Si |
code | String(50) | Código | Si |
description | String(50) | Descripción del franqueo. Este código puede ser utilizado por el ERP para identificar al formato de franqueo. | Si |
5.3.2 Configuración de Prefijos de tarjetas
Permite actualizar la información de los prefijos asociados a un medio de pago del tipo tarjeta, importando sus datos en la tabla CF_CARD_PREFIXES.
Nombre del Servicio: cardPrefix
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
Prefixes | List | Lista de configuración de prefijos asociados a medios de pago a crear o actualizar. | Si |
La lista prefixes debe contener entidades “prefix”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Requerido | Descripción del campo | Observaciones |
storeTenderCode | String | Si | Medio de pago | En este campo del servicio, se espera recibir el valor del campo TY_TND de la tabla AS_TND (ej: Mon, GC) |
prefixIdentifier | Integer | Si | Identificador del prefijo | |
rangeFrom | VARCHAR2(25 BYTE) | Si | Rango de prefijo desde | |
rangeTo | VARCHAR2(25 BYTE) | Si | Rango de prefijo hasta | Si no existe deben enviar el mismo valor que campo rangeFrom |
prefixLength | Integer | Si | Longitud del prefijo | |
cardLength | Integer | Si | Longitud del bin de la tarjeta | |
enabled | Boolean | Si | Habilitado | Default true |
type | Integer | Si | Tipo: GiftCard/Monedero/Fidelidad | Los valores a enviar pueden ser 3, 4 o 5 Para monedero: 3 Para GiftCard: 4 Para Fidelidad: 5 |
Notas:
El <store> al ir en 0 va para todas las tiendas. Si tuvieran configuración específica de rango de tarjetas por tienda, aquí debería venir el Código de tienda. Por defecto envíen 0.
Este servicio permite recibir una lista de prefijos de tarjetas, donde dentro de la lista, pueden venir N <prefix type="bean">
<prefixes type="list">
<prefix type="bean">
5.3.4 Configuración de prefijos de cupones/vales (como medio de pago)
Permite actualizar la información de configuración de los prefijos de cupones/vales. Se popula la tabla CF_COUPON_PREFIXES.
Nombre del Servicio: couponPrefix
Parámetros de entrada:
Propiedad | Tipo de dato | Requerido | Descripción del campo | Observaciones |
prefixId | INTEGER | Si | Código del registro de prefijo de cupón | |
configTenderStoreId | NUMBER(38,0) | Si | Código del medio de pago | Se debe enviar el código del medio de pago informado en el servicio tender tag tenderCode |
rangeFrom | VARCHAR(25) | Si | Rango desde | |
rangeTo | VARCHAR(25) | Si | Rango hasta |
5.3.5 Configuración de cupones (para PROMO)
Permite actualizar la información de los prefijos de cupones, importando sus datos en la tabla CF_COUPON.
Nombre del Servicio:CouponConfiguration
Parámetros de entrada:
Propiedad del servicio | Tipo de dato | Requerido | Descripción del campo | Observaciones |
identifier | NUMBER(38,0) | Si | ID de cupón | Código del cupón en PROMO (considerar que sea unique) Mediante este código se deberían recibir actualizaciones |
couponType | VARCHAR2(10 BYTE) | Si | Tipo de cupón | Enviar “Promo” (de esta manera a futuro podremos manejar otros tipos de cupones de proveedor, etc.En Bridge) |
description | VARCHAR2(255 BYTE) | Si | Descripción del cupón | |
couponLength | NUMBER(38,0) | Si | Longitud del ID de cupón | |
fromPrefix | VARCHAR2(10 BYTE) | Si | Prefijo de cupón desde | |
toPrefix | VARCHAR2(10 BYTE) | Si | Prefijo de cupón hasta | Si este dato no lo tienen enviar mismo valor que en fromPrefix |
prefixLength | NUMBER(38,0) | Si | Longitud del prefijo | |
Amount | NUMBER(19,4) | No | Monto de cupón | Opcional. Si no se recibe, se guarda en null |
couponFormatID | varchar | No | Tipo de código que tendrá el ID del cupón (ej: EAN13, UPC-A, CODE-128 o Personalizada) | Codificación del ID del cupón. Opcional, si no se recibe, se guarda en null. |
Notas:
El <store> al ir en 0 va para todas las tiendas. Si tuvieran configuración específica de rango de cupones por tienda, aquí debería venir el Código de tienda. Por defecto envíen 0.
Este servicio permite recibir una lista de prefijos de cupones, donde dentro de la lista, pueden venir N <coupon type="bean">
<coupons type="list">
<coupon type="bean">
5.4 Servicios de actualización maestros de Impuestos
A continuación se describen los servicios que se ofrecen para la actualización de impuestos, 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. |
Ejemplos de requerimientos para cada servicio pueden encontrarse en el apéndice.
5.4.1 Categorías impositivas del artículo
Nombre del Servicio: taxCategory
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
taxCategories | List | Lista de las categorías impositivas de items a crear o actualizar. | Si |
La lista taxCategories debe contener entidades “taxCategory”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (2) | Código de la categoría impositiva del artículo | Si |
name | String (50) | Nombre de la categoría impositiva del artículo (el campo se valida como valor único, UK) | Si |
5.4.2 Categorías impositivas del cliente
Nombre del Servicio: taxJurisdictionTaxTypeCategory
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
taxJurisdictionTaxTypeCategories | List | Lista de las categorías de clientes a crear o actualizar. | Si |
La lista taxJurisdictionTaxTypeCategories debe contener entidades “taxJurisdictionTaxTypeCategory”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (25) | Código de la categoría impositiva del cliente | Si |
name | String (50) | Nombre de la categoría impositiva del cliente | Si |
invoiceType | String (5) | Serie del comprobante | No |
5.4.3 Jurisdicciones impositivas
Nombre del Servicio: taxJurisdiction
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
taxJurisdictions | List | Lista de las jurisdicciones a crear o actualizar. | Si |
La lista taxJurisdictions debe contener entidades “taxJurisdiction”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
taxJurisdictionCode | String (25) | Código de la jurisdicción impositiva | Si |
name | String (100) | Nombre de la jurisdicción impositiva | Si |
type | String (25) | Tipo de jurisdicción impositiva 1: municipal 2: provincial 3: nacional | Si |
typeCode | String(15) | Si tipo de jurisdicción 1: Código de la ciudad Si tipo de jurisdicción 2: Código de la provincia Si tipo de jurisdicción 3: Código del país | No |
authority | String(25) | Autoridad (1) | Si |
registerAllowed | Boolean | Indica si la jurisdicción tiene padrón habilitado | No |
taxJurisdictionTaxTypes | List | Identificador de la relación impositiva Si la relación impositiva informada no existiera, se debe crear | No |
La lista taxJurisdictionTaxTypes debe contener entidades “taxJurisdictionTaxType”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
taxJurisdictionTaxTypeCategory | String(25) | Identificador de la categoría impositiva del cliente Nota: debe existir en la base de datos | Si |
taxCategoryCode | String(25) | Identificador del tipo de impuesto Valor posible: IB | Si |
5.4.4 Regiones impositivas para tiendas
Nombre del Servicio: storeTaxCategory
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
storeTaxCategories | List | Lista de las regiones impositivas de tiendas a crear o actualizar. | Si |
La lista storeTaxCategories debe contener entidades “storeTaxCategory”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
storeTaxCategoryCode | String (3) | ID de la categoría de items. | Si |
storeTaxCategoryName | String (50) | Nombre de la categoría de ítems. | Si |
5.4.5 Reglas de impuestos
Nombre del Servicio:taxRateGroup
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
taxGroupRules | List | Lista de las reglas de impuestos a crear o actualizar. | Si |
La lista taxGroupRules debe contener entidades “taxGroupRule”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (25) | Código de la regla impositiva | Si |
name | String(50) | Nombre de la regla impositiva | Si |
descripcion | String(100) | Descripción de la regla impositiva | No |
jurisdictionNType | Bean | Identificador de la relación impositiva (La estructura puede verse bajo el título “Relaciones impositivas anidadas” Si la relación impositiva informada no existiera, se debe crear | Si |
effectiveDate | Date | Fecha de vigencia | Si |
intendedUsageType | String(10) | Uso final del artículo Valores posibles: Cons (Consumo) / Uso (bienes de uso) | Si |
itemTaxCategory | String(25) | Categoría impositiva de artículos Nota: Debe existir sino da error | Si |
storeTaxCategory | String(3) | Región impositiva de la tienda Nota: Debe existir sino da error | Si |
rateRule | Bean | Identificador del parámetro de la regla (La estructura puede verse bajo el título “Parámetros de reglas de impuestos” Si el código no existe, se puede crear el parámetro | Si |
disabled | Boolean | Deshabilitado | Si |
5.4.6 Relaciones impositivas anidadas
Permite dar de alta la relación entre una jurisdicción, el tipo de impuesto y la categoría impositiva del cliente.
La entidad taxJurisdictionTaxType posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
jurisdiction | Bean | Código de la jurisdicción impositiva | Si |
type | Bean | Identificador de la categoría impositiva del cliente | Si |
taxCategory | Bean | Identificador del tipo de impuesto Valores posibiles: IVA, IB, MNC | 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 |
5.4.7 Parámetros de reglas de impuestos
Permite dar de alta el parámetro a asociar a la regla de impuestos. Si el código informado existiera en el modelo, no es necesario enviar el resto de los campos requeridos. Sin embargo, si alguno de los campos de esta entidad fuera enviado cuando el código de parámetro ya exista en el modelo, los campos serán actualizados.
Se validará que los campos requeridos sean enviados únicamente cuando el código no exista en el modelo y deba ser creado.
La entidad taxRateRule posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (25) | Código del parámetro de la regla impositiva | Si |
name | String(50) | Nombre del parámetro de la regla impositiva | Si |
cappedTaxAmount | Decimal(8,2) | Monto máximo a percibir | No |
minimumTaxableAmount | Decimal(8,2) | Monto mínimo base imponible | No |
percent | Decimal(5,2) | Porcentaje de la alicuota | No |
netTaxableAmount | Boolean (*) | Aplica sobre el monto neto Nota: sólo uno de los campos de aplicación, debe estar en true | Si |
netWithTaxTaxableAmount | Boolean (*) | Aplica sobre el monto neto + impuestos Nota: sólo uno de los campos de aplicación, debe estar en true | Si |
netWithVATTaxableAmount | Boolean (*) | Aplica sobre el monto neto + IVA Nota: sólo uno de los campos de aplicación, debe estar en true | Si |
totalAmountTaxableAmount | Boolean (*) | Aplica sobre el monto total Nota: sólo uno de los campos de aplicación, debe estar en true | Si |
unifiedFactor | Decimal(5,2) | Factor Unificado | Si |
rateClass | String (10) | Código de la clase de impuestos (Si el código no existe, se puede crear la clase) | Si |
taxOnShipmentLocationFlag | Boolean | Aplica sobre domicilio de entrega/territorial | No (df=false) |
shipmentLocationTaxPercent | Decimal (8,2) | Porcentaje de alícuota para domicilio de entrega * | No |
5.5. Servicios de actualización de Usuarios y Vendedores.
A continuación se describen los servicios que se ofrecen para la actualización de usuarios y vendedores, y sus entidades relacionadas. Para la creación y edición de usuarios, se creo una operación “createOrUpdate”, para la actualización de grupos “updateUserGroups” y para la actualización de roles “updateUserRoles”.
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. |
Ejemplos de requerimientos para cada servicio pueden encontrarse en el apéndice.
5.5.1 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 | Si para nuevo usuario No para usuario existente |
passwordSalt | String (50) | Contraseña de usuario | Si para nuevo usuario No para usuario existente |
codeStore | Integer (20) | Código de identificación de la tienda | No |
String (100) | Dirección email del usuario | No | |
roleGroups | List | Lista de roles para los usuarios | No |
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 | Despues 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 opional. Por defecto el usuario se encuentra desbloqueado. |
lockTime | Date | Fecha a partir de la cual el usuario se bloqueará. | No, es opcional. Por defecto queda null, por lo tanto no tiene fecha específica de bloqueo. |
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) |
5.5.2 Grupos de permisos
La lista roleGroups debe contener entidades “roleGroup”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
group | Integer (4) | Perfil del usuario, existe una lista que se crea con los scripts del setup. En este tag debería venir informado uno de los siguientes valores de perfiles (sólo sobre esta lista): 1 Sistema 2 Administrador 3 Gerente de tienda 4 Finanzas 5 Supervisor 6 Supervisor de caja 7 Cajero 8 Vendedor | Si |
store | varchar (20) | Código de la tienda en la cual es asignado con ese grupo | no, opcional |
Ejemplos de requerimientos para cada servicio pueden encontrarse en el apéndice.
5.5.3 Portavalores
En este servicio se registran los portavalores a listar en la operación de entrega de valores.
Nombre del Servicio:secPersonnel
Propiedad | Tipo de dato | Descripción | Requerido |
secPersonnels | List | Lista de portavalores | Si |
La lista secPersonnels debe contener entidades “secPersonnel”, las cuales poseen la siguiente estructura:
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
secPersonnelCode | String(25) | Número de legajo | Si |
secPersonnelLastName | String(50) | Apellido | Si |
secPersonnelFirstName | String(50) | Nombre | Si |
secPersonnelIdentificationType | Integer | Id del tipo de identificador.Puede ser unos de los siguientes valores:
| No |
secPersonnelIdentification | String(25) | Número de documento | Si |
secPersonnelCategory | String(100) | Categoría | No |
flagDisabled | Boolean | Flag deshabilitado | No (Def=false) |
listVersion | String(25) | Versión de la lista enviada | No |
effectiveDateTime | date | Fecha de generación | No |
expirationDateTime | date | Fecha de vencimiento | Si |
5.6 Servicios de actualización de Clientes
A continuación se describen los servicios que se ofrecen para la actualización de clientes, y sus entidades relacionadas. Cada uno de los servicios permite crear o actualizar las entidades mediante la operación “createOrUpdate” y el servicio customer permite editar los datos impositivos del cliente organización ya creado mediante la operación “update”.
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. |
5.6.1 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.
Opcional es la asociación de cuentas con tarjetas que pudiera tener un cliente.
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:
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
Tipos de documentos: 1 – DNI 2- Pasaporte 3 - CUIT 4 - CUIL | Si |
store | Varchar (10) | Código de identificación de la tienda | No |
birthCountryCode | String | Nacionalidad | No |
highestEducationLevelName | Varchar (100) | Nivel educativo | No |
lifeCycleType | Varchar (50) | Tipo de ciclo de vida del cliente en la tienda | No |
annualIncomeAmount | Decimal | Ingreso anual | No |
maritalStatusCode code | Varchar (50) | Estado civil - Código del Estado civil (tiene que ser un valor existente de la CR_MaritalStatus (campo CODE) <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 “Alícuotas impositivas 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”) | Si |
Varchar (100) | Direccion de email (se utilizará generar el usuario web para Bridge Web) | No | |
|
|
|
|
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 |
customerAffiliation | list | Afiliaciones que tiene el cliente a uno o más grupos/segmentos de clientes | No |
La lista de customerAffiliation debe contener entidades "customerAffiliation"
Propiedad | Tipo de dato | Descripción | Requerido |
<group> <name>Estudiante</name> </group> | Varchar (50) | Nombre del grupo o segmento del cliente (el código debe ser uno de los grupos o segmentos existentes. Tabla PA_GP_CT) NOTA: al recibir este campo en el servicio se debe importar la relación cliente-grupo generando un registro en la tabla CO_CTAF. - ID_CT (con el ID del customer, tabla PA_CT) - ID_GP_ID (con el ID de grupo obtenido de la PA_GP_CT) - FL_IDN_CTAF_VR_RQ en null | Si |
identityVerifyRequired | boolean | Indicador si requiere o no el ingreso de identificación | No |
Ejemplo:
<customerAffiliation>
<customerAffiliation>
<group>
<name>Comercio</name>
</group>
<identityVerifyRequired>true</identityVerifyRequired>
</customerAffiliation>
</customerAffiliation>
5.6.2 Participantes
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 partyData posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | ||||||||||||||||||||||||
disabled | 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)
| 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 (La 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 (La estructura puede verse bajo el título "Impuestos", ver “Impuestos”) Es opcional. | No |
5.6.3 Rol del participante
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:
| 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” | Si | ||||||||||||||||||||||||||||
effectiveDate | Date | Fecha de inicio de vigencia del rol | Si | ||||||||||||||||||||||||||||
expirationDate | Date | Fecha de expiración del rol | Si | ||||||||||||||||||||||||||||
|
|
|
| ||||||||||||||||||||||||||||
contactMethods | List | Lista de métodos de contacto (La estructura puede verse bajo el título "Metodos de contacto" , ver “Metodos de contacto”) | SI (al menos debe tener uno) |
5.6.4 Metodos 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 |
effectiveDate | Date | Fecha de inicio vigencia | Si |
expirationDate | Date | Fecha expiración del contacto | Si |
address | Bean | Domicilio (La estructura puede verse bajo el título "Domicilio", ver “Domicilio”) | No |
emailAddress | Bean | Correo Electronico(La estructura puede verse bajo el título "Correo electrónico", ver “Correo electrónico”) | No |
telephone | Bean | Telefono(La estructura puede verse bajo el título "Telefono" , ver “Telefono”) | No |
5.6.5 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. (La estructura puede verse bajo el título "Ciudad", ver “Ciudad”) | Si |
country | Bean | País. (La estructura puede verse bajo el título "País", ver “País”) | No |
state | Bean | Estado. (La estructura puede verse bajo el título "Estado", ver “Estado”) | No |
firstLine | Varchar (150) | 1ra línea de la dirección | Si |
secondLine | Varchar (100) | 2da línea de la dirección | No |
thirdLine | Varchar (100) | 3ra línea de la dirección | No |
fourthLine | Varchar (100) | 4ta línea de la dirección | No |
postalCode | Varchar (20) | Código postal | No |
postalCodeEx | Varchar (20) | Extensión del código postal | No |
5.6.6 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 |
5.6.7 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 |
5.6.8 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 |
5.6.9 Correo electrónico
La entidad emailAdress posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
name | Varchar (100) | Correo Electronico | Si |
5.6.10 Teléfono
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 |
5.6.11 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:
| 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 |
5.6.12 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 |
5.6.13 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(La 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 |
5.6.14 Certificados
Es una lista opcional. Su fin es informar los certificados de eximición de IIBB con su vigencia y su porcentaje de eximición del cliente. Estos certificados deben estar relacionados con la jurisdicción en la cual el cliente se encuentre registrado.
Si no tiene certificados asociados la lista irá vacía. <certificates type="list"></certificates>
La lista certificates debe contener entidades “certificate”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
sequenceNumber | Integer | Número secuencia para los certificado de exención, ya que podrían recibirse más de un certificado cada uno con vigencia y jurisdicción diferente | Si |
certificateIssueDate | Date | Fecha de validez del certificado de exención (desde) | Si |
certificateExpirationDate | Date | Fecha de vencimiento del certificado de exención (hasta) | Si |
percentage | real | Porcentaje de liberación impositiva | Si |
rateClass | Bean | Código de clase de impuesto La estructura puede verse bajo el título "Clase de impuesto", ver “Clase de impuesto”) | Si |
5.6.15 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 |
5.6.16 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. La estructura puede verse bajo el título "Jurisdicción", ver “Jurisdicción”) | Si |
taxCategory | Bean | Categoría impositiva del cliente. La estructura puede verse bajo el título "Categoría del cliente", ver “Categoría del cliente”) | Si |
type | Bean | Tipo de impuesto. La 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 |
5.6.1 Alícuotas impositivas del cliente
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 |
codigoCliente | String (50) | Código del cliente | Si |
jurisdiccion | String (25) | Código de la jurisdicción (campo CO_JRDT_TX.CO_JRDT) | Si |
Regla categoriaImpositivaCliente | String | Categoria del impuesto del cliente (campo RU_JRDT_TX_TYP_TX_CTGRY.CD_CTGRY) Ej: IBBCM | Si |
alicuota | Decimal | Porcentaje de alícuota que se le aplicará al cliente según padrón | Si |
desde | Date | Fecha inicio de vigencia de la alícuota format="dd/MM/yyyy HH:mm:ss" | Si |
hasta | Date | Fecha fin de vigencia de la alícuota format="dd/MM/yyyy HH:mm:ss" | Si |
Se actualiza la alícuota del cliente para esa jurisdicción/regla, o si no existe se crea. No da de baja.
Si tenía solamente registrado el IVA, crea el registro en la PA_TX_RGST y el registro en RU_TX_RGST_TX_TYP
Si tenia ya el registro de IIBB, solamente crea registro en RU_TX_RGST_TX_TYP apuntando al registro existente de la PA_TX_RGST de IIBB para la jurisdicción.
5.6.2 Cuenta del cliente (no implementado el servicio)
Las cuentas pueden ser del tipo de lealtad o crédito (es una lista adicional que puede tener un cliente asociado, la cual es opcional. Se utiliza para asociar cuentas y sus tarjetas) Si no se enviará esta información se podrá enviar la lista vacía: <accounts type="list"></accounts>
La lista accounts debe contener entidades “account”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String | Código de identificación de la cuenta | Si |
typeCode | String | Tipo de cuenta | No |
name | String | Nombre de cuenta | Si |
customerIdentityRequired | Boolean | Identificacion requerida | No |
loyaltyProgramId | Integer | Identificador del tipo de cuenta Loyalty | No |
loyaltyProgram | String | Programa del tipo de cuenta Loyalty | No |
loyaltyCumulativeNetSalesAmount | Decimal | Valor neto acumulado asociado a una cuenta del tipo Loyalty | No |
cards | List | Lista de Tarjetas (ver estructura en: “Tarjetas asociadas a la cuenta”) | No |
typeCode | String | Tipo de cuenta asociada | Si |
customerIdentityTypeCode | String | Tipo de identificación requerida | No |
frequentShopperPoints | Integer | Punto de compras frecuentes | No |
effectiveDate | Date | Fecha de registro de la cuenta | No |
expirationDate | Date | Fecha de expiración de la cuenta | No |
discountAmount | Decimal | Monto de descuento | No |
discountPercent | Decimal | Porcentaje de descuento | No |
5.6.3 Tarjetas asociadas a la cuenta (no implementado el servicio)
En esta lista se podrán informar aquellas tarjetas que se encuentran asociadas a una determinada cuenta que tenga el cliente. Esta lista viene asociada a una cuenta específica del cliente.
La lista cards debe contener entidades “card”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
number | String | Código de identificación de la cuenta | Si |
expirationDate | Date | Fecha de expiración | Si |
primaryAccountNumber | String | Número de cuenta primario | Si |
issueSequenceNumber | String | Dígitos codificados en el track 2 de la tarjeta | No |
5.7 Servicios de complementos del cliente
5.7.1 Grupo de clientes
Este servicio permitirá informar la lista de grupos o segmentos al que puede pertenecer un cliente. Puede pertenecer a uno o a ninguno.
Nombre del Servicio: customerGroup
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
customerGroups | List | Lista de grupos o segmentos de clientes a crear o actualizar. | Si |
La lista customerGroups debe contener entidades “customerGroup”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
name | varchar (50) | Código del grupo | Si |
description | varchar (100) | descripción del grupo o segmento de clientes | Si |
disabled | Boolean | Deshabilitado | Si |
5.7.2 Ciudades
Este servicio permitirá informar la lista de ciudades. Estas deberán estar asociadas a un estado o provincia.
Nombre del Servicio: city
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
cities | List | Lista de ciudades a crear o actualizar. | Si |
La lista cities debe contener entidades “city”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | varchar (50) | Código de la ciudad | Si |
name | varchar (50) | Descripción de la ciudad | Si |
<state> <code>Codigo</code> </state> | varchar (15) | Código del estado al que pertenece | Si |
5.7.3 Ramo o actividad
Este servicio permitirá informar la lista de actividades del cliente
Nombre del Servicio: partyCrWorkActivity
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
partyCrWorkActivities | List | Lista de ramos a crear o actualizar. | Si |
La lista partyCrWorkActivities debe contener entidades “partyCrWorkActivity”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (4) | Código del ramo o actividad | Si |
catalogID | varchar (25) | Código de catálogo | No |
description | String (50) | Descripción del ramo o actividad | Si |
disabled | Boolean | Deshabilitado | No |
5.7.4 Clase de cliente o segmento
Este servicio permitirá informar la lista de clases de clientes
Nombre del Servicio: partyCrSegment
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
partyCrSegments | List | Lista de clases de clientes a crear o actualizar. | Si |
La lista partyCrSegments debe contener entidades “partyCrSegments”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String (4) | Código de la clase de cliente | Si |
catalogID | varchar (25) | Código de catálogo | No |
description | String (50) | Descripción de la clase de cliente | Si |
disabled | Boolean | Deshabilitado | No |
5.8 Servicios de actualización de Negocio
A continuación se describen los servicios que se ofrecen para la actualización de entidades de negocio. 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. |
5.8.1 Centros emisores
Este servicio permitirá informar la lista de centros emisores
Nombre del Servicio: broadcastCenter
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
broadcastCenters | List | Lista de centros emisores a crear o actualizar. | Si |
La lista broadcastCenters debe contener entidades “broadcastCenter”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | String | Código del centro emisor | Si |
disabled | Boolean | Deshabilitado | No |
store | String | Tienda | Si |
workstation | String | Terminal | No |
storeReceipts | List | Lista de resoluciones fiscales / CAIs asociados al centro emisor | No |
La lista storeReceipts debe contener entidades “storeReceipt”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
invoiceType | String | Código del tipo de comprobante | Si |
fiscalResolution | String | Resolución Fiscal / CAI | Si |
dateFrom | Date | Fecha de inicio | Si |
dateTo | Date | Fecha de fin | Si |
rangeFrom | Integer | Rango desde | No |
rangeTo | Integer | Rango hasta | No |
disabled | Boolean | Deshabilitado | No |
5.9 Servicios de módulo de abastecimiento
Mediante la importación de una interface, se genera un nuevo documento fiscal en la base de datos. No será necesaria la intervención del operador para que el documento fiscal esté disponible en la administración de documentos fiscales. El estado con que se importa el documento es Pendiente Recepción.
Datos de cabecera del documento fiscal importado:
5.9.1 Documento fiscal
Nombre del Servicio: advancedShipmentNotice
Parámetros de entrada:
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 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 |
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 | No |
inventoryControlDocumenSerializedtLineItem | 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 |
5.9.2 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
Nombre del Servicio: purchaseOrderDocument
Parámetros de entrada:
Entidad “purchaseOrderDocument", que posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
destinationRetailStoreID | String (20) | Código de la tienda | Si |
supplier | String (100) | Código del proveedor | Si |
originatorNumber | Integer | Número de la orden de compra externo | No |
createDateTimestamp | date | Fecha de creación | Si |
orderDocumentType | Integer | 1= Normal / 2=Especial | No (Si no se envía se asume 1) |
frequency | Numeric(19,3) | Frecuencia en que se realizan las órdenes de compra para el proveedor. | No |
inventoryControlDocumentLineItems | List | Lista de artículos del pedido | Si |
Ejemplo:
La lista inventoryControlDocumentLineItems debe contener entidades "inventoryControlDocumentLineItem", las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
item | String (25) | Código del artículo. | Si |
unitCount | Numeric(19,3) | Cantidad del artículo | Si |
uomUnits | Numeric(19,3) | Cantidad de unidades de la presentación | No |
InventoryControlDocumentLineItemOrder | Int | Orden de la línea dentro del documento ICD a efectos de ser visualizado | No |
5.9.3 Orden o pedido de transferencia
Mediante la importación de una interface, se genera una nueva orden de transferencia en la base de datos. No será necesaria la intervención del operador para que la orden de transferencia esté disponible en la administración de transferencias.
El estado con que se importa la orden de transferencia cuando no existe es Confirmada.
Para cancelar la orden de transferencia se debe enviar el estado 5
Para despachar la orden de transferencia se debe enviar el servicio “Transferencia por interface” haciendo referencia en el campo ICDReference a la orden de transferencia
Nombre del Servicio: transferOrderDocument
Parámetros de entrada:
Entidad “transferOrderDocument", 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 orden de transferencia externo | No |
createDateTimestamp | date | Fecha de creación | Si |
ExpectedDeliveryDate | date | Fecha esperada de entrega | No |
serialFormID | Integer | Código de la orden de transferencia | No cuando estado 2 Si cuando estado 5 |
inventoryControlDocumentState | Integer | 2 -> Nueva orden de transferencia 5 -> Cancelada | No (si no se envía se asume que es 2) |
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 |
5.9.4 Transferencia
Mediante la importación de una interface, se genera una nueva transferencia en la base de datos. No será necesaria la intervención del operador para que la transferencia esté disponible en la administración de transferencias. El estado con que se importa la transferencia cuando no existe es 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 (Nota: informar el nro de documento generado por el ERP o sistema externo que genera la transferencia) | No |
createDateTimestamp | date | Fecha de creación | Si |
ExpectedDeliveryDate | date | Fecha esperada de entrega | No |
serialFormID | Integer | Código de la transferencia | No cuando estado 2 Si cuando estado 4 o 5 |
inventoryControlDocumentState | Integer | 2 -> Nueva transferencia 4 -> Recepción 5 -> Recepción Cancelada | No (si no se envía se asume que es 2) |
ICDReference | Integer | Número de la orden de transferencia (Nro de documento generado por Bridge campo DO_ICD.ID_SRZ_FRM) | No |
inventoryControlDocumentLineItems | List | Lista de artículos de la transferencia | No cuando el serialFormID informado Si cuando serialFormID no 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 |
inventoryControlDocumenSerializedtLineItems | List | Datos del ítem serializable | No |
La lista inventoryControlDocumenSerializedtLineItems debe contener entidades "inventoryControlDocumenSerializedtLineItem", 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 |
5.10 Servicios de motivos
Se listan los diferentes servicios que permiten recibir las listas de códigos de motivos de devolución o cancelación que aplican dentro de una operación de venta/devolución/presupuesto.
5.10.1 Motivos de devolución
Este servicio permitirá informar la lista de motivos de devolución de productos.
Nombre del Servicio: saleReturnReason
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
saleReturnReasons | List | Lista de motivos de devolución de items, a crear o actualizar. | Si |
La lista saleReturnReasons debe contener entidades “saleReturnReason”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | varchar (25) | Código del motivo de devolución | Si |
name | varchar (50) | Nombre del motivo | Si |
disabled | Boolean | Deshabilitado | No |
additionalNotesRequired | Boolean | Indicador de que se requiere el ingreso de un texto libre en la devolución. Si es true se valida que haya sido ingresado | No |
5.10.2 Motivos de cancelación
Este servicio permitirá informar la lista de motivos de cancelación de una transacción de venta/devolución
Nombre del Servicio: saleCancelReason
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
saleCancelReasons | List | Lista de grupos o segmentos de clientes a crear o actualizar. | Si |
La lista saleCancelReasons debe contener entidades “saleCancelReason”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | varchar (25) | Código del motivo de devolución | Si |
name | varchar (50) | Nombre del motivo | Si |
disabled | Boolean | Deshabilitado | No |
additionalNotesRequired | Boolean | Indicador de que se requiere el ingreso de un texto libre en la cancelación. Si es true se valida que haya sido ingresado | No |
5.10.1 Motivo de descuento a nivel item
Este servicio permitirá informar la lista de motivos de descuentos aplicados a nivel item
Nombre del Servicio: reasonSaleItemDiscount
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
reasonSaleItemDiscounts | list | Lista de motivos de descuento a nivel item a crear o actualizar | si |
La lista reasonSaleItemDiscounts debe contener entidades “reasonSaleItemDiscount”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido | Observaciones |
code | varchar (25) | Código del motivo de descuento a nivel item | si | |
description | varchar (50) | Nombre del motivo de descuento | si | |
disabled | boolean | Deshabilitado | no | default: false |
validateReasonTextFlag | boolean | Indicador de que se requiere el ingreso de un texto libre para el descuento seleccionado. Si es true se valida que haya sido ingresado | no | default: false |
5.10.2 Motivo de descuento a nivel transacción
Este servicio permitirá informar la lista de motivos de descuentos aplicados a nivel transacción
Nombre del Servicio: reasonSaleTransactionDiscount
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
reasonSaleTransactionDiscounts | list | Lista de motivos de descuento a nivel transacción a crear o actualizar | si |
La lista reasonSaleTransactionDiscounts debe contener entidades “reasonSaleTransactionDiscount”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
code | varchar (25) | Código del motivo de descuento a nivel transacción | si |
description | varchar (50) | Nombre del motivo de descuento | si |
disabled | boolean | Deshabilitado | No default: false |
validateReasonTextFlag | boolean | Indicador de que se requiere el ingreso de un texto libre para el descuento seleccionado. Si es true se valida que haya sido ingresado | No default: false |
5.11 Servicio de cobranzas
Nombre del Servicio: tenderDebtDetail
Parámetros de entrada:
Entidad “tenderDebtDetail ", que posee la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
partyIdentification | VARCHAR(20) | Identificación del cliente (Cedula / RUC) | Si |
accountNumber | VARCHAR(45) | Número de factura | Si |
installment | VARCHAR(10) | Cuota (Formato: 1/12 – 2/12 ..) | Si |
expirationDate | DATETIME | Fecha de vencimiento | Si |
originalTotalAmount | DECIMAL(16,4) | Monto original de la cuota | Si |
currency | VARCHAR(5) | Moneda (debe existir en la base de datos en el campo AS_TND.TY_TND) | Si |
paidTotalAmount | DECIMAL(16,4) | Monto pagado de la cuota | Si |
pendingTotalAmount | DECIMAL(16,4) | Saldo pendiente de pagar de la cuota | Si |
accountDate | DATETIME | Fecha de la factura | Si |
lastUpdateDate | DATETIME | Fecha de última actualización | Si |
Proceso de Importación:
Actualizar el campo FL_PAID de todos los registros existentes en la tabla DO_TND_DEBT_DETAIL a true (se asume que si alguna cuota no se envía por el ERP es porque está saldada)
Procesar cada uno de los registros del servicio realizando las siguientes actualizaciones:
Si ya existe un registro con mismo accountNumber e installment:
Llevar el campo FL_PAID a true.
Validar si la fecha enviada en el campo lastUpdateDate por el servicio es mayor a la fecha del registro LAST_UPDATE_DATE:
Si lo es, actualizar todos los campos del registro en base a la información enviada por el servicio
Si no lo es, no actualizar. Mantener el registro tal cual está ya que la última actualización fue hecho por Bridge
Si no existe un registro con mismo accountNumber e installment:
Crear el registro
5.12 Servicio de plantillas de venta – view templates
Este servicio permitirá informar la lista de view templates con sus categorías y artículos para que pueda ser utilizado por los POS en su vista de venta departamental o por catálogo y agilice su creación e importación.
Los artículos enviados deben existir para la tienda informada, caso contrario no se importarán.
Nombre del Servicio: template
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
templates | List | Lista de templates a definir en tienda | Si |
La lista templates debe contener entidades “template”, las cuales poseen la siguiente estructura:
Propiedad del WS | Campo de la tabla | Tipo de dato | Descripción | Requerido en modelo de datos | Observaciones Importación (Bridge) |
Code | View_template.code | Varchar (255) | Código del template | Si | Verificar si existe (se actualiza el registro ya existente del view_template) o es nuevo (se inserta nueva registro) |
Name | Varchar (255) | Nombre del template | Si | Validar que no supere la longitud del campo (255) | |
Description | View_template.description | Varchar (255) | Descripción del template | Si | Validar que no supere la longitud del campo (255) |
Descriptor1 | View_template. Descriptor1 | Varchar (255) | Variables grales del template para los botones | No | Si no viene informado, importar el string “${name}” |
Descriptor2 | View_template. Descriptor2 | Varchar (255) | Variables grales del template para los botones | No | Si no viene informado, importar el string “${regularprice}” |
Image_visible | View_template.Image_visible | Bit | No | Si no viene informado, importar “false” | |
Is_active | View_template.Is_active | Bit | Si | True o false (en la pantalla de BM el campo es ¿Se muestra en POS? *) | |
categories | Lista de categorías del template | Bean | Entidad que representa a las categorías asociadas (la estructura puede verse bajo el título “Categorías”) | Si | |
categoryChilds | Lista de categorías hijos | Bean | Entidad que representa a las categorías hijas dentro del template (la estructura puede verse bajo el título “Categorías hijos”) | No | |
Stores | Entidad que representa la relación template con tiendas/terminal (la estructura puede verse bajo el título “Tiendas”) | No |
5.12.1 Categorías
Propiedad del WS | Campo de la tabla | Tipo de dato | Descripción | Requerido | Observaciones Importación (Bridge) |
Code | View_category.code | Varchar (255) | Código de la categoría del template | Si | Verificar si existe el name de la categoría (se actualiza el registro ya existente del view_category) si es nuevo (se inserta nuevo registro) Se concatena el campo Code del template con el campo name de view_category (ej.: 1_alfajores, 1_gaseosas) |
Name | Varchar (255) | Nombre de la categoría dentro del template | Si | Validar que no supere la longitud del campo (255) | |
category_picture_id | View_category.view_category_picture_id | Int | No | Si no viene informado, importar en null. Este id hace referencia al nombre del archivo que corresponderá a la categoría. El directorio es el que indica el parámetro: Configuración de tienda/artículos/ Directorio de Imágenes/ Ejemplo: C:\synthesis\bridge\images\viewCategory | |
buttons | Lista de botones de la categoría | Bean | Entidad que representa a los botones asociados a las categorías (la estructura puede verse bajo el título “Botones”) | Si |
5.12.2 Botones
Propiedad del WS | Campo de la tabla | Tipo de dato | Descripción | Requerido | Observaciones Importación (Bridge) |
Descriptor1 | View_ item_button. Descriptor1 | Varchar (255) | No | Si no viene informado, importar el string “${name}” | |
Descriptor2 | View_ item_button. Descriptor2 | Varchar (255) | No | Si no viene informado, importar el string “${regularprice}” | |
Image_path | View_ item_button.image_path | Varchar (255) | Si | Configurar con el directorio de las imágenes de Bridge | |
ItemCode | View_ item_button.item_id | Int | Si | Se debe buscar el código de articulo recibido en AS_ITM e importar el campo ID de AS_ITM | |
item_picture_id | View_ item_button.item_picture_id | int | No | ||
Priority | View_ item_button.priority | int | Prioridad (sin uso) | Si | Importar con 1 |
5.12.3 Categorías hijos
Propiedad del WS | Campo de la tabla | Tipo de dato | Descripción | Requerido | Observaciones Importación (Bridge) |
ParentCategoryCode | view_category_parent. parent_id | int | Código de la categoría del template | Si | Verificar si existe la categoría para el template en el cual viene informado. Importar el ID del campo view_category.ID |
ChildCategoryCode | view_category_parent.view_category_id | int | Código de la categoría del template | Si | Verificar si existe la categoría para el template en el cual viene informado y no es la misma que la categoría indicada como padre Importar el ID del campo view_category.ID |
5.12.40 Stores
Propiedad del WS | Campo de la tabla | Tipo de dato | Descripción | Requerido | Observaciones Importación (Bridge) |
StoreCode | view_stores.store_id | int | Código de la tienda | Si | Verificar si existe el código (campo CD_STR_RT de PA_STR_RTL) e importar ID de la tienda (campo ID_STR_RT de Store, PA_STR_RTL) |
WorkStation | view_stores.work_station_id | int | Código de la terminal de la tienda | Si | Verificar si existe el código (campo CD_WS de AS_WS) e importar ID de la terminal (campo ID_WS de Workstation AS_WS) |
6. Errores
Al producirse alguna falla durante la ejecución de Bridge Core Client o al informarse algún error por parte del Servidor de Reglas, se lanza una excepción. Esta tiene encapsulada el código de error y la descripción que identifican unívocamente el tipo de error producido.
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>
6.1 Monitoreo de los registros recibidos a través de servicios
Para poder verificar el estado de los registros que fueron enviados desde el ERP a través de los servicios de Bridge, se podrá visualizar dentro de los monitores de Bridge Manager Central por entidad.
Para obtener mayor detalle de la funcionalidad de monitoreo, referenciar el documento Manual de Usuario - Bridge Manager (punto 3.8.5 Monitor de Importación)
A continuación se resume esta operatoria:
Desde el monitor de importación se podrán ver los registros recibidos según la entidad (y por estado). Una vez obtenido del listado de registros, se podrá chequear el contenido y detalle de cualquiera de los registros en particular.
Desde el monitor de importación se pueden ver los registros recibidos según la entidad (y por estado). Luego se puede visualizar tanto el detalle como el mensaje recibido (mediante el uso de las Acciones)
Acción/contenido
Se podrá visualizar el contenido del envío realizado para esa entidad.
Acción/detalle (detalle de la importación)
Con resultado (procesado/error). En caso de error se detalla porque motivo.
En un escenario donde se envía un lote con varios artículos, si alguno de los artículos tiene un error en su proceso de importación, se reportará con error y el resto se procesaran quedando registrados en la base de datos de Bridge.
Siempre que se puede procesar el registro recibido del ERP, se importa en Bridge Manager y luego se replica a tiendas. En caso de error se mostrará en el listado con el estado error notificando el motivo.
Reproceso
Si se envía un lote de 10 artículos y entre ellos hay erróneos, estos se registran con el resultado de la importación como “Error”; los que están correctos se procesan (los registros correspondientes se importan y se replican). En este caso, el monitor de importación informará al registro con el estado “Parcial” del lote de ítems que enviado, si se selecciona la opción “Detalle”, dentro del menú “Acciones”, en dicho registro, se informarán los items que fueron procesados y los que tuvieron error, pero no se podrán reprocesar nuevamente (cada ítem, de manera individual).
En caso enviar un sólo ítem, y éste se procesa con estado “Error”, se podrá seleccionar la opción “Reprocesar”, en el menú “Acciones”, para volver a reprocesarlo.
7. Servicios de exportación
A continuación se detallan los servicios correspondientes a las interfaces de salida
7.1 Exportación de PosLog
7.1.1 Introducción
En este apartado se describirá como se lleva a cabo la exportación de PosLog, los cuales pueden corresponder a operaciones de venta, contable, de control, etc.
7.1.2 Definición general
El proceso de exportación de una transacción se realiza en el BM central, luego de que se haya distribuido. Para ello, toma la transacción si cumple con las características correspondientes y la persiste en una intermedia en conjunto con los datos que identifican la transacción.
- Proceso de importación de TLOGs
Cada TLOG al ser recibido es guardado en un registro de la tabla impor_receipt de tipo “T2ATransaction” con el contenido comprimido. Un proceso programado toma este registro, distribuye la transacción y registra como SUCCESS el registro de la tabla import_receipt.
- Proceso de exportación de TLOGs
Una vez importado el TLOG, un proceso programado (puede ser el mismo de importación) toma los registros de tipo “T2ATransaction” de la tabla import_receipt no exportadas previamente, descomprime el contendido (PosLog) y procede a extraer algunos datos de la transacción. Luego, guarda en una tabla estos datos junto con el xml completo.
7.1.3 Modelo de datos
- Exp_poslog
Campo | Tipo | Descripción |
Id | Int (auto-incremental) | Numérico generado automáticamente |
Trx_rs | Varchar | Código de la tienda que generó la transacción |
Trx_ws | Varchar | Código de la terminal que generó la transacción |
Trx_seq_nbr | Varchar | Número de secuencia de la transacción |
Trx_typ | Varchar | Tipo de transacción |
Trx_ts | DateTime | Fecha y hora de finalización de la transacción |
Exp_ts | DateTime | Fecha y hora de la exportación |
Cld_prd | Int | Código de periodo al que corresponde la transacción |
Cld_sub_prd | Int | Código de subperiodo al que corresponde la transacción |
Fl_prcssd | Bit | Flag que indica que la transacción fue procesada y que puede ser depurada. Por defecto false. Lo actualiza el sistema externo que realiza la exportación |
Poslog | Varchar (max) | Xml de la trasacción (*) |
FL_CNCL | Bit | Flag que indica si la transacción fue cancelada |
FL_SPN | Bit | Flag que indica si la transacción fue suspendida |
FL_TRNG_MODE | Bit | Flag que indica si la transacción fue realizada en modo entrenamiento |
FL_CNTGY | Bit | Flag que indica si la transacción fue realizada en contingencia |
FL_SENT | Bit | De uso externo. Por defecto false. Lo actualiza el sistema externo que realiza la exportación |
CLD_PRD_PRCD | Int | Código de periodo en que se procesó la transacción en el BM. Será distinto que el CLD_PRD sólo cuando la transacción sea desfasada |
CLD_SUB_PRD_PRCD | Int | Código de subperiodo en que se procesó la transacción en el BM. Será distinto que el CLD_SUB_PRD sólo cuando la transacción sea desfasada |
(*) Cuando el CLD_PRD_PRCD <> CLD_PRD y/o CLD_SUB_PRD_PRCD <> CLD_SUB_PRD, entonces se agrega al XML un tag adicional dentro de PosLog con los datos del periodo / subperiodo en que se procesó la transacción. Es decir, el tag existirá sólo cuando se trate de una transacción desfasada
<PosLog>
<Transaction>
<RetailStoreID>03105</RetailStoreID>
<WorkstationID>01</WorkstationID>
<WorkstationCategoryID>TIE</WorkstationCategoryID>
<TillID>03105TIE9535</TillID>
<TillType>WorkstationCategory</TillType>
<SecondaryTillID>03105Prueba2931</SecondaryTillID>
<SecondaryTillType>Operator</SecondaryTillType>
<SequenceNumber>11</SequenceNumber>
<BusinessDayDate>2019-02-26</BusinessDayDate>
<Period>1</Period>
<Subperiod>2</Subperiod>
<PeriodCode>1</PeriodCode>
<SubPeriodCode>1</SubPeriodCode>
…
</Transaction>
<EJ/>
<Audit/>
<ProcessedDate>
<PrcdBusinessDayDate>2019-02-26</PrcdBusinessDayDate>
<PrcdPeriod>1</PrcdPeriod>
<PrcdSubperiod>2</PrcdSubperiod>
<PrcdPeriodCode>1</PrcdPeriodCode>
<PrcdSubPeriodCode>1</PrcdSubPeriodCode>
</ProcessedDate>
</PosLog>
7.1.4 Configuración
- Exportación
Para que esté habilitada la exportación de TLOGs, se debe contar con un registro en la tabla export_inbox. Este registro debe contener al menos estos datos:
ID | Export_Entity | Export_Job |
(auto-numérico) | PosLog | Una de estas opciones:
|
- Parámetros
Los parámetros pueden ser editados ingresando en Configuración -> Exportación. Los parámetros disponibles para este servicio son los siguientes:
Parámetro | Tipo | Valor por default | Descripción (name) | Observaciones |
poslog.export.active | Boolean | false | Indica si la exportación se encuentra activa. El valor por defecto es false | Indica si la exportación se encuentra activa. El valor por defecto es false |
poslog.export.maxRecords | Int | 100 | Cantidad de registros a leer como máximo en cada ejecución del proceso. El valor por defecto es 100 | Indica cuantos registros se leerán como máximo en cada ejecución del proceso de exportación. El valor por defecto es 100 |
poslog.export.format | String | text | Formato de guardado de TLOG | Formato en el que se guardará el TLOG. Los posibles valores son:
El valor por defecto es text |
poslog.export.duplicated.allowed | Boolean | false | Admiten registros con la clave duplicada | Indica si se admiten registros con la clave duplicada tienda/terminal/nro |
poslog.depuration.days | Int | 10 | Días a mantener las transacciones en la tabla intermedia. El valor por defecto es 10 | Días a mantener las transacciones en la tabla intermedia. El valor por defecto es 10 |
poslog.depuration.ignoreProcessedFlag | Boolean | false | Indica si debe ignorar el campo fl_prcssd durante la depuración. El valor por defecto es false | Indica si debe ignorar el campo fl_prcssd durante la depuración. El valor por defecto es false. |
poslog.export.exclude.cancel | Boolean | false | Marcar transacciones canceladas como procesadas | |
poslog.export.exclude.suspended | Boolean | false | Marcar transacciones suspendidas como procesadas | |
poslog.export.exclude.trainingmode | Boolean | false | Marcar transacciones en modo entrenamiento como procesadas | |
poslog.export.exclude.contingency | Boolean | false | Marcar transacciones de contingencia como procesadas |
7.2 Exportación a Teamplace
Para la exportación de ventas y clientes hacia Teamplace, se dispone de una lista de parámetros. Los misms se podrán actualizar desde el ERP por medio de este servicio.
7.2.1 Parámetros de exportación de los servicios
Nombre del Servicio: exportConfigurations
Parámetros de entrada:
Propiedad | Tipo de dato | Descripción | Requerido |
exportConfigurations | List | Lista de parámetros a crear o actualizar. | Si |
La lista exportConfigurations debe contener entidades “exportConfiguration”, las cuales poseen la siguiente estructura:
Propiedad | Tipo de dato | Descripción | Requerido |
exportEntity | Varchar (255) | Nombre del servicio al que pertenece el parámetro. Valores posibles
| Si |
propertyKey | Varchar (255) | Nombre del parámetro. Este parámetro está relacionado al servicio. Ver Lista de parámetros por servicio | Si |
propertyValue | Varchar (255) | Valor asignado al parámetro | Si |
7.2.2 Lista de parámetros por servicio
Lista de parámetros para el servicio NewCustomer
<exportConfiguration type="bean">
<exportEntity>NewCustomer</exportEntity>
<propertyKey>ClientesWS.URL</propertyKey>
<propertyValue>https://8.teamplace.finneg.com/BSA/ClientesWS</propertyValue>
</exportConfiguration>
Nombre del parámetro propertyKey | Descripción | Valor por defecto propertyValue |
ClientesWS.URL | URL del servicio de clientes | |
ClientesWS.USERNAME | Usuario del servicio | user |
ClientesWS.PASSWORD | Clave del servicio | pwd |
ClientesWS.NOMBREAPP | Nombre de app | BSA |
ClientesWS.NOMBREEMPRESA | Nombre de empresa | NOMBREEMPRESA |
ClientesWS.CODIGOEMPRESA | Código de empresa | CODIGOEMPRESA |
ClientesWS.ACTIVO | Si el cliente es activo. | 1 |
ClientesWS.CUENTACODIGO | Concepto código. | CLI |
ClientesWS.ESCLIENTE | Si es cliente. | 1 |
ClientesWS.TIPODOMICILIO | Tipo de domicilio. | 1 |
ClientesWS.RETENCIONCODIGO | Código de retención. | PIBBSAS |
ClientesWS.CONDICIONPAGOCODIGO | Código de condición pago. | CE |
ClientesWS.ESDEFAULT | Si es default. | 1 |
ClientesWS.identificationType.1 | Tipo de identificación del cliente | DNI |
ClientesWS.identificationType.2 | Tipo de identificación del cliente | PAS |
ClientesWS.identificationType.3 | Tipo de identificación del cliente | C.U.I.T. |
newCustomer.export.active | Esta activa la exportación de clientes SI/NO | true |
Lista de parámetros para el servicio Sale
<exportConfiguration type="bean">
<exportEntity>Sale</exportEntity>
<propertyKey>PuntoVentaWS.URL</propertyKey>
<propertyValue>https://8.teamplace.finneg.com/BSA/PuntoVentaWS</propertyValue>
</exportConfiguration>
Nombre del parámetro | Descripción | Valor por defecto |
PuntoVentaWS.URL | URL del servicio de ventas | |
PuntoVentaWS.PASSWORD | Clave del servicio | bridge |
PuntoVentaWS.USERNAME | Usuario del servicio | Administrador |
PuntoVentaWS.NOMBREAPP | Nombre de app | BSA |
PuntoVentaWS.NOMBREEMPRESA | Nombre de empresa | NOMBREEMPRESA |
PuntoVentaWS.CONDICIONPAGO | Condición de pago | CE |
PuntoVentaWS.IMPORTEEXENTO | Importe exento. | 0.0000 |
PuntoVentaWS.DIMENSION | Dimensión de centro de costo. | DIMCTC |
PuntoVentaWS.CANTIDAD | Cantidad en itemProducto cuando es descuento. | -1 |
PuntoVentaWS.PRODUCTO | Descripción del producto cuando es descuento. | ITEM_DESCUENTO |
PuntoVentaWS.CUENTA | Tipo de cuenta en itemEfectivo. | EFVOPESOS |
PuntoVentaWS.NOTDELIVERED | Tipo de documento para venta no anticipada. | FCREMVTAMIN |
PuntoVentaWS.DELIVERED | Tipo de documento para venta anticipada. | FCVTAMINSYN |
PuntoVentaWS.CUSTOMERCODE | Tipo de cliente. | CFINAL |
PuntoVentaWS.NC | Nota de crédito. | NCREMPTOVTA |
PuntoVentaWS.CONCEPTO | Concepto Venta IVA. | VENTA_IVA |
PuntoVentaWS.WORKFLOW | Workflow. | VTASYNTH |
PuntoVentaWS.DISC.ITEM | Artículo por descuento. | DESC |
PuntoVentaWS.REGLA | Regla promociones. | REGLA_PROMOCIONES |
PuntoVentaWS.MONEDA.1 | ||
PuntoVentaWS.MONEDA.2 | ||
PuntoVentaWS.MONEDA.3 | ||
sale.export.active | Esta activa la exportación de ventas SI/NO | true |
Una vez instalada la tienda, se le agrega al parámetro el código de la tienda de Bridge.
<exportConfiguration type="bean">
<exportEntity>Sale</exportEntity>
<propertyKey>PuntoVentaWS.CODIGOEMPRESA.1</propertyKey>
<propertyValue>Prueba32</propertyValue>
</exportConfiguration>
Nombre del parámetro | Descripción | Valor por defecto |
PuntoVentaWS.CODIGOEMPRESA.Tienda 1 | Código de la empresa (con código de tienda Bridge 1) | |
PuntoVentaWS.DISTRIBUCION.Tienda 1 | Código de distribución (con código de tienda Bridge 1) | |
PuntoVentaWS.LOCATION.Tienda 1 | Código de depósito (con código de tienda Bridge 1) |
8. Apéndice
Se detallan ejemplos de los request para la actualización de los catálogos mencionados en el presente documento.
NOTA: para los campos monetarios, se debe enviar el punto decimal (no coma)
8.1 Servicio de Usuarios
8.1.1 Actualizacion de usuario
Request:
<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>
<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>
<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>
8.2 Servicios de actualización de maestros de artículos
El formato general de la Response será genérico, y tendrá dos formatos posibles, dependiendo si la misma se ejecutó correctamente o no.
Informações | ||
---|---|---|
| ||
En caso de que la ejecución del servicio sea correcta, esto no implica que todas las entidades informadas hayan sido procesadas exitosamente. Es responsabilidad del sistema que invoca al servicio, proveer un servicio al cual se le informarán los errores propios del procesamiento de la cada una de las entidades. |
Response de ejecución correcta:
<bridgeCoreResponse>
<ack>0</ack>
<message></message>
</bridgeCoreResponse>
Response de ejecución con error:
<bridgeCoreResponse>
<ack>-1</ack>
<message>Excepción no definida.</message>
</bridgeCoreResponse>
8.2.1 Marca del Artículo
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<brands type="list">
<brand type="bean">
<name>BR1</name>
<description>Marca BR1</description>
<disabled>false</disabled>
</brand>
<brand type="bean">
<name>BR2</name>
<description>Marca BR2</description>
<disabled>true</disabled>
</brand>
</brands>
</params>
</bridgeCoreRequest>
8.2.2 Proveedores
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<suppliers type="list">
<supplier type="bean">
<code>PR1</code>
<name>Proveedor1</name>
<fantasyName>Proveedor de Fantasía</fantasyName>
<address>Avda. Santa Fe 1234</address>
<phone></phone>
<email>email@hotmail.com</email>
<fiscalId></fiscalId>
<activeFlag>false</activeFlag>
<caiRequired>true</caiRequired>
<asn>true</asn>
<frequency>true</frequency>
</supplier>
<supplier type="bean">
<code>PR4</code>
<name>Proveedor Nuevo</name>
<fantasyName></fantasyName>
<address></address>
<phone>0341 15555555</phone>
<email>ninguno@hotmail.com</email>
<fiscalId>20-21948886-7</fiscalId>
<activeFlag>true</activeFlag>
<caiRequired>true</caiRequired>
<asn>true</asn>
<frequency>true</frequency>
</supplier>
</suppliers>
</params>
</bridgeCoreRequest>
8.2.3 Niveles de jerarquía de los Artículos
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<merchHierarchyLevels type="list">
<hierarchyLevel type="bean">
<code>DPT1</code>
<description>Nivel 1 </description>
<level>1</level>
<active>true</active>
</hierarchyLevel>
<hierarchyLevel type="bean">
<code>FLY</code>
<description>Nivel 2</description>
<level>2</level>
<active>true</active>
</hierarchyLevel>
</merchHierarchyLevels>
<merchHierarchyGroups type="list">
<hierarchyGroup type="bean">
<code>GRP1</code>
<description>Grupo 1</description>
<level>DPT1</level>
<parentGroup></parentGroup>
<departamentalItemCode>MHG1</departamentalItemCode>
<disabled>true</disabled>
<isWeb>true</isWeb>
</hierarchyGroup>
<hierarchyGroup type="bean">
<code>GRP2</code>
<description>Grupo 2</description>
<level>FLY</level>
<parentGroup>GRP1</parentGroup>
<departamentalItemCode>MHG1</departamentalItemCode>
<disabled>true</disabled>
<isWeb>true</isWeb>
</hierarchyGroup>
</merchHierarchyGroups>
</params>
</bridgeCoreRequest>
8.2.4 Unidades de Medida
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<uoms type="list">
<uom type="bean">
<code>UOM1</code>
<name>Metro</name>
<decQty>1</decQty>
<disabled>false</disabled>
</uom>
<uom type="bean">
<name>UOM2</name>
<name>Centimetro</name>
<decQty>2</decQty>
<disabled>true</disabled>
</uom>
</uoms>
</params>
</bridgeCoreRequest>
8.2.5 Impuesto IVA de los artículos
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<vatTypes type="list">
<vatType type="bean">
<code>2</code>
<name>IVA 21%</name>
<percentage>21</percentage>
<disabled>false</disabled>
</vatType>
<vatType type="bean">
<code>5</code>
<name>IVA 10,5%</name>
<percentage>10.5</percentage>
<disabled>true</disabled>
</vatType>
</vatTypes>
</params>
</bridgeCoreRequest>
8.2.6 Impuestos internos de los artículos
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<internalTaxes type="list">
<internalTax type="bean">
<code>2</code>
<name>Imp. Int. Ley 111</name>
<flagOverValue>true</flagOverValue>
<disabled>false</disabled>
<amountOverPercentage>0.25</amountOverPercentage>
</internalTax>
<internalTax type="bean">
<code>5</code>
<name>Imp. Int. Gaseosas</name>
<flagPercentageOverNetValue>true</flagPercentageOverNetValue>
<disabled>false</disabled>
<amountOverPercentage>2</amountOverPercentage>
</internalTax>
</internalTaxes>
</params>
</bridgeCoreRequest>
8.2.7 Depósitos
Request:
<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>OnLayaway</itemInventoryState>
</location>
</locations>
</params>
</bridgeCoreRequest>
8.2.8 Maestro de Artículos
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<items type="list">
<item type="bean">
<itemCode>3255</itemCode>
<description>Caramelos SUGUS x kg</description>
<hierarchyGroupCode>ALMA</hierarchyGroupCode>
<price>45</price>
<unitCostPrice>40</unitCostPrice>
<vatCode>2</vatCode>
<notForSaleFlag>false</notForSaleFlag>
<notForDiscountsFlag>false</notForDiscountsFlag>
<priceRequiredFlag>false</priceRequiredFlag>
<weightRequiredFlag>true</weightRequiredFlag>
<quantityRequiredFlag>false</quantityRequiredFlag>
<quantityAllowedFlag>false</quantityAllowedFlag>
<restrictedSaleFlag>false</restrictedSaleFlag>
<logExceptionFlag>false</logExceptionFlag>
<authorizationRequiredFlag>false</authorizationRequiredFlag>
<serialNumberRequiredFlag>false</serialNumberRequiredFlag>
<returnNotAllowedFlag>false</returnNotAllowedFlag>
<supplierCode></supplierCode>
<brandCode>Sugus</brandCode>
<itemType>NORM</itemType>
<promotionalPrice></promotionalPrice>
<promotionalPriceDateFrom format="dd-MM-yyyy hh:mm:ss"></promotionalPriceDateFrom>
<promotionalPriceDateTo format="dd-MM-yyyy hh:mm:ss"></promotionalPriceDateTo>
<uomCode>u</uomCode>
<imageCode></imageCode>
<lastUpdateSaleUnitPrice format="dd-MM-yyyy hh:mm:ss"></lastUpdateSaleUnitPrice>
<genericItemFlag>false</genericItemFlag>
<kitComponentFlag>false</kitComponentFlag>
<inventoryLocationCode>DEP1</inventoryLocationCode>
<commissionPercent></commissionPercent>
<disabled>false</disabled>
<itemVATCategory>G</itemVATCategory>
<uom2Code>B2KG</uom2Code>
<uom2Units>2</uom2Units>
<uom2Operation>D</uom2Operation>
<stockReservationRequired>true</stockReservationRequired>
<importDocReq>false</importDocReq>
<sellerRequired>false</sellerRequired>
<amountRequiredFlag>false</amountRequiredFlag>
<genericFieldBoolean1>false</genericFieldBoolean1>
<genericFieldString1>Etiqueta</genericFieldString1>
<genericFieldDecimal1>123</genericFieldDecimal1>
<internalTaxes>
<internalTax>
<internalTaxCode>1</internalTaxCode>
<internalTaxAmount>1.58</internalTaxAmount>
</internalTax>
<internalTax>
<internalTaxCode>2</internalTaxCode>
<internalTaxAmount>2.00</internalTaxAmount>
</internalTax>
</internalTaxes>
<webDescription> Caramelos SUGUS x kg surtido de sabores </webDescription>
<extendedWebDescription> Caramelos SUGUS x kg, surtido de sabores, con gusto anana, menta, frutilla, manzana, naranja. En bolsas de nylon con logo de la marca</<extendedWebDescription>
<itemPictures>
<itemPicture>
<extension>jpg</extension>
<content>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PQxoR4XlFuKMRbvLhib6APtEZvlW4IjA53Nfep2W6cy1v/TEF2IsC50nmmW5BhEgaZ0ETz4lkU1WYqbCdTv7JeIQ7LdeBiCGwHym6NM8dzz5zkitx6krZDENlhFc7eJZKlCLs3+0caHZboy8RWQsF2b+8able0bOGV6RIipsq4LxoNJOTRPPcE2WgRk6TacS8yre76jodlum8r4yoFq+bgqO8rSVwibjNy3iW7VK8hPAgOIJINzCOUVMskM1ltuLX51Oy3UVdnIVizgx2Ymg5ZXXaXq3tHXiUjcIesDMyzAdILmMWiVSe2p2W6cxJiqn+yYxdLhK5imbXFKJqOYEdAYNkPPM32A4tNBLu2d+8NDst050tQb4/E55jDgS6GHDTMdzO0DKLjYi8TomxvpR7y8ekM2AN5zEg/poaHZb6MjWAy/JHEbHRllxYl0kFu3WD3vDb/hC34tfs95Yxag5uYmyNyZgRwCucEusuEhBgIKW2eRdZ8anZb6HaNHvguBpvwL7wpoeNz8wIJdwp+IkdED8IQKNpcqBDFNhfDC1lZGitL8HWJjkw89b5mTT9yBcfxhtAOg9J2W/wc6DcbuLB3A2luCeT+0VeGX6GyGkBmx+EqyVmV6jst/hqUmUypWtMrEr1n/By//aAAwDAQACAAMAAAAQ88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888www49855wwww88888888888888888888888888888888888888AAAuaUuA+AAA88888888888888888888888888888888888888AAATtoUh7AAA88888888888888888888888888888888888888AAAr8BmFyAAA88888888888888888888888888888888888888AAAoEr5YDAAA88888888888888888888888888888888888888AAARob8TNAAA88888888888888888888888888888888888888AAAH/TrNkAAA88888888888888888888888888888888888888AAAepdg71BAA88888888888888888888888888888888888888AANMEm2+2OIA88888888888888888888888888888888888888AEJvZR7IwbgA88888888888888888888888888888888888888AE1Ap3HD2foA88888888888888888888888888888888888888ACpkIESG2ODA88888888888888888888888888888888888888AEdzD4zTqzAI88888888888888888888888888888888888888VtH07sz8V4jz88888888888888888888888888888888888888W8S3DYpIijJc88888888888888888888888888888888888888RwCxUrytQrWN88888888888888888888888888888888888888UFAjGUfg86RV88888888888888888888888888888888888888SgGQDkDwXh1688888888888888888888888888888888888888Sg6j4wZDxHMJ88888888888888888888888888888888888888AHltN/oVm7eg88888888888888888888888888888888888888ArvBfvOJHqwB88888888888888888888888888888888888888Qeb4GQGCoU+t88888888888888888888888888888888888888FXI7XP9DdAdd88888888888888888888888888888888888888VNE4YOJh0LTO88888888888888888888888888888888888888Bzgue+LvpEuz88888888888888888888888888888888888888AbUfE6wrhyPA88888888888888888888888888888888888888U1sVwJ5q/jgA88888888888888888888888888888888888888AbeLK1cwTxdA88888888888888888888888888888888888888E4UkhKXxapKA88888888888888888888888888888888888888BV5MtgtwTk8A88888888888888888888888888888888888888ABS+tXfaGJpA88888888888888888888888888888888888888EHHy86iOHxU688888888888888888888888888888888888888Rzoiynr8eByQ88888888888888888888888888888888888888Ahqp4hf4rZbB88888888888888888888888888888888888888CxjSJ6/JgYja88888888888888888888888888888888888888HT3Zj1+dMDvr88888888888888888888888888888888888888Qi/3L3tu9EZt88888888888888888888888888888888888888FO3aHH/EUumq88888888888888888888888888888888888888AQim96Ek0loA88888888888888888888888888888888888888MMduN8csuuOM88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888/8QAKREBAAIBAgQGAwEBAQAAAAAAAQARITFBUFFhcYGRobHB0RDh8PEggP/aAAgBAwEBPxD/AMI6Y/FyzhzW8R3I5aes2X9eM17+vGZQQeB9xVarhtXbDBctWDy/ACpirtHzw1CNCOWhjbOkFAzWFOCXJKxw1ONjN4PF+5Tr6n7i+/zfuO2Hu/cU0Hnn7rhzilmZvnh0ZxEqv+Dnhusf8KzGq+GdItQreUgIHKNCRa4XmqNZfjEvb7iuV/eMq1UR3+UE0UVuhV1vwtNyNs6SleUCJcYpEecYoxZeGeFp254w0O9TIFTqLtzvc9opXEN0T326xSceiHlevhNVDo4fE27wKFv5ecBxnB4Q4TrGNmXMBsSDUWDc+eZ0zHAUK1m2zfGg1dGsAGCLTP0uvKV1LljljTpB00iRdgL654QtEY4xhYBX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</content>
<thumbailFlag>true</thumbailFlag>
<templateFlag>true</templateFlag>
<baseFlag>true</baseFlag>
<priority>1</priority>
<activeFlag>true</activeFlag>
</itemPicture>
</itemPictures>
<productAttributeValues>
<productCode>9876</productCode>
<isDefaultItem>true</isDefaultItem>
<productAttributeValue>
<attributeCode>CLR</attributeCode>
<attributeOptionCode>CLR_R</attributeOptionCode>
<isPreSelected>true</isPreSelected>
<displayOrder>1</displayOrder>
<isDisabled>false</isDisabled>
</productAttributeValue>
<productAttributeValue>
<attributeCode>SIZE</attributeCode>
<attributeOptionCode>8</attributeOptionCode>
<isPreSelected>true</isPreSelected>
<displayOrder>2</displayOrder>
<isDisabled>false</isDisabled>
</productAttributeValue>
</productAttributeValues>
</item>
</items>
</params>
</bridgeCoreRequest>
Relación de artículos con sus impuestos internos
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<itemInternalTaxes type="list">
<itemInternalTax type="bean">
<item>1</item>
<internalTax>24</internalTax>
<amountInternalTax>1.58</mountInternalTax>
</itemInternalTax>
<itemInternalTax type="bean">
<item>2</item>
<internalTax>16</internalTax>
<amountInternalTax>2</mountInternalTax>
</itemInternalTax>
</itemInternalTaxes>
</params>
</bridgeCoreRequest>
8.2.9 Códigos de Barras - Alias
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<aliases type="list">
<alias type="bean">
<itemCode>ACA</itemCode>
<barcode>998226397189</barcode>
<description>Codigo de Barras unitario</description>
<units></units>
<storeCode></storeCode>
</alias>
<alias type="bean">
<itemCode>ACA</itemCode>
<barcode>998226397190</barcode>
<description>Codigo de Barras caja por 10 unidades</description>
<units>10</units>
<storeCode></storeCode>
</alias>
</aliases>
</params>
</bridgeCoreRequest>
8.2.10 Artículos de Tipo Stock
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<stockItems type="list">
<stockItem type="bean">
<itemCode>1122</itemCode>
<pickupCode>S1</pickupCode>
</stockItem>
</stockItems>
</params>
</bridgeCoreRequest>
8.2.11 Relación artículos con proveedores
Request:
<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>
8.2.12 Lista de precios de artículos
NOTA: 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.
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<itemSellingPrices type="list">
<itemSellingPrice type="bean">
<itemSellingPriceNumber>1234</itemSellingPriceNumber>
<stores>
<storeCode>1</storeCode>
</stores>
<effectiveDateTime format="dd-MM-yyyy">01-01-2016</effectiveDateTime>
<expirationDateTime format="dd-MM-yyyy">01-01-2017</expirationDateTime>
<items type="list">
<item type="bean">
<itemCode>1</itemCode>
<barcode>7792850000066</barcode>
<currentSaleUnitRetailPriceAmount>450.00</currentSaleUnitRetailPriceAmount>
<currentSaleUnitRetailPriceEffectiveDate format="dd-MM-yyyy">01-01-2016</currentSaleUnitRetailPriceEffectiveDate>
<currentSaleUnitRetailPriceExpirationDate format="dd-MM-yyyy">01-01-2017</currentSaleUnitRetailPriceExpirationDate>
<currentSaleUnitRetailPriceTypeCode>pr1</currentSaleUnitRetailPriceTypeCode>
<permanentSaleUnitRetailPriceAmount>500.00</permanentSaleUnitRetailPriceAmount>
<permanentSaleUnitRetailPriceEffectiveDate format="dd-MM-yyyy">12-05-2013</permanentSaleUnitRetailPriceEffectiveDate>
<manufacturerSaleUnitRecommendedRetailPriceAmount>700.00</manufacturerSaleUnitRecommendedRetailPriceAmount>
</item>
</items>
</itemSellingPrice>
</itemSellingPrices>
</params>
</bridgeCoreRequest>
8.2.13 Artículos enlazados
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<linkedItems type="list">
<linkedItem type="bean">
<itemCode>ACA</itemCode>
<linkedItemCode>38078577</linkedItemCode>
<quantity>2</quantity>
<memberItemPrice>50.00</memberItemPrice>
</linkedItem>
<linkedItem type="bean">
<itemCode>89001</itemCode>
<linkedItemCode>90001</linkedItemCode>
<quantity>1</quantity>
<memberItemPrice>40.00</memberItemPrice>
</linkedItem>
</linkedItems>
</params>
</bridgeCoreRequest>
En el servicio linkedItem, se considerar la <operation>delete</operation>
Afecta la tabla CO_CLN_ITM. Si existe el registro informado en el servicio, se elimina el registro sino se informa del error.
En el request de ejemplo, se eliminarían las relaciones de los items ACA y 38078577; 89001 y 90001
Request:
<bridgeCoreRequest>
<operation>delete</operation>
<params>
<linkedItems type="list">
<linkedItem type="bean">
<itemCode>ACA</itemCode>
<linkedItemCode>38078577</linkedItemCode>
<quantity>2</quantity>
<memberItemPrice>50.00</memberItemPrice>
</linkedItem>
<linkedItem type="bean">
<itemCode>89001</itemCode>
<linkedItemCode>90001</linkedItemCode>
<quantity>1</quantity>
<memberItemPrice>40.00</memberItemPrice>
</linkedItem>
</linkedItems>
</params>
</bridgeCoreRequest>
8.2.14 Articulos de Tipo Kits
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<aggregateItems type="list">
<aggregateItem type="bean">
<typeCode>Kit</typeCode>
<item>24</item>
</aggregateItem>
<aggregateItem type="bean">
<typeCode>Kit</typeCode>
<item>24</item>
</aggregateItem>
</aggregateItems>
</params>
</bridgeCoreRequest>
8.2.15 Artículos del tipo servicio
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<serviceItems type="list">
<serviceItem type="bean">
<itemCode>1234</itemCode>
<type>wrty</type>
<baseCostAmount>50.5</baseCostAmount>
<netCostAmount>88.00</netCostAmount>
<costsEstablishedDate format="dd-MM-yyyy">12-10-2015</costsEstablishedDate>
</serviceItem>
<serviceItem type="bean">
<itemCode>1111</itemCode>
<type>wrty</type>
<baseCostAmount>60.00</baseCostAmount>
<netCostAmount>78.00</netCostAmount>
<costsEstablishedDate format="dd-MM-yyyy">12-10-2015</costsEstablishedDate>
</serviceItem>
</serviceItems>
</params>
</bridgeCoreRequest>
8.2.1 Artículos relacionados
En el servicio itemRelated, se agrega la operación de eliminar.
<operation>delete</operation>
Impacta en la tabla CO_ASCTN_RLTD_ITM. Si existe el registro informado en el servicio, se eliminar el registro sino se informa el error.
En el request de ejemplo, se eliminarían las relaciones de los items ACA y 38078577; 1155 y 9988.
<bridgeCoreRequest>
<operation>delete</operation>
<params>
<itemsRelated type="list">
<itemRelated type="bean">
<item>ACA</item>
<itemRelated>38078577</itemRelated>
<itemTypeRelated>CI</itemTypeRelated>
<nameRelated>RComplementario</nameRelated>
</itemRelated>
<itemRelated type="bean">
<item>1155</item>
<itemRelated>9988</itemRelated>
<itemTypeRelated>SI</itemTypeRelated>
<nameRelated>RSimil</nameRelated>
</itemRelated>
</itemsRelated>
</params>
</bridgeCoreRequest>
8.2.2 Stock por depósito e items del depósito
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<stocks type="list">
<stock type="bean">
<storeCode>1</storeCode>
<locationCode>1</locationCode>
<revenueCenter>RCD</revenueCenter>
<itemInventoryState>OnSale</itemInventoryState>
<items type="list">
<item type="bean">
<itemCode>1234</itemCode>
<stockUnits>3.00</stockUnits>
<serializedItems type="list">
<serializedItem type="bean">
<serialNumber>12345</serialNumber>
<stockUnits>1</stockUnits>
</serializedItem>
<serializedItem type="bean">
<serialNumber>12346</serialNumber>
<stockUnits>1</stockUnits>
</serializedItem>
<serializedItem type="bean">
<serialNumber>12347</serialNumber>
<stockUnits>1</stockUnits>
</serializedItem>
</serializedItems>
</item>
<item type="bean">
<itemCode>1111</itemCode>
<stockUnits>150.00</stockUnits>
</item>
</items>
</stock>
</stocks>
</params>
</bridgeCoreRequest>
8.2.3 Actualización de stock por abastecimiento
NOTA:
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.
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<stockInventories type="list">
<stockInventory type="bean">
<itemInventoryJournalOriginator>REC</itemInventoryJournalOriginator>
<headerTransactionCode>18790</headerTransactionCode>
<detailTransactionId>1</detailTransactionId>
<period></period>
<subperiod></subperiod>
<itemCode>778899565621</itemCode>
<storeCode>10</storeCode>
<locationCode>1</locationCode>
<itemInventoryState></itemInventoryState>
<retailUnitCount>100</retailUnitCount>
<SerialNumber></SerialNumber>
<importDocNumber>12130</importDocNumber>
<customsNumber>1</customsNumber>
<serializedUnitCode>1</serializedUnitCode>
<customsDate format="dd-MM-yyyy">01-01-2018</customsDate>
<substractFlag></substractFlag>
<aggregateCode></aggregateCode>
<costUnitAmount></costUnitAmount>
<costTotalAmount></costTotalAmount>
<salesUnitAmount></salesUnitAmount>
<salesExtendedAmount></salesExtendedAmount>
<inventoryAdjustmentType></inventoryAdjustmentType>
<manufacturingDate format="yyyy-MM-dd">2018-01-01</manufacturingDate>
</stockInventory>
</stockInventories>
</params>
</bridgeCoreRequest>
En el request ejemplo, se envía un movimiento de:
Código de artículo: 778899565621
Tipo de document: recepción de orden de compra
Nro de documento de abastecimiento: 18790
Nro de linea dentro del documento: 1
Código de tienda: 10
Código del depósito: 1
Cantidad recibida: 100
Documento de importación: 12130, con fecha 01-01-2018, de la aduana código 1.
Este movimiento sumará 100 unidades por recepción de orden de compra al producto 778899565621, del depósito 1 de la tienda 10.
8.3 Servicios de actualización de producto y atributos
8.3.1 Producto
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<products type="list">
<product type="bean">
<code>9876</code>
<name>Zapatilla Nike Air Max Grigora</name>
<shortDescription>Zapatilla Air Max Grigora</shortDescription>
<fullDescription>Zapatilla Air Max Grigora</fullDescription>
<metaKeywords></metaKeywords>
<metaDescription></metaDescription>
<metaTitle></metaTitle>
<allowCustomerReviews>true</allowCustomerReviews>
<isShipEnabled>true</isShipEnabled>
<isFreeShipping>true</isFreeShipping>
<shipSeparately>true</shipSeparately>
<additionalShippingCharge>0</additionalShippingCharge>
<deliveryDate></deliveryDate>
<displayStockAvailability>true</displayStockAvailability>
<displayStockQuantity>true</displayStockQuantity>
<disableBuyButton>false</disableBuyButton>
<disableWishlistButton>false</disableWishlistButton>
<basepriceBaseAmount></basepriceBaseAmount>
<basepriceBaseUnitId></basepriceBaseUnitId>
<markAsNew>false</markAsNew>
<newStartDateTime format="dd/MM/yyyy"></newStartDateTime>
<newEndDateTime format="dd/MM/yyyy"></newEndDateTime>
<displayOrder>1</displayOrder>
<published>true</published>
<isActive>true</isActive>
<defaultItemCode></defaultItemCode>
<categories>
<category>
<code>Indum</code>
<disabled>false</disabled>
</category>
<category>
<code>Hom</code>
<disabled>false</disabled>
</category>
</categories>
<specificationAttributes>
<specificationAttribute>
<code>CLR</code>
<value>Blue</value>
<showOnProductPage>true</showOnProductPage>
<attributeType>UNKNOWN</attributeType>
<customValue></customValue>
<displayOrder>1</displayOrder>
<disabled>false</disabled>
</specificationAttribute>
</specificationAttributes>
<productAttributes>
<productAttribute>
<code>CLR</code>
<isRequired>true</isRequired>
<attributeType>UNKNOWN</attributeType>
<displayOrder>1</displayOrder>
<disabled>false</disabled>
</productAttribute>
<productAttribute>
<code>SIZE</code>
<isRequired>true</isRequired>
<attributeType>UNKNOWN</attributeType>
<displayOrder>2</displayOrder>
<disabled>true</disabled>
</productAttribute>
</productAttributes>
</product>
</products>
</params>
</bridgeCoreRequest>
8.3.2 Atributos en la categoría departamental: productAttributeCategory
Request:
<service>productAttributeCategory</service>
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<productAttributeCategories type="list">
<productAttributeCategory type="bean">
<hierarchyCode>Indum</hierarchyCode>
<productAttributeCode>CLR1</productAttributeCode>
<isTemplate>false</isTemplate>
<isFilter>true</isFilter>
<disabled>false</disabled>
</productAttributeCategory>
</productAttributeCategories>
</params>
</bridgeCoreRequest>
8.3.3 Especificaciones de atributos en las categorías departamentales: specificationAttributeCategory
Request:
<service>specificationAttributeCategory</service>
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<specificationAttributeCategories type="list">
<specificationAttributeCategory type="bean">
<hierarchyCode>Hom</hierarchyCode>
<specificationAttributeCode>CLRS1</specificationAttributeCode>
<isTemplate>true</isTemplate>
<isFilter>true</isFilter>
<disabled>false</disabled>
</specificationAttributeCategory>
</specificationAttributeCategories>
</params>
</bridgeCoreRequest>
8.3.4 Atributos de producto: productAttribute
Request:
<service>productAttribute</service>
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<productAttributes type="list">
<productAttribute type="bean">
<code>CLR1</code>
<name>COLOR</name>
<disabled>false</disabled>
<productAttributeOptions type="list">
<productAttributeOption>
<code>CLR1_RED</code>
<name>Red</name>
<colorSquaresRgb>#663030</colorSquaresRgb>
<disabled>false</disabled>
</productAttributeOption>
<productAttributeOption>
<code>CLR1_BLUE</code>
<name>Blue</name>
<colorSquaresRgb>#363656</colorSquaresRgb>
<disabled>false</disabled>
</productAttributeOption>
<productAttributeOption>
<code>CLR1_SLVR</code>
<name>Silver</name>
<colorSquaresRgb>#c5c5d5</colorSquaresRgb>
<disabled>false</disabled>
</productAttributeOption>
</productAttributeOptions>
</productAttribute>
</productAttributes>
</params>
</bridgeCoreRequest>
8.3.5 Atributos de especificación: specificationAttributes
Request:
<service>specificationAttribute</service>
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<specificationAttributes type="list">
<specificationAttribute type="bean">
<code>9901</code>
<name>Material</name>
<displayOrder>1</displayOrder>
<disabled>false</disabled>
<specificationAttributeOptions type="list">
<specificationAttributeOption>
<name>Cuero</name>
<colorSquaresRgb></colorSquaresRgb>
<displayOrder>1</displayOrder>
<disabled>false</disabled>
</specificationAttributeOption>
<specificationAttributeOption>
<name>Plastico</name>
<colorSquaresRgb></colorSquaresRgb>
<displayOrder>2</displayOrder>
<disabled>false</disabled>
</specificationAttributeOption>
</specificationAttributeOptions>
</specificationAttribute>
</specificationAttributes>
</params>
</bridgeCoreRequest>
Este sería un ejemplo para cargar el atributo de especificación “Material” y sus 2 valores posibles.
En caso de volver a enviar la interfaz para el mismo Material y poniendo uno nuevo, este se agrega a las opciones.
Si necesitan deshabilitar una opción, deberían enviarlo con el campo “disabled” en “true”
8.4 Servicios de actualización de medios de pago
8.4.1 Medios de Pago
Efectivo
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<tenders type="list">
<tender type="bean">
<tenderCode>Peso</tenderCode>
<descriptor>Efectivo</descriptor>
<type>1</type>
<disabled>false</disabled>
</tender>
</tenders>
</params>
</bridgeCoreRequest>
Tarjeta VTOL
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<tenders type="list">
<tender type="bean">
<tenderCode>VI</tenderCode>
<descriptor>Visa</descriptor>
<type>4</type>
<disabled>false</disabled>
</tender>
</tenders>
</params>
</bridgeCoreRequest>
Tarjeta Contingencia
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<tenders type="list">
<tender type="bean">
<tenderCode>Dico</tenderCode>
<descriptor>Tarjeta Dico</descriptor>
<type>4</type>
<disabled>false</disabled>
</tender>
</tenders>
</params>
</bridgeCoreRequest>
8.4.2 Parámetros de tienda
Efectivo
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<storeTenders type="list">
<storeTender type="bean">
<tenderTypeCode>EUR</tenderTypeCode>
<supervisorRequired>false</supervisorRequired>
<foreignCurrency>true</ foreignCurrency>
<foreignCurrencyQuoteFactor>6772</foreignCurrencyQuoteFactor
<foreignCurrencySellingQuoteFactor>6772</foreignCurrencySellingQuoteFactor>
</storeTender>
<storeTender type="bean">
<tenderTypeCode>USD</tenderTypeCode>
<supervisorRequired>false</supervisorRequired>
<foreignCurrency>true</ foreignCurrency>
<foreignCurrencyQuoteFactor>6099</foreignCurrencyQuoteFactor>
<foreignCurrencySellingQuoteFactor>6099</foreignCurrencySellingQuoteFactor>
</storeTender>
</storeTenders>
</params>
</bridgeCoreRequest>
Tarjeta VTOL
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<storeTenders type="list">
<storeTender type="bean">
<tenderTypeCode>VI</tenderTypeCode>
<supervisorRequired>false</supervisorRequired>
<minOnlineAmount>0.01</minOnlineAmount>
<maxOnlineAmount>9999.99</maxOnlineAmount>
<offlineAllowed>false</offlineAllowed>
<maxOfflineAmount>0.00</maxOfflineAmount>
<manualInputAllowed>true</manualInputAllowed>
<mustControlDueDate>true</mustControlDueDate>
<mustControlVerificatorDigit>true</mustControlVerificatorDigit>
<accountNumberRequired>true</accountNumberRequired>
<cvcRequired>true</cvcRequired>
<cvcLength>3</cvcLength>
<lastDigitsInputRequired>true</lastDigitsInputRequired>
</storeTender>
</storeTenders>
</params>
</bridgeCoreRequest>
Tarjeta Contingencia
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<storeTenders type="list">
<storeTender type="bean">
<tenderTypeCode>Dico</tenderTypeCode>
<supervisorRequired>false</supervisorRequired>
</storeTender>
</storeTenders>
</params>
</bridgeCoreRequest>
8.4.3 Parámetros de terminal
Efectivo
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<terminalTenders type="list">
<terminalTender type="bean">
<terminalTenderTypeCode>CASH</terminalTenderTypeCode>
<tender>Peso</tender>
<descriptor>Pesos</descriptor>
<accepted>true</accepted>
<cashdrawerOpeningRequired>true</cashdrawerOpeningRequired>
<changeAllowed>true</changeAllowed>
<acceptedIfChangeNotAllowed>true</acceptedIfChangeNotAllowed>
<allowedInSales>true</allowedInSales>
<allowedInRefunds>true</allowedInRefunds>
<printFrontReq>false</printFrontReq>
<showable>true</showable>
<maxPaymentAmount>99999.99</maxPaymentAmount>
<maxAuthorizedChangeAmount>999.99</maxAuthorizedChangeAmount>
<maxPayments>1</maxPayments>
<maxAuthorizedPaymentAmount>99999</maxAuthorizedPaymentAmount>
</terminalTender>
</terminalTenders>
</params>
</bridgeCoreRequest>
Tarjeta VTOL
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<terminalTenders type="list">
<terminalTender type="bean">
<terminalTenderTypeCode>7777</terminalTenderTypeCode>
<tender>Dico</tender>
<descriptor>Tarjeta Dico</descriptor>
<accepted>true</accepted>
<cashdrawerOpeningRequired>false</cashdrawerOpeningRequired>
<changeAllowed>false</changeAllowed>
<acceptedIfChangeNotAllowed>true</acceptedIfChangeNotAllowed>
<allowedInSales>true</allowedInSales>
<allowedInRefunds>true</allowedInRefunds>
<printFrontReq>false</printFrontReq>
<showable>true</showable>
<maxPaymentAmount>9999</maxPaymentAmount>
<maxPayments>1</maxPayments>
<maxAuthorizedPaymentAmount>9999</maxAuthorizedPaymentAmount>
</terminalTender>
</terminalTenders>
</params>
</bridgeCoreRequest>
Tarjeta Contingencia
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<terminalTenders type="list">
<terminalTender type="bean">
<terminalTenderTypeCode>7777</terminalTenderTypeCode>
<tender>Dico</tender>
<descriptor>Tarjeta Dico</descriptor>
<accepted>true</accepted>
<cashdrawerOpeningRequired>false</cashdrawerOpeningRequired>
<changeAllowed>false</changeAllowed>
<acceptedIfChangeNotAllowed>true</acceptedIfChangeNotAllowed>
<allowedInSales>true</allowedInSales>
<allowedInRefunds>true</allowedInRefunds>
<printFrontReq>false</printFrontReq>
<showable>true</showable>
<maxPaymentAmount>9999</maxPaymentAmount>
<maxPayments>1</maxPayments>
<maxAuthorizedPaymentAmount>9999</maxAuthorizedPaymentAmount>
</terminalTender>
</terminalTenders>
</params>
</bridgeCoreRequest>
8.4.4 Configuración de planes para medios de pago a nivel terminal
Tarjeta VTOL
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<paymentPlans type="list">
<paymentPlan type="bean">
<paymentPlanCode>1</paymentPlanCode>
<terminalCardConfig>VisaCR</terminalCardConfig>
<planId>visaSinInt</planId>
<description>Meses sin interes VISA</description>
<vtolCode>0</vtolCode>
<currency>$</currency>
</paymentPlan>
<paymentPlan type="bean">
<paymentPlanCode>2</paymentPlanCode>
<terminalCardConfig>VisaCR</terminalCardConfig>
<planId>visaConInt</planId>
<description>Meses con interes VISA</description>
<vtolCode>1</vtolCode>
<currency>$</currency>
</paymentPlan>
</paymentPlans>
</params>
</bridgeCoreRequest>
Tarjeta Contingencia
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<paymentPlans type="list">
<paymentPlan type="bean">
<paymentPlanCode>PlanU</paymentPlanCode>
<terminalCardConfig>7777</terminalCardConfig>
<planId>dicosin</planId>
<description>plan unico dico</description>
<vtolCode>0</vtolCode>
<currency>$</currency>
</paymentPlan>
</paymentPlans>
</params>
</bridgeCoreRequest>
8.4.5 Configuración de planes de cuotas para medios de pago
Tarjeta VTOL
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<installments type="list">
<installment type="bean">
<terminalCardConfigPaymentPlan>1</terminalCardConfigPaymentPlan>
<paymentPlanInstallmentCode>1</paymentPlanInstallmentCode>
<installments>1</installments>
<surchage>0.00</surchage>
</installment>
<installment type="bean">
<terminalCardConfigPaymentPlan>2</terminalCardConfigPaymentPlan>
<paymentPlanInstallmentCode>2</paymentPlanInstallmentCode>
<installments>2</installments>
<surchage>0.10</surchage>
</installment>
<installment type="bean">
<terminalCardConfigPaymentPlan>2</terminalCardConfigPaymentPlan>
<paymentPlanInstallmentCode>3</paymentPlanInstallmentCode>
<installments>3</installments>
<surchage>0.15</surchage>
</installment>
<installment type="bean">
<terminalCardConfigPaymentPlan>2</terminalCardConfigPaymentPlan>
<paymentPlanInstallmentCode>4</paymentPlanInstallmentCode>
<installments>6</installments>
<surchage>0.20</surchage>
</installment>
</installments>
</params>
</bridgeCoreRequest>
Tarjeta Contingencia
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<installments type="list">
<installment type="bean">
<terminalCardConfigPaymentPlan>PlanU</terminalCardConfigPaymentPlan>
<paymentPlanInstallmentCode>Cuota1</paymentPlanInstallmentCode>
<installments>1</installments>
<surchage>0.00</surchage>
</installment>
<installment type="bean">
<terminalCardConfigPaymentPlan>PlanU</terminalCardConfigPaymentPlan>
<paymentPlanInstallmentCode>Cuota3</paymentPlanInstallmentCode>
<installments>3</installments>
<surchage>0.10</surchage>
</installment>
<installment type="bean">
<terminalCardConfigPaymentPlan>PlanU</terminalCardConfigPaymentPlan>
<paymentPlanInstallmentCode>Cuota3</paymentPlanInstallmentCode>
<installments>6</installments>
<surchage>0.15</surchage>
</installment>
</installments>
</params>
</bridgeCoreRequest>
8.4.6 Configuración de Formato de Franqueo
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<frankingFormats type="list">
<frankingFormat type="bean">
<terminalsGroup >1</terminalsGroup>
<format> ===== CHEQUE ENDOSADO =====CUENTA Nro.: @aTotal$@bbbbbbbbbb@g</format>
<code>001</code>
<description>Check Franking Format</description>
</frankingFormat>
</frankingFormats>
</params>
</bridgeCoreRequest>
]]>
8.4.7 Prefijos de tarjetas
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>cardprefix</service>
<!--Optional:-->
<request><![CDATA[
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<prefixes type="list">
<prefix type="bean">
<storeTenderCode>Mon</storeTenderCode>
<prefixIdentifier>1</prefixIdentifier>
<rangeFrom>85</rangeFrom>
<rangeTo>85</rangeTo>
<prefixLength>2</prefixLength>
<cardLength>16</cardLength>
<enabled>true</enabled>
<type>4</type>
</prefix>
</prefixes>
</params>
</bridgeCoreRequest>
</request>
<!--Optional:-->
<store>0</store>
</ser:execute>
</soapenv:Body>
</soapenv:Envelope>
8.4.8 Configuración de prefijos de cupones/vales (como medio de pago)
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<couponPrefix type="bean">
<prefixId>10</<prefixId> <configTenderStoreId>Peso</<configTenderStoreId>
<rangeFrom>20</rangeFrom>
<rangeTo>25</rangeTo>
</couponPrefix>
</params>
</bridgeCoreRequest>
]]>
8.4.9 Configuración de cupones (para PROMO)
<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>couponConfiguration</service>
<!--Optional:-->
<request><![CDATA[
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<coupons type="list">
<coupon type="bean">
<identifier>1234</identifier>
<couponType>Promo</couponType>
<description>Promo Description</description>
<couponLength>50</couponLength>
<fromPrefix>111</fromPrefix>
<toPrefix>222</toPrefix>
<prefixLength>3</prefixLength>
<amount>100</amount>
<couponFormatID>EAN13</couponFormatID>
</coupon>
</coupons>
</params>
</bridgeCoreRequest>
]]>
</request>
<!--Optional:-->
<store>0</store>
</ser:execute>
</soapenv:Body>
</soapenv:Envelope>
8.5 Servicios de actualización maestros de Impuestos
8.5.1 Categorías de Items para los Impuestos
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<taxCategories type="list">
<taxCategory type="bean">
<code>1</code>
<name>frescos</name>
</taxCategory>
<taxCategory type="bean">
<code>2</code>
<name>general</name>
</taxCategory>
</taxCategories>
</params>
</bridgeCoreRequest>
8.5.2 Categorías de Regiones impositivas para las tiendas
Request:
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<storeTaxCategories type="list">
<storeTaxCategory type="bean">
<storeTaxCategoryCode>RE1</storeTaxCategoryCode>
<storeTaxCategoryName>Region 1</storeTaxCategoryName>
</storeTaxCategory>
<storeTaxCategory type="bean">
<storeTaxCategoryCode>RE2</storeTaxCategoryCode>
<storeTaxCategoryName>Region 2</storeTaxCategoryName>
</storeTaxCategory>
</storeTaxCategories>
</params>
</bridgeCoreRequest>
8.5.3 Jurisdicciones impositivas
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<taxJurisdictions type="list">
<taxJurisdiction type="bean">
<taxJurisdictionCode>CABA</taxJurisdictionCode>
<name>CABA</name>
<type>2</type>
<authority>1</authority>
</jurisdiction>
<taxJurisdiction type="bean">
<taxJurisdictionCode>BsAs</taxJurisdictionCode>
<name>Buenos Aires</name>
<type>2</type>
<authority>1</authority>
</jurisdiction>
</jurisdictions>
</params>
</bridgeCoreRequest>
8.5.4 Reglas de impuestos
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<taxGroupRules type="list">
<taxGroupRule type="bean">
<code>IIBBBsAs</code>
<name>IIBBBsAs</name>
<description>Percepción de IIBB Buenos Aires</description>
<jurisdictionNType type="bean">
<jurisdiction>
<taxJurisdictionCode>CABA</taxJurisdictionCode>
</jurisdiction>
<taxCategory>
<code>IBBNR</code>
</taxCategory>
<type>
<code>IB</code>
</type>
</jurisdictionNType>
<effectiveDate format="dd-MM-yyyy">23-08-2017</effectiveDate>
<intendedUsageType>cons</intendedUsageType>
<itemTaxCategory>G</itemTaxCategory>
<storeTaxCategory>R1</storeTaxCategory>
<rateRule type="bean">
<code>IB.BA.NR</code>
<name>IB.BA.NR</name>
<netTaxableAmount>true</netTaxableAmount>
<netWithTaxTaxableAmount>false</netWithTaxTaxableAmount>
<netWithVATTaxableAmount>false</netWithVATTaxableAmount>
<totalAmountTaxableAmount>false</totalAmountTaxableAmount>
<unifiedFactor>1</unifiedFactor>
<rateClass>IIBBBsAs</rateClass>
</rateRule>
<disabled>false</disabled>
</taxGroupRule>
</taxGroupRules>
</params>
</bridgeCoreRequest>
8.5.5 Categorías impositivas del cliente
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<taxJurisdictionTaxTypeCategories type="list">
<taxJurisdictionTaxTypeCategory type="bean">
<code>CFT</code>
<name>Consumidor final Test</name>
<invoiceType>B</invoiceType>
</taxJurisdictionTaxTypeCategory>
</taxJurisdictionTaxTypeCategories>
</params>
</bridgeCoreRequest>
8.6 Servicios de actualización de Usuarios
8.6.1 Actualización de Usuarios
Request:
Ejemplo de dos usuarios con sus grupos de permisos.
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<users type="list">
<user type="bean">
<name>Gonzalo7</name>
<userName>gonxa7</userName>
<password>4AA101DDC5DC18B1B632E6540805722C</password>
<passwordSalt>A057F651CDA66D6B8C6986D94E91FF7B550CCEA92FC3E7AED2B70B3A66D4B61E</passwordSalt>
<roleGroups type="list">
<roleGroup type="bean">
<group>Cajero</group>
</roleGroup>
<roleGroup type="bean">
<group>Vendedor</group>
</roleGroup>
</roleGroups>
</user>
<user type="bean">
<name>Gonzalo8</name>
<userName>gonxa8</userName>
<password>4AA101DDC5DC18B1B632E6540805722C</password>
<passwordSalt>A057F651CDA66D6B8C6986D94E91FF7B550CCEA92FC3E7AED2B70B3A66D4B61E</passwordSalt>
<roleGroups type="list">
<roleGroup type="bean">
<group>Cajero</group>
</roleGroup>
<roleGroup type="bean">
<group>Vendedor</group>
</roleGroup>
</roleGroups>
</user>
</users>
</params>
</bridgeCoreRequest>
8.6.2 Actualización de portavalores
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<secPersonnels type="list">
<secPersonnel type="bean">
<secPersonnelCode>2039</secPersonnelCode>
<secPersonnelLastName>Villalobos</secPersonnelLastName>
<secPersonnelFirstName>Daniel</secPersonnelFirstName>
<secPersonnelIdentificationType>1</secPersonnelIdentificationType>
<secPersonnelIdentification>95499838</secPersonnelIdentification>
<secPersonnelCategory>categoria</secPersonnelCategory>
<flagDisabled>true</flagDisabled>
<effectiveDateTime format="dd-MM-yyyy">23-08-2017</effectiveDateTime>
<expirationDateTime format="dd-MM-yyyy">25-05-2018</expirationDateTime>
</secPersonnel>
</secPersonnels>
</params>
</bridgeCoreRequest>
8.7 Servicios de actualización de Clientes
8.7.1 Creacion o actualización de clientes
Se insertan dos xml ejemplo con mensajes de requerimiento para poder dar de alta un cliente del tipo organización (con datos impositivos asociados) y uno del tipo persona (consumidor final)
Cliente Persona
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<customers type="list">
<customer type="bean">
<code>123456</code>
<maritalStatusCode>
<code>2</code>
</maritalStatusCode>
<store>1</store>
<exemptFlag>false</exemptFlag>
<party type="bean">
<disabled>false</disabled>
<firstName>JUAN</firstName>
<lastName>GONZALEZ</lastName>
<middleNames>MIGUEL</middleNames>
<secondLastName>NORIEGA</secondLastName>
<genderType>M</genderType>
<typeCode>PRS</typeCode>
<birthCountryCode>ARG</birthCountryCode>
<birthDayNumber>22</birthDayNumber>
<birthMonthNumber>08</birthMonthNumber>
<birthYearNumber>1994</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>customer@test.com</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>
<customerAffiliation>
<customerAffiliation>
<group>
<name>Estudiantes</name>
</group>
<identityVerifyRequired>true</identityVerifyRequired>
</customerAffiliation>
</customerAffiliation>
</customer>
</customers>
</params>
</bridgeCoreRequest>
Cliente Organización
<bridgeCoreRequest>
<operation>createOrUpdate</operation><params>
<customers type="list">
<customer type="bean"><code>920180</code>
<store>42</store><party type="bean">
<name>FIGUERO AALDO MARCELO</name>
<typeCode>OGN</typeCode>
<roleAssignments type="list"><partyRoleAssignment type="bean">
<contactMethods type="list">
<partyContactMethod type="bean">
<purposeType id="2"/><methodType id="1"/>
<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>1</code></country>
<state type="bean">
<code>19</code></state>
<firstLine>CASA 60 SAN JOSE LA HERAS</firstLine>
<postalCode>9017</postalCode>
</address><emailAddress type="bean">
<name>figueroa.aldo@gmail.com</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>FIGUERO AALDO MARCELO</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>
</jurisdiction><taxCategory type="bean">
<code>MT</code>
</taxCategory><type type="bean">
<code>IVA</code></type>
</jurisdictionNType>
</taxRegistrationTaxType>
</taxTypes>
</taxRegistration>
<taxRegistration type="bean">
<name>FIGUERO ALDO MARCELO</name>
<number>20225939420</number>
<taxTypes type="list">
<taxRegistrationTaxType type="bean">
<inscEffectiveDate>2017-01-20T16:12:17</inscEffectiveDate>
<inscExpirationDate>2155-01-20T16:12:17</inscExpirationDate><certificates type="list"/>
<jurisdictionNType type="list">
<jurisdiction type="bean">
<taxJurisdictionCode>BA</taxJurisdictionCode>
</jurisdiction>
<taxCategory type="bean">
<code>IBBLCL</code>
</taxCategory><type type="bean">
<code>IB</code></type>
</jurisdictionNType>
</taxRegistrationTaxType>
</taxTypes>
</taxRegistration>
</taxRegistrations>
</party>
</customer>
</customers>
</params>
<replicationStore>0</replicationStore>
</bridgeCoreRequest>
8.7.2 Actualización de datos impositivos de cliente organización
<bridgeCoreRequest>
<operation>update</operation>
<params>
<customers type="list">
<customer type="bean">
<code>9120</code>
<party type="bean">
<name>Luis Campos</name>
<typeCode>OGN</typeCode>
<taxRegistrations>
<taxRegistration>
<name>Convenio Multilateral MT IIBB</name>
<number>123456</number>
<taxTypes>
<taxRegistrationTaxType>
<inscEffectiveDate>2010-01-01 00:00:00.0 ART</inscEffectiveDate>
<inscExpirationDate>2025-01-01 00:00:00.0 ART</inscExpirationDate>
<unifiedFactor>5</unifiedFactor>
<jurisdictionNType>
<jurisdiction>
<taxJurisdictionCode>BA</taxJurisdictionCode>
</jurisdiction>
<taxCategory>
<code>IBBCM</code>
</taxCategory>
<type>
<code>IB</code>
</type>
</jurisdictionNType>
</taxRegistrationTaxType>
<taxRegistrationTaxType>
<inscEffectiveDate>2010-01-01 00:00:00.0 ART</inscEffectiveDate>
<inscExpirationDate>2025-01-01 00:00:00.0 ART</inscExpirationDate>
<jurisdictionNType>
<jurisdiction>
<taxJurisdictionCode>CABA</taxJurisdictionCode>
</jurisdiction>
<taxCategory>
<code>IBBCM</code>
</taxCategory>
<type>
<code>IB</code>
</type>
</jurisdictionNType>
</taxRegistrationTaxType>
<taxRegistrationTaxType>
<inscEffectiveDate>2010-01-01 00:00:00.0 ART</inscEffectiveDate>
<inscExpirationDate>2025-01-01 00:00:00.0 ART</inscExpirationDate>
<jurisdictionNType>
<jurisdiction>
<taxJurisdictionCode>CH</taxJurisdictionCode>
</jurisdiction>
<taxCategory>
<code>IBBCM</code>
</taxCategory>
<type>
<code>IB</code>
</type>
</jurisdictionNType>
</taxRegistrationTaxType>
</taxTypes>
</taxRegistration>
<taxRegistration>
<name>Convenio Multilateral MT IVA</name>
<number>30504005220</number>
<taxTypes>
<taxRegistrationTaxType>
<inscEffectiveDate>2010-01-01 00:00:00.0 ART</inscEffectiveDate>
<inscExpirationDate>2025-01-01 00:00:00.0 ART</inscExpirationDate>
<jurisdictionNType>
<jurisdiction>
<taxJurisdictionCode>ARG</taxJurisdictionCode>
</jurisdiction>
<taxCategory>
<code>MT</code>
</taxCategory>
<type>
<code>IVA</code>
</type>
</jurisdictionNType>
</taxRegistrationTaxType>
</taxTypes>
</taxRegistration>
</taxRegistrations>
</party>
</customer>
</customers>
8.7.3 Alícuotas impositivas del cliente
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>
8.1 Servicios de complementos del cliente
8.1.1 Grupo o segmento de clientes
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<customerGroups type='list'>
<customerGroup type='bean'>
<name>CG1</name>
<description>Group1</description>
<disabled>false</disabled>
</customerGroup>
<customerGroup type='bean'>
<name>CG2</name>
<description>CGroup2</description>
<disabled></disabled>
</customerGroup>
<customerGroup type='bean'>
<name>CG3</name>
<description>CGroup3 deshabilitado</description>
<disabled>true</disabled>
</customerGroup>
<customerGroup type='bean'>
<name>CG4</name>
<description>CGroup4</description>
<disabled>true</disabled>
</customerGroup>
</customerGroups>
</params>
</bridgeCoreRequest>
8.1.2 Ciudades
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<cities type="list">
<city>
<code>1</code>
<name>Junin</name>
<state>
<code>AR-B</code>
</state>
</city>
<city>
<code>2</code>
<name>San Pedro</name>
<state>
<code>AR-B</code>
</state>
</city>
</cities>
</params>
</bridgeCoreRequest>
8.1.1 Ramo o actividad
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<partyCrWorkActivities type="list">
<partyCrWorkActivity>
<code>1</code>
<description>Comercio</description>
<disabled>false</disabled>
</partyCrWorkActivity>
<partyCrWorkActivity>
<code>2</code>
<decription>Transporte</description>
<disabled>false</disabled>
</partyCrWorkActivity>
</partyCrWorkActivities>
</params>
</bridgeCoreRequest>
8.1.2 Clase de cliente o segmento
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<partyCrSegments type="list">
<partyCrSegment>
<code>1</code>
<description>VIP</description>
<disabled>false</disabled>
</partyCrSegment>
<partyCrSegment>
<code>2</code>
<description>Standard</description>
<disabled>false</disabled>
</partyCrSegment>
</partyCrSegments>
</params>
</bridgeCoreRequest>
8.2 Servicios del módulo de maestros de negocio
8.2.1 Centros emisores
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<broadcastCenters type="list">
<broadcastCenter>
<code>250</code>
<store>00128</store>
<workstation>2</workstation>
<disabled>false</disabled>
<storeReceipts type="list">
<storeReceipt>
<invoiceType>FC_A</invoiceType>
<fiscalResolution>F035</fiscalResolution>
<dateFrom>01-05-2018</dateFrom>
<dateTo>02-05-2018</dateTo>
<rangeFrom>0</rangeFrom>
<rangeTo>149</rangeTo>
<disabled>false</disabled>
</storeReceipt>
<storeReceipt>
<invoiceType>FC_A</invoiceType>
<fiscalResolution>F88</fiscalResolution>
<dateFrom>03-05-2018</dateFrom>
<dateTo>13-05-2018</dateTo>
<rangeFrom>150</rangeFrom>
<rangeTo>299</rangeTo>
<disabled>false</disabled>
</storeReceipt>
</storeReceipts>
</broadcastCenter>
</broadcastCenters>
</params>
</bridgeCoreRequest>
8.3 Servicios del módulo de abastecimiento
8.3.1 Documentos fiscales
<advanceShipmentNotices>
<advanceShipmentNotice>
<destinationRetailStoreID>03105</destinationRetailStoreID>
<supplier>3050795084</supplier>
<contractReferenceNumber>26</contractReferenceNumber>
<originatorNumber>9944</originatorNumber>
<createDateTimestamp format='dd-MM-yyyyy'>20-10-2018</createDateTimestamp>
<receiptNumber>A-1132-0000090985</receiptNumber>
<receiptType>FC</receiptType>
<receiptDate format='dd-MM-yyyyy'>21-09-2018</receiptDate>
<caiNumber>12345690000000</caiNumber>
<caiDate format='dd-MM-yyyyy'>10-11-2018</caiDate>
<pagesQuantity>1</pagesQuantity>
<netAmount>1394</netAmount>
<exemptAmout>10</exemptAmout>
<taxAmount>10</taxAmount>
<vatAmount>10</vatAmount>
<servicesVATAmount>10</servicesVATAmount>
<differencialVATAmount>10</differencialVATAmount>
<ivaTaxAmount>10</ivaTaxAmount>
<iibbTaxAmount>10</iibbTaxAmount>
<totalAmount>1464</totalAmount>
<inventoryControlDocumentLineItems>
<inventoryControlDocumentLineItem>
<item>7790114901234</item>
<unitBaseCostAmount>13.94</unitBaseCostAmount>
<unitCount>100</unitCount>
<uomUnits/>
</inventoryControlDocumentLineItem>
</inventoryControlDocumentLineItems>
</advanceShipmentNotice>
</advanceShipmentNotices>
8.3.2 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>
8.3.1 Orden o pedido de transferencia
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<transferDocument type="bean">
<sourceRetailStore>1</sourceRetailStore>
<destinationRetailStoreID>2</destinationRetailStoreID>
<originatorNumber></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>
8.3.2 Transferencia
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<transferDocument type="bean">
<sourceRetailStore>1</sourceRetailStore>
<destinationRetailStoreID>2</destinationRetailStoreID>
<originatorNumber></originatorNumber>
<createDateTimestamp format="yyyy-MM-dd">2019-08-16</createDateTimestamp>
<expectedDeliveryDate format="yyyy-MM-dd">2019-08-16</expectedDeliveryDate>
<serialFormID/>
<inventoryControlDocumentState/>
<icdReference/>
<inventoryControlDocumentLineItems type="list">
<inventoryControlDocumentLineItem>
<item>7290</item>
<unitCount>1</unitCount>
<destinationLocation></destinationLocation>
<sourceLocation></sourceLocation>
<inventoryControlDocumentSerializedtLineItems type="list">
<inventoryControlDocumentSerializedtLineItem>
<serialNumber>060606</serialNumber>
<lot></lot>
<aduana></aduana>
<customsDate format="yyyy-MM-dd">2019-08-16</customsDate>
<unitCount>2</unitCount>
</inventoryControlDocumentSerializedtLineItem>
</inventoryControlDocumentSerializedtLineItems>
</inventoryControlDocumentLineItem>
</inventoryControlDocumentLineItems>
</transferDocument>
</params>
</bridgeCoreRequest>
8.4 Servicios de motivos
8.4.1 Motivos de devolución
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<saleReturnReasons type='list'>
<saleReturnReason type='bean'>
<code>1</code>
<name>Por defecto</name>
<disabled>false</disabled>
<additionalNotesRequired>true</additionalNotesRequired>
</saleReturnReason>
</saleReturnReasons>
</params>
</bridgeCoreRequest>
8.4.2 Motivos de cancelación
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<saleCancelReasons type='list'>
<saleCancelReason type='bean'>
<code>2</code>
<name>El cliente no concreta la operación</name>
<disabled>false</disabled>
<additionalNotesRequired>true</additionalNotesRequired>
</saleCancelReason>
</saleCancelReasons>
</params>
</bridgeCoreRequest>
8.4.1 Motivos de descuento a nivel item
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<reasonSaleItemDiscounts type="list">
<reasonSaleItemDiscount type="bean">
<code>COD1</code>
<description>Promoción no aplicada</description>
<disabled></disabled>
<validateReasonTextFlag></validateReasonTextFlag>
</reasonSaleItemDiscount>
</reasonSaleItemDiscounts>
</params>
</bridgeCoreRequest>
8.4.1 Motivos de descuento a nivel transacción
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<reasonSaleTransactionDiscounts type="list">
<reasonSaleTransactionDiscount type="bean">
<code>COD2</code>
<description>Promoción sobre la compra no aplicada</description>
<disabled></disabled>
<validateReasonTextFlag></validateReasonTextFlag>
</reasonSaleTransactionDiscount>
</reasonSaleTransactionDiscounts>
</params>
</bridgeCoreRequest>
8.5 Servicio de cobranzas
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<tenderDebtDetails>
<tenderDebtDetail>
<partyIdentification>23111222</partyIdentification>
<accountNumber>9999999999</accountNumber>
<installment>1</installment>
<expirationDate format="dd-MM-yyyy">31-11-2019</expirationDate>
<originalTotalAmount>3000</originalTotalAmount>
<currency>PYG</currency>
<paidTotalAmount>0</paidTotalAmount>
<pendingTotalAmount>3000</pendingTotalAmount>
<accountDate format="dd-MM-yyyy">01-01-2019</accountDate>
<lastUpdateDate format="dd-MM-yyyy">23-09-2019</lastUpdateDate>
</tenderDebtDetail>
</tenderDebtDetails>
</params>
</bridgeCoreRequest>
8.1 Servicio de actualización de plantillas de venta - View templates
8.1.1 Creación o actualización de plantillas de venta
<bridgeCoreRequest>
<operation>createOrUpdate</operation>
<params>
<templates type="list">
<template type="bean">
<code>plantilla1</code>
<name>Kiosco</name>
<description>Kiosco de tienda</description>
<descriptor1></descriptor1>
<descriptor2></descriptor2>
<image_visible></image_visible>
<is_active>true</is_active>
<categories type="list">
<category type="bean">
<code>1</code>
<name>Golosinas</name>
<category_picture_id >1</category_picture_id>
<buttons type="list">
<button type="bean">
<descriptor1></descriptor1>
<descriptor2></descriptor2>
<Image_path></Image_path>
<ItemCode>78</ItemCode>
<item_picture_id></item_picture_id>
<priority>2</priority>
</button>
</buttons>
</category>
</categories>
<stores type="list">
<store type="bean">
<storeCode>1</storeCode>
<workStation>10</workStation>
</store>
</stores>
</template>
</templates>
</params>
</bridgeCoreRequest>