Audiencia
Este documento está pensado para ser consumido por los equipos de:
Soporte Farmax OR (Niveles 1 y 2)
Equipo de desarrollo TI (Farmacias del Ahorro y proveedor externo)
Descripción general
EVENTO GENERACION REPORTES |
Sucursal + ID |
CELAYA CLCE |
Número de Sucursal |
0197 |
Nombre del Reporte |
Emmanuel Yerena Uribe |
Ruta del Reporte |
Reporte de uso de monedero por cajero |
Que error marca |
Se están duplicando el uso del monedero con varios UNIs. |
| |
|
|
Si nos pueden apoyar a que el sistema sincronice y baja la información correctamente. |
|
|
Fecha: |
08/02/2024 |
parámetros ingresados |
|
| |
Adjunto imagen |

Impacto a la operación
El impacto de la operación es medio en virtud de que la operación no se ve comprometida por esta incidencia.
Criticidad
Sistemas/módulos involucrados
POS
Precondiciones
Aquí se debe especificar el nivel de acceso requerido por cada sistema (aplicativo o base de datos), indicando el rol o perfil necesario para para el diagnóstico y/o solución del incidente.
Procedimiento de diagnóstico
Se valida la información que se obtiene en el reporte de Monedero, el siguiente query es el que genera el reporte.
SELECT codigoTurno,fechaOperacion,codigoCajero,
COUNT(idTransaccion) AS totalFolios,
SUM(CASE WHEN totalConMonedero>0 THEN 1 ELSE 0 END) AS totalConMonedero,
SUM(CASE WHEN totalSinMonedero>0 THEN 1 ELSE 0 END) AS totalSinMonedero,
SUM(montoTotal) AS montoTotal,
SUM(montoConMonedero) AS montoConMonedero,
SUM(redencion)/SUM(montoTotal) AS redencion
FROM (
SELECT TX.idTransaccion,
TUR.codigoTurno,TUR.fechaOperacion,TX.codigoVendedor as codigoCajero,
COUNT(CASE WHEN TX.folioMonedero!='' AND TX.folioMonedero IS NOT NULL THEN 1 ELSE NULL END) AS totalConMonedero,
COUNT(CASE WHEN TX.folioMonedero='' OR TX.folioMonedero IS NULL THEN 1 ELSE NULL END) AS totalSinMonedero,
SUM(TX.subtotal+TX.iva) AS montoTotal,
SUM(CASE WHEN TX.folioMonedero!='' AND TX.folioMonedero IS NOT NULL THEN TX.subtotal+TX.iva ELSE 0 END) AS montoConMonedero,
SUM(CASE WHEN DET.codigoFormaPago IN (14,99996) THEN DET.importePago ELSE 0 END)/SUM(TX.subtotal+TX.iva) AS redencion --> Forma de pago de MONEDERO
FROM trnTransaccionesCab TX with (nolock)
INNER JOIN genMovimientosCajasCab CAJA with (nolock) ON TX.codigoMovimientoCaja=CAJA.codigoMovimientoCaja
INNER JOIN venTurnosCajaReg TUR with (nolock) ON CAJA.codigoTurno=TUR.codigoTurno
INNER JOIN genMovimientosCajasDet DET with (nolock) ON CAJA.codigoMovimientoCaja=DET.codigoMovimientoCaja
LEFT JOIN genPedidoCallcenter PC with (nolock) ON TX.idTransaccion = PC.idTransaccion
WHERE TX.codigoSucursal= '0197'
AND TX.idFechaOperacion = CAJA.idFechaOperacion
AND TX.[status] IN('V','F')
AND TX.tipoVenta='C'
AND CAJA.tipoMovimiento='I'
AND CAJA.codigoSucursal = TX.codigoSucursal
AND CAJA.fechaOperacion = TUR.fechaOperacion
AND TUR.idFechaOperacion = CAJA.idFechaOperacion
AND TUR.codigoSucursal = CAJA.codigoSucursal
AND TX.idTransaccion NOT IN (
SELECT idTransaccion FROM trnTransaccionesDet TXIN with (nolock)
INNER JOIN genProductosCat P with (nolock) ON TXIN.codigoProducto=P.codigoProducto
WHERE P.tipoProducto IN ('R','E')
)
AND ('20240208' <= TUR.fechaOperacion)
AND ('20240208' >= TUR.fechaOperacion)
--AND (( @TIPODEVENTA = 1) OR (@TIPODEVENTA = 2 AND ordenCc IS NULL) OR (@TIPODEVENTA = 3 AND ordenCc IS NOT NULL))
GROUP BY TX.idTransaccion,TUR.codigoTurno,TUR.fechaOperacion,TX.codigoVendedor
) AS trsansactionResult
GROUP BY codigoTurno,fechaOperacion,codigoCajero;
Una vez obtenido el resultado visualizamos dos campos los cuales son;
TotalConMonedero
TotalSinMonedero
Referente a esto también muestra información del código de las transacciones, el código de de turno que realizo la venta, la fecha operación, el monto total de lo que se pagó de la venta, etc.

Vemos que en el campo TotalConMonedero su valor puede cambiar de 1 a 2 para esto vamos a validar la información.
Tomamos el dato IdTransaccion y obtenemos el folio de venta ‘49127E51-D6C6-EE11-B279-10E7C6B8A75E’, realizamos una consulta hacia la tabla trnTransaccionesCab y filtramos por idTransaccion.
Una vez obtenido el folio de venta V01972100017141, ejecutaremos el siguiente query.
use POSDB_OR
declare @id uniqueidentifier
declare @idDev uniqueidentifier
declare @folio varchar(max)
declare @promoId int
--select * from genProgramaLealtadBitacoraReg (nolock) where foliotransaccion in ('V22622100001715' ,'V15632200006592')
--and idTransaccion in( 'DF92A4E4-BE75-EE11-8EA6-DC4A3E66F59D','DED81CA9-C688-EE11-89B2-A0481CA47B2D')
--select top 1 * from genpromociones (nolock) where codigopromocion = 88924
select @id = idtransaccion, @folio = folioTransaccion from trntransaccionescab(nolock)where foliotransaccion = 'V01972100017141'
select @promoId = codigopromocion from genVentasPrecioModificacion(nolock)where idtransaccion = @id
select 'trnTransaccionesCab',* from trnTransaccionesCab(nolock) where idTransaccion = @id
select 'trntransaccionesdet',* from trntransaccionesdet(nolock) where idTransaccion = @id
select 'genMovimientosCajascab',* from genMovimientosCajascab(nolock) where codigomovimientocaja in (select codigomovimientocaja from trntransaccionescab(nolock) where idtransaccion = @id)
select 'genMovimientosCajasdet',* from genMovimientosCajasdet(nolock) where codigomovimientocaja in (select codigomovimientocaja from trntransaccionescab(nolock) where idtransaccion = @id)
--select 'genMovimientosCajasdet',* from genMovimientosCajasdet(nolock) where codigomovimientocaja in ('B88A6E5B-72A2-ED11-B23B-922F48335A02')
select 'genMovimientosCajasMsiDet',* from genMovimientosCajasMsiDet(nolock) where codigomovimientocaja in (select codigomovimientocaja from trntransaccionescab(nolock) where idtransaccion = @id)
--select 'genMovimientosCajasMsidet',* from genMovimientosCajasMsidet(nolock) where codigomovimientocaja in (select codigomovimientocaja from trntransaccionescab(nolock) where idtransaccion = @id)
SELECT 'venturnoscajareg',* FROM venturnoscajareg(nolock) WHERE codigoTurno IN (select codigoTurno from genMovimientosCajascab(nolock) where codigomovimientocaja in (select codigomovimientocaja from trntransaccionescab(nolock) where idtransaccion = @id))
select 'genFormasPagosElectronicas',* from genFormasPagosElectronicas(nolock) where folioventa = @folio order by fechaActualizacion
select 'genVentasPrecioModificacion',* from [dbo].[genVentasPrecioModificacion](nolock) where idtransaccion = @id
--select 'genPromociones', * from genPromociones where codigopromocion = @promoId
select 'trnRecompensasProgramaLealtad',* from [dbo].[trnRecompensasProgramaLealtad](nolock) where idtransaccion = @id
select 'genProgramaLealtadBitacoraReg',* from genProgramaLealtadBitacoraReg (nolock) where idtransaccion = @id
SELECT 'genRecetasTransacciones',* FROM genRecetasTransacciones(nolock) where idTransaccion = @id
select 'genRecetasCab',* from genRecetasCab(nolock) where codigoReceta IN (SELECT codigoReceta FROM genRecetasTransacciones(nolock) where idTransaccion = @id)
select @idDev = idVenDevoluciones from venDevolucionesCab(nolock) where idTransaccionVenta = @id
select 'venDevolucionesCab',* from venDevolucionesCab(nolock) where idTransaccionVenta = @id
select 'venDevolucionesDet',* from venDevolucionesDet(nolock) where idVenDevoluciones IN (select IdVenDevoluciones from venDevolucionesCab(nolock) where idTransaccionVenta = @id)
select 'genMovimientosCajascab',* from genMovimientosCajascab(nolock) where codigomovimientocaja in (select codigomovimientocaja from venDevolucionesCab(nolock) where idTransaccionVenta = @id)
select 'genMovimientosCajasdet',* from genMovimientosCajasdet(nolock) where codigomovimientocaja in (select codigomovimientocaja from venDevolucionesCab(nolock) where idTransaccionVenta = @id)
select 'genFormasPagosElectronicas',* from genFormasPagosElectronicas(nolock) where folioventa IN ( select folioDevolucion from venDevolucionesCab(nolock) where idTransaccionVenta = @id) order by fechaActualizacion
Este es el resultado obtenido

Procedimiento de solución
Se validó diferentes ventas donde el reporte contabiliza dos veces el monedero al igual cuando solo se contabiliza una sola vez.
El folio monedero genera un duplicado porque se toma la información de 2 tablas diferentes.
1-. Es de la tabla trnTransaccionesCab y toma en cuenta si el cliente registro su folio monedero.

2-. El segundo registro lo obtiene de la tabla genMovimientosCajasDet donde valida si el cliente realizo un pago con monedero.

Con esto vemos que la información puede tomarse 1 o 2 veces hacia el monedero y va depender del tipo de transacción que se haya realizado y del tipo de movimiento que realice el cliente.
Notificación de resolución
Especificar la lista de usuarios que deben ser notificados al momento que se ha confirmado la resolución de la incidencia.
Incidencia relacionada
INC 2024-056457
Glosario
Revisa el glosario del equipo de soporte de Farmacias del ahorro aquí