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
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
Depends On
3Used By
No items found