Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
3| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_cliente | int | 4 | |
| @p_lista | varchar | -1 | |
| @p_tipo_doc | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*
select * from clientes where cli_codigo = 222
exec [LN_excel_Sostenibilidad_titulos] 1230
exec [LN_excel_Sostenibilidad] 1226057645, null, 1231
exec ln_docs_valores 144831, 'SOCIAL-6'
declare @respuesta varchar(max)
EXEC [LN_excel_opciones_RSE] 'SOCIAL-6' , null, 'B', null, @respuesta output, 1230
select @respuesta
select * from LN_tipo_doc_campos where campo_id ='AMBIENTAL-3'
select @opciones = opciones, @tipo_campo = tipo_campo from LN_campos where campo = @campo
*/
CREATE OR ALTER PROCEDURE dbo.LN_excel_Sostenibilidad
@p_cliente int,
@p_lista varchar(max) = null,
@p_tipo_doc int
AS
BEGIN
SET NOCOUNT ON;
declare @resultado table (gestion_vigente int, gestion_desde date, contraparte int, pais varchar(100), familia varchar(150), nombre varchar(500), identificador varchar(20), tax_id varchar(20), campo_id varchar(max), campo_nro int, nombre_campo varchar(200), etiqueta varchar(300),resultado varchar(MAX))
declare @valores table (nro int, campo_id varchar(100), contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico float, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
declare @contraparte int
declare @gestion_vigente bit
declare @gestion_desde date
declare @campo_id varchar(max)
declare @campo_nro int
declare @id_padron int
declare @pais varchar(100)
declare @nombre varchar(500)
declare @familia varchar(150)
declare @identificador varchar(20)
declare @tax_id varchar(20)
declare @respuesta varchar(max)
declare @cont int, @gestion int, @doc_id int, @seccion int, @campo int, @tipo_campo varchar(1), @nombre_campo varchar(200), @etiqueta varchar(300),@fila int, @col int, @valor_numerico float, @valor_texto varchar(max), @valor_fecha smalldatetime, @valor_fecha_srt varchar(200)
declare @nro int, @tipo_doc int, @nombre_tipo_doc varchar(max),
@visible int, @titulo_seccion varchar(max)
declare @campos table (nro int identity, tipo_doc int, nombre_tipo_doc varchar(max), nombre_campo varchar(max), etiqueta varchar(max), tipo_campo char(1),
titulo_seccion varchar(max), seccion int, visible int,campo_id varchar(max))
insert into @campos (tipo_doc , nombre_tipo_doc , nombre_campo , etiqueta , tipo_campo,
titulo_seccion , seccion , visible ,campo_id )
exec [LN_doc_campos_tipo_doc] @p_tipo_doc
if (@p_lista is NOT null)
begin
DECLARE C_Cursor CURSOR FOR
SELECT LN_contrapartes.contraparte, ln_contrapartes.id_padron,
country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificacion,
LN_familias.nombre_familia, doc_id, LN_gestiones.vigente, ln_gestiones.desde
FROM LN_contrapartes
INNER JOIN dbo.DelimitedSplit8K(@p_lista, ',') Contrapartes ON LN_contrapartes.contraparte = Contrapartes.Item
left join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
/* Si solo queremos gestion actual agregar esto */
--and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1
/**/
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
inner join ln_docs on (ln_docs.contraparte = ln_contrapartes.contraparte and ln_docs.gestion = ln_gestiones.gestion
and ln_docs.tipo_doc = @p_tipo_doc and ln_docs.aplica = 1 and ln_docs.estado_doc = 'V')
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end
else
begin
DECLARE C_Cursor CURSOR FOR
SELECT LN_contrapartes.contraparte, ln_contrapartes.id_padron,
country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificacion,
LN_familias.nombre_familia, doc_id, LN_gestiones.vigente, ln_gestiones.desde
FROM LN_contrapartes
left join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
/* Si solo queremos gestion actual agregar esto */
--and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1
/**/
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
inner join ln_docs on (ln_docs.contraparte = ln_contrapartes.contraparte and ln_docs.gestion = ln_gestiones.gestion and
ln_docs.tipo_doc = @p_tipo_doc and ln_docs.aplica = 1 and ln_docs.estado_doc = 'V')
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @contraparte, @id_padron,
@pais, @nombre,
@identificador, @tax_id,
@familia,@doc_id,@gestion_vigente,@gestion_desde
WHILE @@fetch_status = 0
BEGIN
DECLARE C_Cursor2 CURSOR FOR
select * from @campos where isnull(campo_id,'') != '' and tipo_campo != 'F' order by nro
OPEN C_Cursor2
FETCH NEXT FROM C_Cursor2 INTO @nro, @tipo_doc , @nombre_tipo_doc, @nombre_campo, @etiqueta, @tipo_campo,
@titulo_seccion, @seccion, @visible, @campo_id
WHILE @@fetch_status = 0
BEGIN
insert into @valores (contraparte , gestion , doc_id , seccion , campo , tipo_campo ,
nombre_campo, etiqueta,fila , col , valor_numerico , valor_texto , valor_fecha , valor_fecha_srt)
exec ln_docs_valores @contraparte, @campo_id, @doc_id
update @valores set nro = @nro, campo_id = @campo_id where contraparte = @contraparte and campo_id is null
FETCH NEXT FROM C_Cursor2 INTO @nro, @tipo_doc , @nombre_tipo_doc, @nombre_campo, @etiqueta, @tipo_campo,
@titulo_seccion, @seccion, @visible, @campo_id
END
CLOSE C_Cursor2
DEALLOCATE C_Cursor2
DECLARE C_Resp CURSOR FOR
select * from @valores where contraparte = @contraparte
OPEN C_Resp
FETCH NEXT FROM C_Resp INTO @nro, @campo_id, @cont, @gestion, @doc_id, @seccion, @campo, @tipo_campo, @nombre_campo , @etiqueta ,@fila , @col, @valor_numerico , @valor_texto, @valor_fecha , @valor_fecha_srt
WHILE @@fetch_status = 0
BEGIN
set @respuesta = null
EXEC [LN_excel_opciones_RSE] @campo_id , @valor_numerico, @valor_texto, @valor_fecha_srt, @respuesta output, @p_tipo_doc
insert into @resultado values (@gestion_vigente,@gestion_desde,@contraparte, @pais, @familia, @nombre, @identificador, @tax_id, @campo_id, @campo_nro, @nombre_campo, @etiqueta, isnull(@respuesta,''))
FETCH NEXT FROM C_Resp INTO @nro, @campo_id, @cont, @gestion, @doc_id, @seccion, @campo, @tipo_campo, @nombre_campo , @etiqueta ,@fila , @col, @valor_numerico , @valor_texto, @valor_fecha , @valor_fecha_srt
END
CLOSE C_Resp
DEALLOCATE C_Resp
FETCH NEXT FROM C_Cursor INTO @contraparte, @id_padron,
@pais, @nombre,
@identificador, @tax_id,
@familia,@doc_id,@gestion_vigente,@gestion_desde
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
select
iif (gestion_vigente=1,'ACTUAL','ANTERIOR') as actual,
convert(varchar,gestion_desde,103) as fecha_gestion,
contraparte, pais, familia, nombre, identificador, tax_id, campo_id, campo_nro, nombre_campo, etiqueta, resultado
from @resultado order by contraparte, gestion_desde, campo_nro
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*
select * from clientes where cli_codigo = 222
exec [LN_excel_Sostenibilidad_titulos] 1230
exec [LN_excel_Sostenibilidad] 1226057645, null, 1231
exec ln_docs_valores 144831, 'SOCIAL-6'
declare @respuesta varchar(max)
EXEC [LN_excel_opciones_RSE] 'SOCIAL-6' , null, 'B', null, @respuesta output, 1230
select @respuesta
select * from LN_tipo_doc_campos where campo_id ='AMBIENTAL-3'
select @opciones = opciones, @tipo_campo = tipo_campo from LN_campos where campo = @campo
*/
CREATE OR ALTER PROCEDURE dbo.LN_excel_Sostenibilidad
@p_cliente int,
@p_lista varchar(max) = null,
@p_tipo_doc int
AS
BEGIN
SET NOCOUNT ON;
declare @resultado table (gestion_vigente int, gestion_desde date, contraparte int, pais varchar(100), familia varchar(150), nombre varchar(500), identificador varchar(20), tax_id varchar(20), campo_id varchar(max), campo_nro int, nombre_campo varchar(200), etiqueta varchar(300),resultado varchar(MAX))
declare @valores table (nro int, campo_id varchar(100), contraparte int, gestion int, doc_id int, seccion int, campo int, tipo_campo varchar(1), nombre_campo varchar(200), etiqueta varchar(300),fila int, col int, valor_numerico float, valor_texto varchar(max), valor_fecha smalldatetime, valor_fecha_srt varchar(200))
declare @contraparte int
declare @gestion_vigente bit
declare @gestion_desde date
declare @campo_id varchar(max)
declare @campo_nro int
declare @id_padron int
declare @pais varchar(100)
declare @nombre varchar(500)
declare @familia varchar(150)
declare @identificador varchar(20)
declare @tax_id varchar(20)
declare @respuesta varchar(max)
declare @cont int, @gestion int, @doc_id int, @seccion int, @campo int, @tipo_campo varchar(1), @nombre_campo varchar(200), @etiqueta varchar(300),@fila int, @col int, @valor_numerico float, @valor_texto varchar(max), @valor_fecha smalldatetime, @valor_fecha_srt varchar(200)
declare @nro int, @tipo_doc int, @nombre_tipo_doc varchar(max),
@visible int, @titulo_seccion varchar(max)
declare @campos table (nro int identity, tipo_doc int, nombre_tipo_doc varchar(max), nombre_campo varchar(max), etiqueta varchar(max), tipo_campo char(1),
titulo_seccion varchar(max), seccion int, visible int,campo_id varchar(max))
insert into @campos (tipo_doc , nombre_tipo_doc , nombre_campo , etiqueta , tipo_campo,
titulo_seccion , seccion , visible ,campo_id )
exec [LN_doc_campos_tipo_doc] @p_tipo_doc
if (@p_lista is NOT null)
begin
DECLARE C_Cursor CURSOR FOR
SELECT LN_contrapartes.contraparte, ln_contrapartes.id_padron,
country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificacion,
LN_familias.nombre_familia, doc_id, LN_gestiones.vigente, ln_gestiones.desde
FROM LN_contrapartes
INNER JOIN dbo.DelimitedSplit8K(@p_lista, ',') Contrapartes ON LN_contrapartes.contraparte = Contrapartes.Item
left join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
/* Si solo queremos gestion actual agregar esto */
--and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1
/**/
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
inner join ln_docs on (ln_docs.contraparte = ln_contrapartes.contraparte and ln_docs.gestion = ln_gestiones.gestion
and ln_docs.tipo_doc = @p_tipo_doc and ln_docs.aplica = 1 and ln_docs.estado_doc = 'V')
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end
else
begin
DECLARE C_Cursor CURSOR FOR
SELECT LN_contrapartes.contraparte, ln_contrapartes.id_padron,
country.country_name, padrones.nombre_persona,
identificadores.abreviatura, padrones.identificacion,
LN_familias.nombre_familia, doc_id, LN_gestiones.vigente, ln_gestiones.desde
FROM LN_contrapartes
left join LN_gestiones on LN_gestiones.contraparte = LN_contrapartes.contraparte
/* Si solo queremos gestion actual agregar esto */
--and LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE() and ln_gestiones.vigente = 1
/**/
INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
INNER JOIN country ON identificadores.country_code = country.country_code
INNER JOIN LN_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
INNER JOIN users ON LN_contraparte_familias.created_by = users.user_id
LEFT OUTER JOIN users as users1 ON LN_contraparte_familias.modified_by = users1.user_id
inner join ln_docs on (ln_docs.contraparte = ln_contrapartes.contraparte and ln_docs.gestion = ln_gestiones.gestion and
ln_docs.tipo_doc = @p_tipo_doc and ln_docs.aplica = 1 and ln_docs.estado_doc = 'V')
where LN_contrapartes.cliente = @p_cliente
and LN_contrapartes.activo = 1
ORDER BY country.country_name, LN_familias.nombre_familia, padrones.nombre_persona
end
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @contraparte, @id_padron,
@pais, @nombre,
@identificador, @tax_id,
@familia,@doc_id,@gestion_vigente,@gestion_desde
WHILE @@fetch_status = 0
BEGIN
DECLARE C_Cursor2 CURSOR FOR
select * from @campos where isnull(campo_id,'') != '' and tipo_campo != 'F' order by nro
OPEN C_Cursor2
FETCH NEXT FROM C_Cursor2 INTO @nro, @tipo_doc , @nombre_tipo_doc, @nombre_campo, @etiqueta, @tipo_campo,
@titulo_seccion, @seccion, @visible, @campo_id
WHILE @@fetch_status = 0
BEGIN
insert into @valores (contraparte , gestion , doc_id , seccion , campo , tipo_campo ,
nombre_campo, etiqueta,fila , col , valor_numerico , valor_texto , valor_fecha , valor_fecha_srt)
exec ln_docs_valores @contraparte, @campo_id, @doc_id
update @valores set nro = @nro, campo_id = @campo_id where contraparte = @contraparte and campo_id is null
FETCH NEXT FROM C_Cursor2 INTO @nro, @tipo_doc , @nombre_tipo_doc, @nombre_campo, @etiqueta, @tipo_campo,
@titulo_seccion, @seccion, @visible, @campo_id
END
CLOSE C_Cursor2
DEALLOCATE C_Cursor2
DECLARE C_Resp CURSOR FOR
select * from @valores where contraparte = @contraparte
OPEN C_Resp
FETCH NEXT FROM C_Resp INTO @nro, @campo_id, @cont, @gestion, @doc_id, @seccion, @campo, @tipo_campo, @nombre_campo , @etiqueta ,@fila , @col, @valor_numerico , @valor_texto, @valor_fecha , @valor_fecha_srt
WHILE @@fetch_status = 0
BEGIN
set @respuesta = null
EXEC [LN_excel_opciones_RSE] @campo_id , @valor_numerico, @valor_texto, @valor_fecha_srt, @respuesta output, @p_tipo_doc
insert into @resultado values (@gestion_vigente,@gestion_desde,@contraparte, @pais, @familia, @nombre, @identificador, @tax_id, @campo_id, @campo_nro, @nombre_campo, @etiqueta, isnull(@respuesta,''))
FETCH NEXT FROM C_Resp INTO @nro, @campo_id, @cont, @gestion, @doc_id, @seccion, @campo, @tipo_campo, @nombre_campo , @etiqueta ,@fila , @col, @valor_numerico , @valor_texto, @valor_fecha , @valor_fecha_srt
END
CLOSE C_Resp
DEALLOCATE C_Resp
FETCH NEXT FROM C_Cursor INTO @contraparte, @id_padron,
@pais, @nombre,
@identificador, @tax_id,
@familia,@doc_id,@gestion_vigente,@gestion_desde
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
select
iif (gestion_vigente=1,'ACTUAL','ANTERIOR') as actual,
convert(varchar,gestion_desde,103) as fecha_gestion,
contraparte, pais, familia, nombre, identificador, tax_id, campo_id, campo_nro, nombre_campo, etiqueta, resultado
from @resultado order by contraparte, gestion_desde, campo_nro
END
GO
Depends On
14Used By
No items found