dbo.LN_Cumplimiento_ultimo_mes_ant

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_contratista int 4
@p_estado char 1
@p_estado_txt varchar 20

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- ===============================================================
-- Author: Marita Soria
-- Create date: 30/09/2021
-- Description: Indicador de Imperium - Cumplimiento último mes 
-- ===============================================================

CREATE OR ALTER PROCEDUREdbo.LN_Cumplimiento_ultimo_mes_ant 
 @p_contratista int, 
 @p_estado char(1) output, 
 @p_estado_txt varchar(20) output

AS
BEGIN
 SET NOCOUNT ON;
 -- 1) ROJO: NO PRESENTO NINGUN DOCUMENTO o Presento todo pero no presento el 931  
 --    (o sea, solo controlo que tenga sin presentar algún documento correspondiente al 931)

 if (select count(*) from led_docs where contratista = @p_contratista 
 and tipo_doc in (2,1032,1033) and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) > 0 
 begin
  set @p_estado = 'R'
  set @p_estado_txt = 'ROJO'
  return 
 end 
 
 -- 2) VERDE: Presentación completa de los documentos del periodo, y todos los datos del 931 completos
 if ((select count(*) from led_docs where contratista = @p_contratista 
  and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) = 0 
     and not exists (select *
     from led_campos_tipo_doc  
     left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
     where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
               and periodo = dbo.PeriodoVencido() and contratista_1 = @p_contratista 
                     and estado_doc = 'V' and contratista = contratista_1)
       and led_campos_tipo_doc.campo_activo = 1
       and isnull(led_campos_doc.valor_numerico,0) = 0
       and nombre_campo in 
             ('028segurovidaobligatorio',
         '301aportessegsoc',
         '302aportesoss',
         '312riesgotrabajo',
         '351contribsegsocial',
         '352contribobrasocial')))
 begin
    set @p_estado = 'V'
    set @p_estado_txt = 'VERDE'
    return 
 end
  
 -- 3) NARANJA: Al 931 le falta completar algún dato
 
 IF ((select count(*) from led_docs where contratista = @p_contratista 
 and tipo_doc in (2,1032,1033)  and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) = 0 
 and exists (select *
    from led_campos_tipo_doc  
    left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
    where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
             and periodo = dbo.PeriodoVencido() and contratista_1 = @p_contratista 
                   and estado_doc = 'V' and contratista = contratista_1)
     and led_campos_tipo_doc.campo_activo = 1
     and isnull(led_campos_doc.valor_numerico,0) = 0
     and nombre_campo in 
          ('028segurovidaobligatorio',
        '301aportessegsoc',
        '302aportesoss',
        '312riesgotrabajo',
        '351contribsegsocial',
        '352contribobrasocial')))
 begin
    set @p_estado = 'N'
    set @p_estado_txt = 'NARANJA'
    return 
 end

  -- 4) Cuando adeuda al menos un requerimiento pero tiene correcto el 100% el F931 --> AMARILLO 

 if ((select count(*) from led_docs where contratista = @p_contratista 
  and tipo_doc in (2,1032,1033) and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) = 0
  and  
  (select count(*) from led_docs where contratista = @p_contratista 
   and tipo_doc not in (2,1032,1033) and periodo = dbo.PeriodoVencido() and estado_doc not in ('V','X')) > 0
   and not exists (select *
    from led_campos_tipo_doc  
    left join led_campos_doc on (led_campos_doc.campo_tipo_doc = led_campos_tipo_doc.campo_tipo_doc and led_campos_doc.tipo_doc=led_campos_tipo_doc.tipo_doc)
    
    where led_campos_doc.doc_id = (select max(doc_id) from led_docs where tipo_doc = 1033
             and periodo = dbo.PeriodoVencido() and contratista_1 = @p_contratista 
                   and estado_doc = 'V' and contratista = contratista_1)
     and led_campos_tipo_doc.campo_activo = 1
     and isnull(led_campos_doc.valor_numerico,0) = 0
     and nombre_campo in 
          ('028segurovidaobligatorio',
        '301aportessegsoc',
        '302aportesoss',
        '312riesgotrabajo',
        '351contribsegsocial',
        '352contribobrasocial')))
 begin
   set @p_estado = 'A'
   set @p_estado_txt = 'AMARILLO'
   return 
 end  

 set @p_estado = null
 set @p_estado_txt = null 

END

GO

Used By

No items found