IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_rep_embargos') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_rep_embargos
GO
CREATE PROCEDURE dbo.sp_fco_rep_embargos
(
  @psi_id_rep  smallint,
  @pvc_usuario varchar(30),
  @pti_cod_rep tinyint,
  @pch_trab_dde char(10) = '',
  @pch_trab_hta char(10) = '',
  @pch_agr_1 char(10) = '',
  @pch_agr_2 char(10) = '',
  @pch_agr_3 char(10) = '',
  @pch_dato_dde char(10) = '',
  @pch_dato_hta char(10) = '',--hasta aqui serian parametros fijos    
  @pch_compania char(4),
  @pdt_fecha    char(8),
  @pch_activos  char(2) --Vendria S o N
  
)
/********************************************************************/
/*** Fiscal de Colombia de Data Tecnologia                        ***/
/*** Descripcion: Genera el reporte de cajas de compensacion      ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Expl.:	Antes se ejecutaba una vista vw_fdt_embargos          ***/
/*** Fecha:	Mayo 15 de 2005                                       ***/
/********************************************************************/
--Despues de los parametros fijos, los parametros se reciben como varchar y dentro del sp se convierten
--al tipo de datos correspondiente
--OCT-01-05: DCRP, Pasado a SQL de Oracle
AS
DECLARE
  @vch_compania char(4),
  @vdt_fecha    smalldatetime,
  @vnu_situacion tinyint,
  
  @vti_trab_dde tinyint,
  @vti_trab_hta tinyint,
  @vti_fecha tinyint,
  @vti_sit tinyint
BEGIN

  SET @vch_compania = @pch_compania

  SET @vti_fecha = 1
  IF ISNULL(LTRIM(RTRIM(@pdt_fecha)),'') <> ''   --viene una fecha
	BEGIN
     SET @vti_fecha = 0
     SET @vdt_fecha = @pdt_fecha
  END
  
  SET @vti_sit = 1
  IF ISNULL(LTRIM(RTRIM(@pch_activos)),'') <> ''   --viene una situacion
	BEGIN
     SET @vti_sit = 0
     IF LTRIM(RTRIM(@pch_activos)) = 'S'
        SET @vnu_situacion = 1
     ELSE
        SET @vnu_situacion = 0
  END
  
  SET @vti_trab_dde = 0
  IF ISNULL(LTRIM(RTRIM(@pch_trab_dde)),'') = '' 
      SET @vti_trab_dde = 1
  
  SET @vti_trab_hta = 0
  IF ISNULL(LTRIM(RTRIM(@pch_trab_hta)),'') = ''
      SET @vti_trab_hta = 1

  --trayendo la informacion de embargos
  INSERT INTO fco_embargos_rep
  (id_rep, usuariow, cod_rep, compania, trabajador, concepto, secuencia, apellido_demandante,
  nombre_demandante, apellidos_trab, nombres_trab, agr_conceptos_base, concepto_base,
  quinta_parte, monto_total, saldo_actual, porcentaje, cuota_fija, nombre_cia)
  SELECT @psi_id_rep, @pvc_usuario, @pti_cod_rep, E.Compania, E.Trabajador, E.Concepto, E.Secuencia,
  E.Apellido_Demandante, E.Nombre_Demandante, 
  dbo.fn_Primer_Apellido(T.nombre) + ' ' + dbo.fn_Segundo_Apellido(T.nombre) As apellidos_trab,
  dbo.fn_Primer_Nombre(T.nombre) + ' ' +  dbo.fn_Segundo_Nombre(T.nombre) As nombres_trab,
  E.Agr_Conceptos_Base, E.Concepto_Base, E.Quinta_Parte, E.Monto_Total, E.Saldo_Actual, E.Porcentaje,
  E.Cuota_Fija, D.Nombre_Cia
  FROM fdt_embargos E, trabajadores T, conceptos C, companias D
  WHERE
    E.compania = D.compania And
    E.trabajador = T.trabajador And
    E.concepto = C.concepto And
    E.compania = @vch_compania
    And ((@vti_trab_dde = 1) OR (T.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
       ((@vti_trab_hta = 1) OR (T.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    And ((@vti_fecha = 1) OR (E.fecha_alta >= @vdt_fecha AND RTRIM(@vti_fecha) = 0)) 
    And ((@vti_sit = 1) OR (E.Situacion = @vnu_situacion AND RTRIM(@vti_sit) = 0));
    
  -- NO PROCESAR LOS TRABAJADORES FUERA DEL RANGO DE DATOS DE LA AGR. 4
  IF ISNULL(LTRIM(RTRIM(@pch_dato_dde)),'') <> ''
	BEGIN
    DELETE fco_embargos_rep
    WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep
    AND trabajador IN
      (SELECT trabajador FROM rel_trab_agr
      WHERE agrupacion = @pch_agr_1
      AND dato < @pch_dato_dde)
  END
    
  IF ISNULL(LTRIM(RTRIM(@pch_dato_hta)),'') <> ''
	BEGIN
    DELETE fco_embargos_rep
    WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep    
    AND trabajador IN
        (SELECT trabajador FROM rel_trab_agr
         WHERE agrupacion = @pch_agr_1
         AND dato > @pch_dato_hta)
  END

  -- DATOS DE LAS AGRUPACIONES SELECCIONADAS POR EL USUARIO 
  IF ISNULL(LTRIM(RTRIM(@pch_agr_1)),'') <> '' 
	BEGIN--Ag1
    --Agrupacion 1 - agr1
    UPDATE fco_embargos_rep
    SET agr1 = @pch_agr_1
		FROM fco_embargos_rep rv
    WHERE rv.id_rep = @psi_id_rep 
      AND rv.usuariow = @pvc_usuario
      AND rv.cod_rep = @pti_cod_rep

    --Agrupacion 1 - dato1
	  UPDATE fco_embargos_rep
	  SET dato1 = b.dato, desc1 = b.descripcion      
	  FROM hist_agrupaciones a, datos_agr_trab b, fco_embargos_rep rv
	  WHERE a.agrupacion = b.agrupacion       
	  AND a.dato = b.dato       
	  AND rv.compania = a.compania       
	  AND rv.trabajador = a.trabajador       
	  AND a.agrupacion = @pch_agr_1
	  AND a.fecha_alta = (select max(fecha_alta) from hist_agrupaciones h                        
	             where a.compania = h.compania AND
	                   a.agrupacion = h.agrupacion AND
	                   a.dato = h.dato AND                           
	                   a.trabajador = h.trabajador AND
	                   h.fecha_alta <= @vdt_fecha) AND                          
	  a.secuencia = (select max(secuencia) from hist_agrupaciones c                      
	                 where a.compania = c.compania AND
	                       a.agrupacion = c.agrupacion AND
	                       a.dato = c.dato AND
	                       a.trabajador = c.trabajador AND
	                       c.fecha_alta <= @vdt_fecha)                 
		AND rv.id_rep = @psi_id_rep
	  AND rv.usuariow = @pvc_usuario
		AND rv.cod_rep = @pti_cod_rep

		--ahora si, en la tabla de agrupaciones
	  UPDATE fco_embargos_rep          
	  SET dato1 = b.dato, desc1 = b.descripcion          
	  FROM rel_trab_agr a, datos_agr_trab b, fco_embargos_rep rv
	  WHERE a.agrupacion = b.agrupacion       
	  AND a.dato = b.dato       
	  AND rv.compania = a.compania       
	  AND rv.trabajador = a.trabajador       
	  AND a.agrupacion = @pch_agr_1
		AND rv.id_rep = @psi_id_rep
	  AND rv.usuariow = @pvc_usuario
		AND rv.cod_rep = @pti_cod_rep
	  AND ISNULL(LTRIM(RTRIM(rv.dato1)),'') = ''  
  END--Ag1
    -- fin agrupacion 1

  IF ISNULL(LTRIM(RTRIM(@pch_agr_2)),'') <> '' 
	BEGIN --Ag2
    --Agrupacion 2 - agr2
    UPDATE fco_embargos_rep
    SET agr2 = @pch_agr_2
		FROM fco_embargos_rep rv
    WHERE rv.id_rep = @psi_id_rep 
      AND rv.usuariow = @pvc_usuario
      AND rv.cod_rep = @pti_cod_rep

	  UPDATE fco_embargos_rep
	  SET dato2 = b.dato, desc2 = b.descripcion      
	  FROM hist_agrupaciones a, datos_agr_trab b, fco_embargos_rep rv
	  WHERE a.agrupacion = b.agrupacion       
	  AND a.dato = b.dato       
	  AND rv.compania = a.compania       
	  AND rv.trabajador = a.trabajador       
	  AND a.agrupacion = @pch_agr_2
	  AND a.fecha_alta = (select max(fecha_alta) from hist_agrupaciones h                        
	             where a.compania = h.compania AND
	                   a.agrupacion = h.agrupacion AND
	                   a.dato = h.dato AND                           
	                   a.trabajador = h.trabajador AND
	                   h.fecha_alta <= @vdt_fecha) AND                          
	  a.secuencia = (select max(secuencia) from hist_agrupaciones c                      
	                 where a.compania = c.compania AND
	                       a.agrupacion = c.agrupacion AND
	                       a.dato = c.dato AND
	                       a.trabajador = c.trabajador AND
	                       c.fecha_alta <= @vdt_fecha)                 
		AND rv.id_rep = @psi_id_rep
	  AND rv.usuariow = @pvc_usuario
		AND rv.cod_rep = @pti_cod_rep

		--ahora si, en la tabla de agrupaciones
	  UPDATE fco_embargos_rep          
	  SET dato2 = b.dato, desc2 = b.descripcion          
	  FROM rel_trab_agr a, datos_agr_trab b, fco_embargos_rep rv
	  WHERE a.agrupacion = b.agrupacion       
	  AND a.dato = b.dato       
	  AND rv.compania = a.compania       
	  AND rv.trabajador = a.trabajador       
	  AND a.agrupacion = @pch_agr_2
		AND rv.id_rep = @psi_id_rep
	  AND rv.usuariow = @pvc_usuario
		AND rv.cod_rep = @pti_cod_rep
	  AND ISNULL(LTRIM(RTRIM(rv.dato2)),'') = ''    
  END--Ag2
    -- fin agrupacion 2

  IF ISNULL(LTRIM(RTRIM(@pch_agr_3)),'') <> ''
	BEGIN
    --Agrupacion 3 - agr3
    UPDATE fco_embargos_rep
    SET agr3 = @pch_agr_3
		FROM fco_embargos_rep rv
    WHERE rv.id_rep = @psi_id_rep 
      AND rv.usuariow = @pvc_usuario
      AND rv.cod_rep = @pti_cod_rep

    --Agrupacion 1 - dato1
	  UPDATE fco_embargos_rep
	  SET dato3 = b.dato, desc3 = b.descripcion      
	  FROM hist_agrupaciones a, datos_agr_trab b, fco_embargos_rep rv
	  WHERE a.agrupacion = b.agrupacion       
	  AND a.dato = b.dato       
	  AND rv.compania = a.compania       
	  AND rv.trabajador = a.trabajador       
	  AND a.agrupacion = @pch_agr_3
	  AND a.fecha_alta = (select max(fecha_alta) from hist_agrupaciones h                        
	             where a.compania = h.compania AND
	                   a.agrupacion = h.agrupacion AND
	                   a.dato = h.dato AND                           
	                   a.trabajador = h.trabajador AND
	                   h.fecha_alta <= @vdt_fecha) AND                          
	  a.secuencia = (select max(secuencia) from hist_agrupaciones c                      
	                 where a.compania = c.compania AND
	                       a.agrupacion = c.agrupacion AND
	                       a.dato = c.dato AND
	                       a.trabajador = c.trabajador AND
	                       c.fecha_alta <= @vdt_fecha)                 
		AND rv.id_rep = @psi_id_rep
	  AND rv.usuariow = @pvc_usuario
		AND rv.cod_rep = @pti_cod_rep

		--ahora si, en la tabla de agrupaciones
	  UPDATE fco_embargos_rep          
	  SET dato3 = b.dato, desc3 = b.descripcion          
	  FROM rel_trab_agr a, datos_agr_trab b, fco_embargos_rep rv
	  WHERE a.agrupacion = b.agrupacion       
	  AND a.dato = b.dato       
	  AND rv.compania = a.compania       
	  AND rv.trabajador = a.trabajador       
	  AND a.agrupacion = @pch_agr_3
		AND rv.id_rep = @psi_id_rep
	  AND rv.usuariow = @pvc_usuario
		AND rv.cod_rep = @pti_cod_rep
	  AND ISNULL(LTRIM(RTRIM(rv.dato3)),'') = ''  
  
  END
    -- fin agrupacion 3
  
END
GO
GRANT EXECUTE ON dbo.sp_fco_rep_embargos TO PUBLIC
GO
