Para los casos donde nos reportan que se recibio un pedido de proveedor local desde SMS mobile en la TC52 y que al confirmarlo se duplico el numero de recibo generandose dos consecutivos de recibo en las tablas RCHeader y RCDetail y por consiguiente a nivel INVADJLOG como se aprecia en la siguiente imagen.

1.- Primeramente se tiene que consultar la PO con el siguiente query donde obtendremos un resultado como el de la imagen anterior.
/*Consulta Pedido*/
declare @po nvarchar(22) = 6696043579
select 'poheader', * from poheader with (nolock) where ponumber = @po
select 'podetail', * from podetail with (nolock) where ponumber = @po
select 'rcheader', * from rcheader with (nolock) where ponumber = @po order by lastreceiver asc
select 'rcdetail', * from rcdetail with (nolock) where ponumber = @po order by lastreceiver asc
select 'InvAdjLog', * from InvAdjLog with (nolock) where DocNumber like '%'+@po+'%'
order by TranTime asc
2.-Una vez obtenidos los resultados de la consulta de nuestra PO, obtendremos el detalle de los skus y cantidades que debemos solicitar a negocio (Inventarios y costos promedio de OAT) su VoBo para disminuir de la existencia actual. Cabe señalar que las cantidades que correspondel al consecutivo duplicado se canlculan erroneamente por lo que vamos a tomar las cantidades el primer consecutivo como se aprecia en la siguiente imagen del recuadro en verde.

3.-Confirmamos el movimiento duplicado en RCDetail usando la siguiente consulta.
select 'SystemLog', * from thd_sms_logs.dbo.SystemLog with (nolock) where logdate = '2024-07-19' --Fecha del recibo
and ProgName = 'TriggerItemReplen'
AND LogMessage like '%462843%' --captura de SKU a validar
order by LogTime asc
Ejecutando la consulta anterior visualizaremos un resultado como el siguiente donde se aprecia la efactacion duplicada.

4.-Enviamos el email a negocio tomando como referencia el siguiente template.

5.-Una vez que negocio nos autorice el movimiento depuraremos el numero de recibo que corresponde al consecutivo duplicado y realizaremos la correccion del inventario.
/*Depurar registros de recibos duplicados*/
BEGIN TRANSACTION;
--delete rcheader where ponumber = 6696043579 AND LastReceiver = 8696057617
--delete rcdetail where ponumber = 6696043579 AND LastReceiver = 8696057617
--DELETE InvAdjLog where TranDate = '2024-07-19' /*Fecha del recibo (RCHeader.OrigRecdDate)*/
-- AND DocNumber like '%8696057617%' /*Numero de recibo a depurar*/
/* Confirma la transacción */
--COMMIT TRANSACTION;
/* Reversa a transacción */
--ROLLBACK TRANSACTION;
6.- Aplicamos la correccion de inventario usando el siguiente query.
--BEGIN TRANSACTION;
DECLARE @tmpini TABLE (
SKU bigint,
CurQOH decimal(15, 3)
);
DECLARE @tmpfin TABLE (
SKU bigint,
CurQOH decimal(15, 3)
);
DECLARE @Transacciones TABLE(tmpid int IDENTITY, Trannumber varchar(10), sku bigint, cantidad decimal(15, 3));
INSERT INTO @Transacciones
VALUES
(6719347357 ,194977 ,1 ) /*(Numero PO,SKU,Cantidad)*/
DECLARE @TotalRows int
SELECT
*
FROM @Transacciones AS Temporal;
SELECT @TotalRows = COUNT(sku)
FROM @Transacciones;
-- MUESTRA REGISTROS ANTES DE AFECTAR INVENTARIO
INSERT INTO @tmpini
SELECT
IR.SKU,
IR.CurQOH
FROM ITEMREPLEN IR
INNER JOIN @Transacciones trans ON IR.SKU = trans.sku
ORDER BY SKU ASC;
-- Actualización
UPDATE IR
SET CurQOH = IR.CurQOH - T.cantidad /*Actualizar el signo + o - dependiendo si se quiere sumar o restar inventario*/
FROM ItemReplen IR
INNER JOIN @Transacciones T ON IR.SKU = T.sku;
-- Inserción
INSERT INTO ManualInventoryAdj
SELECT NEWID(), GetDate(), T.sku, T.cantidad * +1, 1, 'Ajuste por cambio -INC0418729' /*Actualizar signo y Numero de Ticket*/
FROM @Transacciones T;
-- Muestra registros después de afectar inventario
INSERT INTO @tmpfin
SELECT
IR.SKU,
IR.CurQOH
FROM ITEMREPLEN IR
INNER JOIN @Transacciones trans ON IR.SKU = trans.sku
ORDER BY SKU ASC;
select ini.SKU,ini.CurQOH AS Existencia_Actual,fin.CurQOH AS Nueva_Existencia from @tmpini ini inner join @tmpfin fin on ini.SKU = fin.SKU;
/* Confirma la transacción */
-- COMMIT TRANSACTION;
/* Reversa a transacción */
-- ROLLBACK TRANSACTION;
--Select * from thd_sms_logs.dbo.SystemLog with (nolock) where LogDate = '2024-08-21' and LogMessage like '%194977%' order by logtime asc
Una vez finalizado , confirmamos en el mismo correo que se llevo acabo la correccion y podemos compartir el movimiento de inventario que se guarda en systemlog.