Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
6| Name | Data Type | Length | Description |
|---|---|---|---|
| @accion | varchar | 20 | |
| @familia | int | 4 | |
| @idTipoInforme | int | 4 | |
| @UserID | int | 4 | |
| @activo | bit | 1 | |
| @subset | varchar | 150 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- Create the stored procedure in the specified schema
CREATE OR ALTER PROCEDURE dbo.LN_familia_tipo_informe
@accion VARCHAR(20),
@familia INT=NULL,
@idTipoInforme INT=NULL,
@UserID INT,
@activo BIT=1,
@subset VARCHAR(150)=NULL
-- add more stored procedure parameters here
AS
BEGIN
-- body of the stored procedure
SET NOCOUNT ON;
SET @accion=upper(@accion)
--
DECLARE @idreg INT = 0
--
IF (@accion='ASIGNAR_FAMILIA')
BEGIN
/* Asigna un tipo de informe a la familia, si existe lo actualiza */
SELECT @idreg=id_tipo_informe FROM LN_familias_tipo_informe WHERE familia = @familia AND id_tipo_informe=@idTipoInforme
IF (@idreg = 0)
BEGIN
INSERT INTO LN_familias_tipo_informe (familia,id_tipo_informe,visible,created,created_by,lista_subset)
VALUES (@familia,@idTipoInforme,1,getdate(),@UserID,@subset)
END
ELSE
BEGIN
UPDATE LN_familias_tipo_informe SET visible=1,modified=getdate(),modified_by=@UserID,lista_subset=@subset
WHERE (familia= @familia AND id_tipo_informe=@idTipoInforme)
END
--
RETURN;
END
--
ELSE IF (@accion='UPD_FAMILIA')
BEGIN
/* Cambia el estado del tipo de informe en la familia */
UPDATE LN_familias_tipo_informe SET visible=@activo,modified=getdate(),modified_by=@UserID
WHERE familia=@familia AND id_tipo_informe=@idTipoInforme
--
RETURN;
END
--
ELSE IF (@accion='UPD_INFORME_SUBSET')
BEGIN
/* Actualiza los subsets del tipo informe de la familia */
UPDATE LN_familias_tipo_informe SET lista_subset=@subset,modified=getdate(),modified_by=@UserID
WHERE familia=@familia AND id_tipo_informe=@idTipoInforme
--
RETURN;
END
--
ELSE IF (@accion='LISTAR_FAMILIA')
BEGIN
/* Lista todos los tipos de informe asignados a una familia */
SELECT LN_tipo_informes.*,LN_familias.nombre_familia,LN_familias.visible AS familia_visible,clientes.nombre_cliente AS nombre_cliente_familia, clientes.cliente AS cod_cliente_familia,LN_familias.familia,
LN_familias_tipo_informe.visible AS activo_fam_inf,LN_familias_tipo_informe.lista_subset AS subset_doc
FROM LN_tipo_informes
LEFT JOIN LN_familias_tipo_informe ON LN_tipo_informes.idTipoInforme=LN_familias_tipo_informe.id_tipo_informe
LEFT JOIN LN_familias ON LN_familias_tipo_informe.familia=LN_familias.familia
LEFT JOIN clientes ON ln_familias.cliente = clientes.cliente
WHERE LN_familias_tipo_informe.familia= @familia
ORDER BY nombre_tipo_informe ASC
--
RETURN;
--
END
--
ELSE IF (@accion='LISTAR_XINFORME')
BEGIN
/* Lista todos las familias asignados a un tipo de informe */
SELECT LN_tipo_informes.*,LN_familias.nombre_familia,LN_familias.visible AS familia_visible,clientes.nombre_cliente AS nombre_cliente_familia, clientes.cliente AS cod_cliente_familia ,LN_familias.familia,
LN_familias_tipo_informe.visible AS activo_fam_inf,LN_familias_tipo_informe.lista_subset AS subset_doc
FROM LN_tipo_informes
LEFT JOIN LN_familias_tipo_informe ON LN_tipo_informes.idTipoInforme=LN_familias_tipo_informe.id_tipo_informe
LEFT JOIN LN_familias ON LN_familias_tipo_informe.familia=LN_familias.familia
LEFT JOIN clientes ON ln_familias.cliente = clientes.cliente
WHERE LN_tipo_informes.idTipoInforme= @idTipoInforme
ORDER BY nombre_tipo_informe ASC
--
RETURN;
END
--
ELSE IF (@accion='SETS_INFORME_FAMILIA')
BEGIN
/* Levanta los set y subset de documentos asignados a la familia y el tipo de informe dado */
-- levanta el set asignado a la familia
SELECT LN_familias.set_doc AS set_doc,1 AS principal
FROM LN_familias
WHERE (LN_familias.familia=@familia)
--
UNION
-- Levanta los subsets asignados a la conexion tipo de informe familia
SELECT Item AS set_doc,0 AS principal
FROM dbo.DelimitedSplit8K(
(
SELECT LN_familias_tipo_informe.lista_subset AS set_doc
FROM LN_familias_tipo_informe
WHERE (LN_familias_tipo_informe.id_tipo_informe=@idTipoInforme AND LN_familias_tipo_informe.familia=@familia)
)
,',')
END
ELSE IF (@accion='SETS_FAMILIA')
BEGIN
/* Levanta los tipos de documentos de los set y subset de documentos asignados a la familia */
-- levanta los tipos de documentos del set asignado a la familia
SELECT LN_set_tipo_doc.tipo_doc,LN_set_tipo_doc.activo,LN_tipos_doc.nombre_tipo_doc
FROM LN_familias
INNER JOIN LN_set_tipo_doc ON LN_set_tipo_doc.set_doc=LN_familias.set_doc
INNER JOIN LN_tipos_doc ON LN_tipos_doc.tipo_doc=LN_set_tipo_doc.tipo_doc
WHERE (LN_familias.familia=@familia)
--
UNION
-- Levanta los tipos de documentos de los subsets asignados a la conexion tipos de informe con la familia dada
SELECT DISTINCT LN_set_tipo_doc.tipo_doc,LN_set_tipo_doc.activo,LN_tipos_doc.nombre_tipo_doc
FROM dbo.DelimitedSplit8K((SELECT dbo.SubsetsFamilia(@familia)),',')
INNER JOIN LN_set_tipo_doc ON LN_set_tipo_doc.set_doc=Item
INNER JOIN LN_tipos_doc ON LN_tipos_doc.tipo_doc=LN_set_tipo_doc.tipo_doc
--
RETURN;
END
END
GO
GO
-- Create the stored procedure in the specified schema
CREATE OR ALTER PROCEDURE dbo.LN_familia_tipo_informe
@accion VARCHAR(20),
@familia INT=NULL,
@idTipoInforme INT=NULL,
@UserID INT,
@activo BIT=1,
@subset VARCHAR(150)=NULL
-- add more stored procedure parameters here
AS
BEGIN
-- body of the stored procedure
SET NOCOUNT ON;
SET @accion=upper(@accion)
--
DECLARE @idreg INT = 0
--
IF (@accion='ASIGNAR_FAMILIA')
BEGIN
/* Asigna un tipo de informe a la familia, si existe lo actualiza */
SELECT @idreg=id_tipo_informe FROM LN_familias_tipo_informe WHERE familia = @familia AND id_tipo_informe=@idTipoInforme
IF (@idreg = 0)
BEGIN
INSERT INTO LN_familias_tipo_informe (familia,id_tipo_informe,visible,created,created_by,lista_subset)
VALUES (@familia,@idTipoInforme,1,getdate(),@UserID,@subset)
END
ELSE
BEGIN
UPDATE LN_familias_tipo_informe SET visible=1,modified=getdate(),modified_by=@UserID,lista_subset=@subset
WHERE (familia= @familia AND id_tipo_informe=@idTipoInforme)
END
--
RETURN;
END
--
ELSE IF (@accion='UPD_FAMILIA')
BEGIN
/* Cambia el estado del tipo de informe en la familia */
UPDATE LN_familias_tipo_informe SET visible=@activo,modified=getdate(),modified_by=@UserID
WHERE familia=@familia AND id_tipo_informe=@idTipoInforme
--
RETURN;
END
--
ELSE IF (@accion='UPD_INFORME_SUBSET')
BEGIN
/* Actualiza los subsets del tipo informe de la familia */
UPDATE LN_familias_tipo_informe SET lista_subset=@subset,modified=getdate(),modified_by=@UserID
WHERE familia=@familia AND id_tipo_informe=@idTipoInforme
--
RETURN;
END
--
ELSE IF (@accion='LISTAR_FAMILIA')
BEGIN
/* Lista todos los tipos de informe asignados a una familia */
SELECT LN_tipo_informes.*,LN_familias.nombre_familia,LN_familias.visible AS familia_visible,clientes.nombre_cliente AS nombre_cliente_familia, clientes.cliente AS cod_cliente_familia,LN_familias.familia,
LN_familias_tipo_informe.visible AS activo_fam_inf,LN_familias_tipo_informe.lista_subset AS subset_doc
FROM LN_tipo_informes
LEFT JOIN LN_familias_tipo_informe ON LN_tipo_informes.idTipoInforme=LN_familias_tipo_informe.id_tipo_informe
LEFT JOIN LN_familias ON LN_familias_tipo_informe.familia=LN_familias.familia
LEFT JOIN clientes ON ln_familias.cliente = clientes.cliente
WHERE LN_familias_tipo_informe.familia= @familia
ORDER BY nombre_tipo_informe ASC
--
RETURN;
--
END
--
ELSE IF (@accion='LISTAR_XINFORME')
BEGIN
/* Lista todos las familias asignados a un tipo de informe */
SELECT LN_tipo_informes.*,LN_familias.nombre_familia,LN_familias.visible AS familia_visible,clientes.nombre_cliente AS nombre_cliente_familia, clientes.cliente AS cod_cliente_familia ,LN_familias.familia,
LN_familias_tipo_informe.visible AS activo_fam_inf,LN_familias_tipo_informe.lista_subset AS subset_doc
FROM LN_tipo_informes
LEFT JOIN LN_familias_tipo_informe ON LN_tipo_informes.idTipoInforme=LN_familias_tipo_informe.id_tipo_informe
LEFT JOIN LN_familias ON LN_familias_tipo_informe.familia=LN_familias.familia
LEFT JOIN clientes ON ln_familias.cliente = clientes.cliente
WHERE LN_tipo_informes.idTipoInforme= @idTipoInforme
ORDER BY nombre_tipo_informe ASC
--
RETURN;
END
--
ELSE IF (@accion='SETS_INFORME_FAMILIA')
BEGIN
/* Levanta los set y subset de documentos asignados a la familia y el tipo de informe dado */
-- levanta el set asignado a la familia
SELECT LN_familias.set_doc AS set_doc,1 AS principal
FROM LN_familias
WHERE (LN_familias.familia=@familia)
--
UNION
-- Levanta los subsets asignados a la conexion tipo de informe familia
SELECT Item AS set_doc,0 AS principal
FROM dbo.DelimitedSplit8K(
(
SELECT LN_familias_tipo_informe.lista_subset AS set_doc
FROM LN_familias_tipo_informe
WHERE (LN_familias_tipo_informe.id_tipo_informe=@idTipoInforme AND LN_familias_tipo_informe.familia=@familia)
)
,',')
END
ELSE IF (@accion='SETS_FAMILIA')
BEGIN
/* Levanta los tipos de documentos de los set y subset de documentos asignados a la familia */
-- levanta los tipos de documentos del set asignado a la familia
SELECT LN_set_tipo_doc.tipo_doc,LN_set_tipo_doc.activo,LN_tipos_doc.nombre_tipo_doc
FROM LN_familias
INNER JOIN LN_set_tipo_doc ON LN_set_tipo_doc.set_doc=LN_familias.set_doc
INNER JOIN LN_tipos_doc ON LN_tipos_doc.tipo_doc=LN_set_tipo_doc.tipo_doc
WHERE (LN_familias.familia=@familia)
--
UNION
-- Levanta los tipos de documentos de los subsets asignados a la conexion tipos de informe con la familia dada
SELECT DISTINCT LN_set_tipo_doc.tipo_doc,LN_set_tipo_doc.activo,LN_tipos_doc.nombre_tipo_doc
FROM dbo.DelimitedSplit8K((SELECT dbo.SubsetsFamilia(@familia)),',')
INNER JOIN LN_set_tipo_doc ON LN_set_tipo_doc.set_doc=Item
INNER JOIN LN_tipos_doc ON LN_tipos_doc.tipo_doc=LN_set_tipo_doc.tipo_doc
--
RETURN;
END
END
GO
Depends On
8Used By
No items found