dbo.Reporte_cumplimiento

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

2
Name Data Type Length Description
@p_cliente int 4
@p_servicio int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec Reporte_cumplimiento 5546348, 47
*/

CREATE OR ALTER PROCEDURE dbo.Reporte_cumplimiento 
 @p_cliente int = 7500717,
 @p_servicio int = 47
AS
BEGIN

 SET NOCOUNT ON;
 declare @resultado table (contraparte int, gest int, pais char(2), nombre varchar(1000), cuit varchar(20), familia varchar(100), desde date, hasta date, limite_carga_inicial date, carga_inicial bit, cd decimal(4,1),  cdv decimal(4,1))
 DECLARE @cd decimal(4,1)=0, @cdv decimal(4,1)=0, @icd int = NULL
 declare @estado_doc char(1), @doc_id int, @tipo_doc int, @vers int
 DECLARE @cantidad int = 0, @cumplidos int = 0, @cantidad_verificados int = 0
 declare @contraparte int, 
   @gest int, 
   @pais varchar(10), 
   @nombre varchar(1000), 
   @cuit varchar(50), 
   @desde date, 
   @hasta date, 
   @limite_carga_inicial date, 
   @carga_inicial bit, 
   @familia varchar(100)



  DECLARE C_Cursor CURSOR FOR 
   select c.contraparte, g.gestion, c.country_code, p.nombre_persona, p.identificacion, z.nombre_familia, g.desde, g.hasta, c.limite_carga_inicial, c.carga_inicial
   from ln_contrapartes c
   inner join padrones p on p.id_padron = c.id_padron 
   inner join ln_gestiones g on g.contraparte = c.contraparte and g.vigente = 1
   inner join ln_contraparte_familias f on f.contraparte = c.contraparte 
   inner join LN_familias z on z.familia = f.familia
    
   where c.cliente = @p_cliente and c.activo = 1 and c.servicio_contratado = @p_servicio and c.subcontratista = 0 
   and exists (select * from LN_docs d where d.contraparte = c.contraparte and d.gestion = g.gestion and d.aplica = 1) 
   


  OPEN C_Cursor

  fetch next from C_Cursor into @contraparte, @gest, @pais, @nombre, @cuit, @familia, @desde, @hasta, @limite_carga_inicial, @carga_inicial
  while @@FETCH_STATUS=0 begin
   set @cantidad = null
   set @cumplidos = null
   set @cd = null 

   set @cantidad = (SELECT COUNT(*) 
   FROM LN_docs
            INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
            INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
            INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
                                            AND LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
                                            AND LN_set_tipo_doc.activo = 1)   
            WHERE LN_docs.contraparte = @contraparte
   AND LN_docs.estado_doc <> 'X'
   AND LN_docs.gestion = @gest
   AND LN_docs.aplica = 1)

   if (@cantidad) > 0 
   begin
    set @cumplidos = (SELECT COUNT(*) 
    FROM LN_docs
    INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
    INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
            AND LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
            AND LN_set_tipo_doc.activo = 1)   
    WHERE LN_docs.contraparte = @contraparte
    AND LN_docs.estado_doc in ('I','V')
    AND LN_docs.gestion = @gest
    AND LN_docs.aplica = 1)

    SET @cd = convert(float, @cumplidos) / convert(float, @cantidad) * 100



    set @cantidad_verificados = (SELECT COUNT(*) 
    FROM LN_docs
    INNER JOIN LN_contraparte_familias ON LN_docs.contraparte = LN_contraparte_familias.contraparte
    INNER JOIN LN_familias ON LN_contraparte_familias.familia = LN_familias.familia
    INNER JOIN LN_set_tipo_doc ON (LN_familias.set_doc = LN_set_tipo_doc.set_doc
            AND LN_docs.tipo_doc = LN_set_tipo_doc.tipo_doc
            AND LN_set_tipo_doc.activo = 1)   
    WHERE LN_docs.contraparte = @contraparte
    AND LN_docs.estado_doc in ('V')
    AND LN_docs.gestion = @gest
    AND LN_docs.aplica = 1)

    SET @cdv = convert(float, @cantidad_verificados) / convert(float, @cantidad) * 100



   end
    

   insert into @resultado values(@contraparte, @gest, @pais, @nombre, @cuit, @familia, @desde, @hasta, @limite_carga_inicial, @carga_inicial, @cd, @cdv)
   
   fetch next from C_Cursor into @contraparte, @gest, @pais, @nombre, @cuit, @familia, @desde, @hasta, @limite_carga_inicial, @carga_inicial

  END

  CLOSE C_Cursor
  DEALLOCATE C_Cursor

  select contraparte,  
         pais,
      nombre,
      cuit,
      familia,
      desde,
      limite_carga_inicial,
      iif(carga_inicial=1,'SI','NO') as 'carga',
      cd as cumplimiento, 
      cdv as verificados
      from @resultado
END 
GO

Used By

No items found