SMS_Recibo duplicado en pedidos de proveedor local.

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.

Loading

Deja una respuesta

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