dbo.Imperium_buscar_contratistas

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

7
Name Data Type Length Description
@accion varchar 50
@p_contratista int 4
@p_contratista_1 int 4
@p_subcontratista_de int 4
@p_estado_contratista varchar 1
@p_cliente int 4
@p_tipo_contratista int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

-- exec Imperium_buscar_contratistas 'search', 1003

CREATE OR ALTER PROCEDURE dbo.Imperium_buscar_contratistas
 -- Add the parameters for the stored procedure here

 @accion          varchar(50) = null,
 @p_contratista        int = null,
 @p_contratista_1       int = null,
 @p_subcontratista_de      int = null,  /** pasar un ID para buscar subcontratistas || Uso especial cuando @p_cliente > 0 **/
 @p_estado_contratista      varchar(1) = 'A',
 @p_cliente         int = null,
 @p_tipo_contratista       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

 if (@accion = 'search') begin

  IF (@p_cliente is null) BEGIN

   if (@p_contratista is not null) begin

       if (@p_estado_contratista is not null) 
    begin
    select led_contratistas.*, 
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
  
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.contratista = @p_contratista
    and led_contratistas.estado_contratista = @p_estado_contratista

    order by padrones.nombre_persona
    end 

    else
    
    begin
    select led_contratistas.*, 
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
  
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.contratista = @p_contratista

    order by padrones.nombre_persona
    end


   end else

   if (@p_contratista_1 is not null) begin

    select led_contratistas.*, 
  
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
  
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.contratista_1 = @p_contratista_1
    and led_contratistas.estado_contratista = @p_estado_contratista

    order by padrones.nombre_persona

   end else

   if (@p_subcontratista_de is not null) begin

    select led_contratistas.*, 
  
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
  
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.subcontratista_de = @p_subcontratista_de
    and led_contratistas.estado_contratista = @p_estado_contratista

    order by padrones.nombre_persona
  
   end

  END ELSE BEGIN

   -- buscando por cliente

   /*
    @p_subcontratista_de:
    = 0: Sólo contratistas principales del cliente
    < 0: Todos los subcontratistas de un cliente
    > 0: Subcontratistas de un contratista directo específico del cliente
    */


   if (@p_subcontratista_de = 0)

    select led_contratistas.*, 
  
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
    inner join ln_contrapartes LNC on LNC.id_imperium = led_contratistas.contratista
    inner join LN_contraparte_familias LNCF on LNCF.contraparte=LNC.contraparte
    inner join ln_familias LNF on (LNF.familia = LNCF.familia and LNF.visible=1)
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.cliente = @p_cliente
    and led_contratistas.estado_contratista = @p_estado_contratista
    and led_contratistas.subcontratista_de IS NULL
    and LNC.activo=1
    order by padrones.nombre_persona

   else if (@p_subcontratista_de < 0)

    select led_contratistas.*, 
  
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
  
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.cliente = @p_cliente
    and led_contratistas.estado_contratista = @p_estado_contratista
    and led_contratistas.subcontratista_de IS NOT NULL

    order by padrones.nombre_persona

   else if (@p_subcontratista_de > 0)

    select led_contratistas.*, 
  
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
  
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.cliente = @p_cliente
    and led_contratistas.estado_contratista = @p_estado_contratista
    and led_contratistas.subcontratista_de = @p_subcontratista_de

    order by padrones.nombre_persona

   else

    select led_contratistas.*, 
  
    padrones.identificador, padrones.numero, padrones.nombre_persona, padrones.identificacion,
    padrones.tipo_persona, identificadores.abreviatura, clientes.nombre_cliente, identificadores.country_code,
    country.country_name, led_tipos_contratista.nombre_tipo_contratista,
    users.first_name, users.last_name, users.email, users.cookie_id,

    padron_d.nombre_persona AS nombre_persona_contratista_d, 
    padron_d.numero AS numero_contratista_d,
    identificador_d.abreviatura AS abreviatura_contratista_d,

    padron_1.nombre_persona AS nombre_persona_contratista_1, 
    padron_1.numero AS numero_contratista_1,
    identificador_1.abreviatura AS abreviatura_contratista_1
   

    from led_contratistas inner join padrones on led_contratistas.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 clientes on led_contratistas.cliente = clientes.cliente
    inner join led_tipos_contratista on led_contratistas.tipo_contratista = led_tipos_contratista.tipo_contratista

    inner join led_contratistas AS contratista_1 on led_contratistas.contratista_1 = contratista_1.contratista
    inner join padrones as padron_1 on contratista_1.id_padron = padron_1.id_padron
    inner join identificadores as identificador_1 on padron_1.identificador = identificador_1.identificador
  
    left outer join led_contratistas AS contratista_d on led_contratistas.subcontratista_de = contratista_d.contratista
    left outer join padrones as padron_d on contratista_d.id_padron = padron_d.id_padron
    left outer join identificadores as identificador_d on padron_d.identificador = identificador_d.identificador

    left outer join users on led_contratistas.user_id = users.user_id

    where led_contratistas.cliente = @p_cliente
    and led_contratistas.estado_contratista = @p_estado_contratista

    order by padrones.nombre_persona



  


  END

 end else

 if (@accion = 'update') begin

  update led_contratistas set
    tipo_contratista = @p_tipo_contratista,
    subcontratista_de = @p_subcontratista_de
  where contratista = @p_contratista

  declare @p_userID int 
  select top 1 @p_cliente=cliente,@p_userID = created_by from led_contratista_multi where contratista = @p_contratista and contratista_1=@p_subcontratista_de

  delete led_contratista_multi where contratista = @p_contratista and contratista_1=@p_subcontratista_de

  insert into led_contratista_multi (contratista,id,tipo_contratista,id_dep,vigencia_desde,contratista_1,cliente,activo,created)
  values (@p_contratista,1,@p_tipo_contratista,0,getdate(),@p_subcontratista_de,@p_cliente,1,getdate())
    
/* agb 

select * from led_contratistas where contratista = 4354
select * from led_contratista_multi where contratista = 4354 and contratista_1=1308


*/




 end
 
END
GO

Used By

No items found