dbo.Imperium_buscar_tipos_vehiculo_agb

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_vehiculo int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*

exec Imperium_buscar_tipos_vehiculo_AGB 5723

exec Imperium_buscar_tipos_vehiculo_AGB 3617

select * from led_cliente_vehiculo_tipo_contratista
where cliente = 3920694
and tipo_contratista = 232


select tipo_contratista , cliente from led_contratistas where contratista in (5723,3617)
select tipo_contratista , cliente from led_contratistas where contratista in (5723,3617)


select 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 = 3920694
and led_cliente_contratista.tipo_contratista IN
(SELECT tipo_contratista
FROM led_contratista_multi
WHERE contratista = 5723
AND activo = 1
GROUP BY tipo_contratista)
and led_cliente_contratista.activo = 1
group by led_tipos_doc.modalidad) modalidades

select * from (
select led_tipos_doc.modalidad
from led_cliente_vehiculo inner join led_tipos_doc 
on led_cliente_vehiculo.tipo_doc = led_tipos_doc.tipo_doc
where led_cliente_vehiculo.cliente = 3920694
and led_cliente_vehiculo.activo = 1
group by led_tipos_doc.modalidad) modalidades


select led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
from led_cliente_vehiculo
inner join clientes on led_cliente_vehiculo.cliente = clientes.cliente
inner join led_tipos_vehiculo on led_cliente_vehiculo.tipo_vehiculo = led_tipos_vehiculo.tipo_vehiculo
inner join led_tipos_doc on led_cliente_vehiculo.tipo_doc = led_tipos_doc.tipo_doc
where led_cliente_vehiculo.cliente = 3920694
and led_cliente_vehiculo.activo = 1
and led_tipos_doc.modalidad = ''
group by led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
order by led_tipos_vehiculo.nombre_tipo_vehiculo



*/







-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_buscar_tipos_vehiculo_agb
 -- Add the parameters for the stored procedure here
 @p_contratista           int = NULL,
 @p_tipo_vehiculo          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 vehiculo HABILITADOS PARA UN CONTRATISTA EN PARTICULAR 
  -- SELECT @p_contratista AS hhhhh,@p_tipo_vehiculo TV

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

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

  --- chequeo que no haya tipos exclusivos de vehículo para el tipo de contratista 


  if not exists (select * from led_cliente_vehiculo_tipo_contratista
      where cliente = @cliente
      and tipo_contratista = @tipo_contratista) begin


   -- 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


   -- modalidad de documentación de los vehiculos
   declare @mod_count_veh int, @modalidad_doc_veh varchar(1)

   select @mod_count_veh = count(*) from (
    select led_tipos_doc.modalidad
    from led_cliente_vehiculo inner join led_tipos_doc 
    on led_cliente_vehiculo.tipo_doc = led_tipos_doc.tipo_doc
    where led_cliente_vehiculo.cliente = @cliente
    and led_cliente_vehiculo.activo = 1
    group by led_tipos_doc.modalidad) modalidades

-- SELECT @mod_count AS mod_count,@mod_count_veh AS mod_count_veh,@modalidad_doc AS modalidad_doc,@modalidad_doc_veh AS modalidad_doc_veh


   if (@mod_count = 1 AND @mod_count_veh = 1)  begin

    -- unica modalidad Vencida o adelantada tanto contratista como vehículos

    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


    select @modalidad_doc_veh = led_tipos_doc.modalidad
    from led_cliente_vehiculo inner join led_tipos_doc 
    on led_cliente_vehiculo.tipo_doc = led_tipos_doc.tipo_doc
    where led_cliente_vehiculo.cliente = @cliente
    and led_cliente_vehiculo.activo = 1
    group by led_tipos_doc.modalidad


    if (@modalidad_doc = @modalidad_doc_veh) begin

     -- misma modalidad, todos los tipos. Si son diferentes la modalidades no puede haber tipos de vehículo habilitados

     select led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
     clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
     from led_cliente_vehiculo
     inner join clientes on led_cliente_vehiculo.cliente = clientes.cliente
     inner join led_tipos_vehiculo on led_cliente_vehiculo.tipo_vehiculo = led_tipos_vehiculo.tipo_vehiculo
     where led_cliente_vehiculo.cliente = @cliente
     and led_cliente_vehiculo.activo = 1
     group by led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
     clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
     order by led_tipos_vehiculo.nombre_tipo_vehiculo

    end

   end else begin

    -- puede haber más de 1 modalidad de documentación en contratista y/o tipo de vehiculo
  -- SELECT @modalidad_doc AS hhhhh 
-- exec Imperium_buscar_tipos_vehiculo_AGB 5723
-- select 'ASDASDAS'
    if (@mod_count = 1) begin

     -- si hay única en contratista, sólo vehículos con la misma modalidad
     if (@modalidad_doc is null)
     begin
      set @modalidad_doc = 'Z'
     end

     select led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
     clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
     from led_cliente_vehiculo
     inner join clientes on led_cliente_vehiculo.cliente = clientes.cliente
     inner join led_tipos_vehiculo on led_cliente_vehiculo.tipo_vehiculo = led_tipos_vehiculo.tipo_vehiculo
     inner join led_tipos_doc on led_cliente_vehiculo.tipo_doc = led_tipos_doc.tipo_doc
     where led_cliente_vehiculo.cliente = @cliente
     and led_cliente_vehiculo.activo = 1
     and led_tipos_doc.modalidad = @modalidad_doc
     group by led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
     clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
     order by led_tipos_vehiculo.nombre_tipo_vehiculo

    end else begin

     -- más de 1 modalidad en contratista, todos los tipos de vehículo

     select led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
     clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
     from led_cliente_vehiculo
     inner join clientes on led_cliente_vehiculo.cliente = clientes.cliente
     inner join led_tipos_vehiculo on led_cliente_vehiculo.tipo_vehiculo = led_tipos_vehiculo.tipo_vehiculo
     where led_cliente_vehiculo.cliente = @cliente
     and led_cliente_vehiculo.activo = 1
     group by led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
     clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
     order by led_tipos_vehiculo.nombre_tipo_vehiculo

    end    

   end
   

  end else begin



   --- tipos de vehículo exclusivo para tipo de contratista

   select led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
   clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
   from led_cliente_vehiculo
   inner join clientes on led_cliente_vehiculo.cliente = clientes.cliente
   inner join led_tipos_vehiculo on led_cliente_vehiculo.tipo_vehiculo = led_tipos_vehiculo.tipo_vehiculo
   inner join led_cliente_vehiculo_tipo_contratista on (led_cliente_vehiculo.cliente  = led_cliente_vehiculo_tipo_contratista.cliente
                and led_cliente_vehiculo.tipo_vehiculo = led_cliente_vehiculo_tipo_contratista.tipo_vehiculo
                and led_cliente_vehiculo_tipo_contratista.tipo_contratista = @tipo_contratista)
   where led_cliente_vehiculo.cliente = @cliente
   and led_cliente_vehiculo.activo = 1
   group by led_cliente_vehiculo.cliente, led_cliente_vehiculo.tipo_vehiculo,
   clientes.nombre_cliente, led_tipos_vehiculo.nombre_tipo_vehiculo
   order by led_tipos_vehiculo.nombre_tipo_vehiculo

  end


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

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

  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_vehiculo
  on led_tipos_alta.tipo_alta = led_cliente_vehiculo.tipo_alta
  where led_cliente_vehiculo.cliente = @cliente
  and led_cliente_vehiculo.tipo_vehiculo = @p_tipo_vehiculo
  and led_cliente_vehiculo.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