Manuales POS



PAGOS-REM_01_Error al intentar pagar una remesa

Audiencia 

Este documento está pensado para ser consumido por los equipos de:

  1. Soporte Farmax OR (Niveles 1 y 2)

  2. Equipo de desarrollo TI (Farmacias del Ahorro y proveedor externo)

Descripción general

Error al intentar pagar una remesa, se muestra un mensaje al intentar hacer la transacción "El monto de la transacción supera el disponible en caja." y si se cuenta con efectivo suficiente en la caja 

SUCURSAL: AMADO NERVO
ID: MMAN 0669
REFERENCIA: 12168473024
CAJA:22
2:11PM 17/10/20223

Impacto a la operación

El usuario no puede realizar la operación en la caja.

Criticidad

Alto  
Medio  
Bajo X

 

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.

 

POS

SUCURSAL: AMADO NERVO

Caja: 22

Base de datos del STORE

 

Procedimiento de diagnóstico 

1.- Consultamos la tabla genPagoDineroBitacoraReg para buscar información de la referencia:

select *
from genPagoDineroBitacoraReg with (nolock)
where cast(datosSolicitud as nvarchar(max)) like '%12168473024%';

Vemos que para esa referencia el importe es de $3600.

Ahora buscaremos cual es la cantidad que había en caja al momento de ocurrir el error (14:11hrs del 17-10-2023)

Primero buscaremos el turno de la caja 22 de la sucursal 669.

select *
from venTurnosCajaReg with (nolock)
where codigoSucursal= '0669' and numeroCaja = 22
and fechaHoraInicioTurno between '2023-10-17 00:00:00' and '2023-10-17 23:50:59'
order by fechaHoraInicioTurno;

Código de turno = 01BD45AD-EF6C-EE11-A2C9-6451062DA8D6 

En el código observamos la validación que compara el monto a pagar con el efectivo disponible.

Ya vimos que el monto a pagar es $3,600, ahora buscaremos el monto disponible.

Rastreando el código, encontramos el método que calcula el efectivo disponible en caja:


 

2.- Ahora ejecutaremos esa consulta filtrando con el turno, entonces buscaremos el efectivo disponible desde que inicio el turno hasta las 14:11hrs

SELECT fpc . codigoFormaPago ,
         SUM ( case WHEN mcc . tipoMovimiento = 'I' AND t . cambio IS NULL AND v . cambio IS NULL AND d . cambio IS NULL THEN mcd . importePago
                  WHEN mcc . tipoMovimiento = 'E' THEN mcd . importePago * -1
                  WHEN NOT t . cambio IS NULL THEN mcd . importePago - t . cambio
                  WHEN NOT v . cambio IS NULL THEN mcd . importePago - v . cambio
                  WHEN NOT d . cambio IS NULL THEN mcd . importePago - d . cambio
                  END as efectivoCaja
FROM venTurnosCajaReg tcr with ( nolock )
       INNER JOIN genMovimientosCajasCab mcc with ( nolock ) on tcr . codigoTurno = mcc . codigoTurno
        INNER JOIN genMovimientosCajasDet mcd with ( nolock ) on mcc . codigoMovimientoCaja = mcd . codigoMovimientoCaja
        INNER JOIN genFormasDePagoCat fpc with ( nolock ) on mcd . codigoFormaPago = fpc . codigoFormaPago
        LEFT JOIN trnTransaccionesCab t WITH ( NOLOCK ) ON t . codigoMovimientoCaja = mcc . codigoMovimientoCaja
       LEFT JOIN venCotizacionesCab v WITH ( NOLOCK ) ON mcc . codigoMovimientoCaja = v . codigoMovimientoCaja
       LEFT JOIN genDonativosEspeciales d WITH ( NOLOCK ) ON mcc . codigoMovimientoCaja = d . codigoMovimientoCaja
WHERE fpc . requiereDocumento = 0 AND fpc . conciliarDocumentos = 0 AND fpc . abrirCajon = 1 AND fpc . tipoFormaPago <> 'ANTC'
      and tcr . codigoTurno = '01BD45AD-EF6C-EE11-A2C9-6451062DA8D6' AND mcd . estatusFormaPago = 'A' AND ( t . estaActivo = 1 OR t . status is null)
        and mcc . fechaActualizacion <= '2023-10-17 14:11:00'
GROUP BY fpc . codigoFormaPago ;

 

Vemos que el efectivo disponible en caja que regresa la consulta es $3,403.14, y se requiere $3,600, por eso la validación muestra el mensaje  “El monto de la transacción supera el disponible en caja”

Pero indican que si había el suficiente dinero en caja.

Ahora, consultando la información del turno vemos el campo dotacion Inicial.

select *
from venTurnosCajaReg t with (nolock)
where codigoTurno='01BD45AD-EF6C-EE11-A2C9-6451062DA8D6';

El campo dotacionInicial indica que al inicio del turno había $2000 en caja al aperturar la caja.

El sistema no está considerando este monto inicial en caja de $2000 al obtener el efectivo disponible en caja al momento del error.

Si en la consulta del efectivo disponible en caja agregamos el campo dotacionInicial:

SELECT fpc . codigoFormaPago,
         SUM ( case WHEN mcc . tipoMovimiento = 'I' AND t . cambio IS NULL AND v . cambio IS NULL AND d . cambio IS NULL THEN mcd . importePago
                  WHEN mcc . tipoMovimiento = 'E' THEN mcd . importePago * -1
                  WHEN NOT t . cambio IS NULL THEN mcd . importePago - t . cambio
                  WHEN NOT v . cambio IS NULL THEN mcd . importePago - v . cambio
                  WHEN NOT d . cambio IS NULL THEN mcd . importePago - d . cambio
                  END ) + tcr . dotacionInicial as efectivoCaja
FROM venTurnosCajaReg tcr with ( nolock )
       INNER JOIN genMovimientosCajasCab mcc with ( nolock ) on tcr . codigoTurno = mcc . codigoTurno
        INNER JOIN genMovimientosCajasDet mcd with ( nolock ) on mcc . codigoMovimientoCaja = mcd . codigoMovimientoCaja
        INNER JOIN genFormasDePagoCat fpc with ( nolock ) on mcd . codigoFormaPago = fpc . codigoFormaPago
        LEFT JOIN trnTransaccionesCab t WITH ( NOLOCK ) ON t . codigoMovimientoCaja = mcc . codigoMovimientoCaja
       LEFT JOIN venCotizacionesCab v WITH ( NOLOCK ) ON mcc . codigoMovimientoCaja = v . codigoMovimientoCaja
       LEFT JOIN genDonativosEspeciales d WITH ( NOLOCK ) ON mcc . codigoMovimientoCaja = d . codigoMovimientoCaja
WHERE fpc . requiereDocumento = 0 AND fpc . conciliarDocumentos = 0 AND fpc . abrirCajon = 1 AND fpc . tipoFormaPago <> 'ANTC'
      and tcr . codigoTurno = '01BD45AD-EF6C-EE11-A2C9-6451062DA8D6' AND mcd . estatusFormaPago = 'A' AND ( t . estaActivo = 1 OR t . status is null)
        and mcc . fechaActualizacion <= '2023-10-17 14:11:00'
GROUP BY fpc . codigoFormaPago , tcr . dotacionInicial ;

Considerando la dotación inicial en caja, entonces había $5403.14 y si era suficiente para pagar $3600.

Conclusión

El sistema calcula el efectivo disponible en caja para el turno indicado, sin considerar  el fondo inicial de caja. Deberá preguntarse si es correcto que se calcule de esa manera o si se requiere que el calculo del efectivo disponible incluya el fondo inicial de la caja en turno.

Validación

No aplica.

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 2023-387770
INC 2024-042146
INC 2024-042146

Glosario

Revisa el glosario del equipo de soporte de Farmacias del ahorro aquí

 

Descripción
INC 2023-387770 INC 2024-042146 INC 2024-042146
Categoría: Pagos Reversas
Etiquetas
pagos reversas remesas
Más reciente
Informes 15 de octubre de 2025
Reporte de error en facturación LD Solicitud de request Anterior