Sie sind auf Seite 1von 5

DECLARE @codigo char(3),@i int,@j int,@k int, @c char SET @codigo=char(9) SET @i=0 SET @j=8 SET @c=substring(@codigo,1,1)

WHILE (@i<@j) BEGIN IF (ascii(@c) & power(2,@i) )>0 SET @i=@i+1 END

SELECT @i+1

set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[nsp_Nuevo_Buscador] @valorBuscar varchar(50), @tipoBuscar CHAR (1), @campoBuscar CHAR (1)= null, @extra int = null ---Id de la regional AS BEGIN DECLARE @N integer DECLARE @cantidad_regional int DECLARE @cantidad_inmediata int IF @tipoBuscar = 'N'---Buscar por nombre BEGIN SELECT A.cod_cliente AS id, nombre_cliente + ' ' + apellido_cliente AS texto,'CLI' AS sigla FROM dbo.CLIENTES AS A WHERE nombre_cliente LIKE '%' + @valorBuscar + '%' ORDER BY apellido_cliente END ELSE IF @tipoBuscar= 'A'---Buscar por Apellido BEGIN SELECT cod_cliente AS id, nombre_cliente +' '+ apellido_cliente AS texto,'CLI' AS sigla FROM CLIENTES WHERE apellido_cliente LIKE '%' + @valorBuscar + '%' ORDER BY apellido_cliente END ELSE IF @tipoBuscar='D'---Buscar por Documento BEGIN

SELECT cod_cliente AS id, nombre_cliente +' '+ apellido_cliente AS texto,'CLI' AS sigla FROM CLIENTES WHERE documento LIKE '%' + @valorBuscar + '%' ORDER BY apellido_cliente END ELSE IF @tipoBuscar ='P' ---Buscar por TODOS POR CLIENTE BEGIN DECLARE @T table (id int, texto varchar(100), sigla char(3)) INSERT INTO @T EXEC dbo.nsp_IDBuscador @valorBuscar,'N' INSERT INTO @T EXEC dbo.nsp_IDBuscador @valorBuscar,'A' INSERT INTO @T EXEC dbo.nsp_IDBuscador @valorBuscar,'D' SELECT * FROM @T END ELSE IF @tipoBuscar ='C' ---Buscar por cod_prod_marca BEGIN SELECT cod_prod AS id ,cod_prod_marca as texto,'PRO' as sigla FROM dbo.PRODUCTOS_NACIONAL WHERE cod_prod_marca LIKE '%'+@valorBuscar+'%' ORDER BY cod_prod_marca END ELSE IF @tipoBuscar ='E' ---Buscar por descripcion_corta BEGIN SELECT cod_prod AS id ,cod_prod_marca as texto,'PRO' as sigla FROM dbo.PRODUCTOS_NACIONAL WHERE descripcion_corta LIKE '%'+@valorBuscar+'%' ORDER BY cod_prod_marca END ELSE IF @tipoBuscar ='M' ---Buscar por Marcas BEGIN SELECT cod_prod AS id ,cod_prod_marca as texto,'PRO' as sigla FROM dbo.PRODUCTOS_NACIONAL AS A INNER JOIN dbo.MARCAS AS B ON A.cod_marca=B.cod_marca WHERE B.nombre LIKE '%'+@valorBuscar+'%' ORDER BY A.cod_prod_marca END ELSE IF @tipoBuscar ='Q' ---Buscar por Tipo Producto BEGIN SELECT cod_prod AS id ,cod_prod_marca as texto,'PRO' as sigla FROM dbo.PRODUCTOS_NACIONAL AS A INNER JOIN dbo.TIPO_PRODUCTO AS B ON A.cod_tipo_prod=B.cod_tipo_prod WHERE B.desc_tipo_prod LIKE '%'+@valorBuscar+'%' ORDER BY A.cod_prod_marca END ELSE IF @tipoBuscar ='R' ---Buscar por Sub tipo de productos BEGIN SELECT cod_prod AS id ,cod_prod_marca as texto,'PRO' as sigla FROM dbo.PRODUCTOS_NACIONAL AS A INNER JOIN dbo.SUB_TIPO_PRODUCTO AS B ON A.cod_sub_tipo_prod=B.cod_sub_tipo_prod WHERE B.desc_sub_tipo_prod LIKE '%'+@valorBuscar+'%' ORDER BY A.cod_prod_marca END

ELSE IF @tipoBuscar ='Z'---Buscar TODOS POR PRODUCTO BEGIN DECLARE @U table (id int, texto varchar(100), sigla char(3)) INSERT INTO @U EXEC dbo.nsp_IDBuscador @valorBuscar,'C' INSERT INTO @U EXEC dbo.nsp_IDBuscador @valorBuscar,'E' INSERT INTO @U EXEC dbo.nsp_IDBuscador @valorBuscar,'M' INSERT INTO @U EXEC dbo.nsp_IDBuscador @valorBuscar,'Q' SELECT * FROM @U END ELSE IF @tipoBuscar ='I' and @campoBuscar = 'A'---Buscar por ID_Cliente y datos generales BEGIN IF (SELECT count(*) FROM dbo.CLIENTES AS A WHERE A.cod_cliente = @valorBuscar)>0 BEGIN SELECT A.cod_cliente,A.nombre_cliente,A.apellido_cliente,A.direccion_clien te ,A.telefono_dom_cliente,A.telefono_cel_cliente, A.mail_cliente,A.cantidad_prod_comprad,A.cantidad_dinero_aport,A.do cumento FROM dbo.CLIENTES AS A WHERE A.cod_cliente = @valorBuscar END ELSE SET @N=0 END ELSE IF @tipoBuscar ='I' and @campoBuscar = 'B'---Buscar por ID_Cliente y creditos BEGIN IF ( SELECT count(*) FROM dbo.CLIENTES AS A INNER JOIN dbo.CREDITOS AS B ON A.cod_cliente=B.cod_cliente WHERE A.cod_cliente = @valorBuscar)>0 BEGIN SELECT B.credito_disp,B.monto_lim_credito FROM dbo.CLIENTES AS A INNER JOIN dbo.CREDITOS AS B ON A.cod_cliente=B.cod_cliente WHERE A.cod_cliente = @valorBuscar END ELSE SET @N=0 END ELSE IF @tipoBuscar ='I' and @campoBuscar = 'C'---Buscar por ID_Cliente y cuentas pendientes

BEGIN SELECT count(*) FROM dbo.CLIENTES AS A INNER JOIN dbo.CREDITOS AS B ON A.cod_cliente=B.cod_cliente INNER JOIN dbo.CUENTAS AS C ON A.cod_cliente=C.cod_cliente WHERE A.cod_cliente = @valorBuscar)>0 BEGIN SELECT C.a_cuenta_total,C.saldo_total FROM dbo.CLIENTES AS A INNER JOIN dbo.CREDITOS AS B ON A.cod_cliente=B.cod_cliente INNER JOIN dbo.CUENTAS AS C ON A.cod_cliente=C.cod_cliente WHERE A.cod_cliente = @valorBuscar END ELSE SET @N=0 END ELSE IF @tipoBuscar ='J' and @campoBuscar = 'A' ---Buscar por ID_Producto y cuentas pendientes BEGIN DECLARE @regional INT SET @regional = (SELECT B.cod_regional FROM dbo.PUNTOS_VENTA_AUX AS A INNER JOIN dbo.PUNTOS_VENTA AS B ON A.cod_punto_venta=B.cod_punto_venta WHERE A.id=@extra) SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET @cantidad_regional = (SELECT sum(B.cantidad B.asignado - C.cant_vend_sinentregar) FROM dbo.LOTE AS A INNER JOIN dbo.LOTE_DETALLE AS B ON A.cod_lote=B.cod_lote INNER JOIN dbo.PRODUCTOS_REGIONAL AS C ON B.cod_prod=C.cod_prod WHERE C.cod_regional= @regional AND A.cod_regional =@regional AND A.cod_lote_tipo=1 AND A.bloqueado='False' AND A.existe = 'True' AND A.fecha_recepcion is not null AND C.cod_prod=@valorBuscar AND C.habilitado='True' AND A.cod_deposito NOT IN(SELECT cod_deposito FROM dbo.DEPOSITO_ESPECIAL WHERE habilitado = 'True') GROUP BY B.cod_prod, C.cant_vend_sinentregar HAVING sum ((B.cantidad-B.asignado)C.cant_vend_sinentregar)>0) SET @cantidad_inmediata=@cantidad_regional-1 IF @cantidad_regional>0 BEGIN SELECT A.cod_prod,A.cod_barra,A.cod_prod_marca,A.nombre_prod,A.descripcion_corta , IF (

B.precio_unitario_sf,B.precio_unitario_cf,B.precio_mayoreo_sf,B.pre cio_mayoreo_cf,@cantidad_regional,@cantidad_inmediata FROM dbo.PRODUCTOS_NACIONAL AS A INNER JOIN dbo.PRODUCTOS_REGIONAL AS B ON A.cod_prod=B.cod_prod WHERE A.cod_prod = @valorBuscar AND B.cod_regional=@regional SET @N=@@rowcount END ELSE SET @N=0 END SET @N=@@rowcount RETURN @N END

Das könnte Ihnen auch gefallen