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
BEGIN
declare @countRegistrados int
set @countRegistrados = (SELECT COUNT(c.batchnum) FROM IBT1 c
if @countRegistrados > 0
set @error = 1
select @error, @error_message
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
begin
SET @error = 2000
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