SMS_Ajustes de inventario_Depurar bajas inventario

Para escenarios donde tienda nos reporte que tiene numeros de ajustes o bajas de inventario antiguos duplicados, primero validamos que efectivamente tengamos el movimiento de baja como se aprecia en la siguiente imagen.

/*Consulta  bajas de inventario*/

declare @Trannumber bigint = 8716175885   

select 'InvAdjHdr', * from InvAdjHdr   WITH (NOLOCK)  where TranNumber = @Trannumber
select 'InvAdjDet', * from InvAdjDet   WITH (NOLOCK)  where TranNumber = @Trannumber

Posteriormente aplicamos el siguiente delete para depurar todas las tablas relacionadas a bajas de inventario que corresponden a años pasados.

NOTA: Al realizar la ejecucion debemos esperar unos minutos ya que tarda en depurar la informacion.

1.- Depurar bajas Antiguas en general

--Depurar ajustes de inventarios antiguos masica. 
declare @fecha as date
declare @FecUltInv as date

set @FecUltInv = ( select PhysinvDate from pcicontrol)
set @fecha = (SELECT DATEADD(year,-2,@FecUltInv));
select @FecUltInv, @fecha

delete ivat -- Invadjtracking
from InvAdjHdr ivah
inner join Invadjtracking ivat on ivat.TranNumber = ivah.tranNumber
where cast(ivah.createdDate as date) < @fecha

delete ivad -- InvAdjDet
from InvAdjHdr ivah
inner join InvAdjDet ivad on ivah.TranNumber = ivad.tranNumber and ivah.Id = ivad.InvAdjHdrID
where cast(ivah.createdDate as date) < @fecha

delete ivah
from InvAdjHdr ivah
where cast(ivah.createdDate as date) < @fecha

delete ivaj
from InvAdjLog ivaj
where cast(ivaj.trandate as date) < @fecha

2.-Una vez finalizado la ejecucion del delete, volvemos a validar con el siguiente query

/*Consulta  bajas de inventario*/

declare @Trannumber bigint = 8716175885   

select 'InvAdjHdr', * from InvAdjHdr   WITH (NOLOCK)  where TranNumber = @Trannumber
select 'InvAdjDet', * from InvAdjDet   WITH (NOLOCK)  where TranNumber = @Trannumber

3.-Si solo nos aparece un movimiento aplicamos el siguiente update para actualizar los numeros de bajas de estus nuevo a estatus pendiente para que tienda pueda hacer el rechazo o aprobacion en caso contrario continuar al paso numero 4.

update InvAdjHdr SET Status = 'P' where Status = 'N'

4.-En caso que despues del delete sigamos con los dos numeros de baja se ejecuta el siguiente delete con el numero de baja como dato de entrada.

--Depurar ajustes de inventarios antiguos por numero de baja
declare @TranNumber	bigint = 8704560329   
declare @Id	bigint

select TOP 1 @Id = Id from InvAdjHdr  where tranNumber = @TranNumber ORDER BY ID ASC

DELETE ivat -- Invadjtracking
from InvAdjHdr ivah
inner join Invadjtracking ivat on ivat.TranNumber = ivah.tranNumber  AND ivah.id = ivat.InvAdjHdrID
where ivat.TranNumber = @TranNumber AND ivah.Id = @Id

DELETE  ivad -- InvAdjDet
from InvAdjHdr ivah
inner join InvAdjDet ivad on ivah.TranNumber = ivad.tranNumber and ivah.Id = ivad.InvAdjHdrID
where ivah.TranNumber = @TranNumber AND ivah.Id = @Id

DELETE  ivah
from InvAdjHdr ivah
where ivah.TranNumber = @TranNumber AND ivah.Id = @Id

DELETE  ivaj
from InvAdjLog ivaj
where DocNumber like  '%' + CAST( @TranNumber AS Varchar) + '%' 

5.-Por ultimo se aplica el update para cambiar las bajas que hayan quedado en estus nuevo las actualizamos a estatus pediente.

update InvAdjHdr SET Status = 'P' where Status = 'N'

Una vez llegado a este paso hemos solucionado a tienda el tema de las bajas duplicadas de años anteriores.

Loading

Deja una respuesta

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