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_Baja_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
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*/
UPDATE led_empleados SET estado_empleado = 'N' WHERE empleado = @p_id
EXEC Imperium_Multi_Baja_Docs_Empleados @cliente, @p_id, @periodo_desafectar, 'V'
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, 'B',
'Baja del Empleado: ' + @nombre + ' (' + @ident + ') a partir del período ' + @periodotxt,
GETDATE(), @p_user)
end
END
/** no hay baja de vehículos o subcontratistas **/
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
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE OR ALTER PROCEDURE dbo.Imperium_vista_contratista_Baja_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
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*/
UPDATE led_empleados SET estado_empleado = 'N' WHERE empleado = @p_id
EXEC Imperium_Multi_Baja_Docs_Empleados @cliente, @p_id, @periodo_desafectar, 'V'
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, 'B',
'Baja del Empleado: ' + @nombre + ' (' + @ident + ') a partir del período ' + @periodotxt,
GETDATE(), @p_user)
end
END
/** no hay baja de vehículos o subcontratistas **/
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
Depends On
13Used By
No items found