SOA358_I140_RECONCILIATIONOFCHECK

Pirmeramente vemos a ejecutar el SP en la tienda que nos reportan con la fecha en la que se presento el error para verificar que efectivamente este marcando error.

execute spReconciliationOfChecks @ProcessDate = '2023-05-17'

Una vez que confirmamos el error ejecutamos la siguiente consulta para identificar cual de los cheques es el que esta provocando el error, esto es debido a que la numeracion del cheque le falta algun dígito o por que la numeracion trae una letra en una posicion numerica. para ello solo capturamos la fecha como dato de entrada

--LOGICA SP [dbo].[spReconciliationOfChecks]
DECLARE @ProcessDate date = '2023-05-17'

BEGIN
  SET NOCOUNT ON;
  DECLARE @StoreNumber int;

  SELECT
    @StoreNumber = StoreNumber
  FROM Store
  WHERE StoreType = 1;

  DECLARE @sequence smallint;
  SELECT
    @sequence = [Sequence]
  FROM TenderPrmpt
  WHERE TenderType = 'D';

  SELECT
    TranTotal.TxnTotal AS Monto_cheque,
    TranTender.TranDate,
    TranTender.RegisterID,
    TranTender.TranNumber,
    TranTender.TenderCode,
    TranTender.AcctDataSource,
    Q1.MiscNumber
  FROM TranTotal
  INNER JOIN TranTender
    ON TranTotal.RegisterID = TranTender.RegisterID
    AND TranTotal.TranNumber = TranTender.TranNumber
    AND TranTotal.TranDate = TranTender.TranDate
  LEFT JOIN (SELECT
    RegisterID,
    TranNumber,
    TranDate,
    SigSequence,
    MiscNumber,
    [Sequence]
  FROM TranTendData) AS Q1
    ON Q1.RegisterID = TranTender.RegisterID
    AND Q1.TranNumber = TranTender.TranNumber
    AND Q1.TranDate = TranTender.TranDate
    AND Q1.SigSequence = TranTender.SigSequence
    AND Q1.[Sequence] = 1
  LEFT JOIN (SELECT
    RegisterID,
    TranNumber,
    TranDate,
    SigSequence,
    MiscNumber,
    [Sequence]
  FROM TranTendData) AS Q2
    ON Q2.RegisterID = TranTender.RegisterID
    AND Q2.TranNumber = TranTender.TranNumber
    AND Q2.TranDate = TranTender.TranDate
    AND Q2.SigSequence = TranTender.SigSequence
    AND Q2.[Sequence] = 2
  LEFT JOIN (SELECT
    RegisterID,
    TranNumber,
    TranDate,
    SigSequence,
    MiscNumber,
    [Sequence]
  FROM TranTendData) AS Q3
    ON Q3.RegisterID = TranTender.RegisterID
    AND Q3.TranNumber = TranTender.TranNumber
    AND Q3.TranDate = TranTender.TranDate
    AND Q3.SigSequence = TranTender.SigSequence
    AND Q3.[Sequence] = 3
  LEFT JOIN (SELECT
    RegisterID,
    TranNumber,
    TranDate,
    SigSequence,
    MiscNumber,
    [Sequence]
  FROM TranTendData) AS Q4
    ON Q4.RegisterID = TranTender.RegisterID
    AND Q4.TranNumber = TranTender.TranNumber
    AND Q4.TranDate = TranTender.TranDate
    AND Q4.SigSequence = TranTender.SigSequence
    AND Q4.[Sequence] = 4
  LEFT JOIN (SELECT
    RegisterID,
    TranNumber,
    TranDate,
    SigSequence,
    MiscNumber,
    [Sequence]
  FROM TranTendData) AS Q5
    ON Q5.RegisterID = TranTender.RegisterID
    AND Q5.TranNumber = TranTender.TranNumber
    AND Q5.TranDate = TranTender.TranDate
    AND Q5.SigSequence = TranTender.SigSequence
    AND Q5.[Sequence] = 5
  LEFT JOIN TranTendData
    ON TranTendData.RegisterID = TranTender.RegisterID
    AND TranTendData.TranNumber = TranTender.TranNumber
    AND TranTendData.TranDate = TranTender.TranDate
    AND TranTendData.SigSequence = TranTender.SigSequence
    AND TranTendData.[Sequence] = @sequence
  LEFT JOIN Customer
    ON Customer.CustomerID = TranTotal.AccountNo
  WHERE TranTotal.RecType = 'N'
  AND TranTotal.TypeOfSale <> 88
  AND TranTotal.OperatMode = 0
  AND --Avoid Trainning Mode Transactions
  (TranTender.TenderCode = 2
  OR (TranTender.TenderCode = 6
  AND Customer.CustTypeNo = 16)
  OR TranTender.TenderCode = 12)
  AND TranTotal.RegisterId <> 80 --Avoid reconciliation of checks for PaS orders paid with checks
  AND TranTotal.TranDate >= @ProcessDate
  AND Q1.MiscNumber IS NOT NULL

END
GO

Al ejecutar la consulta obtendremos un resultado como el siguiente donde podemos observar que el cheque marcado en amarillo cuenta con un espacio en blanco asi tambien aparece con un dígito de menos por lo que este es el cheque que nos genera conflicto.

El siguiente paso es llamar a la tienda al area de oficinas para solicitarle que nos confirme la numeracion que viene en la parte de abajo del cheque para ver que dato nos esta faltado.

Ejemplo de cheque para identificar el numero de serie que nos tiene que compartir el usuario

Numero con error 7596t511640444t22604211510o00 774

Numero sin error 7596t511640444t22604211510o0007741

una vez que tenemos estos datos procederemos a aplicar la actualizacion del cheque

Primero hacemos un select a la tabla TranTendData para confirmar los datos que vamos a afectar

Select * from TranTendData  where Trandate = '2023-05-17' and registerid =  4 and trannumber = 5647 

Una vez revisado la informacion aplicamos el update ya con el numero de cheque corregido.

UPDATE TranTendData
SET MiscNumber = '7596t511640444t22604211510o0007741'
WHERE Trandate = '2023-05-17'
AND registerid = 4
AND trannumber = 5647
AND Sequence = 1

Una vez aplicado el update ejecutamos de nuevo el SP para confirmar que ya no tengamos algun dato en error si todo salio bien notificamos via correo a los involucrados.

Tambien puede darse que la tienda en una transaccion que se pago con cheque postfechado no haya capturado el numero de cheque y esto puede generar el error como se aprecia en la siguiente imagen donde el usuario solo capturo cuatro numeros.

Query

	select b.* from TranTender a inner join TranTendData b on a.TranDate = b.trandate and a.RegisterID = b.RegisterID and a.trannumber = b.TranNumber
	
	where a.TranDate = '2023-09-01'  and a.tendercode = 12 and b.[Sequence] = 1

Aqui una vez que la tienda nos comparta el numero de cheque correcto actualizamos la informacion.

UPDATE b
SET MiscNumber = '2364t511180588t33016020015o0009035'
FROM TranTender a
INNER JOIN TranTendData b
  ON a.TranDate = b.trandate
  AND a.RegisterID = b.RegisterID
  AND a.trannumber = b.TranNumber

WHERE a.TranDate = '2023-09-01'
AND a.RegisterID = 31
AND a.TranNumber = 2567
AND a.tendercode = 12
AND b.[Sequence] = 1

Posteriormente ejecutamos el SP de nuevo para confirmar que ya no marque error

execute spReconciliationOfChecks @ProcessDate = '2023-09-01'

Lo anterior generara registras en la tabla checkTran por lo que se tiene que eliminar con la misma fecha en la que estamos ejecutando el proceso.

Como paso adicional se debe validar la tabla Select * from CheckTran where TranDate = ‘2023-06-22’ con la fecha del dia en que genero el error, validar que este sin datos, en caso de tener datos se debe depurar.

Loading

Un comentario en «SOA358_I140_RECONCILIATIONOFCHECK»

  1. Como paso adicional se debe validar la tabla Select * from CheckTran where TranDate = ‘2023-06-22’ con la fecha del dia en que genero el error, validar que este sin datos, en caso de tener datos se debe depurar.

Responder a Carlos Mendoza Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *