dbo.Imperium_buscar_tipos_empleado

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_contratista int 4
@p_tipo_empleado int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*

exec Imperium_buscar_tipos_empleado 4084

*/

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_buscar_tipos_empleado
 -- Add the parameters for the stored procedure here
 @p_contratista           int = NULL,
 @p_tipo_empleado          int = null
 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
 declare @tipo_contratista int, @cliente int, @tipos_hab tinyint = 0


 
 -- OBTENER TIPOS DE EMPLEADO HABILITADOS PARA UN CONTRATISTA EN PARTICULAR 
 declare @QuienVerifica char(1) ='F'

 if (@p_contratista is not null AND @p_tipo_empleado is null) begin
 /*
  select @tipo_contratista = tipo_contratista , @cliente = cliente
  from led_contratistas where contratista = @p_contratista
  */


  select distinct @tipo_contratista=led_contratistas.tipo_contratista , @cliente=led_contratistas.cliente,
  @QuienVerifica=led_cliente_contratista.verificacion 
  from led_contratistas inner join led_cliente_contratista on (led_contratistas.tipo_contratista=led_cliente_contratista.tipo_contratista
  and led_contratistas.cliente=led_cliente_contratista.cliente)
   where led_contratistas.contratista = @p_contratista


  -- verificar si existen tipos de empleado habilitados exclusivamente para el tipo de contratista
  if exists (
     /*select 2 as tipo_empleado
      union */

     select distinct led_tipos_empleado.tipo_empleado 
     from led_tipos_empleado inner join led_cliente_empleado
     on led_cliente_empleado.tipo_empleado = led_tipos_empleado.tipo_empleado
     where led_tipos_empleado.hab_tipo_contratista IN 
      (SELECT tipo_contratista
      FROM led_contratista_multi
      WHERE contratista = @p_contratista
      AND activo = 1
      GROUP BY tipo_contratista)
     and led_cliente_empleado.cliente = @cliente
     group by led_tipos_empleado.tipo_empleado) 
  begin

   set @tipos_hab = 1

  end
  /**/



  /* select @tipos_hab as tipos_hab*/

  -- modalidad de documentación del contratista
  declare @mod_count int, @modalidad_doc varchar(1)

  select @mod_count = count(*) from (
   select led_tipos_doc.modalidad
   from led_cliente_contratista inner join led_tipos_doc 
   on led_cliente_contratista.tipo_doc = led_tipos_doc.tipo_doc
   where led_cliente_contratista.cliente = @cliente
   and led_cliente_contratista.tipo_contratista IN
      (SELECT tipo_contratista
      FROM led_contratista_multi
      WHERE contratista = @p_contratista
      AND activo = 1
      GROUP BY tipo_contratista)    
   and led_cliente_contratista.activo = 1
   group by led_tipos_doc.modalidad) modalidades

/*
select 'J',@mod_count as MODcount

exec Imperium_buscar_tipos_empleado 4084
*/


  if (@mod_count = 1) 
   -- unica modalidad Vencida o adelantada

   select @modalidad_doc = led_tipos_doc.modalidad
   from led_cliente_contratista inner join led_tipos_doc 
   on led_cliente_contratista.tipo_doc = led_tipos_doc.tipo_doc
   where led_cliente_contratista.cliente = @cliente
   and led_cliente_contratista.tipo_contratista IN
      (SELECT tipo_contratista
      FROM led_contratista_multi
      WHERE contratista = @p_contratista
      AND activo = 1
      GROUP BY tipo_contratista)    
   and led_cliente_contratista.activo = 1
   group by led_tipos_doc.modalidad



  -- modalidad de documentación de los empleados
  /*declare @mod_count_emp int, @modalidad_doc_emp varchar(1)
  
   select @mod_count_emp = count(*) from (
   select led_tipos_doc.modalidad
   from led_cliente_empleado inner join led_tipos_doc 
   on led_cliente_empleado.tipo_doc = led_tipos_doc.tipo_doc
   where led_cliente_empleado.cliente = @cliente
   and led_cliente_empleado.activo = 1
   group by led_tipos_doc.modalidad) modalidades
  
  
   if (@mod_count_emp = 1) 
  
   -- unica modalidad Vencida o adelantada
  
   select @modalidad_doc_emp = led_tipos_doc.modalidad
   from led_cliente_empleado inner join led_tipos_doc 
   on led_cliente_empleado.tipo_doc = led_tipos_doc.tipo_doc
   where led_cliente_empleado.cliente = @cliente
   and led_cliente_empleado.activo = 1
   group by led_tipos_doc.modalidad*/



  -- misma única modalidad vencida o adelantada tanto para el contratista como para los empleados
  /*select @tipos_hab as tipos_hab,@mod_count as mod_count*/

  if (@mod_count = 1) begin


   if (@tipos_hab = 0)

    -- sin tipos exclusivos para el tipo de contratista

    select led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
    clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
    from led_cliente_empleado
    inner join clientes on led_cliente_empleado.cliente = clientes.cliente
    inner join led_tipos_empleado on led_cliente_empleado.tipo_empleado = led_tipos_empleado.tipo_empleado
    inner join led_tipos_doc on led_cliente_empleado.tipo_doc = led_tipos_doc.tipo_doc 
    where led_cliente_empleado.cliente = @cliente
    and led_cliente_empleado.activo = 1
    and led_tipos_doc.modalidad = @modalidad_doc
    group by led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
    clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
    order by led_tipos_empleado.nombre_tipo_empleado

   else
   
    -- con tipos exclusivos para el tipo de contratista
    select  led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
    clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
    from led_cliente_empleado
    inner join clientes on led_cliente_empleado.cliente = clientes.cliente
    inner join led_tipos_empleado on led_cliente_empleado.tipo_empleado = led_tipos_empleado.tipo_empleado
    inner join led_tipos_doc on led_cliente_empleado.tipo_doc = led_tipos_doc.tipo_doc 
    inner join (
       /*select 2 as tipo_empleado
        union */

       select distinct led_tipos_empleado.tipo_empleado 
       from led_tipos_empleado inner join led_cliente_empleado
       on led_cliente_empleado.tipo_empleado = led_tipos_empleado.tipo_empleado
       where led_tipos_empleado.hab_tipo_contratista IN 
        (SELECT tipo_contratista
        FROM led_contratista_multi
        WHERE contratista = @p_contratista
        AND activo = 1
        GROUP BY tipo_contratista)
       and led_cliente_empleado.cliente = @cliente
       group by led_tipos_empleado.tipo_empleado) exclusivos on led_cliente_empleado.tipo_empleado = exclusivos.tipo_empleado
    where led_cliente_empleado.cliente = @cliente
    and led_cliente_empleado.activo = 1
    and led_tipos_doc.modalidad = @modalidad_doc
    group by led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
    clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
    order by led_tipos_empleado.nombre_tipo_empleado

    /*select @tipos_hab as tipos_hab,@mod_count as mod_count,@modalidad_doc as modalidad_doc*/
  end


  else begin

   -- contratista tiene modalidad Vencida y adelantada : no hay restricción
   if (@mod_count > 1) begin

    if (@tipos_hab = 0)

     -- sin tipos exclusivos para el tipo de contratista
     select led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
     clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
     from led_cliente_empleado
     inner join clientes on led_cliente_empleado.cliente = clientes.cliente
     inner join led_tipos_empleado on led_cliente_empleado.tipo_empleado = led_tipos_empleado.tipo_empleado
     inner join led_tipos_doc on led_cliente_empleado.tipo_doc = led_tipos_doc.tipo_doc 
     where led_cliente_empleado.cliente = @cliente
     and led_cliente_empleado.activo = 1
     and led_tipos_empleado.hab_tipo_contratista is null
     /*and led_cliente_empleado.verificacion=@QuienVerifica */
     group by led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
     clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
     order by led_tipos_empleado.nombre_tipo_empleado

    else
   
     -- con tipos exclusivos para el tipo de contratista
     select led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
     clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
     from led_cliente_empleado
     inner join clientes on led_cliente_empleado.cliente = clientes.cliente
     inner join led_tipos_empleado on led_cliente_empleado.tipo_empleado = led_tipos_empleado.tipo_empleado
     inner join led_tipos_doc on led_cliente_empleado.tipo_doc = led_tipos_doc.tipo_doc 
     inner join (select led_tipos_empleado.tipo_empleado 
        from led_tipos_empleado inner join led_cliente_empleado
        on led_cliente_empleado.tipo_empleado = led_tipos_empleado.tipo_empleado
        where led_tipos_empleado.hab_tipo_contratista IN 
         (SELECT tipo_contratista
         FROM led_contratista_multi
         WHERE contratista = @p_contratista
         AND activo = 1
         GROUP BY tipo_contratista)
        and led_cliente_empleado.cliente = @cliente
        group by led_tipos_empleado.tipo_empleado) exclusivos on led_cliente_empleado.tipo_empleado = exclusivos.tipo_empleado
     where led_cliente_empleado.cliente = @cliente
     and led_cliente_empleado.activo = 1
     and led_tipos_empleado.hab_tipo_contratista is not null
     group by led_cliente_empleado.cliente, led_cliente_empleado.tipo_empleado,
     clientes.nombre_cliente, led_tipos_empleado.nombre_tipo_empleado, led_tipos_empleado.hab_tipo_contratista, led_tipos_empleado.es_principal
     order by led_tipos_empleado.nombre_tipo_empleado

   end

  end


 end
 
 -- OBTENER TIPOS DE ALTA HABILITADO PARA UN CONTRATISTA Y TIPO DE EMPLEADO

 if (@p_contratista is not null AND @p_tipo_empleado is not null) begin

 /*select @tipos_hab as tipos_hab,@mod_count as mod_count,@modalidad_doc as modalidad_doc,'AA' AS AA*/

  select @tipo_contratista = tipo_contratista , @cliente = cliente
  from led_contratistas where contratista = @p_contratista

  select led_tipos_alta.tipo_alta, led_tipos_alta.nombre_tipo_alta
  from led_tipos_alta inner join led_cliente_empleado
  on led_tipos_alta.tipo_alta = led_cliente_empleado.tipo_alta
  where led_cliente_empleado.cliente = @cliente
  and led_cliente_empleado.tipo_empleado = @p_tipo_empleado
  and led_cliente_empleado.activo = 1
  group by led_tipos_alta.tipo_alta, led_tipos_alta.nombre_tipo_alta
  order by led_tipos_alta.nombre_tipo_alta  

 end


END
GO

Used By

No items found