dbo.Imperium_vista_contratista_Desafectar_Recurso

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

4
Name Data Type Length Description
@p_seccion varchar 1
@p_id int 4
@p_adelantado int 4
@p_user int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_vista_contratista_Desafectar_Recurso
 
 -- Add the parameters for the stored procedure here
 /**
  Parámetro p_adelantado si vale 1 desafecta sólo del período adelantado.
  Caso contrario desafecta del vencido en adelante
  **/

 @p_seccion          varchar(1),
 @p_id           int,
 @p_adelantado         int,
 @p_user           int

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 (@p_id > 0) BEGIN

  DECLARE @periodo_desafectar int

  IF (@p_adelantado > 0) BEGIN
   SET @periodo_desafectar = dbo.PeriodoAdelantado()
  END ELSE BEGIN
   SET @periodo_desafectar = dbo.PeriodoVencido()
  END


 /* INJERTO HASTA REVISAR ESTE SP */
 IF (@p_id >0 ) 
 BEGIN
  declare @estadoAGB varchar(1)
  declare @periodoAGB int

  select @estadoAGB = estado_empleado from led_empleados where empleado = @p_id
  set @periodoAGB = dbo.PeriodoVencido()

  IF (@estadoAGB = 'A')
  begin
   delete led_empleados_periodo where empleado = @p_id and periodo >= @periodoAGB
   /*delete led_empleados_periodo where empleado = @p_id and periodo = 202109*/
  end
 end


  DECLARE @nombre varchar(100)
  DECLARE @ident varchar(100)
  DECLARE @contratista int
  DECLARE @contratista_1 int
  DECLARE @cliente int
  DECLARE @periodotxt VARCHAR(7) = RIGHT(CONVERT(VARCHAR,@periodo_desafectar),2)+'/'+LEFT(CONVERT(VARCHAR,@periodo_desafectar),4)

  IF (@p_seccion = 'E') BEGIN

   IF EXISTS (SELECT empleado 
      FROM led_empleados_periodo
      WHERE empleado = @p_id
      AND periodo >= @periodo_desafectar) BEGIN

    declare @tbaja tinyint
    declare @docsbaja int
    declare @estado varchar(1)

    select @tbaja = tipo_baja from led_empleados_periodo WHERE empleado = @p_id AND periodo = @periodo_desafectar

    select @docsbaja = count(*) from led_docs inner join led_tipos_doc on led_docs.tipo_doc = led_tipos_doc.tipo_doc
    where led_docs.empleado = @p_id AND led_docs.periodo = @periodo_desafectar and led_tipos_doc.doc_baja = 1

    select @estado = estado_empleado from led_empleados where empleado = @p_id


    if (NOT (@tbaja is not null OR @docsbaja > 0 OR @estado = 'N')) begin

     SELECT @nombre = padrones.nombre_persona,
       @ident = identificadores.abreviatura + ' ' + padrones.numero,
       @contratista = led_empleados.contratista, 
       @contratista_1 = led_empleados.contratista_1,
       @cliente = led_empleados.cliente
     FROM led_empleados INNER JOIN padrones ON led_empleados.id_padron = padrones.id_padron
     INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
     WHERE led_empleados.empleado = @p_id

     DELETE FROM led_empleados_periodo
     WHERE empleado = @p_id
     AND periodo >= @periodo_desafectar


     DELETE FROM led_docs
     WHERE empleado = @p_id
     AND led_seccion = 'E'
     AND periodo >= @periodo_desafectar
     AND cliente = @cliente
     AND contratista_1 = @contratista_1
     AND estado_doc IN ('N', 'R')
     AND periodo >= @periodo_desafectar



     INSERT INTO led_log
     (led_seccion, cliente, contratista_1, contratista, empleado, tipo_log, descripcion_log, horario_log, user_id)
     VALUES
     ('E', @cliente, @contratista_1, @contratista, @p_id, 'D', 
      'Desafectación del Empleado: ' + @nombre + ' (' + @ident + ') a partir del período ' + @periodotxt,
      GETDATE(), @p_user)

    end


   END


  END ELSE

   IF (@p_seccion = 'V') BEGIN


    IF EXISTS (SELECT vehiculo 
       FROM led_vehiculos_periodo
       WHERE vehiculo = @p_id
       AND periodo >= @periodo_desafectar) BEGIN
     
     SELECT @nombre = led_vehiculos.nombre_vehiculo,
       @ident = led_vehiculos.dominio,
       @contratista = led_vehiculos.contratista, 
       @contratista_1 = led_vehiculos.contratista_1,
       @cliente = led_vehiculos.cliente
     FROM led_vehiculos 
     WHERE led_vehiculos.vehiculo = @p_id


     DELETE FROM led_vehiculos_periodo
     WHERE vehiculo = @p_id
     AND periodo >= @periodo_desafectar


     DELETE FROM led_docs
     WHERE vehiculo = @p_id
     AND led_seccion = 'V'
     AND periodo >= @periodo_desafectar
     AND cliente = @cliente
     AND contratista_1 = @contratista_1
     AND estado_doc IN ('N', 'R')
     AND periodo >= @periodo_desafectar

     INSERT INTO led_log
     (led_seccion, cliente, contratista_1, contratista, vehiculo, tipo_log, descripcion_log, horario_log, user_id)
     VALUES
     ('V', @cliente, @contratista_1, @contratista, @p_id, 'D', 
      'Desafectación del vehículo: ' + @nombre + ' (' + @ident + ') a partir del período ' + @periodotxt,
      GETDATE(), @p_user)


    END


   END ELSE

    IF (@p_seccion = 'S') BEGIN
     

     IF EXISTS (SELECT subcontratista 
        FROM led_subcontratista_periodo
        WHERE subcontratista = @p_id
        AND periodo >= @periodo_desafectar) BEGIN
     
      SELECT @nombre = padrones.nombre_persona,
        @ident = identificadores.abreviatura + ' ' + padrones.numero,
        @contratista = led_contratistas.contratista, 
        @contratista_1 = led_contratistas.contratista_1,
        @cliente = led_contratistas.cliente
      FROM led_contratistas INNER JOIN padrones ON led_contratistas.id_padron = padrones.id_padron
      INNER JOIN identificadores ON padrones.identificador = identificadores.identificador  
      WHERE led_contratistas.contratista = @p_id


      DELETE FROM led_subcontratista_periodo
      WHERE subcontratista = @p_id
      AND periodo >= @periodo_desafectar


      DELETE FROM led_docs
      WHERE contratista = @p_id
      AND led_seccion = 'C'
      AND periodo >= @periodo_desafectar
      AND cliente = @cliente
      AND contratista_1 = @contratista_1
      AND estado_doc IN ('N', 'R')
      AND periodo >= @periodo_desafectar

      INSERT INTO led_log
      (led_seccion, cliente, contratista_1, contratista, tipo_log, descripcion_log, horario_log, user_id)
      VALUES
      ('S', @cliente, @contratista_1, @contratista, 'D', 
       'Desafectación del Subcontratista: ' + @nombre + ' (' + @ident + ') a partir del período ' + @periodotxt,
       GETDATE(), @p_user)


      DELETE FROM led_empleados_periodo
      WHERE empleado iN (SELECT empleado from led_empleados
           where contratista = @p_id)
      AND periodo >= @periodo_desafectar

      DELETE FROM led_vehiculos_periodo
      WHERE vehiculo iN (SELECT vehiculo from led_vehiculos
           where contratista = @p_id)
      AND periodo >= @periodo_desafectar



     END

     


    END



 END


 
END

GO

Used By

No items found