Pagos con Tarjetas Online
Cómo vincular ventas y cobros de cuenta corriente con los datos operativos de la tarjeta, su autorización y sus anulaciones, sin exponer información sensible.
Alcance
La configuración parte del maestro dM_DMdeP. Las ventas se registran en dE_DDMP, los cobros de cuenta corriente en dE_CoPa y el procesamiento común de tarjeta en dE_Cards. El RI permite obtener una relación 1:1 en ambos circuitos.
dM_DMdeP.bDeshabil = 0 identifica un medio habilitado. Su estado debe mantenerse alineado con las bandas/BIN y el emisor disponible en UltraHost_EPS.Del origen a la autorización
uId = 6cComprobante = RIiNroX_Card| Tabla origen | Operación | Relación principal | Uso de lTicket |
|---|---|---|---|
dE_DDMP | Pago con tarjeta online de una venta | cComprobante = iNroX_Card | Sí, como control adicional |
dE_CoPa | Cobro de cuenta corriente con tarjeta online | cComprobante = iNroX_Card | No: los valores no son equivalentes |
dE_Cards | Pago o anulación de tarjeta | iOpCode e iNroX_CardOri | No determina el origen |
iAutMode permanece como dato técnico de autorización y no se utiliza para distinguir venta de cuenta corriente.Relación entre dE_DDMP y dE_Cards
El RI identifica en forma unívoca la operación de tarjeta: se guarda en dE_DDMP.cComprobante y corresponde a dE_Cards.iNroX_Card. Los demás campos se utilizan como contexto y controles de consistencia.
cDescripcion queda como dato informativo y no forma parte de la clave.Consulta para ventas normales
El filtro del ejemplo identifica un ticket concreto. Cambiá sucursal, POS y cierre Z según el caso que necesites analizar.
LTRIM/RTRIM y CONVERT(varchar, ...). De esta manera la consulta funciona en versiones anteriores a SQL Server 2012 y no depende de TRY_CONVERT.WITH PagosTarjetaOnline AS ( SELECT * FROM dbo.dE_DDMP WHERE iNroSuc = 55 AND iNroPos = 1 AND iNroZ = 20260785 AND uId = 6 ) SELECT m.iNroSuc, m.iNroPos, m.iNroZ, m.lTicket, m.cComprobante, m.cDescripcion, m.dImporte, m.cCliente, m.cBarCode, m.cPlan, t.cDocumento, t.cTelefono, t.iNroCupon, t.lTrace, t.cAutorizacion, t.iNroX_Card, t.iOpCode, t.iLote, t.cTerminal, t.cComercio, t.iEsAnulacion, t.iSqlId FROM PagosTarjetaOnline m LEFT JOIN dbo.dE_Cards t ON m.iNroSuc = t.iNroSuc AND m.iNroPos = t.iNroPos AND m.iNroZ = t.iNroZ AND m.lTicket = t.lTicket AND m.uId = t.uId AND m.uIdId = t.uIdId AND LTRIM(RTRIM(m.cComprobante)) = CONVERT(varchar(30), t.iNroX_Card) AND ABS(CAST(m.dImporte AS decimal(18,4)) - CAST(t.dImporte AS decimal(18,4))) < 0.01 AND t.iOpCode = 1 ORDER BY m.lTicket, m.iId;
Resultado explicado
El resultado verificado confirma la relación por RI. Para documentarlo se conservan únicamente datos operativos y se excluyen documento, teléfono y número de tarjeta.
| Ticket | RI | Medio | Importe | Cupón | iOpCode |
|---|---|---|---|---|---|
| 10742 | 655 | MASTERCARD | 35000.00 | 477 | 1 · Pago |
| 10742 | 656 | MC-BANCOR | 27140.46 | 478 | 1 · Pago |
dE_DDMP.cComprobante coincide con dE_Cards.iNroX_Card. El resultado también confirma que un mismo ticket puede contener más de un pago y que cada operación se distingue por su propio RI. Como cComprobante puede incluir espacios de relleno, la consulta aplica LTRIM/RTRIM.LEFT JOIN, si no existe coincidencia en dE_Cards el pago igualmente aparece y las columnas de autorización quedan en NULL. Esto facilita detectar operaciones incompletas o pendientes de análisis.Cobros de cuenta corriente con tarjeta online
En estos cobros, dE_CoPa.cComprobante contiene el RI de dE_Cards.iNroX_Card. lTicket no se utiliza porque los números internos de ambas tablas pueden ser distintos.
dE_CoPa.lTicket fue 300 y dE_Cards.lTicket fue 680. La autorización y iSqlId quedaron informados correctamente. Aunque el registro tenía iAutMode = 2, el origen se determinó por dE_CoPa.La consulta utiliza el mismo patrón WITH y el mismo alcance operativo del ejemplo de ventas: sucursal 55, POS 1 y cierre Z 20260785.
WITH CobrosTarjetaOnline AS ( SELECT * FROM dbo.dE_CoPa WHERE iNroSuc = 55 AND iNroPos = 1 AND iNroZ = 20260785 AND uId = 6 ) SELECT c.iNroSuc, c.iNroPos, c.iNroZ, c.lTicket, c.cComprobante, c.cDescripcion, c.dImporte, c.lStampTime, t.iNroX_Card, t.lTicket AS lTicketCards, t.cAutorizacion, t.iSqlId, t.cRespuesta FROM CobrosTarjetaOnline c LEFT JOIN dbo.dE_Cards t ON c.iNroSuc = t.iNroSuc AND c.iNroPos = t.iNroPos AND c.iNroZ = t.iNroZ AND c.uId = t.uId AND c.uIdId = t.uIdId AND LTRIM(RTRIM(c.cComprobante)) = CONVERT(varchar(30), t.iNroX_Card) AND ABS(CAST(c.dImporte AS decimal(18,4)) - CAST(t.dImporte AS decimal(18,4))) < 0.01 AND t.iOpCode = 1 ORDER BY c.lStampTime, c.iId;
Selección de anulaciones
Las anulaciones se reportan directamente desde dE_Cards para cada sucursal, POS y cierre Z procesado, aun cuando la caja no tenga ventas normales en dE_DDMP. iOpCode = 1 identifica pagos y iOpCode = 3 anulaciones.
anulacion.iNroX_CardOri = original.iNroX_Card, validando sucursal y POS. No se exige el mismo cierre Z porque la anulación puede ocurrir posteriormente. El RI original permite clasificar el origen consultando dE_DDMP.cComprobante o dE_CoPa.cComprobante.SELECT a.iNroSuc, a.iNroPos, a.iNroZ, a.iNroX_Card AS RI_Anulacion, a.iNroX_CardOri AS RI_Original, a.dImporte, a.cAutorizacion, a.iSqlId, o.iNroZ AS Z_Original, o.lTicket AS Ticket_Original, CASE WHEN v.iId IS NOT NULL THEN 'VENTA' WHEN c.iId IS NOT NULL THEN 'CUENTA_CORRIENTE' ELSE 'ORIGEN_NO_ENCONTRADO' END AS OrigenOriginal FROM dbo.dE_Cards a LEFT JOIN dbo.dE_Cards o ON o.iNroSuc = a.iNroSuc AND o.iNroPos = a.iNroPos AND o.iNroX_Card = a.iNroX_CardOri AND o.iOpCode = 1 LEFT JOIN dbo.dE_DDMP v ON v.iNroSuc = o.iNroSuc AND v.iNroPos = o.iNroPos AND LTRIM(RTRIM(v.cComprobante)) = CONVERT(varchar(30), o.iNroX_Card) AND v.uId = o.uId AND v.uIdId = o.uIdId AND ABS(CAST(v.dImporte AS decimal(18,4)) - CAST(o.dImporte AS decimal(18,4))) < 0.01 LEFT JOIN dbo.dE_CoPa c ON c.iNroSuc = o.iNroSuc AND c.iNroPos = o.iNroPos AND LTRIM(RTRIM(c.cComprobante)) = CONVERT(varchar(30), o.iNroX_Card) AND c.uId = o.uId AND c.uIdId = o.uIdId AND ABS(CAST(c.dImporte AS decimal(18,4)) - CAST(o.dImporte AS decimal(18,4))) < 0.01 WHERE a.iOpCode = 3 AND a.iNroSuc = @Sucursal AND a.iNroPos = @POS AND a.iNroZ = @CierreZ ORDER BY a.id;
Diferencias incorporadas
| Tema | Criterio anterior | Criterio vigente |
|---|---|---|
| Relación de venta | Clave compuesta sin RI | dE_DDMP.cComprobante = dE_Cards.iNroX_Card |
| Comparación de importe | Igualdad exacta | ABS(origen - tarjeta) < 0.01 |
| Cuenta corriente | No documentada | Origen dE_CoPa relacionado por RI |
| Ticket de cuenta corriente | Supuesto equivalente | No participa de la relación |
| Tipo de operación | Posible inferencia por iAutMode | Se determina por la tabla de origen |
| Autorización de cuenta corriente | Campos sin valor | cAutorizacion e iSqlId informados |
| Anulaciones | Sin reporte específico | Reporte directo desde dE_Cards con iOpCode = 3 |
Base dM_DMdeP - Tarjetas Online
Configuración final del POS alineada con emisores habilitados en UltraHost_EPS.
1. Resumen de la configuración
La tabla dM_DMdeP funciona como maestro de medios de pago del POS. El subconjunto uId = 6 corresponde a Tarjetas Online y relaciona cada tarjeta con sus parámetros de autorización, rango de identificación y comportamiento operativo.
2. Criterio de habilitación
bDeshabil = 0 indica medio habilitado; bDeshabil = 1 indica medio deshabilitado. Para evitar identificaciones inconsistentes, las bandas asociadas a medios deshabilitados también quedaron deshabilitadas en dm_banda.3. Medios habilitados
| uIdId | Descripción | Estado | iAutMode | iIdRango |
|---|---|---|---|---|
| 10 | VISA | Habilitado | 2 | 400 |
| 11 | NARANJA | Habilitado | 2 | 500 |
| 12 | MASTERCARD | Habilitado | 2 | 800 |
| 15 | CABAL | Habilitado | 2 | 1400 |
| 26 | MAESTRO | Habilitado | 4 | 2600 |
| 27 | MAESTRO BANCOR | Habilitado | 4 | 2500 |
| 33 | VISA DEBITO | Habilitado | 5 | 200 |
| 36 | SOL | Habilitado | 2 | 2100 |
| 43 | MC-BANCOR | Habilitado | 2 | 660 |
| 45 | NATIVA MC | Habilitado | 2 | 2700 |
| 49 | BANCOR MC DEBIT | Habilitado | 5 | 3100 |
| 50 | MC DEBIT | Habilitado | 5 | 3200 |
| 56 | VISA BANCOR | Habilitado | 5 | 190 |
| 71 | CABAL DEBITO | Habilitado | 2 | 4400 |
| 72 | MAESTRO ANSES BANCOR | Habilitado | 2 | 2550 |
4. Diccionario de datos
La siguiente tabla documenta la estructura SQL suministrada y los valores observados para uId = 6. Cuando no se proporcionó una definición funcional adicional, el campo se describe como parámetro técnico de configuración.
| Campo | Tipo SQL | NULL | Valores observados | Descripción |
|---|---|---|---|---|
uId | int | No | 6 | Identificador del grupo de medios de pago. En este documento representa Tarjetas Online. |
uIdId | int | No | valores únicos | Identificador de cada tarjeta o variante dentro del grupo uId=6. |
cDescripcion | char(20) | Sí | descripciones | Nombre visible o descripción operativa del medio de pago. |
uId_Dialog | smallint | Sí | 482 / 486 | Identificador del diálogo de ingreso asociado. |
uId_VDialog | smallint | Sí | 426 | Identificador del diálogo de validación asociado. |
iTaxnumber | smallint | Sí | 0 | Parámetro técnico conservado en cero para este conjunto. |
uIdBoletin | smallint | Sí | 0 | Identificador de boletín; no se utiliza en los registros analizados. |
cBase | char(10) | Sí | dE_Cards | Base o entidad lógica utilizada por el medio de pago. |
bMultIngreso | bit | Sí | 0 | Indicador de ingreso múltiple; desactivado en todos los registros. |
bDesdoble | bit | Sí | 0 | Indicador de desdoblamiento; desactivado en todos los registros. |
bDeshabil | bit | Sí | 0/1 | Estado del medio: 0 habilitado, 1 deshabilitado. |
bSupervisor | bit | Sí | 0 | Requerimiento de supervisor; desactivado en este conjunto. |
iVuelto | int | Sí | 0 | Parámetro de vuelto; configurado en cero. |
bOfertas | bit | Sí | 0 | Participación en ofertas; desactivada en los registros analizados. |
idScript | smallint | Sí | 1100 | Script funcional asociado a las tarjetas online. |
iCliLoyalty | smallint | Sí | 0 | Parámetro de fidelización; configurado en cero. |
iRecDescCli | smallint | Sí | 0 | Parámetro técnico de recargo/descuento de cliente; configurado en cero. |
iSignoRecDes | smallint | Sí | 0 | Signo del recargo/descuento; configurado en cero. |
iAutMode | smallint | Sí | 2/4/5 | Modo de autorización definido por la aplicación para cada tarjeta. |
iIdRango | smallint | Sí | 83 valores | Clave que relaciona el medio con bandas/BIN y planes. |
iInputMode | smallint | Sí | 0 | Modo de ingreso; configurado en cero en esta base. |
bProcesado | int | Sí | 0 al insertar | Campo SQL con valor predeterminado 0; no forma parte del TXT de origen. |
5. Detalle completo de registros uId = 6
El detalle se ordena por uIdId. La columna “Situación” distingue los medios activos, los deshabilitados durante la alineación con UltraHost y los que ya estaban deshabilitados previamente.
| uIdId | Descripción | Estado | iAutMode | iIdRango | Situación |
|---|---|---|---|---|---|
| 10 | VISA | Habilitado | 2 | 400 | Activo en UltraHost |
| 11 | NARANJA | Habilitado | 2 | 500 | Activo en UltraHost |
| 12 | MASTERCARD | Habilitado | 2 | 800 | Activo en UltraHost |
| 15 | CABAL | Habilitado | 2 | 1400 | Activo en UltraHost |
| 26 | MAESTRO | Habilitado | 4 | 2600 | Activo en UltraHost |
| 27 | MAESTRO BANCOR | Habilitado | 4 | 2500 | Activo en UltraHost |
| 33 | VISA DEBITO | Habilitado | 5 | 200 | Activo en UltraHost |
| 36 | SOL | Habilitado | 2 | 2100 | Activo en UltraHost |
| 43 | MC-BANCOR | Habilitado | 2 | 660 | Activo en UltraHost |
| 45 | NATIVA MC | Habilitado | 2 | 2700 | Activo en UltraHost |
| 49 | BANCOR MC DEBIT | Habilitado | 5 | 3100 | Activo en UltraHost |
| 50 | MC DEBIT | Habilitado | 5 | 3200 | Activo en UltraHost |
| 56 | VISA BANCOR | Habilitado | 5 | 190 | Activo en UltraHost |
| 71 | CABAL DEBITO | Habilitado | 2 | 4400 | Activo en UltraHost |
| 72 | MAESTRO ANSES BANCOR | Habilitado | 2 | 2550 | Activo en UltraHost |
6. Relaciones con otras configuraciones
| Relación | Uso |
|---|---|
dM_DMdeP.uIdId | Se relaciona con mEmisor.iIdIdMdeP para identificar el mismo medio en UltraHost_EPS. |
dM_DMdeP.iIdRango | Se utiliza para vincular el medio con sus bandas/BIN en dm_banda y con sus planes en dm_tarpl. |
dM_DMdeP.bDeshabil | Debe ser consistente con la habilitación de las bandas y con el emisor disponible en UltraHost. |
bProcesado | Se inicializa en 0 durante la inserción SQL; no está incluido en el TXT fuente. |
7. Controles recomendados
Sincronización: Mantener alineados bDeshabil en dM_DMdeP y bHabilitado en dm_banda.
Correspondencia: Validar que cada medio habilitado tenga un emisor habilitado y la misma relación uId/uIdId en UltraHost_EPS.
Diccionarios de datos
Buscá por nombre, tipo o descripción. Los campos que forman la relación están marcados como Clave y los que requieren resguardo como Sensible.
dE_DDMP · Pago aplicado al ticket
| Campo | Tipo | Uso | Clasificación |
|---|
dE_CoPa · Cobro de cuenta corriente
| Campo | Tipo | Uso | Clasificación |
|---|
dE_Cards · Tarjeta y autorización
| Campo | Tipo | Uso | Clasificación |
|---|
Datos sensibles
No exponer en consultas, capturas ni documentación
Los campos de PAN, tracks, código de seguridad, PIN y criptogramas pueden contener datos de tarjeta o material criptográfico. Deben excluirse de resultados de soporte o mostrarse únicamente enmascarados.
| Grupo | Campos | Tratamiento recomendado |
|---|---|---|
| Tarjeta | cNumeroCard, cVto | PAN enmascarado; no publicar vencimiento asociado. |
| Banda | cTrack1, cTrack2, cTC1_Track1, cTC1_Track2 | No consultar ni registrar en evidencias. |
| Seguridad | cSecCode, cPinEncriptado, cCDS_CodDeSeguridad | No mostrar, incluso si el valor está cifrado. |
| EMV | cEPT_DatosEncript, cCPG_CriptogramaEMV, cRCP_CriptogramaEMV | Restringir a procesos técnicos autorizados. |
| Persona | cNombre, cDocumento, cTelefono | Anonimizar en documentación y casos de soporte. |