Integrando Bridge Core desde terminales externas - BRIDGE 7
1. Introducción
1.1 ¿Qué es Bridge Core?
Bridge Core es una solución que permite ejecutar operaciones y reglas devolviendo el resultado en un formato entendible por el cliente para poder ser utilizadas por cualquier otra aplicación.
1.1.1 Componentes de Bridge Core
- Bridge Core Server:
Es el servidor de reglas de negocio, el cual procesa los requerimientos recibidos, desde las aplicaciones externas, a través de un cliente (Web Service), ejecutando las operaciones y/o reglas de negocio correspondientes utilizando BridgeCore, y retornando el resultado de dicho procesamiento al cliente.
Este servidor establece y mantiene las sesiones con los clientes.
- Bridge Core Server Rest
Es un servidor RESTful de reglas de negocio, el cual procesa los requerimientos recibidos desde una invocación HTTP, ejecuta las operaciones y/o reglas de negocio correspondientes utilizando BridgeCore, y retornando el resultado de dicho procesamiento al cliente.
- Cliente:
Es una librería cuya misión es la de simplificar la interacción entre aplicaciones externas (como por ejemplo una aplicación de eCommerce, un POS tradicional, un Self-Checkout, un cliente Mobile, etc.) y el Servidor de Reglas. Para ello, provee de un mecanismo para poder interactuar con el servidor de reglas, realizando peticiones y obteniendo las respectivas respuestas de procesamiento de manera simplificada. Este cliente solo sirve para comunicarse con Bridge Core Server.
1. Recursos
Un concepto importante en REST es la existencia de recursos (elementos de información), que pueden ser accedidos utilizando un identificador global (un Identificador Uniforme de Recurso). Para manipular estos recursos, los componentes de la red (clientes y servidores) se comunican a través de una interfaz estándar (HTTP) e intercambian representaciones de estos recursos.
Los recursos que expone Bridge Core Server Rest son:
- workflow: Este recurso retorna una representación del Workflow actual de Bridge Core.
- terminal/{terminal}: Este recurso representa una terminal. Se utiliza cuando se desea establecer una conexión e iniciar una transacción con una terminal dada. Por ejemplo, si se desea conectar a la terminal 10, se accederá a terminal/10.
- services: Retorna el conjunto de servicios disponibles e Bridge Core.
- service/{serviceName}: Permite acceder a un servicio determinado sobre el cual se pueden invocar métodos. Por ejemplo, service/customerOrder.
2. Establecer conexión a una Terminal
Si lo que se desea es realizar una transacción en una terminal dada, lo primero que hay que hacer es un startup de dicha terminal. Esta acción es requerida para que Bridge Core asigne una sesión de terminal al cliente que intenta utilizar las reglas de negocio. Sin la petición de esta acción ningún cliente podrá utilizar las reglas de negocio del Workflow, ya que durante este proceso se asigna una terminal del sistema y un identificador de sesión de terminal.
Para hacer un startup a través de una request HTTP, se debe invocar la operación estándar POST de HTTP con la siguiente url:
~/terminal/{codigoTerminal}
Así, por ejemplo, si deseo conectarme a un server rest local, e iniciar la terminal 10, invoco:
http://localhost:8080/bcoreserver/
Bridge Core Server REST retorna los resultados en XML. Por eso, el header de la request HTTP debe tener los siguientes valores:
Content-Type:application/xml
Accept:application/xml
Dicha operación retorna un terminal representation, el cual en xml tiene la siguiente estructura:
<?xml version="1.0" encoding="UTF-8" ?> <bridgeCoreResponse> <ack>0</ack> <message></message> <sessionId>56a31332-6732-47e3-b00b-c5ad00c9de6d</sessionId> <operationResult class="string">56a31332-6732-47e3-b00b-c5ad00c9de6d</operationResult> <representation class="terminalRepresentation"> <terminalCode>10</terminalCode> <storeCode>2</storeCode> <status>OK</status> </representation> </bridgeCoreResponse>
Toda response tiene los siguientes atributos:
sessionId: Es el Identificador de la conexión de la terminal. Este id se necesita para ejecutar el resto de las operaciones dentro de dicha sesión.
ack: Es el código de retorno de la operación. Si la operación no retorna ningún error, el valor de esta propiedad es 0. Caso contrario, el valor de ack es el código que identifica el error ocurrido.
message: Si durante la ejecución de la operación ha ocurrido un error, en esta propiedad viene el mensaje de dicho error.
operationResult: Es el valor retornado por la operación ejecutada. En este caso coincide con el identificador de conexión de la terminal.
representation: Dentro de esta propiedad viene la representación retornada por la operación, y difiere de acuerdo a la operación invocada. En este caso retorna un TerminalRepresentation con sus datos propios.
3. Invocar una operación
3.1 Login
Una vez establecida una conexión a una terminal, se puede empezar a invocar operaciones para loguearse con un usuario, iniciar una transacción, ejecutar operaciones dentro de dicha transacción, finalizar, etc.
La primera operación que se debe invocar es la de logueo, en la cual se inicia una sesión de usuario para esa terminal.
Para invocar dicha operación, se debe enviar una request HTTP PUT a la siguiente url.
~/terminal/{codigoTerminal}
Por ejemplo, si la conexión se ha establecido a la terminal 10, la url debe ser:
~/terminal/10
A su vez, el header de la request debe ser:
Content-Type:application/xml
Accept:application/xml
Y el entity a enviar en XML tiene la siguiente estructura
<bridgeCoreRequest> <connectionId>56a31332-6732-47e3-b00b-c5ad00c9de6d</connectionId> <operation>login</operation> <params> <userName>suser</userName> <userPassword>suser123</userPassword> </params> </bridgeCoreRequest>
Donde:
connectionId: Es el id de la conexión. Dicho id fue retornado cuando se invocó la operación de startup de la terminal y debe ser usado cada vez que se invoque una operación dentro de la sesión de esa terminal.
operation: Es el nombre de la operación a invocar.
params: dentro de este tag van los parámetros de la operación. En este caso son dos parámetros:
userName: Es el nombre de usuario.
userPassword: Es la contraseña del usuario.
La respuesta de una operación es un xml con la a siguiente estructura:
<?xml version="1.0" encoding="UTF-8" ?> <bridgeCoreResponse> <ack>0</ack> <message></message> <sessionId>56a31332-6732-47e3-b00b-c5ad00c9de6d</sessionId> <representation class="terminalRepresentation"> <terminalCode>10</terminalCode> <storeCode>$(storeId)</storeCode> <status>OK</status> <sessionData> <menu> <options> <optionMenu> <id>1</id> <optionNumber>1</optionNumber> <optionName>Venta</optionName> </optionMenu> … </options> </menu> <trainingMode>false</trainingMode> <promoOptions/> <promoSuggestions/> </sessionData> </representation> </bridgeCoreResponse>
En este caso, como se puede ver, también se retornan valores para las propiedades ack, message y sessionId.
Dentro de representation retorna un terminalRepresentation y dentro de menú se encuentran las transacciones que se pueden iniciar.
3.2 Select Transaction
Esta operación permite seleccionar la transacción a inicializar a partir de su id, el cual fue retornado en las opciones de menú de la operación de Login:
<sessionData> <menu> <options> <optionMenu> <id>1</id> <optionNumber>1</optionNumber> <optionName>Venta</optionName> </optionMenu> …
Para invocar dicha operación, se debe ejecutar una request HTTP PUT igual a la de Login, pero con el siguiente Entity:
<bridgeCoreRequest> <connectionId>56a31332-6732-47e3-b00b-c5ad00c9de6d</connectionId> <operation>selectTransaction</operation> <params> <transactionSubtype>1</transactionSubtype> </params> </bridgeCoreRequest>
Dónde:
operation: Es el nombre de la operación a ejecutar, en este caso: selectTransaction
params: transactionSubtype es el id de la transacción seleccionada. En este la transacción con id 1 representa una transacción de venta.
Y la respuesta de dicha operacion es la siguiente:
<?xml version="1.0" encoding="UTF-8" ?> <bridgeCoreResponse> <ack>0</ack> <message></message> <sessionId>db0af19d-6574-4c01-ae38-746eb7511ae6</sessionId> <representation class="terminalRepresentation"> <terminalCode>10</terminalCode> <storeCode>$(storeId)</storeCode> <status>OK</status> <sessionData> <ticket> <userName>suser</userName> <terminalCode>10</terminalCode> <storeCode>$(storeId)</storeCode> <subtotal> <number>0</number> </subtotal> <total reference="../subtotal"/> <totalBalance reference="../subtotal"/> <items/> <payments/> <paymentsTotal reference="../subtotal"/> <change reference="../subtotal"/> <paid>false</paid> <discounts/> <discountsItemsTotal reference="../subtotal"/> <discountsTransactionTotal reference="../subtotal"/> <discountsPromoTotal reference="../subtotal"/> <totalLoyaltyBenefits> <number>0.00</number> </totalLoyaltyBenefits> <promoPaymentPlans/> <promoGifts/> </ticket> <tendersMenu> <options> <optionMenu> <id>1</id> <optionNumber>1</optionNumber> <optionName>Contado</optionName> </optionMenu> <optionMenu> <id>2</id> <optionNumber>2</optionNumber> <optionName>Dólares</optionName> </optionMenu> … </options> </tendersMenu> <trainingMode>false</trainingMode> <promoOptions/> <promoSuggestions/> </sessionData> <cashDrawerOpenAllowed>false</cashDrawerOpenAllowed> </representation> </bridgeCoreResponse>
En este punto, se ha iniciado una transacción de venta, sobre la cual se pueden ejecutar operaciones de agregar items, pagos, anular items, anular pagos, finalizar trx. Etc.
Dichas operaciones, y sus parámetros está explicado en el documento DEFINIR DOCUMENTO. A su vez, el el Apendice A de este documento se encuentras ejemplos de requests y responses de cada una de las operaciones que se pueden invocar.
4. Invocar un Servicio
En BridgeCore es posible invocar ciertos servicios Remotos sin necesidad de establecer una conexión a una terminal. Los servicios están agrupados en interfaces, sobre el cual se pueden ejecutar distintas llamadas.
Así, por ejemplo, si se quieren ejecutar operaciones de orden de compra, las cuales no están asociadas a una terminal, se debe invocar enviando una HTTP PUT request a la siguiente url:
~/service/customerOrder
Con el siguiente Entity
<bridgeCoreRequest> <connectionId>3bc87f6a-98aa-4cba-985c-e58a70cf1d50</connectionId> <operation>create</operation> <params> <terminal>10</terminal> </params> </bridgeCoreRequest>
5. 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:
<?xml version="1.0" encoding="UTF-8" ?> <bridgeCoreResponse> <ack>10061</ack> <message>La conexión con la terminal 10 ha expirado.</message> <sessionId>56a31332-6732-47e3-b00b-c5ad00c9de6d</sessionId> </bridgeCoreResponse>
6. Obtener el workflow
Para obtener una representación en XML del workflow completo de la instancia de BridgeCore, se debe ejecutar un HTTP GET request a la siguiente URL:
~/workflow
Al acceder a dicho resource, devuelve el siguiente XML:
<?xml version="1.0" encoding="UTF-8" ?> <bridgeCoreResponse> <ack>0</ack> <message></message> <operationResult class="bCWorkflow"> <name>POS Workflow</name> <activitiesConfig> <bCActivityConfig> <interfaze> <name>com.synthesis.bridge.bcore.business.activities.IdleActivity</name> <packaje>com.synthesis.bridge.bcore.business.activities</packaje> <methods> <bCMethod> <name>startup</name> <parameterTypes> <string>java.lang.String</string> </parameterTypes> <declaringClass>com.synthesis.bridge.bcore.business.activities.IdleActivity</declaringClass> <returnType>java.lang.String</returnType> </bCMethod> </methods> </interfaze> <implClass> <name>com.synthesis.bridge.bcore.business.activities.impl.IdleActivityImpl</name> <packaje>com.synthesis.bridge.bcore.business.activities.impl</packaje> <methods> <bCMethod> <name>startup</name> <parameterTypes> <string>java.lang.String</string> </parameterTypes> <declaringClass>com.synthesis.bridge.bcore.business.activities.impl.IdleActivityImpl</declaringClass> <returnType>java.lang.String</returnType> </bCMethod> …
7. Obtener los servicios disponibles
Para obtener una representación en XML de los services disponibles de Bridge Core, se debe ejecutar un HTTP GET request a la siguiente URL:
~/services
Al acceder a dicho resource, devuelve el siguiente XML:
<?xml version="1.0" encoding="UTF-8" ?> <bridgeCoreResponse> <ack>0</ack> <message></message> <operationResult class="bCServices"> <services> <bCServiceConfig> <interfaze> <name>com.synthesis.bridge.bcore.business.services.CustomerOrderService</name> <packaje>com.synthesis.bridge.bcore.business.services</packaje> <methods> <bCMethod> <name>create</name> <parameterTypes> <string>java.lang.String</string> </parameterTypes> <declaringClass>com.synthesis.bridge.bcore.business.services.CustomerOrderService</declaringClass> <returnType>java.lang.Object</returnType> </bCMethod> </methods> … </services> </operationResult> </bridgeCoreResponse>
8. Apendice A
En el siguiente apartado se muestran distintos ejemplos de Request y Responses de BridgeCore REST Server. Primero se expondrán todas Las BridgeCore Request, y luego se mostrarán las Representations asociadas a cada BridgeCoreResponse.
8.1 Activity: IdleActivity
8.1.1 Operation: startup
Tipo de operación: POST
Request
<bridgeCoreRequest> <connectionId>3bc87f6a-98aa-4cba-985c-e58a70cf1d50</connectionId> <operation>login</operation> <params> <userName>suser</userName> <userPassword>suser123</userPassword> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.2 Activity: LoginActivity
8.2.1 Operation: findCustomers
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>bb738b4e-5984-44e2-a09e-7042fdb3cdaa</connectionId> <operation>findCustomers</operation> <params> <personLastName>Perez</personLastName> <personFirstName>Juan</personFirstName> <rowsPage>10</rowsPage> <organizationName>UTN</organizationName> <partyIdentificationNumber>10</partyIdentificationNumber> <customerAccountType>1</customerAccountType> <customerAccountCardNumber>2344</customerAccountCardNumber> <resultPage>15</resultPage> <partyIdentificationTypeId>1</partyIdentificationTypeId> </params> </bridgeCoreRequest> |
Response: FindCustomersRepresentation
8.2.2 Operation: findItems
Tipo de operación: GET
Request
<bridgeCoreRequest> <connectionId>4c32c5d9-0f50-4801-a5fc-0fcf6471730a</connectionId> <operation>findItems</operation> <params> <rowsPage>15</rowsPage> <hierarchyGroup>1</hierarchyGroup> <itemDescription>Game</itemDescription> <itemCode>10</itemCode> <resultPage>10</resultPage> </params> |
Response: FindItemsRepresentation
8.2.3 Operation: login
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>3bc87f6a-98aa-4cba-985c-e58a70cf1d50</connectionId> <operation>login</operation> <params> <userName>suser</userName> <userPassword>suser123</userPassword> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.3 Activity: SelectTransaction
8.3.1 Operation: cashDrawerOpen
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>f2117d6c-c141-4a3b-903b-4d5199ee748f</connectionId> <operation>cashDrawerOpen</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.3.2 Operation: logoff
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>595cbf6c-5446-448b-a79f-0026d5547a01</connectionId> <operation>logoff</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.3.3 Operation: receivedPaymentReport
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>595cbf6c-5446-448b-a79f-0026d5547a01</connectionId> <operation>receivedPaymentsReport</operation> <params/> </bridgeCoreRequest> |
Response: ReceivedPaymentsReportRepresentation
8.3.4 Operation: resumeTransaction
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>595cbf6c-5446-448b-a79f-0026d5547a01</connectionId> <operation>resumeTransaction</operation> <params> <resumeTerminalCode>10</resumeTerminalCode> <resumeTransactionNumber>15</resumeTransactionNumber> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.3.5 Operation: selectTransaction
Tipo de operación: PUT (seleccionar)
Request
<bridgeCoreRequest> <connectionId>595cbf6c-5446-448b-a79f-0026d5547a01</connectionId> <operation>selectTransaction</operation> <params> <transactionSubtype>1</transactionSubtype> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.3.6 Operation: specialLogoff
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>666c025e-e97c-4990-8cd8-b1dc4076b321</connectionId> <operation>specialLogoff</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4 Activity: SellingActivity
8.4.1 Operation: addCardPayment
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request 1: Ingreso por teclado
<bridgeCoreRequest> <connectionId>d6842cd8-631a-42d2-8d19-b967fc7826b6</connectionId> <operation>addCardPayment</operation> <params> <voidFlag>false</voidFlag> <cardAccount>11167894567</cardAccount> <processPromotions>true</processPromotions> <cardPin>1234</cardPin> <paymentAmount>20000.00</paymentAmount> <cardEntryMethod>KYD</cardEntryMethod> <cardNumberOfInstallments>3</cardNumberOfInstallments> <cardEffectiveDate>Sun Sep 01 00:00:00 ACT 2013</cardEffectiveDate> <cardPaymentPlanId>2</cardPaymentPlanId> <cardExpirationDate format="yyMM">1509</cardExpirationDate> <cardCvc>no</cardCvc> <cardLastDigits>4567</cardLastDigits> </params> </bridgeCoreRequest> |
Request 2: Ingreso por MSR
<bridgeCoreRequest> <connectionId>8a11755c-2019-4255-b59d-cd1560af10e5</connectionId> <operation>addCardPayment</operation> <params> <voidFlag>false</voidFlag> <processPromotions>true</processPromotions> <cardPin>1234</cardPin> <paymentAmount>4000.00</paymentAmount> <cardEntryMethod>MSR</cardEntryMethod> <cardNumberOfInstallments>1</cardNumberOfInstallments> <cardEffectiveDate>Sun Sep 01 00:00:00 ACT 2013</cardEffectiveDate> <cardPaymentPlanId>90</cardPaymentPlanId> <cardTracks> <value>asdf1234</value> <value>445jolj45</value> <value>jklue4567</value> <value>acm1kk</value> </cardTracks> <cardCvc>cvc2</cardCvc> <cardLastDigits>6669</cardLastDigits> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.2 Operation: addCashPayment
Tipo de operación: PUT
Request 1: Medio de pago Efectivo
<bridgeCoreRequest> <connectionId>99adfdd7-9ad5-4ec2-a1cb-2028b944aa04</connectionId> <operation>addCashPayment</operation> <params> <voidFlag>false</voidFlag> <processPromotions>true</processPromotions> <paymentAmount>1000.00</paymentAmount> <tender>1</tender> </params> </bridgeCoreRequest> |
Request 2: Medio de pago Dólar
<bridgeCoreRequest> <connectionId>99adfdd7-9ad5-4ec2-a1cb-2028b944aa04</connectionId> <operation>addCashPayment</operation> <params> <voidFlag>true</voidFlag> <processPromotions>true</processPromotions> <paymentAmount>199.90</paymentAmount> <tender>2</tender> </params> </bridgeCoreRequest> |
Request 3: Medio de pago Euro
<bridgeCoreRequest> <connectionId>99adfdd7-9ad5-4ec2-a1cb-2028b944aa04</connectionId> <operation>addCashPayment</operation> <params> <voidFlag>false</voidFlag> <processPromotions>true</processPromotions> <paymentAmount>156.85</paymentAmount> <tender>3</tender> </params> </bridgeCoreRequest> |
Request 4: Medio de pago Cheque
<bridgeCoreRequest> <connectionId>99adfdd7-9ad5-4ec2-a1cb-2028b944aa04</connectionId> <operation>addCashPayment</operation> <params> <voidFlag>false</voidFlag> <processPromotions>true</processPromotions> <paymentAmount>120.00</paymentAmount> <tender>4</tender> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.3 Operation: addCheckPayment
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>b46257c1-16ee-4511-87bd-b75cf4574730</connectionId> <operation>addCheckPayment</operation> <params> <voidFlag>false</voidFlag> <checkBank>8989898989</checkBank> <processPromotions>true</processPromotions> <checkNumber>898989898</checkNumber> <paymentAmount>1000.00</paymentAmount> <paymentMethod>4</paymentMethod> <checkAccountNumber>8989898989</checkAccountNumber> <checkEmissionDate format="dd/MM/yyyy">30/08/2013</checkEmissionDate> <checkLocaleCode>ar</checkLocaleCode> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.4 Operation: addItem
Tipo de operación: PUT
Request 1: Agregado de ítem por cantidad
<bridgeCoreRequest> <connectionId>d2892c25-183a-4804-9f02-6fd99fe984b5</connectionId> <operation>addItem</operation> <params> <itemPrice>850</itemPrice> <itemBarcode>78</itemBarcode> <processPromotions>true</processPromotions> <itemQty>1</itemQty> <itemSerial>123456</itemSerial> <itemDepartment>1</itemDepartment> </params> </bridgeCoreRequest> |
Request 2: Agregado de ítem por magnitud
<bridgeCoreRequest> <connectionId>d2892c25-183a-4804-9f02-6fd99fe984b5</connectionId> <operation>addItem</operation> <params> <itemPrice>2267</itemPrice> <itemMagnitude>3.5</itemMagnitude> <itemBarcode>12667</itemBarcode> <processPromotions>false</processPromotions> <itemSerial>654321</itemSerial> <itemDepartment>23</itemDepartment> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.5 Operation: addItemList
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>29012828-fbbf-4282-a1f2-d6f66997580c</connectionId> <operation>addItemList</operation> <params> <itemDataList> <value type="map"> <itemPrice>1200</itemPrice> <itemMagnitude>3.9</itemMagnitude> <itemBarcode>78</itemBarcode> <itemQty/> <itemSerial>343434</itemSerial> <itemDepartment>1</itemDepartment> </value> <value type="map"> <itemPrice>3456.90</itemPrice> <itemBarcode>344</itemBarcode> <itemQty>1</itemQty> <itemSerial>567433</itemSerial> <itemDepartment>7</itemDepartment> </value> </itemDataList> <processPromotions>true</processPromotions> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.6 Operation: applyDiscountToItem
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request 1: Monto de descuento
<bridgeCoreRequest> <connectionId>e92744ec-2e00-45f8-b03f-dd5dffac9e56</connectionId> <operation>applyDiscountToItem</operation> <params> <processPromotions>true</processPromotions> <sequenceNumber>1</sequenceNumber> <discountValue>1250</discountValue> <discountType>1</discountType> </params> </bridgeCoreRequest> |
Request 2: Porcentaje de descuento
<bridgeCoreRequest> <connectionId>e92744ec-2e00-45f8-b03f-dd5dffac9e56</connectionId> <operation>applyDiscountToItem</operation> <params> <processPromotions>false</processPromotions> <sequenceNumber>2</sequenceNumber> <discountValue>25</discountValue> <discountType>2</discountType> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.7 Operation: applyDiscountToTransaction
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request 1: Monto de descuento
<bridgeCoreRequest> <connectionId>d6842cd8-631a-42d2-8d19-b967fc7826b6</connectionId> <operation>applyDiscountToTransaction</operation> <params> <discountValue>13455</discountValue> <discountType>1</discountType> </params> </bridgeCoreRequest> |
Request 2: Porcentaje de descuento
<bridgeCoreRequest> <connectionId>d6842cd8-631a-42d2-8d19-b967fc7826b6</connectionId> <operation>applyDiscountToTransaction</operation> <params> <discountValue>33</discountValue> <discountType>2</discountType> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.8 Operation: cancelTransaction
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>1e15d3ae-b27a-4eee-8b28-f96ca8ae6295</connectionId> <operation>cancelTransaction</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.9 Operation: cashDrawerOpen
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>1e15d3ae-b27a-4eee-8b28-f96ca8ae6295</connectionId> <operation>cashDrawerOpen</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.10 Operation: findCustomers
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>e13bcd76-3322-4bc0-86bf-acdc651502e9</connectionId> <operation>findCustomers</operation> <params> <personLastName>Junin</personLastName> <personFirstName>Liliana</personFirstName> <rowsPage>10</rowsPage> <organizationName>UTN</organizationName> <partyIdentificationNumber>32889665</partyIdentificationNumber> <customerAccountType>1</customerAccountType> <customerAccountCardNumber>89893232</customerAccountCardNumber> <resultPage>20</resultPage> <partyIdentificationTypeId>1</partyIdentificationTypeId> </params> </bridgeCoreRequest> |
Response: FindItemsRepresentation
8.4.11 Operation: findItems
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>4c32c5d9-0f50-4801-a5fc-0fcf6471730a</connectionId> <operation>findItems</operation> <params> <rowsPage>15</rowsPage> <hierarchyGroup>1</hierarchyGroup> <itemDescription>Game</itemDescription> <itemCode>10</itemCode> <resultPage>10</resultPage> </params> |
Response: FindItemsRepresentation
8.4.12 Operation: finishTransaction
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>e13bcd76-3322-4bc0-86bf-acdc651502e9</connectionId> <operation>finishTransaction</operation> <params/> </bridgeCoreRequest> |
Response: xxRepresentation
8.4.13 Operation: linkCustomerWithLoyaltyData
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>c6ba7728-489b-40a2-bc60-e7df7e7c1027</connectionId> <operation>linkCustomerWithLoyaltyData</operation> <params> <partyIdentificationNumber>32445778</partyIdentificationNumber> <customerAccountCardId>1</customerAccountCardId> <customerAccountId>1</customerAccountId> <partyIdentificationTypeId>1</partyIdentificationTypeId> <customerId>1</customerId> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.14 Operation: linkCustomerWithTaxData
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request 1
Request 2
Response: TerminalRepresentation
8.4.15 Operation: specialLogoff
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>specialLogoff</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.16 Operation: suspendTransaction
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>fff54a6b-9972-4aba-a24a-9d4a72bae5cf</connectionId> <operation>suspendTransaction</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.17 Operation: totalizeTransaction
Tipo de operación: PUT
Request
Response: xxRepresentation
8.4.18 Operation: voidItem
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>22812fd3-278f-4c12-9744-f2d401a052a1</connectionId> <operation>voidItem</operation> <params> <itemPrice>1000</itemPrice> <itemMagnitude>1.5</itemMagnitude> <itemBarcode>78</itemBarcode> <processPromotions>true</processPromotions> <sequenceNumber>1</sequenceNumber> <itemDepartment>1</itemDepartment> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.19 Operation: voidItemDiscount
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>voidItemDiscount</operation> <params> <processPromotions>true</processPromotions> <sequenceNumber>1</sequenceNumber> <discountType>1</discountType> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.4.20 Operation: voidTransactionDiscount
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>voidTransactionDiscount</operation> <params> <discountType>1</discountType> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.5 Activity: SpecialLogin
8.5.1 Operation: login
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>f2117d6c-c141-4a3b-903b-4d5199ee748f</connectionId> <operation>login</operation> <params> <userPassword>suser123</userPassword> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.5.2 Operation: unblockTerminal
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>907585df-19a1-4ba0-b662-1a84f2560200</connectionId> <operation>unblockTerminal</operation> <params> <userName>suser</userName> <userPassword>suser123</userPassword> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.6 Activity: TransferringTerminal
8.6.1 Operation: cancelTransaction
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>cancelTransaction</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.6.2 Operation: specialLogoff
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>specialLogoff</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.6.3 Operation: transferTerminal
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>transferTerminal</operation> <params> <userPassword>false</userPassword> <sourceTerminalCode>10</sourceTerminalCode> </params> </bridgeCoreRequest> |
Response: xxRepresentation
8.7 Activity: Controlling
8.7.1 Operation: addTender
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>4d4c0364-a26c-40f4-b08a-1219f4d00cec</connectionId> <operation>addTender</operation> <params> <voidFlag>false</voidFlag> <paymentQuantity>1</paymentQuantity> <paymentAmount>1300.80</paymentAmount> <paymentMethod>1</paymentMethod> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.7.2 Operation: cancelTransaction
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>cancelTransaction</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.7.3 Operation: finishTransaction
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>e13bcd76-3322-4bc0-86bf-acdc651502e9</connectionId> <operation>finishTransaction</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.7.4 Operation: specialLogoff
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>specialLogoff</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.8 Activity: TenderAdjustment
8.8.1 Operation: cancelTransaction
Tipo de operación: PUT
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>cancelTransaction</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.8.2 Operation: finishTransaction
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>e13bcd76-3322-4bc0-86bf-acdc651502e9</connectionId> <operation>finishTransaction</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.8.3 Operation: specialLogoff
Tipo de operación: GET/POST/PUT/DELETE (seleccionar)
Request
<bridgeCoreRequest> <connectionId>71339cd2-03bf-4bde-a72d-4fc1ab48c7e5</connectionId> <operation>specialLogoff</operation> <params/> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.8.4 Operation: tenderAdjustment
Tipo de operación: PUT
Request 1: Efectivo
<bridgeCoreRequest> <connectionId>6f1eafd3-278f-4d35-ba90-f03fd47d725f</connectionId> <operation>tenderAdjustment</operation> <params> <newPaymentAmount>0.00</newPaymentAmount> <originalPaymentMethod>1</originalPaymentMethod> <newVoidFlag>false</newVoidFlag> <newPaymentMethod>1</newPaymentMethod> <originalVoidFlag>false</originalVoidFlag> <originalPaymentAmount>1200.00</originalPaymentAmount> </params> </bridgeCoreRequest> |
Request 2: Cheque
<bridgeCoreRequest> <connectionId>14375b91-63cc-4240-8cb6-0c25149cd9b7</connectionId> <operation>tenderAdjustment</operation> <params> <checkBank>9087653759</checkBank> <newPaymentAmount>4670.00</newPaymentAmount> <checkNumber>78787878</checkNumber> <originalPaymentMethod>1</originalPaymentMethod> <checkAccountNumber>123456789</checkAccountNumber> <newVoidFlag>false</newVoidFlag> <checkEmissionDate format="dd/MM/yyyy">20/08/2013</checkEmissionDate> <newPaymentMethod>4</newPaymentMethod> <originalVoidFlag>true</originalVoidFlag> <originalPaymentAmount>1500.00</originalPaymentAmount> <checkLocaleCode>mx</checkLocaleCode> </params> </bridgeCoreRequest> <bridgeCoreRequest> <connectionId>14375b91-63cc-4240-8cb6-0c25149cd9b7</connectionId> <operation>tenderAdjustment</operation> <params> <checkBank>9087653759</checkBank> <cardEntryMethod>KYD</cardEntryMethod> <newPaymentMethod>4</newPaymentMethod> <cardPaymentPlanId>1</cardPaymentPlanId> <cardCvc>cvc45</cardCvc> <cardLastDigits>7676</cardLastDigits> <checkLocaleCode>mx</checkLocaleCode> <newPaymentAmount>4670.00</newPaymentAmount> <cardAccount>5656565656767676</cardAccount> <originalPaymentMethod>32900.00</originalPaymentMethod> <checkNumber>78787878</checkNumber> <cardPin>1234</cardPin> <newVoidFlag>false</newVoidFlag> <checkAccountNumber>123456789</checkAccountNumber> <cardNumberOfInstallments>12</cardNumberOfInstallments> <cardEffectiveDate>Sun Sep 01 00:00:00 ACT 2013</cardEffectiveDate> <checkEmissionDate format="dd/MM/yyyy">20/08/2013</checkEmissionDate> <cardExpirationDate format="yyMM">1309</cardExpirationDate> <originalPaymentAmount>false</originalPaymentAmount> <originalVoidFlag>true</originalVoidFlag> </params> </bridgeCoreRequest> |
Request 3: Tarjeta
<bridgeCoreRequest> <connectionId>14375b91-63cc-4240-8cb6-0c25149cd9b7</connectionId> <operation>tenderAdjustment</operation> <params> <checkBank>9087653759</checkBank> <cardEntryMethod>KYD</cardEntryMethod> <newPaymentMethod>4</newPaymentMethod> <cardPaymentPlanId>1</cardPaymentPlanId> <cardCvc>cvc45</cardCvc> <cardLastDigits>7676</cardLastDigits> <checkLocaleCode>mx</checkLocaleCode> <newPaymentAmount>4670.00</newPaymentAmount> <cardAccount>5656565656767676</cardAccount> <originalPaymentMethod>32900.00</originalPaymentMethod> <checkNumber>78787878</checkNumber> <cardPin>1234</cardPin> <newVoidFlag>false</newVoidFlag> <checkAccountNumber>123456789</checkAccountNumber> <cardNumberOfInstallments>12</cardNumberOfInstallments> <cardEffectiveDate>Sun Sep 01 00:00:00 ACT 2013</cardEffectiveDate> <checkEmissionDate format="dd/MM/yyyy">20/08/2013</checkEmissionDate> <cardExpirationDate format="yyMM">1309</cardExpirationDate> <originalPaymentAmount>false</originalPaymentAmount> <originalVoidFlag>true</originalVoidFlag> </params> </bridgeCoreRequest> |
Response: TerminalRepresentation
8.9 Service: CustomerOrderService
8.9.1 Operation: create/calculate
Tipo de operación: PUT
El servicio de creación sirve para crear y persistir una orden de compra, o bien para calcular como sería una orden con la diferencia de que no se crea en la base de datos. A continuación se mostrarán distintos ejemplos de creación y cálculo.
Partes de la Request
Declaración de Request: todos los datos deben estar encerrados entre los siguientes tags.
<bridgeCoreRequest>
</bridgeCoreRequest>
Nombre de la operación: sin importar cuál de las dos operaciones sea, siempre debe ser asignado de la siguiente manera.
<operation>create</operation> |
Parámetros: deben estar encerrados entre los siguientes tags.
<params>
</ params >
A continuación se detallan los siguientes parámetros de ingreso, los cuales deben ir dentro del tag mencionado arriba.
Datos generales de la orden: identificación de cliente, fecha estimada de entrega
<estimatedAvailabilityDate format="yyyy-MM-dd">2013-12-13</estimatedAvailabilityDate>
<customerId>1</customerId>
Nombre de usuario y contraseña: deben pertenecer a un usuario válido existente en la base de datos.
<userName>111</userName>
<userPassword>user111</userPassword>
Indicador de creación o cálculo: true en caso de creación, y false en caso de cálculo. Si este parámetro no se ingresa, el valor a tomar por defecto es false.
Crear orden
<customerOrderCalculate>false</customerOrderCalculate> |
Calcular orden
<customerOrderCalculate>true</customerOrderCalculate> |
Indicador de procesado de promociones: se debe enviar true en caso de que se solicite calcular promociones y descuentos, y false caso contrario.
<processPromotions>true</processPromotions> |
Datos de ítems: no es posible enviar una lista vacía, se debe ingresar al menos uno. Dependiendo de las características del ítem, los atributos itemPrice e itemQty no serán necesarios. Pero en todos los casos itemBarcode será obligatorio.
Un solo ítem:
<customerOrderItems> <value type="map"> <itemPrice>250</itemPrice> <itemBarcode>75001</itemBarcode> <itemQty>2.00</itemQty> </value> </customerOrderItems> |
Más de un ítem:
<customerOrderItems> <value type="map"> <itemPrice>250</itemPrice> <itemBarcode>75001</itemBarcode> <itemQty>2.00</itemQty> </value> <value type="map"> <itemPrice/> <itemBarcode>89001</itemBarcode> <itemQty/> </value> <value type="map"> <itemPrice/> <itemBarcode>20001</itemBarcode> <itemQty/> </value> <value type="map"> <itemPrice/> <itemBarcode>1</itemBarcode> <itemQty/> </value> </customerOrderItems> |
Tipo de entrega: es excluyente y sólo existen dos tipos de entrega.
Retiro en tienda: se corresponde con el tipo “Order for Pickup”
<customerOrderTypeCode>ofp</customerOrderTypeCode> |
Entrega a domicilio: se corresponde con el tipo “Order for Delivery”
<customerOrderTypeCode>ofd</customerOrderTypeCode> |
Datos de entrega: si bien el método de entrega es excluyente, se puede enviar información de ambos tipos. Pero luego BCore tomará la información del que se necesite según el tipo enviado, y los datos que no necesite los ignorará.
Retiro en tienda
<retirementStoreCode>1</retirementStoreCode> <customerOrderContactPerson>Alfredo Perez</customerOrderContactPerson> |
Entrega a domicilio
<shipmentPrice>25.00</shipmentPrice> <customerOrderAddress>25 de Mayo 1100</customerOrderAddress> |
A continuación se mostrarán varios ejemplos de solicitudes.
Request 1: Ejemplo de creación/cálculo para orden con retiro en tienda, enviando varios artículos y sin cálculo de promociones.
Creación de orden
<bridgeCoreRequest>
<operation>create</operation>
<params>
<userName>111</userName>
<userPassword>user111</userPassword>
<customerOrderItems>
<value type="map">
<itemPrice/>
<itemBarcode>75001</itemBarcode>
<itemQty>2.00</itemQty>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>89001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>20001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>1</itemBarcode>
<itemQty/>
</value>
</customerOrderItems>
<customerOrderCalculate>false</customerOrderCalculate>
<processPromotions>false</processPromotions>
<customerOrderTypeCode>ofp</customerOrderTypeCode>
<customerOrderContactPerson>Alfredo Perez</customerOrderContactPerson>
<retirementStoreCode>1</retirementStoreCode>
<estimatedAvailabilityDate format="yyyy-MM-dd">2013-11-07</estimatedAvailabilityDate>
<customerId>1</customerId>
</params>
</bridgeCoreRequest>
Cálculo de orden
<bridgeCoreRequest> <operation>create</operation> <params> <userName>111</userName> <customerOrderCalculate>true</customerOrderCalculate> <customerOrderContactPerson>Alfredo Perez</customerOrderContactPerson> <customerOrderDeliveryShift>8:00-10:00</customerOrderDeliveryShift> <userPassword>user111</userPassword> <estimatedAvailabilityDate format="yyyy-MM-dd">2013-12-12</estimatedAvailabilityDate> <customerId>1</customerId> <customerOrderAdditionalDeliveryData>Entre Pedro Molina y Colon</customerOrderAdditionalDeliveryData> <shipmentPrice>25.00</shipmentPrice> <customerOrderItems> <value type="map"> <itemPrice/> <itemBarcode>75001</itemBarcode> <itemQty>2.00</itemQty> </value> <value type="map"> <itemPrice/> <itemBarcode>89001</itemBarcode> <itemQty/> </value> <value type="map"> <itemPrice/> <itemBarcode>20001</itemBarcode> <itemQty/> </value> <value type="map"> <itemPrice/> <itemBarcode>1</itemBarcode> <itemQty/> </value> </customerOrderItems> <customerOrderTypeCode>ofp</customerOrderTypeCode> <processPromotions>false</processPromotions> <customerOrderAddress>25 de Mayo 1100</customerOrderAddress> </params> </bridgeCoreRequest> |
Request 2: Orden para delivery
En el atributo customerOrderTypeCode se define el tipo de retiro mediante el código ofd (Order For Delivery). Es necesario definir también la dirección y persona de contacto.
Response: CustomerOrderRepresentation
<bridgeCoreRequest>
<operation>create</operation>
<params>
<userName>111</userName>
<customerOrderCalculate>false</customerOrderCalculate>
<customerOrderContactPerson>Alfredo Perez</customerOrderContactPerson>
<customerOrderDeliveryShift>8:00-10:00</customerOrderDeliveryShift>
<userPassword>user111</userPassword>
<estimatedAvailabilityDate format="yyyy-MM-dd">2013-11-07</estimatedAvailabilityDate>
<customerId>1</customerId>
<customerOrderAdditionalDeliveryData>Entre Pedro Molina y Colon</customerOrderAdditionalDeliveryData>
<shipmentPrice>25.00</shipmentPrice>
<customerOrderItems>
<value type="map">
<itemPrice/>
<itemBarcode>75001</itemBarcode>
<itemQty>2.00</itemQty>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>89001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>20001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>1</itemBarcode>
<itemQty/>
</value>
</customerOrderItems>
<customerOrderTypeCode>ofd</customerOrderTypeCode>
<processPromotions>false</processPromotions>
<customerOrderAddress>25 de Mayo 1100</customerOrderAddress>
</params>
</bridgeCoreRequest>
Request 3: Calcular Orden
Para calcular orden, lo único que se debe hacer es invocar a la operación create con el atribute processPromotions en true.
Response: CustomerOrderRepresentation
<bridgeCoreRequest>
<operation>create</operation>
<params>
<userName>111</userName>
<customerOrderCalculate>false</customerOrderCalculate>
<customerOrderContactPerson>Alfredo Perez</customerOrderContactPerson>
<customerOrderDeliveryShift>8:00-10:00</customerOrderDeliveryShift>
<userPassword>user111</userPassword>
<estimatedAvailabilityDate format="yyyy-MM-dd">2013-11-07</estimatedAvailabilityDate>
<customerId>1</customerId>
<customerOrderAdditionalDeliveryData>Entre Pedro Molina y Colon</customerOrderAdditionalDeliveryData>
<shipmentPrice>25.00</shipmentPrice>
<customerOrderItems>
<value type="map">
<itemPrice/>
<itemBarcode>75001</itemBarcode>
<itemQty>2.00</itemQty>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>89001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>20001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>1</itemBarcode>
<itemQty/>
</value>
</customerOrderItems>
<customerOrderTypeCode>ofd</customerOrderTypeCode>
<processPromotions>true</processPromotions>
<customerOrderAddress>25 de Mayo 1100</customerOrderAddress>
</params>
Responses de error
Las respuestas de error son devueltas por diferentes motivos tales como:
- Ingreso de al menos un artículo con precio, código o cantidad inválida
- Datos faltantes y/o inválidos de entrega
- Errores de acceso a la base de datos, etc.
A continuación se mostrarán varios ejemplos de respuestas de error.
Error response 1: ingreso de datos inválidos de artículos.
Request
<bridgeCoreRequest>
<operation>create</operation>
<params>
<userName>111</userName>
<customerOrderCalculate>false</customerOrderCalculate>
<customerOrderContactPerson>Alfredo Perez</customerOrderContactPerson>
<customerOrderDeliveryShift>8:00-10:00</customerOrderDeliveryShift>
<userPassword>user111</userPassword>
<estimatedAvailabilityDate format="yyyy-MM-dd">2013-12-13</estimatedAvailabilityDate>
<customerId>1</customerId>
<customerOrderAdditionalDeliveryData>Entre Pedro Molina y Colon</customerOrderAdditionalDeliveryData>
<shipmentPrice>25.00</shipmentPrice>
<customerOrderItems>
<value type="map">
<itemPrice>-160</itemPrice>
<itemBarcode>75001</itemBarcode>
<itemQty>2.00</itemQty>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>89001</itemBarcode>
<itemQty>-2</itemQty>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>20001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>1</itemBarcode>
<itemQty/>
</value>
</customerOrderItems>
<customerOrderTypeCode>ofd</customerOrderTypeCode>
<processPromotions>false</processPromotions>
<customerOrderAddress>25 de Mayo 1100</customerOrderAddress>
</params>
</bridgeCoreRequest>
Response
<?xml version="1.0" encoding="UTF-8" ?>
<bridgeCoreResponse>
<ack>10260</ack>
<message>Los siguientes items de la orden de compra son inválidos: 75001|Precio inválido.;89001|El artículo no admite cantidad.</message>
</bridgeCoreResponse>
La interpretación del error se debe hacer de la siguiente manera:
-Partir el mensaje en dos tomando ‘:’ como carácter splitter. La primera parte es un mensaje informativo de error y la segunda es el detalle del error.
8.9.1 Operation: update
Request 1: Actualizar Orden
Para actualizar orden, se le debe pasar la última versión de la orden de compra.
Response: CustomerOrderRepresentation
<bridgeCoreRequest>
<operation>update</operation>
<params>
<userName>111</userName>
<customerOrderContactPerson>Alfredo Perez</customerOrderContactPerson>
<customerOrderDeliveryShift>8:00-10:00</customerOrderDeliveryShift>
<userPassword>user111</userPassword>
<estimatedAvailabilityDate format="yyyy-MM-dd">2013-11-07</estimatedAvailabilityDate>
<customerId>1</customerId>
<channel>1</channel>
<customerOrderAdditionalDeliveryData>Entre Pedro Molina y Colon</customerOrderAdditionalDeliveryData>
<shipmentPrice>25.00</shipmentPrice>
<customerOrderItems>
<value type="map">
<itemPrice/>
<itemBarcode>75001</itemBarcode>
<itemQty>2.00</itemQty>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>89001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>20001</itemBarcode>
<itemQty/>
</value>
<value type="map">
<itemPrice/>
<itemBarcode>1</itemBarcode>
<itemQty/>
</value>
</customerOrderItems>
<customerOrderVersion>1</customerOrderVersion>
<processPromotions>false</processPromotions>
<customerOrderAddress>25 de Mayo 1100</customerOrderAddress>
<customerOrderNumber>1</customerOrderNumber>
</params>
</bridgeCoreRequest>
8.9.2 Operation: find
Tipo de operación: PUT
La operación de búsqueda recupera una o más órdenes de compra guardadas en el sistema. Los parámetros que se envían en la operación son:
customerOrderFindNumber: número de orden de compra. Si este parámetro se envía, al ser unívoco, el resultado será una orden de compra que contendrá datos detallados de la orden. Si no se envía, entonces contendrá datos generales de todas las órdenes encontradas.
retirementStoreCode: código de retiro de la tienda.
lowerDateRange: fecha de inicio del intervalo de búsqueda.
upperDateRange: fecha de fin del intervalo de búsqueda.
Nota: si se define intervalo de fechas, lowerDateRange y upperDateRange se deben tener valores concretos.
partyIdentificationNumber: número de identificación del cliente.
customerOrderState: código del estado de la orden de compra. (Mencionar todos los códigos).
customerOrderShipmentMethod: código de tipo de entrega de la orden. Los posibles códigos son: ofd (Order For Delivery, que es la entrega a domicilio), ofp (Order For Pickup, que es retiro en tienda).
resultPage: indica el número de página a mostrar en caso de haber resultados. Valor por defecto: 0 (cero).
rowsPage: indica la cantidad de registros por página en caso de haber resultados. Valor por defecto: 15.
Nota: todos los parámetros son opcionales. En caso de que se envíe una Request de este estilo, se devolverán todas las órdenes de compra del sistema (si existiera al menos una guardada).
Request 1: Se envían todos los parámetros de búsqueda.
<bridgeCoreRequest> <operation>find</operation> <params> <rowsPage>15</rowsPage> <lowerDateRange format="yyyy-MM-dd">2013-11-25</lowerDateRange> <partyIdentificationNumber>31222544</partyIdentificationNumber> <retirementStoreCode>2</retirementStoreCode> <customerOrderShipmentMethod>ofd</customerOrderShipmentMethod> <upperDateRange format="yyyy-MM-dd">2013-11-26</upperDateRange> <customerOrderState>rpck</customerOrderState> <resultPage>0</resultPage> <customerOrderFindNumber>1</customerOrderFindNumber> </params> </bridgeCoreRequest> |
Response: FindCustomerOrdersRepresentation
Request 2: No se envían parámetros de búsqueda.
<bridgeCoreRequest> <operation>find</operation> <params/> </bridgeCoreRequest> |
Response: FindCustomerOrdersRepresentation
8.9.3 Operation: invoice
Tipo de operación: PUT
La operación de facturación toma una orden de compra en estado “To Invoice” (“A negociar”) y la factura.
Parámetros:
- customerOrderNumber: número de orden de compra.
- customerOrderVersionNumber: número de versión de la orden de compra. Si se envía, debe ser el último registrado en el historial de versiones.
- itemDataList: lista de ítems de la orden, la cual en caso de enviarse, debe controlarse que sean exactamente los mismos datos tanto de precios, cantidades, y descuentos que los de la última.
- customerOrderTotalAmount: el monto total de la orden de compra.
- couponDataList: lista de cupones. Nota: no se encuentra implementado.
- paymentDataList: lista de pagos.
- transactionId: ID de transacción de venta.
- documentNumber: número de documento/factura.
- receiptDate: fecha de documento/factura.
- receiptAmount: monto del documento/factura.
- username: nombre de usuario.
- userPassword: contraseña.
- Nota: todos los atributos remarcados en verde son listas que pueden contener uno o más elementos.
Request 1: Se envían todos los parámetros de facturación.
<bridgeCoreRequest> <operation>invoice</operation> <params> <receiptAmount>200.00</receiptAmount> <userName>111</userName> <transactionId>1</transactionId> <paymentDataList> <value type="map"> <paymentAmount>100.00</paymentAmount> <paymentId>1</paymentId> </value> <value type="map"> <paymentAmount>50.00</paymentAmount> <paymentId>8</paymentId> </value> </paymentDataList> <itemDataList> <value type="map"> <itemExtendedPrice>260.55</itemExtendedPrice> <itemPrice>150.55</itemPrice> <itemBarcode>78</itemBarcode> <customerOrderPriceItemModifierList> <value type="map"> <priceModifierPercent>50.00</priceModifierPercent> <priceModifierNewPrice>150.50</priceModifierNewPrice> <priceModifierPromotionId>22</priceModifierPromotionId> <priceModifierPreviousPrice>301.00</priceModifierPreviousPrice> <priceModifierAmount>150.50</priceModifierAmount> <priceModifierSequenceNumber>1</priceModifierSequenceNumber> <priceModifierReasonCode>Descuento Navidad</priceModifierReasonCode> </value> </customerOrderPriceItemModifierList> <itemQty>5.00</itemQty> </value> <value type="map"> <itemExtendedPrice>260.55</itemExtendedPrice> <itemPrice>150.55</itemPrice> <itemBarcode>78</itemBarcode> <customerOrderPriceItemModifierList> <value type="map"> <priceModifierPercent>50.00</priceModifierPercent> <priceModifierNewPrice>150.50</priceModifierNewPrice> <priceModifierPromotionId>22</priceModifierPromotionId> <priceModifierPreviousPrice>301.00</priceModifierPreviousPrice> <priceModifierAmount>150.50</priceModifierAmount> <priceModifierSequenceNumber>1</priceModifierSequenceNumber> <priceModifierReasonCode>Descuento Navidad</priceModifierReasonCode> </value> </customerOrderPriceItemModifierList> <itemQty>5.00</itemQty> </value> </itemDataList> <documentNumber>102030</documentNumber> <userPassword>user111</userPassword> <customerOrderNumber>2</customerOrderNumber> <customerOrderVersionNumber>0</customerOrderVersionNumber> <customerOrderTotalAmount>200.00</customerOrderTotalAmount> <receiptDate format="yyyy-MM-dd">2013-12-02</receiptDate> </params> </bridgeCoreRequest> |
Request 2: Se envían únicamente ítems para comparar, algunos contienen descuentos y otros no. No se envían datos de facturación ni pagos.
<bridgeCoreRequest> <operation>invoice</operation> <params> <userName>111</userName> <itemDataList> <value type="map"> <itemExtendedPrice>260.55</itemExtendedPrice> <itemPrice>150.55</itemPrice> <itemBarcode>78</itemBarcode> <itemQty>5.00</itemQty> </value> <value type="map"> <itemExtendedPrice>260.55</itemExtendedPrice> <itemPrice>150.55</itemPrice> <itemBarcode>78</itemBarcode> <customerOrderPriceItemModifierList> <value type="map"> <priceModifierPercent>50.00</priceModifierPercent> <priceModifierNewPrice>150.50</priceModifierNewPrice> <priceModifierPromotionId>22</priceModifierPromotionId> <priceModifierPreviousPrice>301.00</priceModifierPreviousPrice> <priceModifierAmount>150.50</priceModifierAmount> <priceModifierSequenceNumber>1</priceModifierSequenceNumber> <priceModifierReasonCode>Descuento Navidad</priceModifierReasonCode> </value> </customerOrderPriceItemModifierList> <itemQty>5.00</itemQty> </value> </itemDataList> <userPassword>user111</userPassword> <customerOrderNumber>2</customerOrderNumber> <customerOrderVersionNumber>0</customerOrderVersionNumber> <customerOrderTotalAmount>200.00</customerOrderTotalAmount> </params> </bridgeCoreRequest> |
Request 3: no se envían datos de ítems. Por lo tanto, no se debe realizar control de ítems. Se envían solamente pagos y datos de facturación.
<bridgeCoreRequest> <operation>invoice</operation> <params> <receiptAmount>200.00</receiptAmount> <userName>111</userName> <transactionId>1</transactionId> <paymentDataList> <value type="map"> <paymentAmount>100.00</paymentAmount> <paymentId>1</paymentId> </value> <value type="map"> <paymentAmount>50.00</paymentAmount> <paymentId>8</paymentId> </value> </paymentDataList> <documentNumber>102030</documentNumber> <userPassword>user111</userPassword> <customerOrderNumber>2</customerOrderNumber> <customerOrderVersionNumber>0</customerOrderVersionNumber> <receiptDate format="yyyy-MM-dd">2013-12-02</receiptDate> </params> </bridgeCoreRequest> |
Request 4: no se envían datos ni de ítems, ni de pagos, ni de facturación. Tampoco de la versión de la orden (automáticamente se factura la última versión). Lo que debería ocurrir es que se facture la orden de compra y se autocompleten los pagos con en Medio de Pago de Balance, y que el monto sea por el total de la orden de compra.
<bridgeCoreRequest> <operation>invoice</operation> <params> <userName>111</userName> <userPassword>user111</userPassword> <customerOrderNumber>2</customerOrderNumber> </params> </bridgeCoreRequest> |
Response: CustomerOrderRepresentation
8.9.4 Operation: charge
Tipo de operación: PUT
La operación de cobro toma una orden de compra en estado “To Deliver” (“A entregar”) y la cobra.
Parámetros:
- customerOrderNumber: número de orden de compra.
- customerOrderVersionNumber: número de versión de la orden de compra. Si se envía, debe ser el último registrado en el historial de versiones.
- paymentDataList: lista de pagos.
- transactionId: ID de transacción de venta.
- documentNumber: número de documento/factura.
- receiptDate: fecha de documento/factura.
- receiptAmount: monto del documento/factura.
- username: nombre de usuario.
- userPassword: contraseña.
Nota: todos los atributos remarcados en verde son listas que pueden contener uno o más elementos.
Request 1: Se envían todos los parámetros de cobro.
<bridgeCoreRequest> <operation>charge</operation> <params> <receiptAmount>200.00</receiptAmount> <userName>111</userName> <transactionId>1</transactionId> <paymentDataList> <value type="map"> <paymentAmount>100.00</paymentAmount> <paymentId>1</paymentId> </value> </paymentDataList> <documentNumber>102030</documentNumber> <userPassword>user111</userPassword> <customerOrderNumber>2</customerOrderNumber> <customerOrderVersionNumber>0</customerOrderVersionNumber> <receiptDate format="yyyy-MM-dd">2013-12-02</receiptDate> </params> </bridgeCoreRequest> |
Request 2: No se envían datos de facturación, ni el último número de versión de la orden de compra.
<bridgeCoreRequest> <operation>charge</operation> <params> <userName>111</userName> <paymentDataList> <value type="map"> <paymentAmount>100.00</paymentAmount> <paymentId>1</paymentId> </value> </paymentDataList> <userPassword>user111</userPassword> <customerOrderNumber>2</customerOrderNumber> </params> </bridgeCoreRequest> |
Nota: si el monto de los pagos netos no fuera suficiente para saldar el total de la orden, la orden continuará en el mismo estado “A enviar” hasta que se cumpla dicha condición.
Response: CustomerOrderRepresentation
8.10 Representations
8.10.1 TerminalRepresentation
Paquete: bridge-representations
Response
8.10.2 FindCustomersRepresentation
Paquete: bridge-representations
Response
<bridgeCoreResponse>
<ack>0</ack>
<requestId>82193008-c62e-47ea-966d-e6a4aa10d51d</requestId>
<operationResult class="string">82193008-c62e-47ea-966d-e6a4aa10d51d</operationResult>
<representation class="findCustomersRepresentation">
<customersData>
<customerData>
<customerId>1</customerId>
<partyId>1</partyId>
<identifications>
<partyIdentificationData>
<type>Documento de identidad</type>
<number>31554877</number>
</partyIdentificationData>
<partyIdentificationData>
<type>Pasaporte</type>
<number>31554877</number>
</partyIdentificationData>
</identifications>
<roles>
<partyRoleData>
<name>Empleado</name>
<description>Realiza tareas de mantenimiento de hardware</description>
</partyRoleData>
</roles>
<partyType>Pérez, Juan</partyType>
<address>
<id>1</id>
<firstLine>Olascoaga 12</firstLine>
<secondLine>Piso 1 Depto 25</secondLine>
<city>MENDOZA</city>
<state>MENDOZA</state>
</address>
<email>
<id>1</id>
<email>juanperez@yahoo.com.ar</email>
</email>
<telephone>
<id>3</id>
<areaCode>0261</areaCode>
<number>4222555</number>
</telephone>
<taxes>
<taxRegistrationData>
<registrationNumber>123</registrationNumber>
<registrationName>Impuesto</registrationName>
<taxId>1</taxId>
<taxTypeId>8</taxTypeId>
<taxType>Impuesto Interno</taxType>
</taxRegistrationData>
</taxes>
<accounts>
<customerAccountData>
<id>1</id>
<type>LOYALTY</type>
<name>Primer cuenta de Lealtad</name>
<customerIdentityRequired>true</customerIdentityRequired>
<customerIdentityType>Tipo de Identidad</customerIdentityType>
<loyaltyProgramId>1</loyaltyProgramId>
<loyaltyProgram>Primer programa de Lealtad</loyaltyProgram>
<loyaltyCumulativeNetSalesAmount>
<number>1000.00</number>
</loyaltyCumulativeNetSalesAmount>
<cards>
<customerAccountCardData>
<id>1</id>
<number>100646242</number>
</customerAccountCardData>
</cards>
</customerAccountData>
</accounts>
</customerData>
</customersData>
</representation>
</bridgeCoreResponse>
8.10.3 FindItemsRepresentation
Paquete: bridge-representations
Response
8.10.4 AdditionalDataRepresentation
Paquete: bridge-representations
Response
8.10.5 AuthorizationsRepresentation
Paquete: bridge-representations
Response
8.10.6 ReceivedPaymentsReportRepresentation
Paquete: bridge-representations
Response
8.10.7 VtolToScreenRepresentation
Paquete: bridge-business-components
Response
8.10.8 SessionRepresentationTest
Paquete: bridge-core
Response
8.10.9 CustomerOrderRepresentation
Paquete: bridge-core
Response
<?xml version="1.0" encoding="UTF-8" ?>
<bridgeCoreResponse>
<ack>0</ack>
<message></message>
<operationResult class="customerOrderRepresentation">
<customerOrderId>1</customerOrderId>
<customerOrderStateCode>rpck</customerOrderStateCode>
<customerOrderTypeCode>ofp</customerOrderTypeCode>
<customerOrderVersion>0</customerOrderVersion>
<customerOrderControlTransactionLineItems>
<customerOrderLineItemRepresentation>
<itemId>13</itemId>
<itemCode>75001</itemCode>
<itemDescription>Epson C92 printer</itemDescription>
<quantityOrdered>
<number>2.00</number>
</quantityOrdered>
<itemPrice>
<number>260.00</number>
</itemPrice>
<itemExtendedPrice>
<number>520.00</number>
</itemExtendedPrice>
<surcharge>false</surcharge>
<discounts/>
<discountTotal>
<number>0.00</number>
</discountTotal>
<discountAmntTotal>
<number>0.00</number>
</discountAmntTotal>
<discountPerTotal>
<number>0.00</number>
</discountPerTotal>
<discountPromoTotal>
<number>0.00</number>
</discountPromoTotal>
<netValue>
<number>468.24</number>
</netValue>
<priceWithoutVAT>
<number>235.29</number>
</priceWithoutVAT>
<priceIvaAmount>
<number>51.76</number>
</priceIvaAmount>
<totalInternalTaxes>
<number>0.00</number>
</totalInternalTaxes>
<taxDetail>
<taxDetail>
<taxType>VAT</taxType>
<typeCode>Sale</typeCode>
<taxAuthority>IVA 10.5%</taxAuthority>
<taxableAmount>
<number>468.2351</number>
</taxableAmount>
<taxIncludedInTaxableAmountFlag>true</taxIncludedInTaxableAmountFlag>
<amount>
<number>51.7649</number>
</amount>
<taxablePercentage>
<number>10.50</number>
</taxablePercentage>
<MagnitudTax>
<number>0</number>
</MagnitudTax>
</taxDetail>
</taxDetail>
<isReturned>false</isReturned>
<isVoid>false</isVoid>
<voidedQuantity reference="../taxDetail/taxDetail/MagnitudTax"/>
</customerOrderLineItemRepresentation>
<customerOrderLineItemRepresentation>
<itemId>11</itemId>
<itemCode>89001</itemCode>
<itemDescription>Wii Console</itemDescription>
<quantityOrdered>
<number>1</number>
</quantityOrdered>
<itemPrice>
<number>460.55</number>
</itemPrice>
<itemExtendedPrice>
<number>460.55</number>
</itemExtendedPrice>
<surcharge>false</surcharge>
<discounts/>
<discountTotal>
<number>0.00</number>
</discountTotal>
<discountAmntTotal>
<number>0.00</number>
</discountAmntTotal>
<discountPerTotal>
<number>0.00</number>
</discountPerTotal>
<discountPromoTotal>
<number>0.00</number>
</discountPromoTotal>
<netValue>
<number>380.62</number>
</netValue>
<priceWithoutVAT>
<number>380.62</number>
</priceWithoutVAT>
<priceIvaAmount>
<number>79.93</number>
</priceIvaAmount>
<totalInternalTaxes>
<number>0.00</number>
</totalInternalTaxes>
<taxDetail>
<taxDetail>
<taxType>VAT</taxType>
<typeCode>Sale</typeCode>
<taxAuthority>IVA 21%</taxAuthority>
<taxableAmount>
<number>380.6198</number>
</taxableAmount>
<taxIncludedInTaxableAmountFlag>true</taxIncludedInTaxableAmountFlag>
<amount>
<number>79.9302</number>
</amount>
<taxablePercentage>
<number>21.00</number>
</taxablePercentage>
<MagnitudTax reference="../../../../customerOrderLineItemRepresentation/taxDetail/taxDetail/MagnitudTax"/>
</taxDetail>
</taxDetail>
<isReturned>false</isReturned>
<isVoid>false</isVoid>
<voidedQuantity reference="../../customerOrderLineItemRepresentation/taxDetail/taxDetail/MagnitudTax"/>
</customerOrderLineItemRepresentation>
<customerOrderLineItemRepresentation>
<itemId>8</itemId>
<itemCode>20001</itemCode>
<itemDescription>GH Aerosmith for PS3</itemDescription>
<quantityOrdered reference="../../customerOrderLineItemRepresentation[2]/quantityOrdered"/>
<itemPrice>
<number>60.00</number>
</itemPrice>
<itemExtendedPrice>
<number>60.00</number>
</itemExtendedPrice>
<surcharge>false</surcharge>
<discounts/>
<discountTotal>
<number>0.00</number>
</discountTotal>
<discountAmntTotal>
<number>0.00</number>
</discountAmntTotal>
<discountPerTotal>
<number>0.00</number>
</discountPerTotal>
<discountPromoTotal>
<number>0.00</number>
</discountPromoTotal>
<netValue>
<number>49.59</number>
</netValue>
<priceWithoutVAT>
<number>49.59</number>
</priceWithoutVAT>
<priceIvaAmount>
<number>10.41</number>
</priceIvaAmount>
<totalInternalTaxes>
<number>0.00</number>
</totalInternalTaxes>
<taxDetail>
<taxDetail>
<taxType>VAT</taxType>
<typeCode>Sale</typeCode>
<taxAuthority>IVA 21%</taxAuthority>
<taxableAmount>
<number>49.5861</number>
</taxableAmount>
<taxIncludedInTaxableAmountFlag>true</taxIncludedInTaxableAmountFlag>
<amount>
<number>10.4139</number>
</amount>
<taxablePercentage reference="../../../../customerOrderLineItemRepresentation[2]/taxDetail/taxDetail/taxablePercentage"/>
<MagnitudTax reference="../../../../customerOrderLineItemRepresentation/taxDetail/taxDetail/MagnitudTax"/>
</taxDetail>
</taxDetail>
<isReturned>false</isReturned>
<isVoid>false</isVoid>
<voidedQuantity reference="../../customerOrderLineItemRepresentation/taxDetail/taxDetail/MagnitudTax"/>
</customerOrderLineItemRepresentation>
<customerOrderLineItemRepresentation>
<itemId>9</itemId>
<itemCode>1</itemCode>
<itemDescription>GTA 4 for PS3</itemDescription>
<quantityOrdered reference="../../customerOrderLineItemRepresentation[2]/quantityOrdered"/>
<itemPrice>
<number>53.99</number>
</itemPrice>
<itemExtendedPrice>
<number>53.99</number>
</itemExtendedPrice>
<surcharge>false</surcharge>
<discounts/>
<discountTotal>
<number>0.00</number>
</discountTotal>
<discountAmntTotal>
<number>0.00</number>
</discountAmntTotal>
<discountPerTotal>
<number>0.00</number>
</discountPerTotal>
<discountPromoTotal>
<number>0.00</number>
</discountPromoTotal>
<netValue>
<number>44.62</number>
</netValue>
<priceWithoutVAT>
<number>44.62</number>
</priceWithoutVAT>
<priceIvaAmount>
<number>9.37</number>
</priceIvaAmount>
<totalInternalTaxes>
<number>0.00</number>
</totalInternalTaxes>
<taxDetail>
<taxDetail>
<taxType>VAT</taxType>
<typeCode>Sale</typeCode>
<taxAuthority>IVA 21%</taxAuthority>
<taxableAmount>
<number>44.6198</number>
</taxableAmount>
<taxIncludedInTaxableAmountFlag>true</taxIncludedInTaxableAmountFlag>
<amount>
<number>9.3702</number>
</amount>
<taxablePercentage reference="../../../../customerOrderLineItemRepresentation[2]/taxDetail/taxDetail/taxablePercentage"/>
<MagnitudTax reference="../../../../customerOrderLineItemRepresentation/taxDetail/taxDetail/MagnitudTax"/>
</taxDetail>
</taxDetail>
<isReturned>false</isReturned>
<isVoid>false</isVoid>
<voidedQuantity reference="../../customerOrderLineItemRepresentation/taxDetail/taxDetail/MagnitudTax"/>
</customerOrderLineItemRepresentation>
</customerOrderControlTransactionLineItems>
<creationDate>2013-11-06 08:58:02.59 ACT</creationDate>
<retirementStoreCode>1</retirementStoreCode>
<contactPerson>Alfredo Perez</contactPerson>
<updateDate>2013-11-06 08:58:02.59 ACT</updateDate>
<discountsItemsTotal>
<number>0.00</number>
</discountsItemsTotal>
<subtotal>
<number>1094.54</number>
</subtotal>
<discountableSubtotal>
<number>1094.54</number>
</discountableSubtotal>
<total>
<number>1094.54</number>
</total>
<totalBalance reference="../total"/>
<ivaPerception>
<number>0.00</number>
</ivaPerception>
<iBPerception>
<number>0.00</number>
</iBPerception>
<discounts/>
<promoDiscountTotal>
<number>0.00</number>
</promoDiscountTotal>
<discountsTransactionTotal>
<number>0.00</number>
</discountsTransactionTotal>
<miscelaneos>
<number>0.00</number>
</miscelaneos>
<positiveGross>
<number>1094.54</number>
</positiveGross>
<negativeGross>
<number>0.00</number>
</negativeGross>
<ivaTotal>
<number>151.48</number>
</ivaTotal>
<internalTaxesTotal>
<number>0.00</number>
</internalTaxesTotal>
<unSoldItems/>
<configuredPaymentPlans/>
<totalLoyaltyBenefits>
<number>0.00</number>
</totalLoyaltyBenefits>
<promoPaymentPlans/>
<promoGifts/>
</operationResult>
</bridgeCoreResponse>
8.10.10 FindCustomerOrdersRepresentation
Paquete: bridge-core
Response: respuesta detallada
<?xml version="1.0" encoding="UTF-8" ?>
<bridgeCoreResponse>
<ack>0</ack>
<message></message>
<operationResult class="findCustomerOrdersRepresentation">
<customerOrdersData>
<customerOrderData>
<customerOrderId>1</customerOrderId>
<creationDate class="timestamp">2013-12-05 01:26:55.84</creationDate>
<estimatedAvailabilityDate class="timestamp">2013-12-06 00:00:00.0</estimatedAvailabilityDate>
<customerFullname>Juan Pérez</customerFullname>
<typeData>
<id>1</id>
<customerOrderTypeCode>ofd</customerOrderTypeCode>
<name>Order for Delivery</name>
</typeData>
<stateData>
<id>1</id>
<customerOrderStateCode>rpck</customerOrderStateCode>
<name>Ready for picking</name>
</stateData>
<deliveryData>
<contactPerson>Alfredo Perez</contactPerson>
<shipmentAddress>25 de Mayo 1100</shipmentAddress>
<additionalDeliveryInformation>Entre Pedro Molina y Colon</additionalDeliveryInformation>
<shipmentPrice>
<number>25.0</number>
</shipmentPrice>
</deliveryData>
<itemDataList>
<customerOrderItemData>
<code>75001</code>
<description>Epson C92 printer</description>
<orderedQuantity>
<number>2.00</number>
</orderedQuantity>
<unitPrice>
<number>260.0</number>
</unitPrice>
<extendedPrice>
<number>520.0</number>
</extendedPrice>
</customerOrderItemData>
<customerOrderItemData>
<code>89001</code>
<description>Wii Console</description>
<orderedQuantity>
<number>1.00</number>
</orderedQuantity>
<unitPrice>
<number>460.55</number>
</unitPrice>
<extendedPrice>
<number>460.55</number>
</extendedPrice>
</customerOrderItemData>
<customerOrderItemData>
<code>20001</code>
<description>GH Aerosmith for PS3</description>
<orderedQuantity>
<number>1.00</number>
</orderedQuantity>
<unitPrice>
<number>60.0</number>
</unitPrice>
<extendedPrice>
<number>60.0</number>
</extendedPrice>
</customerOrderItemData>
<customerOrderItemData>
<code>1</code>
<description>GTA 4 for PS3</description>
<orderedQuantity>
<number>1.00</number>
</orderedQuantity>
<unitPrice>
<number>53.99</number>
</unitPrice>
<extendedPrice>
<number>53.99</number>
</extendedPrice>
</customerOrderItemData>
</itemDataList>
<lastVersionNumber>0</lastVersionNumber>
</customerOrderData>
</customerOrdersData>
</operationResult>
</bridgeCoreResponse>
Response: respuesta resumida
<?xml version="1.0" encoding="UTF-8" ?> <bridgeCoreResponse> <ack>0</ack> <message></message> <operationResult class="findCustomerOrdersRepresentation"> <customerOrdersData> <customerOrderData> <customerOrderId>1</customerOrderId> <creationDate class="timestamp">2013-12-05 01:26:55.84</creationDate> <estimatedAvailabilityDate class="timestamp">2013-12-06 00:00:00.0</estimatedAvailabilityDate> <customerFullname>Juan Pérez</customerFullname> <totalAmount> <number>1094.54</number> </totalAmount> <typeData> <id>1</id> <customerOrderTypeCode>ofd</customerOrderTypeCode> <name>Order for Delivery</name> </typeData> <stateData> <id>1</id> <customerOrderStateCode>rpck</customerOrderStateCode> <name>Ready for picking</name> </stateData> <lastVersionNumber>0</lastVersionNumber> </customerOrderData> </customerOrdersData> </operationResult> </bridgeCoreResponse> |
OrderRepresentation
Paquete: bridge-sample-mcking
Response