martes, 21 de septiembre de 2021

Validación de lote duplicado - TN en entrada de inventario

 Hola, les compartiré ahora un ejemplo para validar si la entrada que estamos realizando con lotes lleva uno que ya se halla ingresado con anterioridad, este ejemplo puede implementarse según el tipo de objeto donde se este ingresando o moviendo el lote.

Para el caso de entrada de mercancía por el modulo de inventario cree el siguiente ejemplo dada mi necesidad:

IF @object_type ='59' and @transaction_type in ('A')
BEGIN
declare @countRegistrados int
set @countRegistrados = (SELECT COUNT(c.batchnum) FROM IBT1 c
 inner join IBT1 B2 on c.BatchNum = B2.BatchNum and c.BatchNum in (isnull(b2.BatchNum,'')) and b2.BaseType = 59 and c.BaseType = 59 and c.BaseType = c.BaseType
 where  c.BaseEntry = @list_of_cols_val_tab_del
 and b2.BaseEntry <> @list_of_cols_val_tab_del)
 
if @countRegistrados > 0
begin
set @error = 1
set @error_message = 'Error TI... El lote ya existe, existe(n) ' + cast(@countRegistrados as varchar(3)) + ' Lote(s) ya registrado(s)'
select @error, @error_message
end
End

El original es este:


IF @object_type ='20' and @transaction_type in ('A','U')
BEGIN
if exists(Select distinct 'Error' from IBT1 B1 , IBT1 B2
where b1.BatchNum in (isnull(b2.BatchNum,'')) and B1.BaseEntry = @list_of_cols_val_tab_del
and b2.BaseEntry <> @list_of_cols_val_tab_del and b2.BaseType = 20 and b1.BaseType = 20 )
begin
SET @error = 2000
SET @error_message = 'Duplicte Batch not allowed'
end
End

Ya sea uno u otro, cualquiera de los dos validan perfecto, claro entre mas condiciones tenga será más rápida.


No hay comentarios:

Publicar un comentario