IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[fco_reportes_mm]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE dbo.fco_reportes_mm
GO
CREATE TABLE fco_reportes_mm
(
	id_rep     smallint NOT NULL,
	usuariow	 varchar(30) NOT NULL,
	cod_rep  tinyint NOT NULL,
  sec_archivo smallint NOT NULL, --por si se manejan varios archivos. Es la sec configurada en la tabla ri_interfase_rutas
	secuencia  smallint NULL,
	registros  varchar(2000) NULL
)
GO
GRANT ALL ON fco_reportes_mm TO PUBLIC
GO

IF NOT EXISTS (SELECT 1 FROM sysindexes WHERE name = 'in_fco_reportes_mm01')
CREATE INDEX in_fco_reportes_mm01 ON fco_reportes_mm(id_rep, usuariow, cod_rep)
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[fco_reportes_proc]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE dbo.fco_reportes_proc
GO
CREATE TABLE dbo.fco_reportes_proc
( id_rep smallint NOT NULL,
  usuariow varchar(30) NOT NULL,
  cod_rep tinyint NOT NULL,  
  orden tinyint NOT NULL,
  valor varchar(20) NULL
)
ON [PRIMARY]
GO 
GRANT ALL ON fco_reportes_proc TO Public
GO
SET QUOTED_IDENTIFIER OFF
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_gen_reportes_proc]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_gen_reportes_proc
GO
CREATE PROCEDURE sp_fco_gen_reportes_proc
(
  @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) = ''  
)
/********************************************************************/
/*** Reportes e Interfases de Data Tecnologia                     ***/
/*** Descripcion: invoca los procedimientos de reportes de        ***/
/*** acuerdo a los parametros enviados de entrada                 ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 14 de 2005                                       ***/
/********************************************************************/
/*** Pasado a SQL, Diana C. Rios, Septiembre 25/2005							***/
AS
DECLARE
	@vvc_proc_genera	varchar(30),
  @vvc_inter	varchar(10),
  @cvc_valor varchar(20),
  @vnu_len   smallint,
  @vvc_ssql  varchar(2000)
    
BEGIN--1

	--trayendo el nombre del procedimiento
  SET @vvc_proc_genera = ''
  SET @vnu_len = 0

	SELECT @vvc_proc_genera = proc_generacion
	FROM fco_reportes
	WHERE cod_rep = @pti_cod_rep

	SET @vvc_proc_genera = LTRIM(RTRIM(ISNULL(@vvc_proc_genera,'')))
  SET @vnu_len = ISNULL(LEN(@vvc_proc_genera),0)

	IF @vnu_len = 0
	BEGIN
		SET @vvc_inter = LTRIM(RTRIM(@pti_cod_rep))
		RAISERROR ('Error de datos: No existe la funcion de generacion para el reporte: ', 16, 1, @vvc_inter)  
    RETURN
	END

  SET @vvc_ssql = 'EXECUTE ' + @vvc_proc_genera + ' ' +  RTRIM(@psi_id_rep) + ',' +
              '''' + @pvc_usuario + ''',' + RTRIM(@pti_cod_rep) + ',' +
							'''' + @pch_trab_dde + ''',' +
							'''' + @pch_trab_hta + ''',' +
							'''' + @pch_agr_1 + ''',' +
							'''' + @pch_agr_2 + ''',' +
							'''' + @pch_agr_3 + ''',' +
							'''' + @pch_dato_dde + ''',' +
							'''' + @pch_dato_hta + '''' 
  
  DECLARE cr_valores CURSOR FOR
  SELECT valor
  FROM fco_reportes_proc
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario
  AND cod_rep = @pti_cod_rep
  ORDER BY orden

 	OPEN cr_valores
	FETCH cr_valores INTO @cvc_valor

	WHILE (@@FETCH_STATUS = 0)  
	BEGIN--wh
  
        SET @vvc_ssql = @vvc_ssql + ',' + '''' + @cvc_valor + ''''
              
  	FETCH cr_valores INTO @cvc_valor;

	END--wh
	CLOSE cr_valores
	DEALLOCATE cr_valores

  SET @vvc_ssql =  @vvc_ssql
	EXEC (@vvc_ssql)
  
END--1
GO
GRANT EXECUTE ON sp_fco_gen_reportes_proc TO Public
go
SET QUOTED_IDENTIFIER OFF
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_del_reportes_tablas]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_del_reportes_tablas
GO
CREATE PROCEDURE sp_fco_del_reportes_tablas
(
  @psi_id_rep  smallint,
  @pvc_usuario varchar(3),
  @pti_cod_rep tinyint
)
/********************************************************************/
/*** Fiscal de Colombia de Data Tecnologia                        ***/
/*** Descripcion: invoca los procedimientos de reportes de        ***/
/*** acuerdo a los parametros enviados de entrada                 ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 14 de 2005                                      ***/
/********************************************************************/
/*** Pasado a SQL, Diana C. Rios, Septiembre 25/2005							***/
AS
DECLARE
	@vvc_proc_genera	varchar(30),
  @vvc_inter	varchar(10),
  @vnu_len     smallint,
  @vvc_ssql  varchar(2000)
    
BEGIN

	--trayendo el nombre del procedimiento
  SET @vvc_proc_genera = ''
  SET @vnu_len = 0

	SELECT @vvc_proc_genera = proc_borrado
	FROM fco_reportes
	WHERE cod_rep = @pti_cod_rep

	SET @vvc_proc_genera = LTRIM(RTRIM(ISNULL(@vvc_proc_genera,'')))
  SET @vnu_len = ISNULL(LEN(@vvc_proc_genera),0)

	IF @vnu_len = 0
	BEGIN
		SET @vvc_inter = LTRIM(RTRIM(@pti_cod_rep))
		RAISERROR ('Error de datos: No existe la funcion de borrado de tablas para el reporte: %s ', 16, 1, @vvc_inter)  
    RETURN
	END

--si existe un procedimiento, entonces se ejecuta
	IF @vnu_len > 0
	BEGIN
	  SET @vvc_ssql = 'EXECUTE ' + @vvc_proc_genera + ' ' + RTRIM(@psi_id_rep) + ',' +
	              '''' + @pvc_usuario + ''',' + RTRIM(@pti_cod_rep)
	                            
		EXEC (@vvc_ssql)
	END

END
GO
GRANT EXECUTE ON sp_fco_del_reportes_tablas TO Public

go
IF OBJECT_ID('dbo.fco_parafiscales') IS NOT NULL
    DROP TABLE dbo.fco_parafiscales 
GO
CREATE TABLE dbo.fco_parafiscales
(
  id_rep      smallint NOT NULL,
  usuariow	  varchar(30) NOT NULL,
  cod_rep     tinyint NOT NULL,  
  compania    char(4) NOT NULL,
  sucursal    char(10) NULL,
  anio        smallint NULL,
  mes         tinyint NULL,
  trabajador  varchar(15) NULL,
  nombre      varchar(100) NULL,
  caja_cod    char(10) NULL,
  caja_nom    varchar(60) NULL,
  valor_base  decimal(19,6) NULL,
  valor_caja  decimal(19,6) NULL,
  valor_sena  decimal(19,6) NULL,
  valor_icbf  decimal(19,6) NULL,
  agr1        varchar(10) NULL,
  dato1       varchar(10) NULL,
  desc1	      varchar(40) NULL,
  agr2        varchar(10) NULL,
  dato2       varchar(10) NULL,
  desc2       varchar(40) NULL,
  agr3        varchar(10) NULL,
  dato3       varchar(10) NULL,
  desc3	      varchar(40) NULL,
  nombre_cia  varchar(60) NULL,
  registro_fiscal varchar(20) NULL
)
GO
GRANT ALL ON fco_parafiscales TO PUBLIC
GO

IF OBJECT_ID('dbo.fco_parafiscales_tmp') IS NOT NULL
    DROP TABLE dbo.fco_parafiscales_tmp 
GO
CREATE TABLE dbo.fco_parafiscales_tmp
(	
	id_rep   smallint NOT NULL,
	usuariow varchar(30) NOT NULL,
	trabajador char(10), 
	agr_caja char(10), 
	cod_caja char(10), 
	base decimal(19,6), 
	caja decimal(19,6), 
	sena decimal(19,6), 
	icbf decimal(19,6)
)
GO
GRANT ALL ON fco_parafiscales_tmp TO PUBLIC
GO

IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_rep_cajas_compensacion]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_rep_cajas_compensacion
GO
CREATE PROCEDURE dbo.sp_fco_rep_cajas_compensacion
(
  @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),
  @pch_sucursal char(10),
  @pnu_anio char(4),
  @pnu_mes  char(2)
)
/********************************************************************/
/*** Fiscal de Colombia de Data Tecnologia                        ***/
/*** Descripcion: Genera el reporte de cajas de compensacion      ***/
/*** Autor:	Juan Carlos Leguizamon                                ***/
/*** Adecuacion:	Diana Cecilia Rios Peinado                      ***/
/*** Fecha:	Mayo 14 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-03-05: Pasada a SQL de Oracle
AS
DECLARE
  @w_agr_trab_caja    char(10),
  @w_agr_conc_base    char(3),
  @w_agr_conc_caja    char(3),
  @w_agr_conc_sena    char(3),
  @w_agr_conc_icbf    char(3),
  @w_conc_base        smallint,
  @w_conc_caja        smallint,
  @w_conc_sena        smallint,
  @w_conc_icbf        smallint,
    
  @vch_compania char(4),
  @vnu_anio smallint,
  @vnu_mes tinyint,
  @vch_sucursal char(10),

  @vti_trab_dde tinyint,
  @vti_trab_hta tinyint,  

  @vch_fecha char(8),
  @vch_dias_fin char(2),
  @vdt_fec_fin smalldatetime
    
BEGIN
  -- Inicializar Variables
  SET @w_agr_trab_caja = ''
  SET @w_agr_conc_base = ''
  SET @w_agr_conc_caja = ''
  SET @w_agr_conc_sena = ''
  SET @w_agr_conc_icbf = ''
  SET @w_conc_base = -1
  SET @w_conc_caja = -1
  SET @w_conc_sena = -1
  SET @w_conc_icbf = -1

  SET @vch_compania = LTRIM(RTRIM(@pch_compania))
  SET @vnu_anio = CONVERT(smallint, @pnu_anio)
  SET @vnu_mes = CONVERT(tinyint, @pnu_mes)
  
  IF ISNULL(LTRIM(RTRIM(@pch_sucursal)), '0') = '0'
     SET @vch_sucursal = '001'
  ELSE
     SET @vch_sucursal = LTRIM(RTRIM(@pch_sucursal))

  --armando la fecha final
  SELECT @vch_dias_fin = LTRIM(RTRIM(dbo.fn_fco_ult_dia_mes(@vnu_anio, @vnu_mes)))
	SELECT @vch_dias_fin = CASE LEN(LTRIM(RTRIM(@vch_dias_fin))) WHEN 1 THEN '0' + LTRIM(RTRIM(@vch_dias_fin)) ELSE LTRIM(RTRIM(@vch_dias_fin)) END
  
  SET @vch_fecha = LTRIM(RTRIM(@vnu_anio)) + 
									 CASE LEN(LTRIM(RTRIM(@vnu_mes))) WHEN 1 THEN '0'+ LTRIM(RTRIM(@vnu_mes)) ELSE LTRIM(RTRIM(@vnu_mes)) END +
									 LTRIM(RTRIM(@vch_dias_fin))

	SET @vdt_fec_fin = @vch_fecha
  
  -- Recuperar parametros desde el MF
  SELECT @w_agr_trab_caja = dato
  FROM vw_fdt_parametros
  WHERE pais = 'COL' And compania = @vch_compania And parametro = 'parafiscal' And secuencia = 1

  SELECT @w_agr_conc_base = CASE tipo WHEN 0 THEN '-1' ELSE dato END, 
	@w_conc_base = CASE tipo WHEN 0 THEN dato ELSE -1 END
  FROM vw_fdt_parametros
  WHERE pais = 'COL' And compania = @vch_compania And parametro = 'parafiscal' And secuencia = 6

  SELECT @w_agr_conc_caja = CASE tipo WHEN 0 THEN '-1' ELSE dato END, 
	@w_conc_caja = CASE tipo WHEN 0 THEN dato ELSE -1 END
  FROM vw_fdt_parametros
  WHERE pais = 'COL' And compania = @vch_compania And parametro = 'parafiscal' And secuencia = 2

  SELECT @w_agr_conc_sena = CASE tipo WHEN 0 THEN '-1' ELSE dato END, 
	@w_conc_sena = CASE tipo WHEN 0 THEN dato ELSE -1 END
  FROM vw_fdt_parametros
  WHERE pais = 'COL' And compania = @vch_compania And parametro = 'parafiscal' And secuencia = 3

  SELECT @w_agr_conc_icbf = CASE tipo WHEN 0 THEN '-1' ELSE dato END, 
	@w_conc_icbf = CASE tipo WHEN 0 THEN dato ELSE -1 END
  FROM vw_fdt_parametros
  WHERE pais = 'COL' And compania = @vch_compania And  parametro = 'parafiscal' And secuencia = 4

  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
  
  -- Borrar todos los datos actuales. 
  DELETE fco_parafiscales
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario
  AND cod_rep = @pti_cod_rep
  
  DELETE fco_parafiscales_tmp
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario
  
    -- Insertar los nuevos datos
    --Base, si es agrupacion de concepto
    IF LTRIM(RTRIM(@w_agr_conc_base)) <> '-1'
		BEGIN--1
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, base)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.agr_conceptos = @w_agr_conc_base And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = system_user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))

    END--1
               
    --Base, si es concepto
    IF @w_conc_base <> -1
		BEGIN--2
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, base)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,            
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.concepto = @w_conc_base And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = system_user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    END--2

    --Caja, si es agrupacion de concepto
    IF LTRIM(RTRIM(@w_agr_conc_caja)) <> '-1'
		BEGIN--3
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, caja)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,            
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.agr_conceptos = @w_agr_conc_caja And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = system_user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    END--3
               
    --Caja, si es concepto
    IF @w_conc_caja <> -1
		BEGIN--4
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, caja)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,            
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.concepto = @w_conc_caja And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = system_user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    END--4

    --Sena, si es agrupacion de concepto
    IF LTRIM(RTRIM(@w_agr_conc_sena)) <> '-1'
		BEGIN--5
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, sena)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,            
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.agr_conceptos = @w_agr_conc_sena And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = system_user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    END--5
               
    --Sena, si es concepto
    IF @w_conc_sena <> -1
		BEGIN--6
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, sena)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,            
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.concepto = @w_conc_sena And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = system_user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    END--6
    
    --ICBF, si es agrupacion de concepto
    IF LTRIM(RTRIM(@w_agr_conc_icbf)) <> '-1'
		BEGIN--7
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, icbf)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,            
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.agr_conceptos = @w_agr_conc_icbf And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    END--7
                   
    --ICBF, si es concepto
    IF @w_conc_icbf <> -1
		BEGIN--8
      INSERT INTO fco_parafiscales_tmp (id_rep, usuariow, trabajador, agr_caja, cod_caja, icbf)
      SELECT @psi_id_rep, @pvc_usuario,
             TG.trabajador, @w_agr_trab_caja, RTA.dato,            
						 Case @vnu_mes When  1 Then acum_imp_mes_01
                           When  2 Then acum_imp_mes_02
                           When  3 Then acum_imp_mes_03
                           When  4 Then acum_imp_mes_04
                           When  5 Then acum_imp_mes_05
                           When  6 Then acum_imp_mes_06
                           When  7 Then acum_imp_mes_07
                           When  8 Then acum_imp_mes_08
                           When  9 Then acum_imp_mes_09
                           When 10 Then acum_imp_mes_10
                           When 11 Then acum_imp_mes_11
                           When 12 Then acum_imp_mes_12 END
      FROM 
             trabajadores_grales TG, rel_trab_Agr RTA, acumulados_mensuales AM, vw_fco_div_trabajador SUC
      WHERE
             TG.compania = AM.compania And TG.trabajador = AM.trabajador And
             TG.compania = RTA.compania And TG.trabajador = RTA.trabajador And
             TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And
             TG.compania = @vch_compania And
             AM.anio = @vnu_anio And
             AM.concepto = @w_conc_icbf And
             SUC.dato = @vch_sucursal And
             RTA.agrupacion = @w_agr_trab_caja
             -- CONDICIONES PARA VALIDAR LA SEGURIDAD                      
             -- AUTORIZACION A LA COMPANIA                      
             AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = system_user)
             -- AUTORIZACION POR CLASE DE NOMINA                      
             AND EXISTS (SELECT 1 FROM rel_usu_clase_nom y WHERE y.clase_nomina = tg.clase_nomina AND y.usuario = system_user)
             -- AUTORIZACION POR AGRUPACIONES                   
             AND NOT EXISTS (SELECT 1 FROM rel_usu_agr_trab u2, rel_trab_agr r2
                            WHERE u2.agrupacion = r2.agrupacion AND u2.dato = r2.dato
                            AND r2.compania = tg.compania AND r2.trabajador = tg.trabajador
                            AND u2.usuario = system_user)           
					   AND ((@vti_trab_dde = 1) OR (TG.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
					       ((@vti_trab_hta = 1) OR (TG.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
    END--8
                              
  -- NO PROCESAR LOS TRABAJADORES FUERA DEL RANGO DE DATOS DE LA AGR. 4
  IF ISNULL(LTRIM(RTRIM(@pch_dato_dde)),'') <> ''
	BEGIN
    DELETE fco_parafiscales_tmp
    WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    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_parafiscales_tmp
    WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND trabajador IN
        (SELECT trabajador FROM rel_trab_agr
         WHERE agrupacion = @pch_agr_1
         AND dato > @pch_dato_hta)
  END
           
    INSERT INTO fco_parafiscales
    (id_rep, usuariow, cod_rep, compania, sucursal, anio, mes, trabajador, nombre, caja_cod, caja_nom,
    valor_base, valor_caja, valor_sena, valor_icbf)
    SELECT @psi_id_rep, @pvc_usuario, @pti_cod_rep, @vch_compania, @vch_sucursal, @vnu_anio, @vnu_mes, 
           SUBSTRING(LTRIM(RTRIM(T.clave_unica)),1,15), T.nombre, TMP.cod_caja, DAT.descripcion,
           sum(ISNULL(base,0)), sum(ISNULL(caja,0)), sum(ISNULL(sena,0)), sum(ISNULL(icbf,0))
    FROM  fco_parafiscales_tmp TMP, trabajadores T, datos_agr_trab DAT
    WHERE TMP.trabajador = T.trabajador And 
          TMP.agr_caja = DAT.agrupacion And TMP.cod_caja = DAT.dato
          And TMP.id_rep = @psi_id_rep
          And TMP.usuariow = @pvc_usuario
    GROUP BY 
          T.clave_unica, T.nombre, TMP.cod_caja, DAT.descripcion
    HAVING
          sum(ISNULL(base,0)) > 0;

    --actualizando el nombre de la cia y registro fiscal
    UPDATE fco_parafiscales
    SET nombre_cia = c.nombre_cia,
		registro_fiscal = c.registro_fiscal
		FROM fco_parafiscales rv, companias c
    WHERE rv.compania = c.compania 
		AND rv.id_rep = @psi_id_rep
    AND rv.usuariow = @pvc_usuario
    AND rv.compania = @vch_compania

  -- DATOS DE LAS AGRUPACIONES SELECCIONADAS POR EL USUARIO 
  IF ISNULL(LTRIM(RTRIM(@pch_agr_1)),'') <> '' 
	BEGIN--Ag1
    --Agrupacion 1 - agr1
    UPDATE fco_parafiscales
    SET agr1 = @pch_agr_1
		FROM fco_parafiscales 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_parafiscales
	  SET dato1 = b.dato, desc1 = b.descripcion      
	  FROM hist_agrupaciones a, datos_agr_trab b, fco_parafiscales 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_fec_fin) 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_fec_fin)                 
		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_parafiscales          
	  SET dato1 = b.dato, desc1 = b.descripcion          
	  FROM rel_trab_agr a, datos_agr_trab b, fco_parafiscales 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_parafiscales
    SET agr2 = @pch_agr_2
		FROM fco_parafiscales rv
    WHERE rv.id_rep = @psi_id_rep 
      AND rv.usuariow = @pvc_usuario
      AND rv.cod_rep = @pti_cod_rep

	  UPDATE fco_parafiscales
	  SET dato2 = b.dato, desc2 = b.descripcion      
	  FROM hist_agrupaciones a, datos_agr_trab b, fco_parafiscales 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_fec_fin) 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_fec_fin)                 
		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_parafiscales          
	  SET dato2 = b.dato, desc2 = b.descripcion          
	  FROM rel_trab_agr a, datos_agr_trab b, fco_parafiscales 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_parafiscales
    SET agr3 = @pch_agr_3
		FROM fco_parafiscales 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_parafiscales
	  SET dato3 = b.dato, desc3 = b.descripcion      
	  FROM hist_agrupaciones a, datos_agr_trab b, fco_parafiscales 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_fec_fin) 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_fec_fin)                 
		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_parafiscales          
	  SET dato3 = b.dato, desc3 = b.descripcion          
	  FROM rel_trab_agr a, datos_agr_trab b, fco_parafiscales 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_cajas_compensacion TO Public
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_del_rep_cajas]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_del_rep_cajas
GO
CREATE PROCEDURE dbo.sp_fco_del_rep_cajas
(
  @psi_id_rep  smallint,
  @pvc_usuario varchar(30),
  @pti_cod_rep tinyint
)
/********************************************************************/
/*** Fiscal de Colombia de Data Tecnologia                        ***/
/*** Descripcion: limpia las tablas involucradas en la ejecucion  ***/
/*** del reporte de cajas                                         ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 14 de 2005                                      ***/
/********************************************************************/
--OCT-03-05: Pasada a SQL de Oracle
AS
BEGIN
     DELETE fco_reportes_proc
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep

     DELETE fco_parafiscales_tmp
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     
     DELETE fco_parafiscales
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep

     DELETE fco_reportes_mm
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep
     
END

GO
GRANT EXECUTE ON sp_fco_del_rep_cajas TO Public
GO
IF OBJECT_ID('dbo.fco_cir_cab') IS NOT NULL
    DROP TABLE dbo.fco_cir_cab 
GO
CREATE TABLE dbo.fco_cir_cab
(
  id_rep    smallint NOT NULL,
  usuariow	varchar(30) NOT NULL,
  cod_rep   tinyint NOT NULL,  
  compania  char(4) NOT NULL,
  sucursal  char(10) NOT NULL,
  anio 	    smallint NOT NULL,
  fecha_exp smalldatetime,
  nombre_cia       varchar(60),
  registro_fiscal  varchar(20),
  domicilio        varchar(40),
  municipio        varchar(60),
  departamento     varchar(60),
  sucursales       varchar(255),
  pagador_nombre   varchar(100),
  pagador_id       varchar(60),
  poner_carreta    tinyint,
  cod_admon        varchar(40),
  cod_depto        char(2), 
  cod_municipio    char(3), 
  telefono         varchar(25),
    Constraint PK_fco_cir_cab PRIMARY KEY (id_rep, usuariow, cod_rep, compania, sucursal, anio)
)

GO
GRANT ALL ON fco_cir_cab TO PUBLIC
GO

IF OBJECT_ID('dbo.fco_cir_det') IS NOT NULL
    DROP TABLE dbo.fco_cir_det 
GO
CREATE TABLE dbo.fco_cir_det
(
  id_rep      smallint NOT NULL,
  usuariow	  varchar(30) NOT NULL,
  cod_rep     tinyint NOT NULL,  
  compania    char(4) NOT NULL,
  sucursal    char(10) NOT NULL,
  anio 	      smallint NOT NULL,
  numero      smallint NOT NULL,
  trabajador  char(10),
  nombre      varchar(60),
  cedula      varchar(20),
  fecha_desde smalldatetime,
  fecha_hasta smalldatetime,
  campo_ng    decimal(19,6),
  campo_gr    decimal(19,6),
  secuencia   tinyint,
  valor_retencion  decimal(13,2),
  agr1        varchar(10) NULL,
  dato1       varchar(10) NULL,
  desc1	      varchar(40) NULL,
  agr2        varchar(10) NULL,
  dato2       varchar(10) NULL,
  desc2       varchar(40) NULL,
  agr3        varchar(10) NULL,
  dato3       varchar(10) NULL,
  desc3	      varchar(40) NULL  
)

GO
GRANT ALL ON fco_cir_det TO PUBLIC
GO

IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[vw_fco_rep_cir]') 
AND OBJECTPROPERTY(id, N'IsView') = 1)
    DROP VIEW dbo.vw_fco_rep_cir
GO
CREATE VIEW dbo.vw_fco_rep_cir
AS
/********************************************************************/
/*** Módulo Fiscal de Colombia - Reporte de CIR                   ***/
/*** Descripcion: Vista que ve el reporte del CIR                 ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 15 de 2005                                       ***/
/********************************************************************/
--OCT-03-05: Pasada a SQL de ORA
SELECT a.id_rep, a.usuariow, a.cod_rep, a.compania, a.sucursal, a.anio,
a.fecha_exp, a.nombre_cia, a.registro_fiscal, a.domicilio, a.municipio, a.departamento,
a.sucursales, a.pagador_nombre, a.pagador_id, a.poner_carreta, a.cod_admon, a.cod_depto,
a.cod_municipio, a.telefono, b.numero, b.trabajador, b.nombre, b.cedula,
b.fecha_desde, b.fecha_hasta, b.campo_ng, b.campo_gr, b.secuencia, b.valor_retencion,
b.agr1, b.dato1, b.desc1, b.agr2, b.dato2, b.desc2, b.agr3, b.dato3, b.desc3
FROM fco_cir_cab a, fco_cir_det b
WHERE a.Id_Rep = b.Id_Rep
AND a.usuariow = b.usuariow
AND a.cod_rep = b.cod_rep
AND a.compania = b.compania
AND a.sucursal = b.sucursal

GO
GRANT SELECT ON vw_fco_rep_cir TO PUBLIC
go


IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_del_rep_cir') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_del_rep_cir
GO
CREATE PROCEDURE dbo.sp_fco_del_rep_cir
(
  @psi_id_rep  smallint,
  @pvc_usuario varchar(30),
  @pti_cod_rep tinyint
)
/********************************************************************/
/*** Fiscal de Colombia de Data Tecnologia                        ***/
/*** Descripcion: limpia las tablas involucradas en la ejecucion  ***/
/*** del reporte de ingresos y retenciones                        ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 15 de 2005                                      ***/
/********************************************************************/
--OCT-03-05: Pasada a SQL de ORA
AS
BEGIN
     DELETE fco_reportes_proc
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep
     
     DELETE fco_cir_cab
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep

     DELETE fco_cir_det
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep

     DELETE fco_reportes_mm
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep
     
END

GO
GRANT EXECUTE ON dbo.sp_fco_del_rep_cir TO PUBLIC
GO

IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[fco_embargos_mm_paso0]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE dbo.fco_embargos_mm_paso0
GO
CREATE TABLE dbo.fco_embargos_mm_paso0
( 
  id_rep      smallint NOT NULL,
  usuariow	  varchar(30) NOT NULL,
  cod_rep     tinyint NOT NULL,  
  registro VARCHAR(700)
)
GO
GRANT ALL ON fco_embargos_mm_paso0 TO Public
GO




IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[fco_embargos_mm_paso]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE dbo.fco_embargos_mm_paso
GO
CREATE TABLE fco_embargos_mm_paso
( 
  id_rep      smallint NOT NULL,
  usuariow	  varchar(30) NOT NULL,
  cod_rep     tinyint NOT NULL,  
  consecutivo INTEGER,
  registro VARCHAR(700)
)
GO
GRANT ALL ON fco_embargos_mm_paso0 TO Public
GO


IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[fco_embargos_trans]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE dbo.fco_embargos_trans
GO
CREATE TABLE dbo.fco_embargos_trans
(
  id_rep      smallint NOT NULL,
  usuariow	  varchar(30) NOT NULL,
  cod_rep     tinyint NOT NULL,  
  compania char(4) NOT NULL,
  anio smallint NOT NULL,
  mes tinyint NOT NULL,
  trabajador char(10) NOT NULL,
  concepto smallint NOT NULL,
  secuencia smallint NOT NULL,
  importe decimal(13,2) NOT NULL
)
GO
GRANT ALL ON fco_embargos_trans TO Public
GO


IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_del_rep_embargos_mm') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_del_rep_embargos_mm
GO
CREATE PROCEDURE dbo.sp_fco_del_rep_embargos_mm
(
  @psi_id_rep  smallint,
  @pvc_usuario varchar(30),
  @pti_cod_rep tinyint
)
/********************************************************************/
/*** Fiscal de Colombia de Data Tecnologia                        ***/
/*** Descripcion: limpia las tablas involucradas en la ejecucion  ***/
/*** del reporte de embargos                                         ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 15 de 2005                                      ***/
/********************************************************************/
--OCT-01-05: DCRP, Pasado a SQL de Oracle
AS
BEGIN
     DELETE fco_reportes_proc
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep
     
     DELETE fco_reportes_mm
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep

     DELETE fco_embargos_trans    
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep

    DELETE fco_embargos_mm_paso0
    WHERE id_rep = @psi_id_rep
      AND usuariow = @pvc_usuario
      AND cod_rep = @pti_cod_rep
    
    DELETE fco_embargos_mm_paso
    WHERE id_rep = @psi_id_rep
      AND usuariow = @pvc_usuario
      AND cod_rep = @pti_cod_rep
          
END
GO
GRANT EXECUTE ON dbo.sp_fco_del_rep_embargos_mm TO PUBLIC
GO

IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_crea_embargos_mm') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_crea_embargos_mm
GO
CREATE PROCEDURE sp_fco_crea_embargos_mm
(
  @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),
  @psi_anio        char(5),
  @pti_mes         char(3),
  @pch_ciudad_pago char(2)
)
/**********************************************************************/
/*** Modulo:      Módulo Fiscal ADAM V.3                            ***/
/*** Descripcion: Medio Magnético Embargos                          ***/
-- REVISION GENERAL Juan Carlos Leguizamon
-- DIC. 06/04. PARA SURTIGAS
/**********************************************************************/
/*** Adecuacion: Diana Cecilia Rios Peinado                         ***/
/*** Mayo 15 de 2005                                                ***/
--OCT-01-05: DCRP, Pasado a SQL de Oracle
AS
DECLARE
	@vch_agr_embargos  CHAR(3),
	@csi_id_cal        INTEGER, --calendario_procesos.id_calendario%TYPE;
	@vvc_sql           VARCHAR(500),
	@vvc_tabla         VARCHAR(16),  
	@vsi_registros     INTEGER,
	@vdt_fecha_hoy	   SMALLDATETIME,
	@comilla				CHAR(1),

  @vch_compania    char(4),
  @vsi_anio        smallint,
  @vti_mes         tinyint,
  @vch_ciudad_pago char(2),
  
  @vti_trab_dde tinyint,
  @vti_trab_hta tinyint
    

BEGIN
	SET @comilla = ''''
	SET @vdt_fecha_hoy = getdate()

  SET @vch_compania = @pch_compania
  SET @vsi_anio = CONVERT(smallint, @psi_anio)  
  SET @vti_mes = CONVERT(tinyint, @pti_mes)
  SET @vch_ciudad_pago = LTRIM(RTRIM(@pch_ciudad_pago))
  
  /* Hallar la agrupación de embargos */
  SELECT @vch_agr_embargos = dato
  FROM vw_fdt_parametros
  WHERE 
    pais = 'COL'
    AND compania = @vch_compania
    AND parametro = 'otros'
    AND secuencia = 1
  
  /* ELIMINAR DATOS ACTUALES */    
  DELETE fco_embargos_trans    
  WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep
      
  DELETE fco_reportes_mm
  WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep

   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
    
  DECLARE cr_id_calendario  CURSOR FOR
  SELECT    
    cp.id_calendario    
  FROM    
    calendario_procesos cp, 
    cal_proc_cias cpc    
  WHERE    
    cp.id_calendario = cpc.id_calendario 
    AND cpc.compania = @vch_compania 
    AND cp.anio = @vsi_anio 
    AND cp.mes_acumular = @vti_mes 
    AND cpc.sit_periodo = 2

  OPEN cr_trab_envio
  FETCH NEXT FROM cr_id_calendario INTO @csi_id_cal

  WHILE @@FETCH_STATUS = 0
  BEGIN--w1
  
    SET @vvc_sql = 'INSERT INTO fco_embargos_trans ' +
    ' SELECT ' +  @psi_id_rep + ', ' +
                  @comilla + @pvc_usuario + @comilla + ', ' + @pti_cod_rep + ', ' +
    ' tns.compania, ' + LTRIM(RTRIM(@vsi_anio)) + ',' + LTRIM(RTrim(@vti_mes)) + ',' +    
    ' tns.trabajador, tns.concepto, tns.factor_02, SUM(tns.importe)' +    
    ' FROM' +    
    ' trans_' + LTRIM(RTRIM(@vch_compania)) + '_' + LTRIM(RTRIM(@csi_id_cal)) + ' tns,' +    
    ' rel_conceptos_agr rca' +    
    ' WHERE' +    
    ' tns.compania = rca.compania And tns.concepto = rca.concepto And' +    
    ' rca.agr_conceptos = ' + @comilla + @vch_agr_embargos + @comilla + ' And' +    
    ' rca.signo = ' + @comilla + '+' + @comilla + ' And' +
    ' tns.compania = ' + @comilla + @vch_compania + @comilla + ' And' +    
    ' tns.id_calendario = ' + LTRIM(RTRIM(@csi_id_cal)) + ' And' +    
    ' tns.importe > 0' +
    ' AND ' +
    ' (( '+ RTRIM(@vti_trab_dde) + ' = 1) OR (tns.trabajador >= RTRIM(''' + @pch_trab_dde + ''') AND '+ RTRIM(@vti_trab_dde) + ' = 0)) AND' +
    ' (( '+ RTRIM(@vti_trab_hta) + ' = 1) OR (tns.trabajador <= RTRIM(''' + @pch_trab_hta + ''') AND '+ RTRIM(@vti_trab_hta) + ' = 0)) ' +
    ' GROUP BY' +    
    ' tns.compania, tns.trabajador, tns.concepto, tns.factor_02'

		EXECUTE (@vvc_sql)
		FETCH NEXT FROM cr_id_calendario INTO @csi_id_cal
	END--w1
  CLOSE cr_id_calendario
	DEALLOCATE cr_id_calendario

  /* INSERTAR REGISTROS DE LIQUIDACIONES */  
  INSERT INTO 
    fco_embargos_trans    
  SELECT    
    @psi_id_rep, @pvc_usuario, @pti_cod_rep, ld.compania, @vsi_anio, @vti_mes, ld.trabajador, ld.concepto, ld.factor_02, SUM(ld.importe)    
  FROM    
    liquidaciones_enc le, liquidaciones_det ld, rel_conceptos_agr rca    
  WHERE    
    le.compania = ld.compania 
    AND le.numero_liquidacion = ld.numero_liquidacion 
    AND ld.compania = rca.compania 
    AND ld.concepto = rca.concepto 
    AND rca.agr_conceptos = @vch_agr_embargos 
    AND rca.signo = '+' 
    AND ld.compania = @vch_compania 
    AND le.sit_liquidacion = 2 
    AND ld.sit_transaccion = 2 
    AND ld.anio_acumular = @vsi_anio 
    AND ld.mes_acumular = @vti_mes 
    AND ld.importe > 0   
    AND ((@vti_trab_dde = 1) OR (ld.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
       ((@vti_trab_hta = 1) OR (ld.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))      
  GROUP BY     
    ld.compania, ld.trabajador, ld.concepto, ld.factor_02

  -- NO PROCESAR LOS TRABAJADORES FUERA DEL RANGO DE DATOS DE LA AGR. 4
  IF ISNULL(LTRIM(RTRIM(@pch_dato_dde)),'') <> '' 
	BEGIN
    DELETE fco_embargos_trans
    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_trans
    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
        
  /* GENERACION DEL REGISTRO DE DATOS */
  INSERT INTO fco_embargos_mm_paso0
  SELECT @psi_id_rep, @pvc_usuario, @pti_cod_rep,
    CONVERT(CHAR(8), @vdt_fecha_hoy, 112) +
		REPLICATE('0', 4 - LEN(LTRIM(RTRIM(ISNULL(a.oficina_origen, '10'))))) + LTRIM(RTRIM(ISNULL(a.oficina_origen, '10'))) +
		REPLICATE('0', 4 - LEN(LTRIM(RTRIM(ISNULL(a.oficina_destino, '10'))))) + LTRIM(RTRIM(ISNULL(a.oficina_destino, '10'))) +
    SUBSTRING(LTRIM(RTRIM(clase_deposito)), 1, 1) +    
		LTRIM(RTRIM(a.numero_expediente)) + SPACE(10 - LEN(LTRIM(RTRIM(a.numero_expediente)))) +
		REPLICATE('0', 12 - LEN(ISNULL(RTRIM(LTRIM(a.codigo_juzgado)), '0'))) + ISNULL(RTRIM(LTRIM(a.codigo_juzgado)), '0') +
		REPLICATE('0', 12 - LEN(ISNULL(RTRIM(LTRIM(a.cuenta)),'0'))) + ISNULL(RTRIM(LTRIM(a.cuenta)),'0') +
		REPLICATE('0', 13 - LEN(LTRIM(RTRIM(CONVERT(CHAR, FLOOR(SUM(b.importe))))))) + LTRIM(RTRIM(CONVERT(CHAR, FLOOR(SUM(b.importe))))) + '.00' +
    SUBSTRING(LTRIM(RTRIM(a.tipo_id_demandante)), 1, 1) +
		REPLICATE('0', 11 - LEN(ISNULL(RTRIM(LTRIM(a.id_demandante)),'0'))) + ISNULL(RTRIM(LTRIM(a.id_demandante)),'0') +
    '1' +
		REPLICATE('0', 11 - LEN(ISNULL(RTRIM(LTRIM(a.cedula)),'0'))) + ISNULL(RTRIM(LTRIM(a.cedula)),'0') +
		LTRIM(RTRIM(a.apellido_demandante)) + SPACE(20 - LEN(LTRIM(RTRIM(a.apellido_demandante)))) +
		LTRIM(RTRIM(a.nombre_demandante)) + SPACE(20 - LEN(LTRIM(RTRIM(a.nombre_demandante)))) +
		LTRIM(RTRIM(a.apellidos)) + SPACE(20 - LEN(LTRIM(RTRIM(a.apellidos)))) +
		LTRIM(RTRIM(a.nombres)) + SPACE(20 - LEN(LTRIM(RTRIM(a.nombres)))) registro
  FROM     
    vw_fdt_embargos a, fco_embargos_trans b    
  WHERE    
    a.compania = b.compania 
    AND a.trabajador = b.trabajador 
    AND a.concepto = b.concepto 
    AND a.secuencia = b.secuencia 
    AND b.compania = @vch_compania 
    AND b.anio = @vsi_anio 
    AND b.mes = @vti_mes 
    AND a.banco = 1  
    AND a.ciudad_pago = @vch_ciudad_pago
    AND b.id_rep = @psi_id_rep
    AND b.usuariow = @pvc_usuario
    AND b.cod_rep = @pti_cod_rep
  GROUP BY    
    a.oficina_origen, a.oficina_destino, a.clase_deposito, a.numero_expediente,    
    a.codigo_juzgado, a.cuenta, a.tipo_id_demandante, a.id_demandante,    
    a.cedula, a.apellido_demandante, a.nombre_demandante,    
    a.apellidos, a.nombres

  SELECT @psi_id_rep AS id_rep, @pvc_usuario AS usuario, @pti_cod_rep AS cod_rep,
  IDENTITY(int, 1, 1) AS secuencia, registro
	INTO #tmp_paso
  FROM fco_embargos_mm_paso0
  WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep

  INSERT INTO fco_embargos_mm_paso 
	SELECT * FROM #tmp_paso

	DROP TABLE #tmp_paso

  --se guarda con secuencia de archivo 1
  INSERT INTO 
    fco_reportes_mm    
  SELECT     
    @psi_id_rep, @pvc_usuario,  @pti_cod_rep, 1, 
    consecutivo + 2,
		REPLICATE('0', 6 - LEN(RTrim(consecutivo)))  + RTrim(consecutivo) + registro + CHAR(10) 
  FROM    
    fco_embargos_mm_paso
  WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep
    
  SELECT @vsi_registros = MAX(consecutivo)    
  FROM 
    fco_embargos_mm_paso
  WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep
    
  DELETE fco_embargos_mm_paso0
  WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep
  
  DELETE fco_embargos_mm_paso
  WHERE id_rep = @psi_id_rep
    AND usuariow = @pvc_usuario
    AND cod_rep = @pti_cod_rep
  
  INSERT INTO 
    fco_reportes_mm    
  SELECT  
    @psi_id_rep, @pvc_usuario,  @pti_cod_rep, 1,
    1,     
    REPLICATE(' ', 23) +
		REPLICATE('0', 10 - LEN(ISNULL(LTRIM(RTRIM(@vsi_registros)),'0'))) + ISNULL(LTRIM(RTRIM(@vsi_registros)),'0') +
    REPLICATE(' ', 40) +
    '5' +
    '00' + SUBSTRING(registro_fiscal, 1, 9) +    
    REPLICATE(' ', 12) +
		REPLICATE('0', 40 - LEN(LTRIM(RTRIM(nombre_cia)))) + LTRIM(RTRIM(nombre_cia)) +
    REPLICATE(' ', 51)
  FROM    
    vw_fco_companias    
  WHERE    
    compania = @vch_compania
          
END
GO
GRANT EXECUTE ON dbo.sp_fco_crea_embargos_mm TO PUBLIC
GO


IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[fco_embargos_rep]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
    DROP TABLE dbo.fco_embargos_rep
GO
CREATE TABLE dbo.fco_embargos_rep
(
  id_rep      smallint NOT NULL,
  usuariow	  varchar(30) NOT NULL,
  cod_rep     tinyint NOT NULL,  
  compania    char(4) NOT NULL,
  trabajador          char(10) NOT NULL,
  concepto            smallint NOT NULL,
  secuencia           smallint NOT NULL,
  apellido_demandante varchar(20) NULL,
  nombre_demandante   varchar(20) NULL,
  apellidos_trab      varchar(20) NULL,
  nombres_trab        varchar(20) NULL,
  agr_conceptos_base  char(3) NULL,
  concepto_base       smallint NULL,
  quinta_parte        smallint NULL,
  monto_total         decimal(14,2) NULL,
  saldo_actual        decimal(14,2) NULL,
  porcentaje          decimal(4,2) NULL,
  cuota_fija          decimal(14,2) NULL,
  nombre_cia          varchar(60) NULL,
  agr1        varchar(10) NULL,
  dato1       varchar(10) NULL,
  desc1	      varchar(40) NULL,
  agr2        varchar(10) NULL,
  dato2       varchar(10) NULL,
  desc2       varchar(40) NULL,
  agr3        varchar(10) NULL,
  dato3       varchar(10) NULL,
  desc3	      varchar(40) NULL,
  CONSTRAINT PK_fco_embargos_rep PRIMARY KEY 
  (id_rep, usuariow, cod_rep, compania, trabajador, concepto, secuencia) 
)
GO
GRANT ALL ON fco_embargos_rep TO Public
GO

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

IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_del_rep_embargos') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_del_rep_embargos
GO
CREATE PROCEDURE dbo.sp_fco_del_rep_embargos
(
  @psi_id_rep  smallint,
  @pvc_usuario varchar(30),
  @pti_cod_rep tinyint
)
/********************************************************************/
/*** Fiscal de Colombia de Data Tecnologia                        ***/
/*** Descripcion: limpia las tablas involucradas en la ejecucion  ***/
/*** del reporte de embargos                                         ***/
/*** Autor:	Diana Cecilia Rios Peinado                            ***/
/*** Fecha:	Mayo 15 de 2005                                      ***/
/********************************************************************/
--OCT-01-05: DCRP, Pasado a SQL de Oracle
AS
BEGIN
     DELETE fco_reportes_proc
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep
     
     DELETE fco_embargos_rep
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep

     DELETE fco_reportes_mm
     WHERE id_rep = @psi_id_rep
     AND usuariow = @pvc_usuario
     AND cod_rep = @pti_cod_rep
          
END
GO
GRANT EXECUTE ON dbo.sp_fco_del_rep_embargos TO PUBLIC
GO

