dbo.obtener_productos_cliente

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

4
Name Data Type Length Description
@p_cliente int 4
@p_es_cliente char 1
@p_es_usuario char 1
@plataforma varchar 20

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- select * from clientes where nombre_cliente like 'halli%'
-- exec obtener_productos_cliente 1066844589,'N','N','10,47,73'
-- SELECT * FROM clientes_productos WHERE CLIENTE = 1066844589

CREATE OR ALTER PROCEDURE dbo.obtener_productos_cliente 
@p_cliente int, 
@p_es_cliente char(1) = 'N', 
@p_es_usuario char(1) = 'N',
@plataforma varchar(20)= null

-- 'N','N' --> va a mostrar todos los productos que existen
-- 'S','N' --> para ver que productos, el cliente NO tiene Habilitados 
-- 'S','S' --> para ver que productos, el cliente SI tiene Habilitados
AS
BEGIN
 SET NOCOUNT ON;


 if (@plataforma ='0')
 begin
  set @plataforma = NULL
 end

 if (@p_es_cliente = 'N' and @p_es_usuario= 'N' and @plataforma is null)  
 begin
  SELECT producto as prod_codigo, nombre_producto as prod_nombre, sigla as prod_sigla 
  FROM productos ORDER BY nombre_producto
    end
/* inner JOIN dbo.DelimitedSplit8K(@plataforma, ',') plataforma ON clientes_productos.id_producto = convert(int,plataforma.Item)  */ 
 if (@p_es_cliente = 'N' and @p_es_usuario= 'N' and @plataforma is not null)  
 begin
  SELECT producto as prod_codigo, nombre_producto as prod_nombre, sigla as prod_sigla 
  FROM productos inner JOIN dbo.DelimitedSplit8K(@plataforma, ',') plataforma ON productos.producto = convert(int,plataforma.Item)
  ORDER BY nombre_producto
    end


 if (@p_es_cliente = 'S' and @p_es_usuario = 'N' and @plataforma is null) 
 begin
  SELECT producto as prod_codigo, 
      nombre_producto as prod_nombre, 
      sigla as prod_sigla
    FROM productos 
    WHERE not exists (select * from clientes_productos where cliente = @p_cliente and id_producto = productos.producto)
    ORDER BY nombre_producto
    end

 if (@p_es_cliente = 'S' and @p_es_usuario = 'N' and @plataforma is not null)
 begin
  SELECT distinct producto as prod_codigo,nombre_producto as prod_nombre,sigla as prod_sigla
    FROM productos inner join clientes_productos on productos.producto = clientes_productos.id_producto
    inner JOIN dbo.DelimitedSplit8K(@plataforma, ',') plataforma ON clientes_productos.id_producto = convert(int,plataforma.Item)
    where clientes_productos.cliente = @p_cliente
    ORDER BY nombre_producto
/*
SELECT producto as prod_codigo, 
   nombre_producto as prod_nombre, 
   sigla as prod_sigla
  FROM productos 
  WHERE not exists (select * from clientes_productos where cliente = @p_cliente and id_producto = productos.producto)
  ORDER BY nombre_producto
*/

    end



 if (@p_es_cliente = 'S' and @p_es_usuario = 'S' and @plataforma is null) 
 begin
  SELECT producto as prod_codigo, 
      nombre_producto as prod_nombre, 
      sigla as prod_sigla
    FROM productos 
    WHERE exists (select * from clientes_productos where cliente = @p_cliente and id_producto = productos.producto and clientes_productos.activo = 1)
    ORDER BY nombre_producto

    end
  
 if (@p_es_cliente = 'S' and @p_es_usuario = 'S' and @plataforma is not null) 
 begin

  /*declare @p_cliente int = 2254875
   declare @plataforma varchar(20) = '10,47,150'
   */

  SELECT distinct producto as prod_codigo,nombre_producto as prod_nombre,sigla as prod_sigla
    FROM productos inner join clientes_productos on productos.producto = clientes_productos.id_producto
    inner JOIN dbo.DelimitedSplit8K(@plataforma, ',') plataforma ON (clientes_productos.id_producto = convert(int,plataforma.Item) and clientes_productos.activo=1)
    where clientes_productos.cliente = @p_cliente
    ORDER BY nombre_producto
/*
SELECT producto as prod_codigo, 
   nombre_producto as prod_nombre, 
   sigla as prod_sigla
  FROM productos 
  WHERE exists (select * from clientes_productos where cliente = @p_cliente and id_producto = productos.producto and clientes_productos.activo = 1)
  ORDER BY nombre_producto
*/

    end

END
GO

Used By

No items found