dbo.Imperium_Multi_Baja_Docs_Empleados

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

6
Name Data Type Length Description
@IDCliente int 4
@pEmpleado int 4
@periodo int 4
@Modalidad varchar 1
@ptipobaja int 4
@puserid int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec Imperium_Multi_Carga_Docs_Empleados 2028732,69723,201806,'V'


select  * from led_log where empleado=103943
select  * from led_empleados_periodo where empleado=103943 order by periodo desc
select * from led_docs where empleado=103943 and periodo = 202010



exec Imperium_Multi_Baja_Docs_Empleados 5546348,103943,202010,'V',22,55337061


*/



CREATE OR ALTER PROCEDURE dbo.Imperium_Multi_Baja_Docs_Empleados
@IDCliente int,
@pEmpleado int,
@periodo int,
@Modalidad varchar(1),
@ptipobaja int null,
@puserid int null

AS

BEGIN
 SET NOCOUNT ON;

DECLARE @ERRORNUMBER SMALLINT 

DECLARE @tipo_doc INT,@estado_doc VARCHAR(1),@led_seccion VARCHAR(1),@cliente INT,@contratista INT,@empleado INT,@vehiculo INT
DECLARE @contratista_1 INT,@insertado DATETIME,@fecha_tolerancia DATETIME,@compliance_doc VARCHAR(1),@fecha_vigencia DATETIME,@doc_log VARCHAR(150),@grupo_doc INT
DECLARE @doc_id_lista INT


/* AVERIGUAMOS EL PERÍODO VENCIDO SI VIENE NULL */
if (@periodo is null)
begin
 set @periodo = dbo.PeriodoVencido()
end

declare @chkEmpleado int = 0
/* AVERIGUAMOS SI EL EMPLEADO ESTÁ EN EL PERÍODO VENCIDO */

select @chkEmpleado = empleado from led_empleados_periodo where empleado = @pEmpleado and periodo= @periodo

/* SI NO ESTÁ EN EL PERIODO VENCIDO LO AGREGAMOS PARA PODER GENERAR LA DOCUMENTACIÓN DE BAJA */

if (@chkEmpleado=0)
 begin
  insert into led_empleados_periodo (empleado,contratista,periodo,contratista_1,fecha_afectacion,ratificado)
  select top 1 empleado,contratista,@periodo as periodo,contratista_1,getdate() as fecha_afectacion,1 as ratificado 
  from led_empleados_periodo where empleado = @pEmpleado
 end


DECLARE LedCargaDocs Cursor
FOR

SELECT distinct led_tipos_doc.tipo_doc,
led_cliente_empleado.estado_inicial as estado_doc,
led_tipos_doc.led_seccion,
led_empleados.cliente,
led_empleados.contratista,  
led_empleados.empleado as empleado,

null as vehiculo,
@periodo AS periodo,
led_empleados.contratista_1,
GETDATE() as insertado,
iif(@Modalidad = 'A',dateadd(ms,-3,Convert(varchar(10),isnull(led_cliente_empleado.dias_tolerancia,0) + getdate(),111)),dateadd(ms,-3,Convert(varchar(10),isnull(led_cliente_empleado.dias_tolerancia,0) + getdate(),111))) as fecha_tolerancia,
iif(led_cliente_empleado.estado_inicial='N','B',iif(led_cliente_empleado.estado_inicial='R','R',iif(led_cliente_empleado.estado_inicial='V','V',iif(led_cliente_empleado.estado_inicial='I','A','B')))) as compliance_doc,
NULL as fecha_vigencia,
convert(varchar(16),getdate(),120) + ' ALTA DE DOCUMENTOS DE EMPLEADOS' AS doc_log,
led_grupo_tipo_doc.grupo_doc,
led_tipos_doc.tipo_doc_lista as doc_id_lista
FROM led_empleados 
 LEFT JOIN led_cliente_empleado ON (led_empleados.cliente = led_cliente_empleado.cliente)
 /*
   AND led_cliente_empleado.tipo_empleado IN (select DISTINCT tipo_empleado
 from led_empleado_multi where activo IN (0,1)  and vigencia_desde >= getdate() -2000  and (vigencia_hasta is null or getdate() < vigencia_hasta) and empleado = @pEmpleado))
 */

 INNER JOIN clientes ON led_empleados.cliente = clientes.cliente 
 inner JOIN led_tipos_doc ON led_cliente_empleado.tipo_doc = led_tipos_doc.tipo_doc 
 inner join led_grupo_tipo_doc ON led_cliente_empleado.tipo_doc = led_grupo_tipo_doc.tipo_doc
 inner join led_grupos_doc on led_grupo_tipo_doc.grupo_doc = led_grupos_doc.grupo_doc 
 INNER JOIN led_empleados_periodo on (led_empleados.contratista = led_empleados_periodo.contratista and led_empleados_periodo.periodo = @periodo)
WHERE (clientes.cliente = @IDCliente) 
AND (led_cliente_empleado.activo = 1)
--and (ISNULL(led_tipos_doc.doc_alta,0) = 0 or (led_tipos_doc.doc_alta = 1 ) )
and ISNULL(led_tipos_doc.doc_baja,0) = 1
and led_empleados.estado_empleado = 'N'
and led_grupos_doc.cliente = @IDCliente 
and led_tipos_doc.modalidad = @Modalidad
AND led_empleados.empleado = @pEmpleado
AND led_empleados_periodo.empleado = @pEmpleado




DECLARE @dbDocID BIGINT = 0
Open LedCargaDocs


Fetch NEXT FROM LedCargaDocs INTO @tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista

While (@@FETCH_STATUS = 0)

BEGIN
/*
SELECT 'A',@tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista
*/

SET @dbDocID = 0

DELETE from led_docs
where tipo_doc = @tipo_doc
and periodo = @periodo
and led_seccion = @led_seccion
and contratista = @contratista
and empleado = @empleado
AND estado_doc NOT IN ('N','I','V','R')




select @dbDocID = doc_id from led_docs
where tipo_doc = @tipo_doc
and periodo = @periodo
and led_seccion = @led_seccion
and contratista = @contratista
and empleado = @empleado

IF (@dbDocID = 0)
/*
select @dbDocID as dbDocID
*/

BEGIN
BEGIN TRY
insert into led_docs (
tipo_doc,
estado_doc,
led_seccion,
cliente,
contratista,  
empleado,
vehiculo,
periodo,
contratista_1,
insertado,
fecha_tolerancia,
compliance_doc,
fecha_vigencia,
doc_log,
grupo_doc,
doc_id_lista
)
values
(@tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista)

END TRY

BEGIN CATCH
 /* SET @ERRORNUMBER = 1
  SELECT @ERRORNUMBER,@tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc
  select 'insert into led_docs (
  tipo_doc,
  estado_doc,
  led_seccion,
  cliente,
  contratista,  
  empleado,
  vehiculo,
  periodo,
  contratista_1,
  insertado,
  fecha_tolerancia,
  compliance_doc,
  fecha_vigencia,
  doc_log,
  grupo_doc,doc_id_lista
  )
  values'select @tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista
  */

END CATCH
END


exec Imperium_Multi_Compliance_Periodo_Contratista @periodo,@contratista,@led_seccion

Fetch NEXT FROM LedCargaDocs INTO @tipo_doc,@estado_doc,@led_seccion,@cliente,@contratista,@empleado,@vehiculo,@periodo,@contratista_1,@insertado,@fecha_tolerancia,@compliance_doc,@fecha_vigencia,@doc_log,@grupo_doc,@doc_id_lista
END
CLOSE LedCargaDocs
DEALLOCATE LedCargaDocs


/* DAMOS DE BAJA EL EMPLEADO EN LA TABLA MULTI  */


if (@ptipobaja is not null)
 begin
  update led_empleado_multi set activo =0,modified=getdate(),modified_by=@puserid where empleado=@pEmpleado and activo = 1
 end

/* INDICAMOS EL MOTIVO DE LA BAJA EN EL PERÍODO VENCIDO QUE ES DONDE SE GENERAN LOS DOCS DE BAJA */

if (@ptipobaja is not null)
 begin
  update led_empleados_periodo set tipo_baja= @ptipobaja where empleado = @pEmpleado and periodo=@periodo
 end

END

GO