Asociado reporta que cuando intenta conciliar el corte de cajero ecommerce le aparece un faltante/sobrante por cierta cantidad
Error: No puede conciliar al cajero ecommerce por una discrepancia en la conciliación.
En estos escenarios el asociado observa un faltante al conciliar el cajero ecommerce el cual es visual ya que en BD no existe tal discrepancia. Esto se debe a que los pagos del tender 32 Pay at Store se realizaron en tienda en diversas formas de pago.
Balance – verificación Corte de Cajeros
DECLARE @Date datetime = '2024-07-17' --Dia de Operacion
DECLARE @Cashier int = 40467 --Employee 9995, 9997
DECLARE @Emp int = (Select employeeno from employee where employeeno = @Cashier or payrollid = @Cashier)
--SP PARA FORZAR EL CORTE FINAL DE CAJERO ECOMMERCE
--exec spWithdrawalEccomerce '2023-03-06'
Select GETDATE() as 'HORA ACTUAL', 'CIERRE DE TIENDA', ProgStartTim, EOPStatus, AcctStatus, CurrentDate, CurRptDate, Progname,Lasttran,* FROM AcctPeriod order by getdate() desc
/* Cierre de caja general */
SELECT @@SERVERNAME AS 'Server Name'
SELECT 'CIERRE CAJA GENERAL', * FROM STORE_FinalTenderTotals WHERE CAST(Date as date) = @Date
--update STORE_FinalTenderTotals set status = 'Approved' where date = '2023-12-24 18:37:05.133' and status = 'Reviewed'
--eliminar corte de caja general
--delete from STORE_FinalTenderTotals where date = '2024-04-16 22:25:18.453' and transmitted = 0
/* Conciliación de cajero */--4629
SELECT * FROM CashierBalances WHERE Date = @Date AND EmployeeNo = @Emp
--ELIMINAR CONCILIACION DE CAJERO--
--delete from cashierbalances where employeeno = 376 and date = '2024-06-27'
SELECT TABadge, JobTitle, * FROM Employee WHERE EMPLOYEENO = @Emp OR PayrollId = @Emp
/* Encabezado del corte */
SELECT * FROM STORE_Withdrawals WHERE Cast(Date as date) = @Date and EmployeeNo = @Emp
SELECT @@SERVERNAME AS 'Server Name'
BEGIN
SELECT TenderCode AS 'Tipo de pago', Cajas, Cortes--, convert(money,Cajas)-Isnull(convert(money,Cortes),0) 'Diferencia'
FROM(
/* Información de cortes */
SELECT
CONCAT(DEN.TenderCode, ' - ', TN.[Description]) AS TenderCode,
FORMAT(SUM(WDE.TotalPrice), 'C', 'en-us') AS Amount,
'Cortes' AS Type
FROM STORE_Withdrawals AS WD
JOIN STORE_WithdrawalDenominations AS WDE ON WD.WithdrawalId = WDE.WithdrawalId
JOIN STORE_Denominations AS DEN ON WDE.DenominationId = DEN.DenominationId
JOIN TenderCntrl TN ON DEN.TenderCode = TN.TenderCode
WHERE WD.WithdrawalId IN (SELECT WithdrawalId FROM STORE_Withdrawals WHERE EmployeeNo = @Emp)
AND CAST(WD.Date as date) = @Date
GROUP BY DEN.TenderCode, TN.[Description]
UNION
/* Información de cajas */
SELECT
CONCAT(TTE.TenderCode, ' - ', TN.[Description]) AS TenderCode,
FORMAT(SUM(tte.TenderAmount), 'C', 'en-us') AS Amount,
'Cajas' AS Type
FROM TranTotal TT
JOIN TranTender TTE on TT.TranNumber = TTE.TranNumber and TT.TranDate = TTE.TranDate and TT.RegisterID = TTE.RegisterID
JOIN Employee AS EMP ON TT.EmployeeNo = EMP.EmployeeNo
JOIN TenderCntrl TN ON TTE.TenderCode = TN.TenderCode
WHERE TT.TranDate = @Date
AND TT.EmployeeNo = @Emp
AND TT.OperatMode = 0
AND TT.RecType = 'N'
AND TT.TypeOfSale NOT IN (3,49,88)
AND TTE.TenderCode != 14
GROUP BY TTE.TenderCode, TN.[Description]
) M
PIVOT
(
MAX(Amount) FOR Type in (Cajas,Cortes)
) piv;
END
/* Detalle del corte final */
SELECT 'DETALLE DE CORTE FINAL', * FROM STORE_Withdrawaldenominations wd JOIN STORE_Withdrawals w ON wd.WithdrawalId = w.Withdrawalid
WHERE Cast(Date as date) = @Date and EmployeeNo = @Emp and w.DocumentType like '%final%'
/* Transacciones del cajero */
SELECT tt.posted, tt.Endtime, tt.RecType, tt.OperatMode, te.TranDate, tt.RegisterId, tt.TranNumber, tt.EmployeeNo, te.TenderCode, te.TenderAmount, SigSequence
FROM TranTotal tt LEFT JOIN TranTender te
ON te.TranDate = tt.TranDate and te.RegisterId = tt.RegisterId and te.TranNumber = tt.TranNumber
WHERE tt.TranDate = @Date and EmployeeNo = @Emp
ORDER BY EndTime
Para mitigar este escenario primero tenemos que replicarlo, procedemos a entrar al SMS con nuestro usuario y posteriormente dirigirnos a Balanceo de efectivo/conciliacion de cajeros
Observamos los tenders al aprobar el corte final. Balanceo de efectivo/corte final de cajero
Buscamos en la lupa y anotamos el numero de cajero ecommerce 9997 buscamos y aceptamos.


Al revisar en conciliacion se ve de la siguiente manera:

Si observamos el escenario al revisar el corte para aprobacion aparece la cantidad en tender 32 Pay at store, pero al validar la conciliacion aparece el tender que se utilizo en tienda lo cual es correcto y no es una falla, al validar en BD observamos la siguente logica

La orden se genero en linea y el tender en el cual se registra es en 32 Pago en tienda y al llegar a tienda el cliente decide pagar en el tipo de pago que mas le convenga es por eso que aparece de esa forma, podemos corroborar que al hacer el final de caja general no hay ninguna diferencia.
Balanceo de efectivo/corte final de caja general

Estos tickets se dejan cancelados como consulta general o no hay falla o degradación