Revisiones
Fecha | Versión | Descripción | Autor |
---|---|---|---|
| 1.1 | Se agregan campos: priceListId y datos del contacto del cliente, | |
| 1.2 | Se agrega datos de envío |
Introducción
Transacciones de venta, devolución o cambio - sale, return o exchange
Este servicio posee la descripción de la transacción que es generada ante cada operación de venta, cambio o devolución.
Se exporta a colas RabbitMQ y lo que se postea, posee formato JSON.
Configuración
- La habilitación del envío de este tipo de transacción se podrán configurar desde Configuración/colas de exportación
Monitor de exportaciones
- La exportación se podrá consultar desde el menú Monitoreo/Monitor de exportaciones
JSON de ejemplo
Se adjuntan al post, diferentes ejemplos de transacciones en formato JSON a modo de referencia
# | Descripción | JSON ejemplo |
---|---|---|
1 |
| |
2 |
| |
3 |
| |
4 |
| |
5 |
| |
6 |
| |
7 |
| |
8 |
| |
9 |
|
Detalle de los campos de una transactionRetail
Campo | Tipo | Descripción |
---|---|---|
trxType | string | El tipo de transacción, pueden ser los valores 'Sale', 'Return' o 'Exchange' El tipo de transacción, pueden ser los valores 'Sale' (venta, remitos ticket car), 'Return' (devolución, anulación remitors ticket car), 'Exchange' (cambio de un item por otro item), 'BillShipmentDocument' (facturación de remitos de ticket car), 'ReturnShipmentDocument' (devolución de facturación de remitos de ticket car), 'VoidShipmentDocument' (anulación de remito ticket car) |
trxNumber | number | Numero de transacción de la terminal |
originalTrxNumber | number | En caso de devoluciones, es requerido el numero original de la transacción |
originalStoreCode | string | En caso de devoluciones, código de la tienda de la transacción original |
originalTerminalCode | string | En caso de devoluciones, número de la terminal de la transacción original |
trxTypeLang | string | Es el tipo de la transacción, en español, Venta, Devolución o Cambio |
companyCode | string | Código de compañía |
companyName | string | Nombre de la compañía |
storeCode | string | Código de la tienda |
storeName | string | Nombre de la tienda |
terminalCode | string | Código de la terminal |
periodNumber | number | Numero de período |
sbPeriodNumber | number | Número de turno |
businessDayDate | Date | Dia fiscal |
beginDateTime | Date | Fecha de inicio de la transacción Formato: 2021-08-18T11:34:29.829Z |
endDateTime | Date | Fecha de fin de la transacción Formato: 2021-08-18T11:34:29.829Z |
beginDateTimeAsInt | number | Fecha de inicio de la transacción, como entero |
beginDateTimeHour | number | Fecha de fin de la transacción, como entero |
operatorCode | string | Código de operador o cajero |
operatorName | string | Nombre del operador |
itemCount | number | Cantidad de items de la venta (suma de tag quantity. Si el item es voiding = true, resta) |
grossAmount | number | Monto bruto, con impuestos incluidos (IVA e impuestos internos), sin percepciones NO se restan los descuentos que la transacción pudiera tener. |
taxAmount | number | Importe de impuestos (IVA, impuestos internos y percepciones) |
promoDiscountAmount | number | Descuentos otorgados por promociones generales |
manualDiscountAmount | number | Descuentos otorgados por descuentos manuales tanto de item como de transacción con impuestos incluidos (IVA e impuestos internos) |
trainingModeFlag | boolean | Si es modo entrenamiento |
suspendedFlag | boolean | Si es una transacción suspendida |
cancelFlag | boolean | Si es una transacción cancelada |
offlineFlag | boolean | Si es una transacción offline |
contingencyFlag | boolean | Si es una transacción cargada en contingencia |
voidedFlag | boolean | Indica si la transacción fue anulada. No utilizado en Bridge |
nccProcessedFlag | boolean | Indica si el medio de pago utilizado en la transacción fue Nota de Crédito (funcionalidad propia de Bridge) |
netSalesAmount | number | Monto neto de descuentos de la transacción (grossAmount + perceptionAmount - discounts) |
returnAmount | number | Monto de la devolución, para el caso de los cambios |
grossPositiveAmount | number | Monto positivo de la venta (productos) |
grossNegativeAmount | number | Monto negativo de la venta (descuentos) 1- descuentos 2- productos anulados (voiding=true) 3- item de extra cash y de redondeo (returned=true) Monto de la devolución (productos) |
ivaTaxAmount | number | Impuesto al valor agregado (VAT) |
internalTaxAmount | number | Impuestos internos (TAX) |
perceptionAmount | number | Importe de percepciones (impuesto a clientes de Argentina) |
transactionDiscountAmount | number | Importe general de descuentos de la transacción (descuentos por promociones + descuentos manuales) – sólo los que son a nivel transacción |
iva0Amount | number | Monto imponible de la venta con impuestos al 0% (solo Argentina) |
iva21Amount | number | Monto imponible de la venta con impuestos al 21% (solo Argentina) |
iva10Amount | number | Monto imponible de la venta con impuestos al 10% (solo Argentina) |
iva27Amount | number | Monto imponible de la venta con impuestos al 27% (solo Argentina) |
fiscalPosNumber | string | Número de centro emisor para emisión de factura electrónica |
billType | string | Tipo de comprobante, las opciones son FC A, FC B, NC A, NC B |
serieOfficialBill | string | A o B de acuerdo a si es un comprobante a responsable inscripto o no |
billNumber | string | Numero fe factura electrónica o comprobante fiscal |
fiscalCAENumber | string | Número de autorización de factura electrónica |
fiscalCAEDate | Date | Fecha de autorización de factura electrónica |
currentZNumber | number | Número de Z fiscal |
currencyDescription | string | Descripción de la moneda de la operación |
originalSerieOfficialBill | string | En caso de ser una nota de crédito, referencia a la factura original (serie del documento) |
originalFiscalPOSNumber | string | En caso de ser una nota de crédito, referencia a la factura original (nro de punto de venta fiscal) |
originalBillNumber | string | En caso de ser una nota de crédito, referencia a la factura original (nro de documento) |
originalBillType | string | En caso de ser una nota de crédito, referencia a la factura original (tipo de documento) |
hasCustomer | boolean | Si posee un cliente asociado o no |
denomination | string | El nombre del cliente, en caso de poseer uno asociado |
partyCode | string | El código del cliente, generalmente es su identificación |
partyTaxCategory | string | La categoría impositiva del cliente, puede ser CF (Consumidor Final) o RI (Responsable Inscripto) |
partyType | string | Si es persona PRS o Organización OGN |
partyFirstName | string | Primer nombre del cliente |
partyLastName | string | Apellido del cliente |
partyPerson | boolean | Si es una persona |
partyOrganization | boolean | Si es una organización |
partyIdentificationType | string | Tipo de identificación. 1 DNI 2 Pasaporte 3 CUIT 4 CUIL |
partyIdentificationNumber | string | Numero de identificación |
"partyAddressFirstLine":"Av. Casa 1234", "partyAddressCity":"Florida", "partyAddressCityCode":"BSAS_182", "partyAddressState":"BUENOS AIRES", "partyAddressStateCode":"BSAS", "partyAddressCountry":"Argentina", "partyAddressCountryCode":"ARG", | string | Datos de contacto del cliente "partyAddressFirstLine": Dirección "partyAddressCity": Ciudad "partyAddressCityCode": Código de la ciudad "partyAddressState": Provincia o estado "partyAddressStateCode": Código de la provincia o estado "partyAddressCountry": País "partyAddressCountryCode": Código del país |
"partyEmail":"[email protected]", "partyTelephone":"54-11-123456789", | Teléfono | |
promoCouponLoyalty [ { barcode barcodeFormat format linesToPrint promotionID benefitID type } ] | lista | Cupones del módulo de fidelidad
|
manualDiscounts [ { discount customerDiscount typeCode discountEntryMethod percent type promo voiding voidFlag baseAmount customerBaseAmount reasonCode benefitApplicationMethodResume benefitApplicationMethodLineByLine } ] | lista | Descuentos manuales a la transacción
|
cfeTipoDocRef | number | Tipo de comprobante codificado por DGI Uruguay |
cfeSerie | string | Serie del comprobante (Uruguay) |
cfeNroRef | string | Numero de comprobante (Uruguay) |
cfeFechaRef | date | Fecha de emisión (Uruguay) |
originalCfeTipoDocRef | number | Sólo en devoluciones, tipo de comprobante codificado por DGI Uruguay de la venta original (Uruguay) |
originalCfeSerie | string | Sólo en devoluciones, serie del comprobante de la venta original (Uruguay) |
originalCfeNroRef | string | Sólo en devoluciones, número de comprobante de la venta original (Uruguay) |
originalCfeFechaRef | date | Sólo en devoluciones, fecha de emisión de la venta original (Uruguay) |
baseCurrencyCode | string | Código ISO de la moneda base |
foreignCurrencySellingQuote | number | Cotización de la moneda (aplica si fue facturado en moneda extranjera) |
invoiceCurrencyCode | string | Código ISO de la moneda de facturación (aplica si fue facturado en moneda extranjera) |
"foreignCurrencyInfo": { | lista campos tipo number | Lista de los campos en moneda original de facturación (aplica si fue facturado en moneda extranjera) foreignCurrencyInfo: Información en moneda extranjera de la transacción
|
billTotalAmount | number | Monto total de la transacción |
events | lista | Lista de eventos de Promo |
"shipment" : { "contactMethodType" : "1137747274", "firstLine" : "Freire", "city" : "Capital Federal", "cityCode" : "CABA_000", "state" : "CIUDAD AUTONOMA DE BUENOS AIRES", "stateCode" : "CABA", "country" : "Argentina", "codeCountry" : "ARG", "postalCode" : "1426", "emailAddress" : "[email protected]", "countryCode" : "54", "areaCode" : "11", "telephoneNumber" : "11111111" }, | Datos de envío a domicilio o retiro en otra tienda/punto de retiro
Ejemplo de retiro en tienda "shipment" : { | |
Items | ||
trxType | string | Se repite el mismo dato que la cabecera |
trxNumber | number | Se repite el mismo dato que la cabecera |
storeName | string | Se repite el mismo dato que la cabecera |
storeCode | string | Se repite el mismo dato que la cabecera |
terminalCode | string | Se repite el mismo dato que la cabecera |
periodNumber | number | Se repite el mismo dato que la cabecera |
sbPeriodNumber | number | Se repite el mismo dato que la cabecera |
beginDateTime | Date | Se repite el mismo dato que la cabecera |
beginDateTimeAsInt | number | Se repite el mismo dato que la cabecera |
beginDateTimeHour | number | Se repite el mismo dato que la cabecera |
operatorCode | string | Se repite el mismo dato que la cabecera |
operatorName | string | Se repite el mismo dato que la cabecera |
sequenceNumber | string | Número de secuencia de ingreso dentro de la operación, asignado por el punto de venta |
internalCode | string | Código del producto. Debe ser un SKU existente en Bridge. Consultar catálogo de maestros. |
description | string | Descripción del producto |
barcode | string | Código de barras del item (si fue ingresado por este código) |
merchandiseHierarchyGroupCode | string | Código de grupo de la estructura jerárquica |
merchandiseHierarchyGroupName | string | Nombre del grupo de la estructura jerárquica |
unitPrice | number | Precio unitario del producto |
quantity | number | Cantidad vendida Cuando el item tiene unidad de medida es fraccionable, entonces la cantidad por defecto es 1 |
units | number | Unidad de venta del código de barras (por defecto es 1). Cuando la unidad de medida es fraccionable, se informa la magnitud (litros, kilos, gramos, etc) vendidos |
unitOfMeasureCode | string | Código de unidad de medida del artículo |
unitOfMeasureDecimals | number | Cantidad de decimales de la unidad de medida del artículo |
extendedPrice | number | Precio total del producto (precio unitario x cantidad) Precio total del producto con descuentos aplicados. Incluye impuestos. Unidad de medida no es fraccionable (property packagePrice = true):
Unidad de medida no es fraccionable (property packagePrice = false):
Unidad de medida fraccionable (nota: no se admite cantidad en un articulo fraccionable)
Nota: el campo Units trae la cantidad de artículos del código de barras en un artículo no fraccionable y la magnitud en un artículo fraccionable |
netAmount | number | Importe final o neto del producto Es igual a la base imponible para el cálculo del IVA (es igual al campo taxableAmount dentro del taxType = VAT dentro del array TaxDetail) |
voiding | boolean | voiding = true indica que la cantidad se resta de la transacción. Es un lineItem de anulación (ver ejemplo en anexo) |
voidFlag | boolean | voidFlag = true sólo cuando el artículo original está anulado por completo |
returned | boolean | En true cuando el item se está devolviendo (si la transacción es una venta, false / si la transacción es una devolución, true / si la transacción es un cambio, true para el artículo que se devuelve, y false para el nuevo artículo que el cliente se lleva) También está en true cuando se trata de un item de ExtraCash o de Redondeo |
trainingModeFlag | boolean | Se repite el mismo dato que la cabecera |
suspendedFlag | boolean | Se repite el mismo dato que la cabecera |
cancelFlag | boolean | Se repite el mismo dato que la cabecera |
locationCode | string | Código de almacén desde donde el producto sale |
sellerCode | string | Código del vendedor del ítem |
promoDiscountAmount | number | Descuento otorgado por promociones |
manualDiscountAmount | number | Descuentos manuales sobre el producto |
prorratedTxDiscount | number | Monto de descuento a la transacción prorrateado para el item |
ivaType { id code description percentage disabled } | object | ivaType: Tipo de iva
|
taxDetail [{ taxType typeCode taxAuthority taxableAmount taxIncludedInTaxableAmountFlag originalAmount amount taxablePercentage unifiedFactor magnitudeTax foreignCurrencyInfo { }] | lista | taxDetail: Detalle de impuestos (aplica a iva, percepciones de ingresos brutos IIBB o IVA o impuestos internos, lista)
En el caso de Argentina, también puede venir el desglos de percepciones que aplique sobre el item (como taxType: IIBB) |
"itemTicketStockInformationList": [{ "inventoryReservationCode": "R1387810541609070117ded4c435b0a36743", "storeCode": "T1", "locationCode": "DEP1", "locationErpCode": "7391", "revenueCenterCode": "RCD", "itemInventoryStateCode": "OnSale", "quantity": 1, "serializedUnit": "000000000010000467", "serialNumber": "000000000000000006", "voidedFlag": false } ], | lista | itemTicketStockInformationList: Detalle de movimiento de stock del ítem (aplica a los ítems del tipo stockItem)
|
"foreignCurrencyInfo": { | lista | foreignCurrencyInfo: información en moneda extranjera del item (aplica si fue facturado en moneda extranjera)
|
billTotalAmount | number | Monto total de la transacción |
vatTotal | number | Monto del iva correspondiente al item |
taxTotal | number | Monto de los impuestos internos que corresponden al item |
perceptionTotal | number | Monto de percepciones que corresponden al item |
giftCardNumber | string | Nro de tarjeta giftCard (vendida o a recargar) |
giftCardBalance | number | Saldo de la Gift Card |
giftCardRechargeAmount | number | Monto de la recarga |
priceListId | string | Nro de lista de precios |
Payments [ ] (Medios de Pago) | ||
trxType | string | Se repite el mismo dato que la cabecera |
trxNumber | number | Se repite el mismo dato que la cabecera |
storeName | string | Se repite el mismo dato que la cabecera |
storeCode | string | Se repite el mismo dato que la cabecera |
terminalCode | string | Se repite el mismo dato que la cabecera |
periodNumber | number | Se repite el mismo dato que la cabecera |
sbPeriodNumber | number | Se repite el mismo dato que la cabecera |
beginDateTime:Date, | Date | Se repite el mismo dato que la cabecera |
beginDateTimeAsInt | number | Se repite el mismo dato que la cabecera |
beginDateTimeHour | number | Se repite el mismo dato que la cabecera |
operatorCode | string | Se repite el mismo dato que la cabecera |
operatorName | string | Se repite el mismo dato que la cabecera |
tenderName | string | Nombre del medio de pago |
tenderType {
} | lista |
|
amount | number | Monto del medio de pago |
change | number | Cambio (en caso de ser efectivo) |
surcharge | number | Recargo (para casos como tarjetas) |
voided | boolean | Si fue anulado |
voiding | boolean | Si fue anulado |
netAmount | number | Monto neto del pago |
trainingModeFlag | boolean | Se repite el mismo dato que la cabecera |
suspendedFlag | boolean | Se repite el mismo dato que la cabecera |
cancelFlag | boolean | Se repite el mismo dato que la cabecera |
fiscalPosNumber | string | Numero de centro emisor |
billType | string | Tipo de comprobante, las opciones son FC A, FC B, NC A, NC B |
serieOfficialBill | string | A o B de acuerdo a si es un comprobante a responsable inscripto o no |
billNumber | string | Numero fe factura electrónica |
foreignCurrencyQuote | number | |
foreignAmount | number | Monto en moneda extranjera |
foreignChange | number | Cambio de la moneda extranjera |
currencyISOCode | string | Código de la moneda |
card | boolean | Código de tarjeta |
externalId | string | |
vtolStore | string | Código de tienda de VTOL |
vtolTerminal | string | Código de terminal de VTOL |
cardNumber | string | Número de tarjeta enmascarado |
cardType | string | Tipo de tarjeta |
lotNumber | string | Número de lote |
referenceNumber | string | Número de referencia |
provider | string | Autorizador |
planDescriptor | string | Plan de pagos |
sellerName | string | Código de comercio |
cardAuthorizationCode | string | Código de autorización de la tarjeta |
cardCouponNumber | string | Número de cupón de la tarjeta |
cardLotNumber | string | Número de lote de la tarjeta |
installments | string | Cantidad de cuotas |
cardReferenceNumber | string | Código de referencia de la tarjeta |
"foreignCurrencyInfo": { | lista | foreignCurrencyInfo: información en moneda extranjera del pago (aplica si es un pago en moneda extranjera)
|
MEDIO DE PAGO TIPO CASH additionalData {
| lista |
|
MEDIO DE PAGO TIPO CARD additionalData {
| lista |
|
MEDIO DE PAGO TIPO WALLET (billetera) additionalData {
| lista |
|
Discounts [ ] (Descuentos y promociones al item) | ||
sequenceNumber | number | Secuencia del item al que aplica |
barcode | string | barcode del item sobre el que aplica |
trxType | string | Se repite el mismo dato que la cabecera |
trxNumber | number | Se repite el mismo dato que la cabecera |
storeName | string | Se repite el mismo dato que la cabecera |
storeCode | string | Se repite el mismo dato que la cabecera |
terminalCode | string | Se repite el mismo dato que la cabecera |
periodNumber | number | Se repite el mismo dato que la cabecera |
sbPeriodNumber | number | Se repite el mismo dato que la cabecera |
beginDateTime | Date | Se repite el mismo dato que la cabecera |
beginDateTimeAsInt | number | Se repite el mismo dato que la cabecera |
beginDateTimeHour | number | Se repite el mismo dato que la cabecera |
operatorCode | string | Se repite el mismo dato que la cabecera |
operatorName | string | Se repite el mismo dato que la cabecera |
internalCode | string | Código interno del producto sobre el que aplica el descuento manual o por promoción |
description | string | Descripción del producto |
promoCode | string | Código interno de la promoción – solo si es por promoción (no para descuento manual) |
promoDescription | string | Descripción de la promoción – solo si es por promoción (no para descuento manual) |
benefitClass | string | Clase de beneficio (monetary: monetario) |
benefitValue | number | Valor del beneficio, por ejemplo, el porcentaje de descuento |
benefitPercent | number | Porcentaje del descuento |
previousPrice | number | Precio previo al descuento |
cancelFlag | boolean | Se repite el mismo dato que la cabecera |
message | string | Mensaje definido en la promoción – solo si es por promoción (no para descuento manual) |
reason | string | Código del motivo del descuento |
type | string | tipo de descuento o beneficio |
action | string | si suma o resta (SB= resta, AD=suma) |
promotionNumber | string | nro de promoción – solo si es por promoción (no para descuento manual) |
benefitNumber | string | nro de beneficio – solo si es por promoción (no para descuento manual) |
"foreignCurrencyInfo": { | lista | foreignCurrencyInfo: información en moneda extranjera del descuento (aplica si fue una factura en moneda extranjera)
|
Particularidades de cuenta corriente
deliveryDocumentsList [{
} ] | lista | Lista de remitos facturados. unicamente disponible en transacción del tipo BillShipmentDocument
|
ANEXO items anulados parcial o totalmente
Ticket | JSON de exportación | JSON transaction | |
---|---|---|---|
Anulación parcial | Se venden 10 unidades "description" : "AR HEL BARRITA AGUILA 49G", "quantity" : 10, "voiding" : false, "voidFlag" : false, "voidedQuantity" : 3, Se anulan 3 (parcial) "description" : "AR HEL BARRITA AGUILA 49G", "quantity" : 3, "voidFlag" : false, "voiding" : true, | ||
Anulación total | Se venden 10 unidades "description" : "AR HEL BARRITA AGUILA 49G", "quantity" : 10, "voiding" : false, "voidedQuantity" : 10, "voidFlag" : true, Se anulan las 10 (total) "description" : "AR HEL BARRITA AGUILA 49G", "quantity" : 10, "voiding" : true, "voidedQuantity" : 0, "voidFlag" : false, |