dbo.LN_excel_Sostenibilidad

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

Used By

No items found