PRINT '*****************************************'
PRINT '*** Inicio de Script de Actualización ***'
PRINT '*** Script por Juan Carlos Leguizamón ***'
PRINT '*** Base de Datos: SQL Server.        ***'
PRINT '*** Backend:  Agosto 30/06            ***'
PRINT '*** Frontend: Agosto 29/06 Ver.1.0.55 ***'
GO
SET NOCOUNT ON
IF NOT EXISTS(SELECT 1 FROM criterios_valores_col WHERE campo = 'emb_bancos')
BEGIN
    INSERT INTO criterios_valores_col (campo, item, descripcion) VALUES ('emb_bancos', 0, 'Pago en Cheque')
    INSERT INTO criterios_valores_col (campo, item, descripcion) VALUES ('emb_bancos', 1, 'Banco Agrario')
    if exists (select 1 from companias where compania = '10')
    begin
        INSERT INTO criterios_valores_col (campo, item, descripcion) VALUES ('emb_bancos', 2, 'Pago en Cheque Decadal')
        INSERT INTO criterios_valores_col (campo, item, descripcion) VALUES ('emb_bancos', 3, 'Banco Agrario Decadal')
    end
END

delete fdt_bancos where descripcion = 'Pago en Cheque'
delete fdt_bancos where descripcion = 'Banco Agrario'
delete fdt_bancos where descripcion = 'Pago en Cheque Decadal'
delete fdt_bancos where descripcion = 'Banco Agrario Decadal'
go

update fdt_parametros set tipo = 0 where parametro = 'autoliq' and secuencia in (45, 46)
go

if (select count(*) from fco_autorizaciones) = 0
    insert into fco_autorizaciones
    (compania, sucursal, autorizacion, numero, tipo_incapacidad, tipo_entidad, cod_entidad, fecha, periodo, ausentismo, descontar_ala, valor_total)
    select compania, sucursal, autorizacion, numero, tipo_incapacidad, tipo_entidad, cod_entidad, fecha, periodo, ausentismo, descontar_ala, valor_total 
    from mf_autorizaciones

if (select count(*) from fco_autorizaciones_det) = 0
    insert into fco_autorizaciones_det (compania, autorizacion, trabajador, valor)
    select compania, autorizacion, trabajador, valor from mf_autorizaciones_det
go
if not exists (select * from syscolumns where name = 'estado' and id = (select id from sysobjects where name = 'fco_traslados_eps'))
    ALTER TABLE fco_traslados_eps ADD estado tinyint NOT NULL DEFAULT 0
go
ALTER TABLE fco_traslados_eps DROP CONSTRAINT pk_fco_traslados_eps
GO
ALTER TABLE fco_traslados_eps ALTER COLUMN fecha_cambio smalldatetime NOT NULL 
GO
ALTER TABLE fco_traslados_eps ADD CONSTRAINT pk_fco_traslados_eps PRIMARY KEY CLUSTERED (compania, trabajador, fecha_cambio)
GO
if not exists (select * from syscolumns where name = 'estado' and id = (select id from sysobjects where name = 'fco_traslados_fpo'))
    ALTER TABLE fco_traslados_fpo ADD estado tinyint NOT NULL DEFAULT 0
GO
ALTER TABLE fco_traslados_fpo DROP CONSTRAINT pk_fco_traslados_fpo
GO
ALTER TABLE fco_traslados_fpo ALTER COLUMN fecha_cambio smalldatetime NOT NULL 
GO
ALTER TABLE fco_traslados_fpo ADD CONSTRAINT pk_fco_traslados_fpo PRIMARY KEY CLUSTERED (compania, trabajador, fecha_cambio)
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_alta_traslados_eps]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_alta_traslados_eps
GO
CREATE PROCEDURE dbo.sp_fco_alta_traslados_eps(
@i_compania		char(4),
@i_trabajador		char(10),
@i_EPS_actual		char(10),
@i_EPS_nueva		char(10),
@i_fecha_cambio		smalldatetime
)
AS
BEGIN
DECLARE
@i_llave_foranea	TINYINT
	BEGIN TRANSACTION
	INSERT INTO fco_traslados_eps 
    (compania, trabajador, EPS_actual, EPS_nueva, fecha_cambio, estado)
    VALUES 
    (@i_compania,@i_trabajador, @i_EPS_actual, @i_EPS_nueva, @i_fecha_cambio, 0)
	IF @@error <> 0
	  BEGIN
	    ROLLBACK TRANSACTION 
	    RAISERROR 206800 'Error al tratar de insertar en la tabla [fco_traslados_eps]'  
	    RETURN 
	  END
	ELSE
	BEGIN
  		COMMIT TRANSACTION 
	END
END
GO
GRANT EXECUTE ON sp_fco_alta_traslados_eps TO Public
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_alta_traslados_fpo]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_alta_traslados_fpo
GO
CREATE PROCEDURE dbo.sp_fco_alta_traslados_fpo(
@i_compania		char(4),
@i_trabajador		char(10),
@i_fpo_actual		char(10),
@i_fpo_nueva		char(10),
@i_fecha_cambio		smalldatetime
)
AS
BEGIN
	BEGIN TRANSACTION
	INSERT INTO fco_traslados_fpo 
    (compania, trabajador, FPO_actual, FPO_nueva, fecha_cambio, estado)
    VALUES 
	(@i_compania, @i_trabajador, @i_fpo_actual, @i_fpo_nueva, @i_fecha_cambio, 0)
	IF @@error <> 0
	  BEGIN
	    ROLLBACK TRANSACTION 
	    RAISERROR 206800 'Error al tratar de insertar en la tabla [fco_traslados_fpo]'  
	    RETURN 
	  END
	ELSE
	BEGIN
  		COMMIT TRANSACTION 
	END
END
GO
GRANT EXECUTE ON sp_fco_alta_traslados_fpo TO Public
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_baja_traslados_eps]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_baja_traslados_eps
GO
CREATE PROCEDURE dbo.sp_fco_baja_traslados_eps(
@i_compania		char(4),
@i_trabajador	char(10),
@pdt_fecha smalldatetime
)
AS
BEGIN
	BEGIN TRANSACTION
	DELETE  fco_traslados_eps
		WHERE compania = @i_compania
		AND trabajador = @i_trabajador
        AND fecha_cambio = @pdt_fecha
	IF @@error <> 0
	   BEGIN
		ROLLBACK TRANSACTION
		RETURN
	END
	COMMIT TRANSACTION 
END 
GO
GRANT EXECUTE ON sp_fco_baja_traslados_eps TO Public
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_baja_traslados_fpo]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_baja_traslados_fpo
GO
CREATE PROCEDURE dbo.sp_fco_baja_traslados_fpo(
@i_compania		char(4),
@i_trabajador		char(10),
@pdt_fecha smalldatetime
)
AS
BEGIN
	BEGIN TRANSACTION
	DELETE  fco_traslados_fpo
		WHERE compania = @i_compania
		AND trabajador = @i_trabajador
        AND fecha_cambio = @pdt_fecha
	IF @@error <> 0
	   BEGIN
		ROLLBACK TRANSACTION
		RETURN
	END
	COMMIT TRANSACTION 
END 
GO
GRANT EXECUTE ON sp_fco_baja_traslados_fpo TO Public
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_cambio_traslados_eps]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_cambio_traslados_eps
GO
CREATE PROCEDURE dbo.sp_fco_cambio_traslados_eps(
@i_compania		char(4),
@i_trabajador		char(10),
@i_EPS_actual		char(10),
@i_EPS_nueva		char(10),
@i_fecha_cambio		smalldatetime)
AS
BEGIN
	BEGIN TRANSACTION
	UPDATE fco_traslados_eps
	SET 
        EPS_actual = @i_EPS_actual,	
    	EPS_nueva   = @i_EPS_nueva,
        estado = 2
	WHERE compania = @i_compania
	AND trabajador = @i_trabajador
	AND fecha_cambio  = @i_fecha_cambio
	
	IF @@error <> 0
	BEGIN
		ROLLBACK TRANSACTION
		RETURN
	END
	COMMIT TRANSACTION
END 

GO
GRANT EXECUTE ON sp_fco_cambio_traslados_eps TO Public
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_cambio_traslados_fpo]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_cambio_traslados_fpo
GO
CREATE PROCEDURE dbo.sp_fco_cambio_traslados_fpo(
@i_compania		char(4),
@i_trabajador		char(10),
@i_fpo_actual		char(10),
@i_fpo_nueva		char(10),
@i_fecha_cambio		smalldatetime)
AS
BEGIN
	BEGIN TRANSACTION
	UPDATE fco_traslados_fpo
	SET fpo_actual = @i_fpo_actual,	
	    fpo_nueva   = @i_fpo_nueva,
        estado = 2
	WHERE compania = @i_compania
	AND trabajador = @i_trabajador
	AND fecha_cambio  = @i_fecha_cambio
	IF @@error <> 0
	BEGIN
		ROLLBACK TRANSACTION
		RETURN
	END
	COMMIT TRANSACTION
END 
GO
GRANT EXECUTE ON sp_fco_cambio_traslados_fpo TO Public
GO

IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_proc_traslados_eps]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_proc_traslados_eps
GO
CREATE PROCEDURE dbo.sp_fco_proc_traslados_eps
(
    @pch_compania    char(4), 
    @psm_anio        smallint,
    @ptn_mes         tinyint
)
AS
DECLARE	@cch_trabajador char(10),
	@cch_actual     char(10),
	@cch_nueva      char(10)

DECLARE cr_traslados CURSOR FOR
SELECT	trabajador, EPS_actual, EPS_nueva
FROM	fco_traslados_eps
WHERE	compania = @pch_compania AND
trabajador In (SELECT trabajador FROM trabajadores_grales
               WHERE compania = @pch_compania And
               clase_nomina is not null And
               clase_nomina in 
                (SELECT clase_nomina 
                 FROM rel_usu_clase_nom 
                 WHERE usuario = system_user
                 )) AND
DatePart(Year, fecha_cambio) = @psm_anio AND
DatePart(Month, fecha_cambio) = @ptn_mes
BEGIN

	OPEN cr_traslados
	FETCH cr_traslados 
	INTO @cch_trabajador, @cch_actual, @cch_nueva

	WHILE @@FETCH_STATUS = 0 
            BEGIN

		UPDATE 	rel_trab_agr
		SET	dato = @cch_nueva
		WHERE	compania = @pch_compania
		AND	trabajador = @cch_trabajador
		AND	agrupacion = 'EPS'


		FETCH cr_traslados INTO @cch_trabajador, @cch_actual, @cch_nueva
            END
	CLOSE cr_traslados
	DEALLOCATE cr_traslados
	
	UPDATE fco_traslados_eps
    SET estado = 1
	WHERE	compania = @pch_compania AND
  trabajador In (SELECT trabajador FROM trabajadores_grales
                 WHERE compania = @pch_compania And
                 clase_nomina is not null And
                 clase_nomina in 
                  (SELECT clase_nomina 
                   FROM rel_usu_clase_nom 
                   WHERE usuario = system_user
                   )) AND
		DatePart(Year, fecha_cambio) = @psm_anio AND
		DatePart(Month, fecha_cambio) = @ptn_mes

END

GO
GRANT EXECUTE ON sp_fco_proc_traslados_eps TO Public
GO
IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'[dbo].[sp_fco_proc_traslados_fpo]') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_proc_traslados_fpo
GO
CREATE PROCEDURE dbo.sp_fco_proc_traslados_fpo
(
	@i_compania       char(4), 
	@i_anio		  int,
	@i_mes		  int
)
AS
DECLARE	@w_trabajador 	varchar(10),
	@w_nueva	varchar(10)

DECLARE cr_traslados CURSOR FOR
SELECT	trabajador, fpo_nueva
FROM	fco_traslados_fpo
WHERE	compania = @i_compania AND
trabajador In (SELECT trabajador FROM trabajadores_grales
               WHERE compania = @i_compania And
               clase_nomina is not null And
               clase_nomina in 
                (SELECT clase_nomina 
                 FROM rel_usu_clase_nom 
                 WHERE usuario = system_user
                 )) AND
DatePart(Year, fecha_cambio) = @i_anio AND
DatePart(Month, fecha_cambio) = @i_mes
BEGIN
	OPEN cr_traslados
	FETCH cr_traslados 
	INTO @w_trabajador, @w_nueva

	WHILE @@FETCH_STATUS = 0 
            BEGIN

		UPDATE 	REL_TRAB_AGR
		SET	dato = @w_nueva
		WHERE	compania = @i_compania
		AND	trabajador = @w_trabajador
		AND	agrupacion = 'FPO'

		FETCH cr_traslados INTO @w_trabajador, @w_nueva
            END
	CLOSE cr_traslados
	DEALLOCATE cr_traslados

	UPDATE fco_traslados_fpo
    SET estado = 1
	WHERE	compania = @i_compania AND
                trabajador In (SELECT trabajador FROM trabajadores_grales
                               WHERE compania = @i_compania And
                               clase_nomina is not null And
                               clase_nomina in 
                                (SELECT clase_nomina 
                                 FROM rel_usu_clase_nom 
                                 WHERE usuario = system_user
                                 )) AND
		DatePart(Year, fecha_cambio) = @i_anio AND
		DatePart(Month, fecha_cambio) = @i_mes
END

GO
GRANT EXECUTE ON sp_fco_proc_traslados_fpo TO Public
GO
IF OBJECT_ID('dbo.vw_fco_ccf_trabajador') IS NOT NULL
    DROP VIEW dbo.vw_fco_ccf_trabajador
GO
CREATE VIEW dbo.vw_fco_ccf_trabajador
AS
SELECT tg.compania, tg.trabajador, ccf = ISNULL(ccf.dato, ''), a.descripcion,
departamento = IsNull(a.departamento, ''), 
municipio = IsNull(a.municipio, '')
FROM trabajadores_grales tg
LEFT JOIN rel_trab_agr ccf ON tg.compania = ccf.compania AND tg.trabajador = ccf.trabajador
    AND ccf.agrupacion = (SELECT x.dato FROM vw_fdt_parametros x
                          WHERE x.pais = 'COL' AND x.compania = tg.compania
                            AND x.parametro = 'parafiscal' AND x.secuencia = 1)
LEFT JOIN vw_fco_administradoras a ON a.compania = ccf.compania AND a.codigo = ccf.dato AND a.tipo = 'CCF'
GO
GRANT SELECT ON dbo.vw_fco_ccf_trabajador TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_extranjero_no_pension') IS NOT NULL
    DROP VIEW dbo.vw_fco_extranjero_no_pension
GO
CREATE VIEW dbo.vw_fco_extranjero_no_pension
AS
SELECT tg.compania, tg.trabajador, extranjero = case when rtc.coleccion is null then ' ' else 'X' end
FROM trabajadores_grales tg
LEFT JOIN rel_trab_coleccion rtc ON tg.compania = rtc.compania AND tg.trabajador = rtc.trabajador
    AND rtc.coleccion = (SELECT x.dato FROM vw_fdt_parametros x
                          WHERE x.pais = 'COL' AND x.compania = tg.compania
                            AND x.parametro = 'autoliq' AND x.secuencia = 42)
GO
GRANT SELECT ON dbo.vw_fco_extranjero_no_pension TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_det') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_det
GO
CREATE VIEW dbo.vw_fco_integrada_det
AS
SELECT 
    a.compania, a.anio, a.mes, a.sucursal, a.trabajador, a.secuencia, a.tipo_documento, a.nro_id, a.digito_chequeo, 
    a.tipo_cotizante, a.subtipo_cotizante, a.extranjero_no_pension, a.residente_en_exterior, a.departamento, a.municipio, 
    primer_apellido = dbo.fn_fco_valida_nombre(CONVERT(char(20), LTRIM(REPLACE(a.primer_apellido, '  ', ' ')))),  -- JCL Ajuste Agosto 25/06
    segundo_apellido = dbo.fn_fco_valida_nombre(CONVERT(char(30), LTRIM(REPLACE(a.segundo_apellido, '  ', ' ')))), -- JCL Ajuste Agosto 25/06
    primer_nombre = dbo.fn_fco_valida_nombre(CONVERT(char(20), LTRIM(REPLACE(a.primer_nombre, '  ', ' ')))), -- JCL Ajuste Agosto 25/06
    segundo_nombre = dbo.fn_fco_valida_nombre(CONVERT(char(30), LTRIM(REPLACE(a.segundo_nombre, '  ', ' ')))), -- JCL Ajuste Agosto 25/06
    a.nov_ING, a.nov_RET, a.nov_TDE, a.nov_TAE, a.nov_TDP, a.nov_TAP, a.nov_VSP, a.nov_VTE, a.nov_VST, 
    a.nov_SLN, a.nov_IGE, a.nov_LMA, a.nov_VAC, a.nov_AVP, a.nov_VCT, a.nov_IRP, a.cod_AFP, a.cod_AFP_Tras, 
    a.cod_EPS, a.cod_EPS_Tras, a.cod_CCF, a.dias_AFP, a.dias_EPS, a.dias_ARP, a.dias_CCF, a.salario, a.integral, 
    a.IBC_AFP, a.IBC_EPS, a.IBC_ARP, a.IBC_CCF, 
    a.tarifa_AFP, a.aporte_AFP, a.voluntario_AFP, a.voluntario_AFP_cia, a.aporte_total_AFP, a.aporte_FSP, aporte_FSP_subsistencia, 
    a.valor_no_retenido, a.tarifa_EPS, a.aporte_EPS, a.UPC_adicional, a.nro_aut_IGE, a.vlr_aut_IGE, 
    a.nro_aut_LMA, a.vlr_aut_LMA, a.tarifa_ARP, a.centro_trabajo, a.aporte_ARP, 
    a.tarifa_CCF, a.aporte_CCF, a.tarifa_SENA, a.aporte_SENA, a.tarifa_ICBF, a.aporte_ICBF, 
    a.tarifa_ESAP, a.aporte_ESAP, a.tarifa_MEdu, a.aporte_MEdu, a.origen, a.eliminada,
    ISNULL(b.descripcion, '') AS tipo_cotizante_des,

    LTRIM((SELECT eps.cod_super FROM fco_administradoras eps 
                           WHERE eps.tipo = 'EPS' AND eps.codigo = a.cod_EPS)) AS eps_cod_super,
    (SELECT eps.descripcion FROM vw_fco_administradoras eps 
     WHERE eps.compania = a.compania AND eps.tipo = 'EPS' AND eps.codigo = a.cod_EPS) AS eps_nombre,

    LTRIM((SELECT afp.cod_super FROM fco_administradoras afp 
                           WHERE afp.tipo = 'AFP' AND afp.codigo = a.cod_AFP)) AS afp_cod_super,
    (SELECT afp.descripcion FROM vw_fco_administradoras afp
     WHERE afp.compania = a.compania AND afp.tipo = 'AFP' AND afp.codigo = a.cod_AFP) AS afp_nombre,

    LTRIM((SELECT ccf.cod_super FROM fco_administradoras ccf
                           WHERE ccf.tipo = 'CCF' AND ccf.codigo = a.cod_CCF)) AS ccf_cod_super,
    (SELECT ccf.descripcion FROM vw_fco_administradoras ccf
     WHERE ccf.compania = a.compania AND ccf.tipo = 'CCF' AND ccf.codigo = a.cod_CCF) AS ccf_nombre,

    LTRIM((SELECT neps.cod_super FROM fco_administradoras neps 
                           WHERE neps.tipo = 'EPS' AND neps.codigo = a.cod_EPS_Tras)) AS neps_cod_super,
    (SELECT neps.descripcion FROM vw_fco_administradoras neps 
     WHERE neps.compania = a.compania AND neps.tipo = 'EPS' AND neps.codigo = a.cod_EPS_Tras) AS neps_nombre,

    LTRIM((SELECT nafp.cod_super FROM fco_administradoras nafp 
                           WHERE nafp.tipo = 'AFP' AND nafp.codigo = a.cod_AFP_Tras)) AS nafp_cod_super,
    (SELECT nafp.descripcion FROM vw_fco_administradoras nafp
     WHERE nafp.compania = a.compania AND nafp.tipo = 'AFP' AND nafp.codigo = a.cod_AFP_Tras) AS nafp_nombre,

    (SELECT ctr.descripcion FROM vw_fco_centros_trabajo ctr
     WHERE ctr.compania = a.compania AND ctr.codigo_reporte = rtrim(a.centro_trabajo)) AS ctr_nombre,

    suc.descripcion AS suc_nombre

FROM fco_integrada_det a
LEFT JOIN criterios_valores_col b ON b.campo = 'tipo_cotizante' AND b.item = a.tipo_cotizante
LEFT JOIN vw_fco_sucursales suc ON suc.compania = a.compania AND suc.sucursal = a.sucursal
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0
-- CONDICIONES DE SEGURIDAD
AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = a.compania AND x.usuario = SYSTEM_USER)
AND EXISTS (SELECT 1 FROM trabajadores_grales tg INNER JOIN rel_usu_clase_nom cn ON tg.clase_nomina = cn.clase_nomina
            WHERE tg.compania = a.compania AND tg.trabajador = a.trabajador AND cn.usuario = SYSTEM_USER)
AND NOT EXISTS (SELECT 1 FROM rel_trab_agr rta INNER JOIN rel_usu_agr_trab x ON rta.agrupacion = x.agrupacion AND rta.dato = x.dato
                WHERE rta.compania = a.compania AND rta.trabajador = a.trabajador AND x.usuario = SYSTEM_USER)
GO
GRANT SELECT ON dbo.vw_fco_integrada_det TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_res_arp') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_res_arp
GO
CREATE VIEW dbo.vw_fco_integrada_res_arp
AS    
SELECT     
    a.compania, a.anio, a.mes, a.sucursal,   
    a.centro_trabajo,
    IBC_ARP = isnull(SUM(a.IBC_ARP), 0),
    aporte_ARP = isnull(SUM(a.aporte_ARP), 0),
    nro_aut = 
    (SELECT ta.nro_aut FROM fco_integrada_rt05 ta WHERE ta.compania = a.compania AND ta.anio = a.anio AND ta.mes = a.mes AND ta.sucursal = a.sucursal),   
    vlr_aut = 
    isnull((SELECT ta.incapacidades FROM fco_integrada_rt05 ta WHERE ta.compania = a.compania AND ta.anio = a.anio AND ta.mes = a.mes AND ta.sucursal = a.sucursal), 0),
    (SELECT ctr.descripcion FROM vw_fco_centros_trabajo ctr  
     WHERE ctr.compania = a.compania AND ctr.codigo_reporte = a.centro_trabajo) AS ctr_nombre,    
    MAX(suc.descripcion) AS suc_nombre,
    afiliados = COUNT(DISTINCT a.trabajador)
FROM fco_integrada_det a    
LEFT JOIN vw_fco_sucursales suc     
ON suc.compania = a.compania AND suc.sucursal = a.sucursal    
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0    
GROUP BY a.compania, a.anio, a.mes, a.sucursal, a.centro_trabajo
GO
GRANT SELECT ON dbo.vw_fco_integrada_res_arp TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_res_sal') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_res_sal
GO
CREATE VIEW dbo.vw_fco_integrada_res_sal
AS    
SELECT     
    a.compania, a.anio, a.mes, a.sucursal,   
    a.cod_EPS,   
    IBC_EPS = isnull(SUM(a.IBC_EPS), 0),
    aporte_EPS = isnull(SUM(a.aporte_EPS), 0),
    UPC_adicional = isnull(SUM(a.UPC_adicional), 0),
    nro_aut_IGE = 
    (SELECT ts.nro_aut_IGE FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS), 
    vlr_aut_IGE = 
    isnull((SELECT ts.suma_aut_IGE FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS), 0),
    nro_aut_LMA = 
    (SELECT ts.nro_aut_LMA FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS),   
    vlr_aut_LMA = 
    isnull((SELECT ts.suma_aut_LMA FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS), 0),
    
    (SELECT eps.descripcion FROM vw_fco_administradoras eps     
     WHERE eps.compania = a.compania AND eps.tipo = 'EPS'     
       AND eps.codigo = a.cod_EPS) AS eps_nombre,    
  
    MAX(suc.descripcion) AS suc_nombre,
    afiliados = COUNT(DISTINCT a.trabajador)
FROM fco_integrada_det a    
LEFT JOIN vw_fco_sucursales suc     
ON suc.compania = a.compania AND suc.sucursal = a.sucursal    
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0    
GROUP BY a.compania, a.anio, a.mes, a.sucursal, a.cod_EPS  
GO
GRANT SELECT ON dbo.vw_fco_integrada_res_sal TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt01') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt01
GO
CREATE VIEW dbo.vw_fco_integrada_rt01
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 1
-- Autor: Juan Carlos Leguizamon
-- Fecha: Junio 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal,
    '01' + RIGHT('00000' + RTRIM(secuencia), 5) + CONVERT(char(200), razon_social) +
    tipo_documento + CONVERT(char(16), nro_id) + dv + ' ' + 
    '0000000000' + -- JCL Ajuste de junio 21/06
    Space(10) +
    forma_presentacion + sucursal + CONVERT(char(40), nombre_sucursal) + 
    CONVERT(char(6), nueva_ARP) + 
    Left(periodo, 4) + '-' + Right(periodo, 2) + -- JCL Ajuste de junio 21/06
    Left(periodo_salud, 4) + '-' + Right(periodo_salud, 2) + -- JCL Ajuste de junio 21/06
    CONVERT(char(10), nro_radicacion) + 
    Convert(char(10), getdate(), 120) + -- JCL Ajuste de junio 21/06
    RIGHT('00000' + RTRIM(nro_empleados), 5) + 
    RIGHT('000000000000' + RTRIM(valor_nomina), 12) + '1' +
    operador AS registro1
FROM fco_integrada_cab  
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt01 TO PUBLIC
GO

IF OBJECT_ID('dbo.vw_fco_integrada_rt02') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt02
GO
CREATE VIEW dbo.vw_fco_integrada_rt02
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 2
-- Autor: Juan Carlos Leguizamon
-- Fecha: Junio 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, trabajador, secuencia, 
    registro2 =
    '02' + secuencia + tipo_documento + CONVERT(char(16), nro_id) + 
    RIGHT('00' + RTRIM(tipo_cotizante), 2) + 
    RIGHT('00' + RTRIM(subtipo_cotizante), 2) + 
    extranjero_no_pension + residente_en_exterior + departamento + municipio +
    dbo.fn_fco_valida_nombre(CONVERT(char(20), LTRIM(REPLACE(primer_apellido, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    dbo.fn_fco_valida_nombre(CONVERT(char(30), LTRIM(REPLACE(segundo_apellido, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    dbo.fn_fco_valida_nombre(CONVERT(char(20), LTRIM(REPLACE(primer_nombre, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    dbo.fn_fco_valida_nombre(CONVERT(char(30), LTRIM(REPLACE(segundo_nombre, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    nov_ING	+ nov_RET + nov_TDE + nov_TAE + nov_TDP + nov_TAP + nov_VSP + nov_VTE +
    nov_VST + nov_SLN + nov_IGE + nov_LMA + nov_VAC + nov_AVP + nov_VCT + 
    RIGHT('00' + ltrim(rtrim(nov_IRP)), 2) +
    dbo.fn_fco_cod_super('AFP', cod_AFP) + CONVERT(char(6), cod_AFP_Tras) + 
    dbo.fn_fco_cod_super('EPS', cod_EPS) + CONVERT(char(6), cod_EPS_Tras) + 
    dbo.fn_fco_cod_super('CCF', cod_CCF) + 
    RIGHT('00' + RTRIM(dias_AFP), 2) + 
    RIGHT('00' + RTRIM(dias_EPS), 2) + 
    RIGHT('00' + RTRIM(dias_ARP), 2) + 
    RIGHT('00' + RTRIM(dias_CCF), 2) + 
    RIGHT('000000000' + RTRIM(salario), 9) + integral + 
    RIGHT('000000000' + RTRIM(IBC_AFP), 9) +
    RIGHT('000000000' + RTRIM(IBC_EPS), 9) +
    RIGHT('000000000' + RTRIM(IBC_ARP), 9) +
    RIGHT('000000000' + RTRIM(IBC_CCF), 9) +
    LEFT(RTRIM(tarifa_AFP) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_AFP), 9) + 
    RIGHT('000000000' + RTRIM(voluntario_AFP), 9) + 
    RIGHT('000000000' + RTRIM(voluntario_AFP_cia), 9) + 
    RIGHT('000000000' + RTRIM(aporte_total_AFP), 9) + 
    RIGHT('000000000' + RTRIM(aporte_FSP), 9) + 
    RIGHT('000000000' + RTRIM(aporte_FSP_subsistencia), 9) + 
    RIGHT('000000000' + RTRIM(valor_no_retenido), 9) + 
    LEFT(RTRIM(tarifa_EPS) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_EPS), 9) + 
    RIGHT('000000000' + RTRIM(UPC_adicional), 9) + 
    CONVERT(char(15), nro_aut_IGE) + 
    RIGHT('000000000' + RTRIM(vlr_aut_IGE), 9) + 
    CONVERT(char(15), nro_aut_LMA) +
    RIGHT('000000000' + RTRIM(vlr_aut_LMA), 9) + 
    LEFT(RTRIM(tarifa_ARP) + '000000000', 9) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(centro_trabajo), 9) +  + 
    RIGHT('000000000' + RTRIM(aporte_ARP), 9) + 
    LEFT(RTRIM(tarifa_CCF) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_CCF), 9) + 
    LEFT(RTRIM(tarifa_SENA) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_SENA), 9) + 
    LEFT(RTRIM(tarifa_ICBF) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_ICBF), 9) + 
    LEFT(RTRIM(tarifa_ESAP) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_ESAP), 9) + 
    LEFT(RTRIM(tarifa_MEdu) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_MEdu), 9)
FROM fco_integrada_det
WHERE eliminada = 0
AND aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt02 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt03') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt03
GO
CREATE TABLE dbo.fco_integrada_rt03
-- Planilla Integrada Registro Tipo 3
-- Total Aportes del Período a Pensiones por Administradora
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    cod_AFP char(10) NOT NULL,
    secuencia smallint NOT NULL,
    nit varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    suma_aportes decimal(10) NOT NULL,
    suma_voluntarios decimal(10) NOT NULL,
    suma_voluntarios_cia decimal(10) NOT NULL,
    suma_FSP_sol decimal(10) NOT NULL,
    suma_FSP_sub decimal(10) NOT NULL,
    dias_mora smallint NOT NULL,
    int_mora_aportes decimal(10) NOT NULL,
    int_mora_FSP_sol decimal(10) NOT NULL,
    int_mora_FSP_sub decimal(10) NOT NULL,
    total_pagar AS suma_aportes + suma_voluntarios + suma_voluntarios_cia + suma_FSP_sol + suma_FSP_sub + int_mora_aportes + int_mora_FSP_sol + int_mora_FSP_sub,
    total_afiliados decimal(6) NOT NULL,
    CONSTRAINT pk_fco_integrada_rt03 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, cod_AFP)
)
GO
GRANT ALL ON dbo.fco_integrada_rt03 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt03') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt03
GO
CREATE VIEW dbo.vw_fco_integrada_rt03
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 3
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '03' + RIGHT('00000' + RTRIM(secuencia), 5) + dbo.fn_fco_cod_super('AFP', cod_AFP) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    RIGHT('0000000000' + RTRIM(suma_voluntarios), 10) +
    RIGHT('0000000000' + RTRIM(suma_voluntarios_cia), 10) +
    RIGHT('0000000000' + RTRIM(suma_FSP_sol), 10) +
    RIGHT('0000000000' + RTRIM(suma_FSP_sub), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora_aportes), 10) +
    RIGHT('0000000000' + RTRIM(int_mora_FSP_sol), 10) +
    RIGHT('0000000000' + RTRIM(int_mora_FSP_sub), 10) +
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt03
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt03 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt04') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt04
GO
CREATE VIEW dbo.vw_fco_integrada_rt04
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 4
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '04' + RIGHT('00000' + RTRIM(secuencia), 5) + dbo.fn_fco_cod_super('EPS', cod_EPS) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    RIGHT('0000000000' + RTRIM(suma_UPC), 10) +
    CONVERT(char(15), nro_aut_IGE) +
    RIGHT('0000000000' + RTRIM(suma_aut_IGE), 10) +
    CONVERT(char(15), nro_aut_LMA) +
    RIGHT('0000000000' + RTRIM(suma_aut_LMA), 10) +
    RIGHT('0000000000' + RTRIM(neto_aportes), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(int_mora_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(subtotal_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(subtotal_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(nro_radicacion), 10) + 
    RIGHT('0000000000' + RTRIM(saldo_favor_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(saldo_favor_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(total_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(total_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('0000000000' + RTRIM(FOSYGA), 10) + 
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt04
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt04 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt05') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt05
GO
CREATE VIEW dbo.vw_fco_integrada_rt05
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 5
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '05' + RIGHT('00000' + RTRIM(secuencia), 5) + CONVERT(char(6), cod_ARP) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    CONVERT(char(15), nro_aut) +
    RIGHT('0000000000' + RTRIM(incapacidades), 10) +
    RIGHT('0000000000' + RTRIM(otros_riesgos), 10) +
    RIGHT('0000000000' + RTRIM(neto_aportes), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(subtotal_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(nro_radicacion), 10) + 
    RIGHT('0000000000' + RTRIM(saldo_favor), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('0000000000' + RTRIM(FSRP), 10) + 
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt05
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt05 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt06') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt06
GO
CREATE VIEW dbo.vw_fco_integrada_rt06
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 6
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '06' + RIGHT('00000' + RTRIM(secuencia), 5) + dbo.fn_fco_cod_super('CCF', cod_CCF) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt06
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt06 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt07') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt07
GO
CREATE VIEW dbo.vw_fco_integrada_rt07
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 7 - SENA
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '07' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    tipo_concepto +
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(nro_personas), 6)
FROM fco_integrada_rt07
WHERE 1=0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt07 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt08') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt08
GO
CREATE VIEW dbo.vw_fco_integrada_rt08
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 8 - ICBF
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '08' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    tipo_concepto +
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(nro_personas), 6)
FROM fco_integrada_rt08
WHERE 1=0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt08 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt09') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt09
GO
CREATE VIEW dbo.vw_fco_integrada_rt09
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 9 - ESAP
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '09' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10)
FROM fco_integrada_rt09
WHERE 1=0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt09 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt10') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt10
GO
CREATE VIEW dbo.vw_fco_integrada_rt10
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 10 - MinEdu
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, 
    registro =
    '10' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10)
FROM fco_integrada_rt10
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt10 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt11') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt11
GO
CREATE VIEW dbo.vw_fco_integrada_rt11
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 11 - TOTALES
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, 0 AS secuencia,
    registro =
    '11' + 
    RIGHT('0000000000' + RTRIM(pensiones), 10) +
    RIGHT('0000000000' + RTRIM(salud), 10) + 
    RIGHT('0000000000' + RTRIM(riesgos), 10) +
    RIGHT('0000000000' + RTRIM(cajas), 10) +
    RIGHT('0000000000' + RTRIM(SENA), 10) +
    RIGHT('0000000000' + RTRIM(ICBF), 10) +
    RIGHT('0000000000' + RTRIM(ESAP), 10) +
    RIGHT('0000000000' + RTRIM(MinEducacion), 10) +
    RIGHT('0000000000' + RTRIM(Gran_Total), 10) +
    RIGHT('0000000000' + RTRIM(conteo_AFP), 10) +
    RIGHT('0000000000' + RTRIM(conteo_EPS), 10) +
    RIGHT('0000000000' + RTRIM(conteo_ARP), 10) +
    RIGHT('0000000000' + RTRIM(conteo_CCF), 10) 
FROM fco_integrada_rt11
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt11 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_muni_tra') IS NOT NULL
    DROP VIEW dbo.vw_fco_muni_tra
GO
CREATE VIEW dbo.vw_fco_muni_tra
AS
SELECT compania, trabajador, dpto_tra = LEFT(dato, 2), muni_tra = SubString(dato, 4, 3)
FROM rel_trab_agr a
WHERE agrupacion = (SELECT x.dato FROM vw_fdt_parametros x
                    WHERE x.pais = 'COL' AND x.compania = a.compania
                      AND x.parametro = 'autoliq' AND x.secuencia = 44)
GO
GRANT SELECT ON dbo.vw_fco_muni_tra TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_periodos') IS NOT NULL
    DROP VIEW dbo.vw_fco_periodos
GO
CREATE VIEW dbo.vw_fco_periodos
AS
SELECT DISTINCT compania, periodo = Rtrim(anio) + '-' + Right('00' + RTrim(mes), 2), sit_periodo FROM fco_integrada_cab
GO
GRANT SELECT ON dbo.vw_fco_periodos TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_procesos_pi') IS NOT NULL
    DROP VIEW dbo.vw_fco_procesos_pi
GO
CREATE VIEW dbo.vw_fco_procesos_pi
AS
SELECT a.compania, a.anio, a.mes, a.sucursal, ISNULL(suc.descripcion, '(Consolidado)') suc_des, 
CONVERT(tinyint,procesar) procesar, sit_periodo = 
ISNULL((SELECT MAX(sit_periodo) FROM fco_integrada_cab x
        WHERE x.compania = a.compania AND x.anio = a.anio AND x.mes = a.mes), 1)
FROM fco_procesos_pi a
LEFT JOIN vw_fco_sucursales suc ON suc.compania = a.compania AND suc.sucursal = a.sucursal
AND
(   (a.sucursal = '') 
 OR (a.sucursal IN 
     (SELECT sucursal FROM vw_fco_sucursales_cia 
      WHERE (   (clase_nomina = '--')
             OR (clase_nomina IN (SELECT clase_nomina FROM rel_usu_clase_nom
                                  WHERE usuario = SYSTEM_USER))
            ) 
      )
     )
)
GO
GRANT SELECT ON dbo.vw_fco_procesos_pi TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_residente_en_exterior') IS NOT NULL
    DROP VIEW dbo.vw_fco_residente_en_exterior
GO
CREATE VIEW dbo.vw_fco_residente_en_exterior
AS
SELECT tg.compania, tg.trabajador, res_ext = case when rtc.coleccion is null then ' ' else 'X' end
FROM trabajadores_grales tg
LEFT JOIN rel_trab_coleccion rtc ON tg.compania = rtc.compania AND tg.trabajador = rtc.trabajador
    AND rtc.coleccion = (SELECT x.dato FROM vw_fdt_parametros x
                          WHERE x.pais = 'COL' AND x.compania = tg.compania
                            AND x.parametro = 'autoliq' AND x.secuencia = 43)
GO
GRANT SELECT ON dbo.vw_fco_residente_en_exterior TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_sueldos') IS NOT NULL
    DROP VIEW dbo.vw_fco_sueldos
GO
CREATE VIEW dbo.vw_fco_sueldos
AS  
SELECT compania, trabajador, fecha, salario  
FROM sueldos  
GO
GRANT SELECT ON dbo.vw_fco_sueldos TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_tc_riesgos') IS NOT NULL
    DROP VIEW dbo.vw_fco_tc_riesgos
GO
CREATE VIEW dbo.vw_fco_tc_riesgos
AS
SELECT compania, anio, mes, sucursal, nro_aut, incapacidades, otros_riesgos, nro_radicacion, saldo_favor
FROM fco_integrada_rt05
GO
GRANT SELECT ON dbo.vw_fco_tc_riesgos TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_tc_salud') IS NOT NULL
    DROP VIEW dbo.vw_fco_tc_salud
GO
CREATE VIEW dbo.vw_fco_tc_salud
AS
SELECT x.compania, x.anio, x.mes, x.sucursal, x.cod_EPS, a.descripcion AS nombre_EPS, x.nro_aut_IGE, x.suma_aut_IGE, x.nro_aut_LMA, x.suma_aut_LMA, 
x.nro_radicacion, x.saldo_favor_aportes, x.saldo_favor_UPC
FROM fco_integrada_rt04 x
LEFT JOIN vw_fco_administradoras a ON x.compania = a.compania AND x.cod_EPS = a.codigo AND a.tipo = 'EPS'
GO
GRANT SELECT ON dbo.vw_fco_tc_salud TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_tipo_cotiz') IS NOT NULL
    DROP VIEW dbo.vw_fco_tipo_cotiz
GO
CREATE VIEW dbo.vw_fco_tipo_cotiz  
AS  
SELECT tg.compania, tg.trabajador, tipo_cotizante =   
    CASE WHEN ISNUMERIC(ISNULL(tco.dato, '1')) = 1 THEN CONVERT(tinyint, ISNULL(tco.dato, '1')) ELSE '00' END  
FROM trabajadores_grales tg  
LEFT JOIN rel_trab_agr tco ON tg.compania = tco.compania AND tg.trabajador = tco.trabajador  
    AND tco.agrupacion = ISNULL((SELECT x.dato FROM vw_fdt_parametros x  
                          WHERE x.pais = 'COL' AND x.compania = tg.compania  
                            AND x.parametro = 'autoliq' AND x.secuencia = 41), 'TIPO_COTIZ')
GO
GRANT SELECT ON dbo.vw_fco_tipo_cotiz TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_int_det_afp') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_int_det_afp
GO
CREATE PROCEDURE dbo.sp_fco_upd_int_det_afp
(
    @pch_compania  char(4),
    @psi_anio  smallint,
    @pti_mes  tinyint,
    @pvc_sucursal  varchar(10),
    @pch_trabajador  char(10),
    @pch_secuencia  char(5),
    @pch_tipo_documento  char(2),
    @pvc_nro_id  varchar(16),
    @pti_tipo_cotizante  tinyint,
    @pvc_primer_apellido  varchar(20),
    @pvc_segundo_apellido  varchar(30),
    @pvc_primer_nombre  varchar(20),
    @pvc_segundo_nombre  varchar(30),
    @pch_nov_ING  char(1),
    @pch_nov_RET  char(1),
    @pch_nov_TDE  char(1),
    @pch_nov_TAE  char(1),
    @pch_nov_TDP  char(1),
    @pch_nov_TAP  char(1),
    @pch_nov_VSP  char(1),
    @pch_nov_VTE  char(1),
    @pch_nov_VST  char(1),
    @pch_nov_SLN  char(1),
    @pch_nov_IGE  char(1),
    @pch_nov_LMA  char(1),
    @pch_nov_VAC  char(1),
    @pch_nov_AVP  char(1),
    @pch_nov_VCT  char(1),
    @pch_nov_IRP  char(2),
    @pdc_salario  decimal(9, 0),
    @pch_cod_afp  char(10),
    @pch_cod_afp_Tras  char(10),
    @pti_dias_afp  tinyint,
    @pdc_IBC_afp  decimal(9, 0),
    @pdc_tarifa_afp  decimal(6, 5),
    @pdc_aporte_afp  decimal(9, 0),
    @pdc_voluntario_AFP decimal(9, 0),
    @pdc_voluntario_AFP_cia decimal(9, 0),
    @pdc_aporte_FSP_solidaridad decimal(9, 0), 
    @pdc_aporte_FSP_subsistencia decimal(9, 0), 
    @pdc_valor_no_retenido decimal(9, 0)
)
AS
BEGIN
    UPDATE fco_integrada_det
    SET 
        tipo_documento = ISNULL(@pch_tipo_documento, ''),
        nro_id = ISNULL(@pvc_nro_id, ''),
        tipo_cotizante = ISNULL(@pti_tipo_cotizante, 1),
        primer_apellido = ISNULL(@pvc_primer_apellido, ''),
        segundo_apellido = ISNULL(@pvc_segundo_apellido, ''),
        primer_nombre = ISNULL(@pvc_primer_nombre, ''),
        segundo_nombre = ISNULL(@pvc_segundo_nombre, ''),
        nov_ING = ISNULL(@pch_nov_ING, ''),
        nov_RET = ISNULL(@pch_nov_RET, ''),
        nov_TDE = ISNULL(@pch_nov_TDE, ''),
        nov_TAE = ISNULL(@pch_nov_TAE, ''),
        nov_TDP = ISNULL(@pch_nov_TDP, ''),
        nov_TAP = ISNULL(@pch_nov_TAP, ''),
        nov_VSP = ISNULL(@pch_nov_VSP, ''),
        nov_VTE = ISNULL(@pch_nov_VTE, ''),
        nov_VST = ISNULL(@pch_nov_VST, ''),
        nov_SLN = ISNULL(@pch_nov_SLN, ''),
        nov_IGE = ISNULL(@pch_nov_IGE, ''),
        nov_LMA = ISNULL(@pch_nov_LMA, ''),
        nov_VAC = ISNULL(@pch_nov_VAC, ''),
        nov_AVP =  ISNULL(@pch_nov_AVP, ''),
        nov_VCT = ISNULL(@pch_nov_VCT, ''),
        nov_IRP = ISNULL(@pch_nov_IRP, '00'),
        cod_afp = ISNULL(@pch_cod_afp, ''),
        cod_afp_Tras = ISNULL(@pch_cod_afp_Tras, ''),
        dias_afp = ISNULL(@pti_dias_afp, 0),
        salario = ISNULL(@pdc_salario, 0),
        IBC_afp = ISNULL(@pdc_IBC_afp, 0),
        tarifa_afp = ISNULL(@pdc_tarifa_afp, 0),
        aporte_afp = ISNULL(@pdc_aporte_afp, 0),
        voluntario_AFP = ISNULL(@pdc_voluntario_AFP, 0),
        voluntario_AFP_cia = ISNULL(@pdc_voluntario_AFP_cia, 0),
        aporte_FSP = ISNULL(@pdc_aporte_FSP_solidaridad, 0),
        aporte_FSP_subsistencia = ISNULL(@pdc_aporte_FSP_subsistencia, 0), 
        valor_no_retenido = ISNULL(@pdc_valor_no_retenido, 0)
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = ISNULL(@pvc_sucursal, '')
      AND trabajador = @pch_trabajador

END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_afp TO PUBLIC
GO

IF OBJECT_ID('dbo.sp_fco_upd_int_det_arp') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_int_det_arp
GO
CREATE PROCEDURE dbo.sp_fco_upd_int_det_arp
(
    @pch_compania  char(4),
    @psi_anio  smallint,
    @pti_mes  tinyint,
    @pvc_sucursal  varchar(10),
    @pch_trabajador  char(10),
    @pch_secuencia  char(5),
    @pch_tipo_documento  char(2),
    @pvc_nro_id  varchar(16),
    @pti_tipo_cotizante  tinyint,
    @pvc_primer_apellido  varchar(20),
    @pvc_segundo_apellido  varchar(30),
    @pvc_primer_nombre  varchar(20),
    @pvc_segundo_nombre  varchar(30),
    @pch_nov_ING  char(1),
    @pch_nov_RET  char(1),
    @pch_nov_TDE  char(1),
    @pch_nov_TAE  char(1),
    @pch_nov_TDP  char(1),
    @pch_nov_TAP  char(1),
    @pch_nov_VSP  char(1),
    @pch_nov_VTE  char(1),
    @pch_nov_VST  char(1),
    @pch_nov_SLN  char(1),
    @pch_nov_IGE  char(1),
    @pch_nov_LMA  char(1),
    @pch_nov_VAC  char(1),
    @pch_nov_AVP  char(1),
    @pch_nov_VCT  char(1),
    @pch_nov_IRP  char(2),
    @pdc_salario  decimal(9, 0),
    @pti_dias_arp  tinyint,
    @pdc_IBC_arp  decimal(9, 0),
    @pdc_tarifa_arp  decimal(6, 5),
    @pdc_centro_trabajo decimal(9, 0),
    @pdc_aporte_arp  decimal(9, 0)
)
AS
BEGIN
    UPDATE fco_integrada_det
    SET 
        tipo_documento = ISNULL(@pch_tipo_documento, ''),
        nro_id = ISNULL(@pvc_nro_id, ''),
        tipo_cotizante = ISNULL(@pti_tipo_cotizante, 1),
        primer_apellido = ISNULL(@pvc_primer_apellido, ''),
        segundo_apellido = ISNULL(@pvc_segundo_apellido, ''),
        primer_nombre = ISNULL(@pvc_primer_nombre, ''),
        segundo_nombre = ISNULL(@pvc_segundo_nombre, ''),
        nov_ING = ISNULL(@pch_nov_ING, ''),
        nov_RET = ISNULL(@pch_nov_RET, ''),
        nov_TDE = ISNULL(@pch_nov_TDE, ''),
        nov_TAE = ISNULL(@pch_nov_TAE, ''),
        nov_TDP = ISNULL(@pch_nov_TDP, ''),
        nov_TAP = ISNULL(@pch_nov_TAP, ''),
        nov_VSP = ISNULL(@pch_nov_VSP, ''),
        nov_VTE = ISNULL(@pch_nov_VTE, ''),
        nov_VST = ISNULL(@pch_nov_VST, ''),
        nov_SLN = ISNULL(@pch_nov_SLN, ''),
        nov_IGE = ISNULL(@pch_nov_IGE, ''),
        nov_LMA = ISNULL(@pch_nov_LMA, ''),
        nov_VAC = ISNULL(@pch_nov_VAC, ''),
        nov_AVP =  ISNULL(@pch_nov_AVP, ''),
        nov_VCT = ISNULL(@pch_nov_VCT, ''),
        nov_IRP = ISNULL(@pch_nov_IRP, '00'),
        dias_arp = ISNULL(@pti_dias_arp, 0),
        salario = ISNULL(@pdc_salario, 0),
        IBC_arp = ISNULL(@pdc_IBC_arp, 0),
        tarifa_arp = ISNULL(@pdc_tarifa_arp, 0),
        centro_trabajo = ISNULL(@pdc_centro_trabajo, 0),
        aporte_arp = ISNULL(@pdc_aporte_arp, 0) 
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = ISNULL(@pvc_sucursal, '')
      AND trabajador = @pch_trabajador

END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_arp TO PUBLIC
GO

IF OBJECT_ID('dbo.sp_fco_upd_int_det_ccf') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_int_det_ccf
GO
CREATE PROCEDURE dbo.sp_fco_upd_int_det_ccf
(
    @pch_compania  char(4),
    @psi_anio  smallint,
    @pti_mes  tinyint,
    @pvc_sucursal  varchar(10),
    @pch_trabajador  char(10),
    @pch_secuencia  char(5),
    @pch_tipo_documento  char(2),
    @pvc_nro_id  varchar(16),
    @pti_tipo_cotizante  tinyint,
    @pvc_primer_apellido  varchar(20),
    @pvc_segundo_apellido  varchar(30),
    @pvc_primer_nombre  varchar(20),
    @pvc_segundo_nombre  varchar(30),
    @pch_nov_ING  char(1),
    @pch_nov_RET  char(1),
    @pch_nov_TDE  char(1),
    @pch_nov_TAE  char(1),
    @pch_nov_TDP  char(1),
    @pch_nov_TAP  char(1),
    @pch_nov_VSP  char(1),
    @pch_nov_VTE  char(1),
    @pch_nov_VST  char(1),
    @pch_nov_SLN  char(1),
    @pch_nov_IGE  char(1),
    @pch_nov_LMA  char(1),
    @pch_nov_VAC  char(1),
    @pch_nov_AVP  char(1),
    @pch_nov_VCT  char(1),
    @pch_nov_IRP  char(2),
    @pdc_salario  decimal(9, 0),
    @pch_cod_CCF  char(10), 
    @pti_dias_CCF tinyint,
    @pdc_IBC_CCF decimal(9 ,0), 
    @pdc_tarifa_CCF decimal(6, 5), 
    @pdc_aporte_CCF decimal(9 ,0),
    @pdc_tarifa_SENA decimal(6, 5), 
    @pdc_aporte_SENA decimal(9 ,0), 
    @pdc_tarifa_ICBF decimal(6, 5), 
    @pdc_aporte_ICBF decimal(9 ,0),
    @pdc_tarifa_ESAP decimal(6, 5), 
    @pdc_aporte_ESAP decimal(9 ,0),
    @pdc_tarifa_MEdu decimal(6, 5), 
    @pdc_aporte_MEdu decimal(9 ,0)
)
AS
BEGIN
    UPDATE fco_integrada_det
    SET 
        tipo_documento = ISNULL(@pch_tipo_documento, ''),
        nro_id = ISNULL(@pvc_nro_id, ''),
        tipo_cotizante = ISNULL(@pti_tipo_cotizante, 1),
        primer_apellido = ISNULL(@pvc_primer_apellido, ''),
        segundo_apellido = ISNULL(@pvc_segundo_apellido, ''),
        primer_nombre = ISNULL(@pvc_primer_nombre, ''),
        segundo_nombre = ISNULL(@pvc_segundo_nombre, ''),
        nov_ING = ISNULL(@pch_nov_ING, ''),
        nov_RET = ISNULL(@pch_nov_RET, ''),
        nov_TDE = ISNULL(@pch_nov_TDE, ''),
        nov_TAE = ISNULL(@pch_nov_TAE, ''),
        nov_TDP = ISNULL(@pch_nov_TDP, ''),
        nov_TAP = ISNULL(@pch_nov_TAP, ''),
        nov_VSP = ISNULL(@pch_nov_VSP, ''),
        nov_VTE = ISNULL(@pch_nov_VTE, ''),
        nov_VST = ISNULL(@pch_nov_VST, ''),
        nov_SLN = ISNULL(@pch_nov_SLN, ''),
        nov_IGE = ISNULL(@pch_nov_IGE, ''),
        nov_LMA = ISNULL(@pch_nov_LMA, ''),
        nov_VAC = ISNULL(@pch_nov_VAC, ''),
        nov_AVP =  ISNULL(@pch_nov_AVP, ''),
        nov_VCT = ISNULL(@pch_nov_VCT, ''),
        nov_IRP = ISNULL(@pch_nov_IRP, '00'),
        salario = ISNULL(@pdc_salario, 0),
        dias_CCF = ISNULL(@pti_dias_CCF, 0), 
        IBC_CCF = ISNULL(@pdc_IBC_CCF, 0),
        tarifa_CCF = ISNULL(@pdc_tarifa_CCF, 0),
        aporte_CCF = ISNULL(@pdc_aporte_CCF, 0),
        tarifa_SENA = ISNULL(@pdc_tarifa_SENA, 0),
        aporte_SENA = ISNULL(@pdc_aporte_SENA, 0),
        tarifa_ICBF = ISNULL(@pdc_tarifa_ICBF, 0),
        aporte_ICBF = ISNULL(@pdc_aporte_ICBF, 0),
        tarifa_ESAP = ISNULL(@pdc_tarifa_ESAP, 0),
        aporte_ESAP = ISNULL(@pdc_aporte_ESAP, 0),
        tarifa_MEdu = ISNULL(@pdc_tarifa_MEdu, 0),
        aporte_MEdu = ISNULL(@pdc_aporte_MEdu, 0),
        cod_CCF = ISNULL(@pch_cod_CCF, '')
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = ISNULL(@pvc_sucursal, '')
      AND trabajador = @pch_trabajador

END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_ccf TO PUBLIC
GO

IF OBJECT_ID('dbo.sp_fco_upd_int_det_eps') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_int_det_eps
GO
CREATE PROCEDURE dbo.sp_fco_upd_int_det_eps
(
    @pch_compania  char(4),
    @psi_anio  smallint,
    @pti_mes  tinyint,
    @pvc_sucursal  varchar(10),
    @pch_trabajador  char(10),
    @pch_secuencia  char(5),
    @pch_tipo_documento  char(2),
    @pvc_nro_id  varchar(16),
    @pti_tipo_cotizante  tinyint,
    @pvc_primer_apellido  varchar(20),
    @pvc_segundo_apellido  varchar(30),
    @pvc_primer_nombre  varchar(20),
    @pvc_segundo_nombre  varchar(30),
    @pch_nov_ING  char(1),
    @pch_nov_RET  char(1),
    @pch_nov_TDE  char(1),
    @pch_nov_TAE  char(1),
    @pch_nov_TDP  char(1),
    @pch_nov_TAP  char(1),
    @pch_nov_VSP  char(1),
    @pch_nov_VTE  char(1),
    @pch_nov_VST  char(1),
    @pch_nov_SLN  char(1),
    @pch_nov_IGE  char(1),
    @pch_nov_LMA  char(1),
    @pch_nov_VAC  char(1),
    @pch_nov_AVP  char(1),
    @pch_nov_VCT  char(1),
    @pch_nov_IRP  char(2),
    @pdc_salario  decimal(9, 0),
    @pch_cod_EPS  char(10),
    @pch_cod_EPS_Tras  char(10),
    @pti_dias_EPS  tinyint,
    @pdc_IBC_EPS  decimal(9, 0),
    @pdc_tarifa_EPS  decimal(6, 5),
    @pdc_aporte_EPS  decimal(9, 0),
    @pdc_UPC_adicional  decimal(9, 0),
    @pvc_nro_aut_IGE  varchar(15),
    @pdc_vlr_aut_IGE  decimal(9, 0),
    @pvc_nro_aut_LMA  varchar(15),
    @pdc_vlr_aut_LMA  decimal(9, 0)
)
AS
BEGIN
    UPDATE fco_integrada_det
    SET 
        tipo_documento = ISNULL(@pch_tipo_documento, ''),
        nro_id = ISNULL(@pvc_nro_id, ''),
        tipo_cotizante = ISNULL(@pti_tipo_cotizante, 1),
        primer_apellido = ISNULL(@pvc_primer_apellido, ''),
        segundo_apellido = ISNULL(@pvc_segundo_apellido, ''),
        primer_nombre = ISNULL(@pvc_primer_nombre, ''),
        segundo_nombre = ISNULL(@pvc_segundo_nombre, ''),
        nov_ING = ISNULL(@pch_nov_ING, ''),
        nov_RET = ISNULL(@pch_nov_RET, ''),
        nov_TDE = ISNULL(@pch_nov_TDE, ''),
        nov_TAE = ISNULL(@pch_nov_TAE, ''),
        nov_TDP = ISNULL(@pch_nov_TDP, ''),
        nov_TAP = ISNULL(@pch_nov_TAP, ''),
        nov_VSP = ISNULL(@pch_nov_VSP, ''),
        nov_VTE = ISNULL(@pch_nov_VTE, ''),
        nov_VST = ISNULL(@pch_nov_VST, ''),
        nov_SLN = ISNULL(@pch_nov_SLN, ''),
        nov_IGE = ISNULL(@pch_nov_IGE, ''),
        nov_LMA = ISNULL(@pch_nov_LMA, ''),
        nov_VAC = ISNULL(@pch_nov_VAC, ''),
        nov_AVP =  ISNULL(@pch_nov_AVP, ''),
        nov_VCT = ISNULL(@pch_nov_VCT, ''),
        nov_IRP = ISNULL(@pch_nov_IRP, '00'),
        cod_EPS = ISNULL(@pch_cod_EPS, ''),
        cod_EPS_Tras = ISNULL(@pch_cod_EPS_Tras, ''),
        dias_EPS = ISNULL(@pti_dias_EPS, 0),
        salario = ISNULL(@pdc_salario, 0),
        IBC_EPS = ISNULL(@pdc_IBC_EPS, 0),
        tarifa_EPS = ISNULL(@pdc_tarifa_EPS, 0),
        aporte_EPS = ISNULL(@pdc_aporte_EPS, 0),
        UPC_adicional = ISNULL(@pdc_UPC_adicional, 0),
        nro_aut_IGE = ISNULL(@pvc_nro_aut_IGE, ''),
        vlr_aut_IGE = ISNULL(@pdc_vlr_aut_IGE, 0),
        nro_aut_LMA = ISNULL(@pvc_nro_aut_LMA, ''),
        vlr_aut_LMA = ISNULL(@pdc_vlr_aut_LMA, 0)
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = ISNULL(@pvc_sucursal, '')
      AND trabajador = @pch_trabajador

END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_eps TO PUBLIC
GO

IF OBJECT_ID('dbo.sp_fco_upd_procesos_pi') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_procesos_pi 
GO
CREATE PROCEDURE dbo.sp_fco_upd_procesos_pi
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_sucursal char(10),
    @pbi_procesar bit
)
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Cambio de Procesos de Planilla Integrada
-- Autor: Juan Carlos Leguizamon
-- Fecha: Junio 2005
-- Revisiones:
/*************************************************************************/
BEGIN
    IF NOT EXISTS(SELECT 1 FROM fco_procesos_pi
              WHERE compania = @pch_compania AND anio = @psi_anio
                AND mes = @pti_mes AND sucursal = @pch_sucursal)
    BEGIN
        RAISERROR ('El registro a modificar no existe', 16, 1)
        RETURN
    END

    UPDATE fco_procesos_pi
    SET procesar = @pbi_procesar
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = @pch_sucursal
END
GO
GRANT EXECUTE ON dbo.sp_fco_upd_procesos_pi TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_sit_periodo') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_sit_periodo
GO
CREATE PROCEDURE dbo.sp_fco_upd_sit_periodo
(
    @pch_compania char(4),
    @pch_periodo char(7),
    @pch_operacion char(7)
)
AS
BEGIN    
    UPDATE fco_integrada_cab
    SET sit_periodo = CASE WHEN Upper(@pch_operacion) = 'FCO3060' THEN 2 ELSE 1 END
    WHERE compania = @pch_compania
      AND anio = Left(@pch_periodo, 4)
      AND mes = Right(@pch_periodo, 2)
END
GO
GRANT EXECUTE ON dbo.sp_fco_upd_sit_periodo TO PUBLIC
GO

IF OBJECT_ID('dbo.sp_fco_upd_tc_riesgos') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_tc_riesgos
GO
CREATE PROCEDURE dbo.sp_fco_upd_tc_riesgos
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pvc_sucursal varchar(10),
    @pvc_nro_aut varchar(15),
    @pdc_vlr_aut decimal(9),
    @pvc_vlr_otros decimal(9),
    @pvc_nro_radicacion varchar(10),
    @pdc_saldo_favor decimal(9)
)
AS
BEGIN
    UPDATE fco_integrada_rt05
    SET nro_aut = IsNull(@pvc_nro_aut, ''),
        incapacidades = IsNull(@pdc_vlr_aut, 0),
        otros_riesgos = IsNull(@pvc_vlr_otros, 0),
        nro_radicacion = IsNull(@pvc_nro_radicacion, ''),
        saldo_favor = IsNull(@pdc_saldo_favor, 0)
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = IsNull(@pvc_sucursal, '')
END
GO
GRANT EXECUTE ON dbo.sp_fco_upd_tc_riesgos TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_tc_salud') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_tc_salud
GO
CREATE PROCEDURE dbo.sp_fco_upd_tc_salud
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pvc_sucursal varchar(10),
    @pch_cod_EPS char(10),
    @pvc_nro_aut_IGE varchar(15),
    @pdc_vlr_aut_IGE decimal(9),
    @pvc_nro_aut_LMA varchar(15),
    @pdc_vlr_aut_LMA decimal(9),
    @pvc_nro_radicacion varchar(10),
    @pdc_sf_aportes decimal(9),
    @pdc_sf_UPC decimal(9)
)
AS
BEGIN
    UPDATE fco_integrada_rt04
    SET nro_aut_IGE = IsNull(@pvc_nro_aut_IGE, ''),
        suma_aut_IGE = IsNull(@pdc_vlr_aut_IGE, 0),
        nro_aut_LMA = IsNull(@pvc_nro_aut_LMA, ''),
        suma_aut_LMA = IsNull(@pdc_vlr_aut_LMA, 0), 
        nro_radicacion = IsNull(@pvc_nro_radicacion, ''),
        saldo_favor_aportes = IsNull(@pdc_sf_aportes, 0),
        saldo_favor_UPC = IsNull(@pdc_sf_UPC, 0)
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = IsNull(@pvc_sucursal, '')
      AND cod_EPS =@pch_cod_EPS
END
GO
GRANT EXECUTE ON dbo.sp_fco_upd_tc_salud TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_del_int_det') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_del_int_det
GO
CREATE PROCEDURE dbo.sp_fco_del_int_det
(
    @pch_compania   char(4),
    @psi_anio       smallint,
    @pti_mes        tinyint,
    @pvc_sucursal   varchar(10),
    @pch_trabajador char(10)
)
AS
BEGIN
    DECLARE @vsi_sec smallint

    select @vsi_sec = convert(smallint, secuencia)
    from fco_integrada_det
    where compania = @pch_compania
    and anio = @psi_anio
    and mes = @pti_mes
    and (sucursal = @pvc_sucursal or @pvc_sucursal is null or @pvc_sucursal = '')
    and trabajador = @pch_trabajador

    delete fco_integrada_det
    where compania = @pch_compania
    and anio = @psi_anio
    and mes = @pti_mes
    and (sucursal = @pvc_sucursal or @pvc_sucursal is null or @pvc_sucursal = '')
    and trabajador = @pch_trabajador
    
    update fco_integrada_det
    set secuencia = right('00000' + rtrim(convert(smallint, secuencia) - 1), 5)
    where compania = @pch_compania
    and anio = @psi_anio
    and mes = @pti_mes
    and (sucursal = @pvc_sucursal or @pvc_sucursal is null or @pvc_sucursal = '')
    and convert(smallint, secuencia) > @vsi_sec
        
END
GO
GRANT EXECUTE ON dbo.sp_fco_del_int_det TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_planilla_integrada') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_planilla_integrada
GO
CREATE PROCEDURE dbo.sp_fco_planilla_integrada    
(    
    @pch_compania char(4),    
    @psi_anio smallint,    
    @pti_mes tinyint,    
    @pch_sucursal char(10),  -- Nunca llega NULL    
    @pbi_regenerar bit    
)    
AS    
/*************************************************************************/    
-- Modulo Fiscal Colombiano 2.0 ADAM V3    
-- Descripcion: Crea tabla base para autoliquidacion de aportes    
--              y genera archivo I Información del Formulario Integrado    
--              según formato de la Resolución 001303 de 2005 (Mayo 11).    
--             Si la tabla está llena se respetan los datos a menos que     
--             se indique lo contrario en el parámetro regenerar.    
-- Autor: Juan Carlos Leguizamon    
-- Fecha: Junio 2005    
-- Revisiones:    
-- Abr.16/06 - Ajustes según Resolución 0634 de Mar-06-06  
-- Jun.02/06 - Ajustes según Resolución 1317 de Abr-25-06   
-- Julio /06 - Ajustes varios según pruebas con operador
-- Agosto 8/06. Revisión nombre sucursal (se usaba fco_sucursales en lugar de vw_fco_sucursales)
-- Agosto 28/06. Ajuste para obtener valor correcto de incapacidades por riesgos profesionales
/*************************************************************************/    
BEGIN    
    SET NOCOUNT ON    
    
    -- Declaración de Variables    
    DECLARE     
        @vch_periodo char(6),    
        @vch_agt_TDO char(10),     -- Tipo Documento    
        @vch_agt_AFP char(10),     -- Fondo de Pensiones    
        @vch_agt_EPS char(10),     -- EPS    
        @vch_var_SaT char(2),      -- Variable Salud Trabajador    
        @vch_var_SaE char(2),      -- Variable Salud Empleador    
        @vch_var_PeT char(2),      -- Variable Pensión Trabajador    
        @vch_var_PeE char(2),      -- Variable Pensión Empleador    
        @vch_var_CCF char(2),      -- Variable Aporte CCF    
        @vch_var_SENA char(2),     -- Variable Aporte SENA    
        @vch_var_ICBF char(2),     -- Variable Aporte ICBF    
        @vch_var_ESAP char(2),     -- Variable Aporte ESAP    
        @vch_var_MEdu char(2),     -- Variable Aporte MinEducación    
        @vdc_tar_EPS decimal(6,5), -- Tarifa Salud    
        @vdc_tar_AFP decimal(6,5), -- Tarifa Pensión    
        @vdc_tar_CCF decimal(6,5), -- Tarifa Cajas de Compensación    
        @vdc_tar_SENA decimal(6,5),-- Tarifa SENA    
        @vdc_tar_ICBF decimal(6,5),-- Tarifa ICBF    
        @vdc_tar_ESAP decimal(6,5),-- Tarifa ESAP    
        @vdc_tar_MEdu decimal(6,5),-- Tarifa MinEducación    
        @vch_agr_VST char(3),      -- /* Variación Transitoria del Salario (Ingresos o Aporte Sin Sueldo Basico)*/            
        @vch_agr_SLN char(3),      -- /* Suspensión temporal del contrato de trabajo y Licencias No Remuneradas */    
        @vch_agr_IGE char(3),      -- /* Incapacidad General */     
        @vch_agr_LMA char(3),      -- /* Licencia Materna */     
        @vch_agr_VAC char(3),      -- /* Vacaciones */     
        @vch_agr_AVP_T char(3),    -- /* Aporte Voluntario (al Fondo de Pensiones) - Trabajador */     
        @vch_agr_AVP_E char(3),    -- /* Aporte Voluntario (al Fondo de Pensiones) - Empleador */     
        @vch_agr_IRP char(3),      -- /* Incapacidad por Accidente de Trabajo */     
        @vch_agr_AFP_IBC char(3),  -- /* IBC Pensión */     
        @vch_agr_AFP_Cot char(3),  -- /* Cotización a Pensión */    
        @vch_agr_FSP char(3),      -- /* Fondo de Solidaridad Pensional */    
        @vch_agr_VNR char(3),      -- /* Valor No Retenido por Aportes Voluntarios */    
        @vch_agr_EPS_IBC char(3),  -- /* IBC Salud */     
        @vch_agr_EPS_Cot char(3),  -- /* Cotización a Salud */    
        @vch_agr_UPC char(3),      -- /* UPC Adicional */    
        @vch_agr_ARP_IBC char(3),  -- /* IBC Riesgos Profesionales */     
        @vch_agr_ARP_Cot char(3),  -- /* Cotización a Riesgos Profesionales */    
        @vch_agr_CCF_IBC char(3),  -- /* IBC Cajas de Compensación */     
        @vti_CCF_tipo tinyint,     -- /* Tipo de Dato Cotizacion CCF */    
        @vch_CCF_Cot char(5),      -- /* Cotización a la Caja de Compensación Familiar */    
        @vti_SENA_tipo tinyint,    -- /* Tipo de Dato Cotizacion SENA */    
        @vch_SENA_Cot char(5),     -- /* Cotización al SENA */            
        @vti_ICBF_tipo tinyint,    -- /* Tipo de Dato Cotizacion ICBF */    
        @vch_ICBF_Cot char(5),     -- /* Cotización al ICBF */    
        @vti_ESAP_tipo tinyint,    -- /* Tipo de Dato Cotizacion ESAP */    
        @vch_ESAP_Cot char(5),     -- /* Cotización al ESAP */    
        @vti_MEdu_tipo tinyint,    -- /* Tipo de Dato Cotizacion MinEducación */    
        @vch_Medu_Cot char(5),     -- /* Cotización al MinEducación */    
        @vsi_empleados smallint,   -- /* Total de Empleados */    
        @vdc_nomina decimal(12),   -- /* Total Nómina */    
        @vti_orden tinyint,        -- /* Orden de los Trabajadores en el medio */    
        @vsi_random smallint,      -- /* Valor randómico para manejo de procesos simultáneos */    
        @vsi_handicap smallint,    -- /* Por si se suceden procesos simultáneos */    
        @vsi_secuencia smallint,   -- /* Se utiliza en la parte "fantasmal" */    
        @vti_tipo_IBC_CCF tinyint, -- /* Tipo de dato que almacena el IBC de la CCF, concepto o agrupación */   
        @vsi_IBC_CCF smallint,     -- /* Concepto que guarda el IBC para la CCF */  
        @vti_FSP_Sol_tipo tinyint, -- /* Tipo de parametro para la subcuenta de solidaridad del FSP */ --JCL.Jul.18/06--
        @vch_FSP_Sol char(5),      -- /* Concepto para la subcuenta de solidaridad del FSP */  --JCL.Jun.02/06--  
        @vti_FSP_Sub_tipo tinyint, -- /* Tipo de parametro para la subcuenta de subsistencia del FSP */ --JCL.Jul.18/06--
        @vch_FSP_Sub char(5)       -- /* Concepto para la subcuenta de subsistencia del FSP */  --JCL.Jun.02/06--  

    -- Llenado de variables generales    
    SET @vch_periodo = RTRIM(@psi_anio) + RIGHT('00' + RTRIM(@pti_mes),2)
    
    -- Recuperación de Parámetros
    SELECT @vch_agr_AFP_IBC = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 02
    SELECT @vch_agr_AFP_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 03    
    SELECT @vch_agr_FSP = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 04    
    SELECT @vch_agr_EPS_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 05    
    SELECT @vch_agr_VAC = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 08    
    SELECT @vch_agr_ARP_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 09    
    SELECT @vch_agr_LMA = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 10    
    SELECT @vch_agr_IGE = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 11    
    SELECT @vch_agr_IRP = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 12    
    SELECT @vch_agr_AVP_T = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 13    
    SELECT @vch_agr_AVP_E = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 14    
    SELECT @vch_agr_UPC = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 15    
    SELECT @vch_agr_EPS_IBC = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 16    
    SELECT @vch_agr_ARP_IBC = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 17    
    SELECT @vch_agr_SLN = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 18        
    SELECT @vch_agr_VNR = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 19    
    SELECT @vch_agr_VST = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 20      
    SELECT @vch_agt_EPS = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 21    
    SELECT @vch_agt_AFP = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 22          
    SELECT @vch_var_SaT = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 25    
    SELECT @vch_var_SaE = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 26    
    SELECT @vch_var_PeT = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 27    
    SELECT @vch_var_PeE = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 28    
    SELECT @vch_agt_TDO = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 29      
    SELECT @vti_orden = CASE WHEN ISNUMERIC(dato) = 1 THEN dato ELSE 2 END FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 37    
    SET @vti_orden = ISNULL(@vti_orden, 2)    
  
    SELECT @vti_FSP_Sol_tipo = tipo, @vch_FSP_Sol = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 45 --JCL.Jul.18/06--
    SELECT @vti_FSP_Sub_tipo = tipo, @vch_FSP_Sub = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 46 --JCL.Jul.18/06--
  
    SELECT @vti_CCF_tipo = tipo, @vch_CCF_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 2    
    SELECT @vti_SENA_tipo = tipo, @vch_SENA_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 3    
    SELECT @vti_ICBF_tipo= tipo, @vch_ICBF_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 4    
    SELECT @vti_tipo_IBC_CCF = tipo FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 06    
    IF ISNULL(@vti_tipo_IBC_CCF, 2) <> 0  
        SELECT @vch_agr_CCF_IBC = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 06    
    ELSE  
        SELECT @vsi_IBC_CCF = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 06    
    SELECT @vti_ESAP_tipo = tipo, @vch_ESAP_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 7    
    SELECT @vti_MEdu_tipo = tipo, @vch_MEdu_Cot = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 8    
    SELECT @vch_var_CCF = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 9    
    SELECT @vch_var_SENA = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 10    
    SELECT @vch_var_ICBF = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 11    
    SELECT @vch_var_ESAP = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 12    
    SELECT @vch_var_MEdu = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 13        
          
    -- Recuperación de Tarifas o Porcentajes    
    SET @vdc_tar_EPS = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_SaT, 0) + dbo.fn_fco_var_nom(@pch_compania, @vch_var_SaE, 0), 0.12)   
    SET @vdc_tar_AFP = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_PeT, 0) + dbo.fn_fco_var_nom(@pch_compania, @vch_var_PeE, 0), 0.155)    
    SET @vdc_tar_CCF = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_CCF, 0), 0.04)    
    SET @vdc_tar_SENA = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_SENA, 0), 0.02)    
    SET @vdc_tar_ICBF = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_ICBF, 0), 0.03)    
    SET @vdc_tar_ESAP = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_ESAP, 0), 0)    
    SET @vdc_tar_MEdu = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_MEdu, 0), 0)    
    
    /* Borrar datos de procesos anteriores */    
    DELETE fco_integrada_rt04  
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
    DELETE fco_integrada_rt05  
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  

    -- Proceso Principal        
    IF @pbi_regenerar = 1 OR NOT EXISTS(SELECT 1 FROM fco_integrada_cab    
                                        WHERE compania = @pch_compania    
                                          AND anio = @psi_anio    
                                          AND mes = @pti_mes    
                                          AND (sucursal = @pch_sucursal OR @pch_sucursal = ''))    
    BEGIN /*1*/    
  
        DELETE fco_integrada_det    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
  
        DELETE fco_integrada_cab    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
      
        /* Registro Tipo 1. DATOS GENERALES DEL APORTANTE */    
        INSERT INTO fco_integrada_cab    
        (compania, anio, mes, sucursal, secuencia, razon_social, tipo_documento, nro_id, dv, forma_presentacion,     
         nombre_sucursal, nueva_ARP, periodo, periodo_salud, nro_radicacion, fecha_pago, nro_empleados, valor_nomina, operador)    
        SELECT     
            @pch_compania, @psi_anio, @pti_mes, @pch_sucursal,    1,
/*
            ISNULL((SELECT MAX(secuencia) + 1 FROM fco_integrada_cab x     
                    WHERE x.compania = @pch_compania AND x.anio = @psi_anio AND x.mes = @pti_mes), 1),    */
            cias.nombre_cia,     
            ISNULL(LEFT(cda.tipo_id,2), 'NI'),     
            ISNULL(    
                CASE WHEN LEN(ISNULL(dbo.fn_solonum(cias.registro_fiscal), '')) = 0     
                    THEN ''    
                    ELSE LEFT(LEFT(dbo.fn_solonum(cias.registro_fiscal), LEN(dbo.fn_solonum(cias.registro_fiscal))-1), 16)    
                END, ''),    
            dv = ISNULL(RIGHT(dbo.fn_solonum(cias.registro_fiscal), 1), ''),    
            fp = CASE WHEN LTRIM(RTRIM(@pch_sucursal)) = '' THEN 'C' ELSE 'S' END,    
            ns = ISNULL(suc.descripcion, ''),    
            narp = ISNULL(cda.cod_ARP, ''),  
            RTRIM(@psi_anio) + RIGHT('00' + RTRIM(@pti_mes), 2),    
            CASE WHEN @pti_mes = 12     
                 THEN RTRIM(@psi_anio + 1) + '01'    
                 ELSE RTRIM(@psi_anio) + RIGHT('00' + RTRIM(@pti_mes + 1), 2)    
            END,    
            nr = '',    
            fecha = GETDATE(),    
            ne = 0, -- Todavia no se sabe    
            vn = 0, -- Todavia no se sabe    
            operador = '00' -- Asignado por el Sistema    
        FROM companias cias    
        LEFT JOIN fco_cias_datos_adi cda ON cda.compania = cias.compania    
        LEFT JOIN vw_fco_sucursales suc ON suc.compania  = cias.compania AND suc.sucursal = @pch_sucursal  
        WHERE cias.compania = @pch_compania    
    
        /* Registro Tipo 2: LIQUIDACION DETALLADA DE APORTES */    
        /* Seleccion de Trabajadores */    
        SELECT @vsi_random = FLOOR(RAND( (DATEPART(mm, GETDATE()) * 100000 )    
           + (DATEPART(ss, GETDATE()) * 1000 )    
           + DATEPART(ms, GETDATE()) ) * 32567) + 1    
  
    
        DELETE fco_integrada_temp WHERE random = @vsi_random    
    
        IF @vti_orden = 1    
        BEGIN  
            SELECT tg.compania, tg.trabajador, ISNULL(SUC.dato, '') sucursal, tg.relacion_laboral, tg.fecha_ingreso, tg.fecha_baja,     
                   isnull(t.clave_unica, '0') clave_unica, t.nombre, t.registro_fiscal, IDENTITY(smallint, 1, 1) secuencia  
            INTO #fco_integrada_temp1  
            FROM trabajadores_grales tg WITH (NOLOCK)  
            INNER JOIN trabajadores t ON tg.trabajador = t.trabajador    
            INNER JOIN vw_fco_div_trabajador SUC ON SUC.compania = tg.compania AND SUC.trabajador = tg.trabajador    
            WHERE tg.compania = @pch_compania    
              AND CONVERT(char(6), tg.fecha_ingreso, 112) <= @vch_periodo    
              AND (tg.fecha_baja IS NULL OR CONVERT(char(6), tg.fecha_baja, 112) >= @vch_periodo)    
              AND (SUC.dato = @pch_sucursal OR @pch_sucursal = '')
              AND EXISTS 
                (SELECT 1 FROM vw_fco_tipo_cotiz tcot 
                 WHERE tcot.compania = tg.compania 
                   AND tcot.trabajador = tg.trabajador 
                   AND tcot.tipo_cotizante NOT IN ('00','99'))
            ORDER BY CONVERT(decimal, dbo.fn_solonum(isnull(t.clave_unica, '0')))    
  
            INSERT INTO fco_integrada_temp     
            (random, compania, trabajador, sucursal, relacion_laboral, fecha_ingreso, fecha_baja, clave_unica,    
             nombre, registro_fiscal, secuencia)  
            SELECT @vsi_random, * FROM #fco_integrada_temp1  
  
            DROP TABLE #fco_integrada_temp1  
        END  
  
        IF @vti_orden = 3    
        BEGIN  
            SELECT tg.compania, tg.trabajador, ISNULL(SUC.dato, '') sucursal, tg.relacion_laboral, tg.fecha_ingreso, tg.fecha_baja,     
                   isnull(t.clave_unica, '0') clave_unica, t.nombre, t.registro_fiscal, IDENTITY(smallint, 1, 1) secuencia  
            INTO #fco_integrada_temp2  
            FROM trabajadores_grales tg WITH (NOLOCK)
            INNER JOIN trabajadores t ON tg.trabajador = t.trabajador    
            INNER JOIN vw_fco_div_trabajador SUC ON SUC.compania = tg.compania AND SUC.trabajador = tg.trabajador    
            WHERE tg.compania = @pch_compania    
              AND CONVERT(char(6), tg.fecha_ingreso, 112) <= @vch_periodo    
              AND (tg.fecha_baja IS NULL OR CONVERT(char(6), tg.fecha_baja, 112) >= @vch_periodo)    
              AND (SUC.dato = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS 
                (SELECT 1 FROM vw_fco_tipo_cotiz tcot 
                 WHERE tcot.compania = tg.compania 
                   AND tcot.trabajador = tg.trabajador 
                   AND tcot.tipo_cotizante NOT IN ('00','99'))
            ORDER BY isnull(t.clave_unica, '0')
  
            INSERT INTO fco_integrada_temp     
            (random, compania, trabajador, sucursal, relacion_laboral, fecha_ingreso, fecha_baja, clave_unica,    
             nombre, registro_fiscal, secuencia)  
            SELECT @vsi_random, * FROM #fco_integrada_temp2  
      
            DROP TABLE #fco_integrada_temp2  
        END  
  
        IF @vti_orden NOT IN (1,3) -- Por Nombre    
        BEGIN  
            SELECT tg.compania, tg.trabajador, ISNULL(SUC.dato, '') sucursal, tg.relacion_laboral, tg.fecha_ingreso, tg.fecha_baja,     
             isnull(t.clave_unica, '0') clave_unica, t.nombre, t.registro_fiscal, IDENTITY(smallint, 1, 1) secuencia  
            INTO #fco_integrada_temp3  
            FROM trabajadores_grales tg WITH (NOLOCK)   
            INNER JOIN trabajadores t ON tg.trabajador = t.trabajador    
            INNER JOIN vw_fco_div_trabajador SUC ON SUC.compania = tg.compania AND SUC.trabajador = tg.trabajador    
            WHERE tg.compania = @pch_compania    
              AND CONVERT(char(6), tg.fecha_ingreso, 112) <= @vch_periodo    
              AND (tg.fecha_baja IS NULL OR CONVERT(char(6), tg.fecha_baja, 112) >= @vch_periodo)    
              AND (SUC.dato = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS 
                (SELECT 1 FROM vw_fco_tipo_cotiz tcot 
                 WHERE tcot.compania = tg.compania 
                   AND tcot.trabajador = tg.trabajador 
                   AND tcot.tipo_cotizante NOT IN ('00','99'))
            ORDER BY t.nombre    
    
            INSERT INTO fco_integrada_temp  
            (random, compania, trabajador, sucursal, relacion_laboral, fecha_ingreso, fecha_baja, clave_unica,    
             nombre, registro_fiscal, secuencia)  
            SELECT @vsi_random, * FROM #fco_integrada_temp3  
      
            DROP TABLE #fco_integrada_temp3  
        END  
  
        SELECT @vsi_handicap = MIN(secuencia) FROM fco_integrada_temp WHERE random = @vsi_random            
        
        /* Datos Basicos por Trabajador */    
        INSERT INTO fco_integrada_det    
        (compania, anio, mes, sucursal, trabajador, secuencia, tipo_documento, nro_id, digito_chequeo, tipo_cotizante,     
         subtipo_cotizante, extranjero_no_pension, residente_en_exterior, departamento, municipio,  
         primer_apellido, segundo_apellido, primer_nombre, segundo_nombre, nov_ING, nov_RET, nov_TDE, nov_TAE, nov_TDP,     
         nov_TAP, nov_VSP, nov_VTE, nov_VST, nov_SLN, nov_IGE, nov_LMA, nov_VAC, nov_AVP, nov_VCT, nov_IRP, cod_AFP,     
         cod_AFP_Tras, cod_EPS, cod_EPS_Tras, cod_CCF, dias_AFP, dias_EPS, dias_ARP, dias_CCF, salario, integral, IBC_AFP, IBC_EPS, IBC_ARP,    
         IBC_CCF, tarifa_AFP, aporte_AFP, voluntario_AFP, voluntario_AFP_cia,     
         aporte_FSP, aporte_FSP_subsistencia, valor_no_retenido, tarifa_EPS, aporte_EPS, UPC_adicional, nro_aut_IGE, vlr_aut_IGE, nro_aut_LMA,     
         vlr_aut_LMA, tarifa_ARP, centro_trabajo, aporte_ARP, tarifa_CCF, aporte_CCF, tarifa_SENA, aporte_SENA,     
         tarifa_ICBF, aporte_ICBF, tarifa_ESAP, aporte_ESAP, tarifa_MEdu, aporte_MEdu, origen)    
        SELECT     
            @pch_compania, @psi_anio, @pti_mes, tg.sucursal, tg.trabajador, RIGHT('00000' + RTRIM(tg.secuencia - @vsi_handicap + 1), 5),     
            td = LEFT(ISNULL(td.dato, 'CC'), 2),    
            CASE WHEN LEFT(ISNULL(td.dato, 'CC'), 2) = 'NI'     
                 THEN CASE WHEN LEN(LTRIM(RTRIM(tg.registro_fiscal))) > 1    
                           THEN LEFT(LEFT(LTRIM(RTRIM(tg.registro_fiscal)), LEN(LTRIM(RTRIM(tg.registro_fiscal))) - 1), 16)    
                           ELSE ''    
                 END    
                 ELSE LEFT(LTRIM(IsNull(tg.clave_unica, '0')), 16)    
            END,    
            CASE WHEN LEFT(ISNULL(td.dato, 'CC'), 2) = 'NI'     
                 THEN RIGHT(RTRIM(tg.registro_fiscal), 1)    
                 ELSE '0'    
            END,    
            tcot.tipo_cotizante,  
            subtipo_cotizante = dbo.fn_fco_subtipo_cotizante(tg.compania, tg.trabajador),  
            extranjero_no_pension = enp.extranjero,  
            residente_en_exterior = ree.res_ext,  
            ccf.departamento, ccf.municipio,  
            LEFT(dbo.fn_ape1(tg.nombre), 20), LEFT(dbo.fn_ape2(tg.nombre), 30),    
            LEFT(dbo.fn_nom1(tg.nombre), 20), LEFT(dbo.fn_nom2(tg.nombre), 30),    
            ING = CASE WHEN CONVERT(char(6), tg.fecha_ingreso, 112) = @vch_periodo THEN 'X' ELSE '' END,    
            RET = CASE WHEN CONVERT(char(6), tg.fecha_baja, 112)    = @vch_periodo THEN 'X' ELSE '' END,    
            TDE = '', TAE = '', TDP = '', TAP = '', VSP = '', VTE = '', VST = '', SLN = '', IGE = '', LMA = '', VAC = '',    
            AVP = '', VCT = '', IRP = '00',     
            cod_AFP = ISNULL(AFP.dato, ''), cod_AFP_Tras = '',    
            cod_EPS = ISNULL(EPS.dato, ''), cod_EPS_Tras = '',    
            cod_CCF = ISNULL(ccf.ccf, ''),     
            0, 0, 0, 0, salario = dbo.fn_fco_salario(tg.compania, tg.trabajador, @vch_periodo),   
            dbo.fn_fco_salario_integral(tg.compania, tg.trabajador),  
            0, 0, 0, 0,     
            @vdc_tar_AFP, aporte_AFP=0, voluntario_AFP=0, voluntario_AFP_cia=0, aporte_FSP=0,   
            aporte_FSP_subsistencia=0, valor_no_retenido=0, @vdc_tar_EPS, 0, 0, '', 0, '', 0, 0, 0, 0,     
            @vdc_tar_CCF, 0, @vdc_tar_SENA, 0, @vdc_tar_ICBF, 0, @vdc_tar_ESAP, 0, @vdc_tar_MEdu, 0, 1    
        FROM fco_integrada_temp tg    
        INNER JOIN vw_fco_tipo_cotiz tcot ON tcot.compania = tg.compania AND tcot.trabajador = tg.trabajador  
        INNER JOIN vw_fco_extranjero_no_pension enp ON enp.compania = tg.compania AND enp.trabajador = tg.trabajador  
        INNER JOIN vw_fco_residente_en_exterior ree ON ree.compania = tg.compania AND ree.trabajador = tg.trabajador  
        INNER JOIN vw_fco_ccf_trabajador ccf ON ccf.compania = tg.compania AND ccf.trabajador = tg.trabajador    
        LEFT JOIN rel_trab_agr td ON td.agrupacion = @vch_agt_TDO AND td.compania = tg.compania AND td.trabajador = tg.trabajador    
        LEFT JOIN rel_trab_agr AFP ON AFP.agrupacion = @vch_agt_AFP AND AFP.compania = tg.compania AND AFP.trabajador = tg.trabajador    
        LEFT JOIN rel_trab_agr EPS ON EPS.agrupacion = @vch_agt_EPS AND EPS.compania = tg.compania AND EPS.trabajador = tg.trabajador    
        WHERE random = @vsi_random
    
        DELETE fco_integrada_temp WHERE random = @vsi_random    
  
        /* Corregir el departamento y el municipio - prevalece la agrupación de trabajador sobre el dato de la CCF */  
        UPDATE fco_integrada_det  
        SET departamento = dpto_tra, municipio = muni_tra  
        FROM vw_fco_muni_tra x  
        WHERE fco_integrada_det.compania = @pch_compania AND fco_integrada_det.anio = @psi_anio AND fco_integrada_det.mes = @pti_mes   
          AND (fco_integrada_det.sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND fco_integrada_det.compania = x.compania  
          AND fco_integrada_det.trabajador = x.trabajador            
  
        /* Novedad RET. El caso normal esta contemplado en el Insert anterior */    
        /*** RET: Retiros en el mismo periodo de ingreso. SOLO PASA EN AVIDESA ***/    
        UPDATE fco_integrada_det    
        SET nov_RET = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND EXISTS (SELECT 1 FROM historial_laboral x     
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND x.codigo_incidencia = '0000000002'    
                        AND CONVERT(char(6), x.valor_03, 112) = @vch_periodo)    
    
        /* Novedad TDE. INGRESO A ESTA EPS (TRASLADO DESDE OTRA EPS) */    
        UPDATE fco_integrada_det    
        SET nov_TDE = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND nov_ING <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_hist_traslados_eps x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
    
        /* Novedad TAE. RETIRO DE ESTA EPS (TRASLADO A OTRA EPS) */    
        UPDATE fco_integrada_det    
        SET nov_TAE = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND EXISTS (SELECT 1 FROM fco_traslados_EPS x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_cambio, 112) = @vch_periodo)    
            
        /* Novedad TDP. INGRESO A ESTA AFP (TRASLADO DESDE OTRA AFP) */    
        UPDATE fco_integrada_det    
        SET nov_TDP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND nov_ING <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_hist_traslados_fpo x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
    
        /* Novedad TAP. RETIRO DE ESTA AFP (TRASLADO A OTRA AFP) */    
        UPDATE fco_integrada_det    
        SET nov_TAP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND EXISTS (SELECT 1 FROM fco_traslados_FPO x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_cambio, 112) = @vch_periodo)    
    
        /* Novedad VSP. VARIACION PERMANENTE DE SALARIO */    
        UPDATE fco_integrada_det    
        SET nov_VSP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND nov_ING <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_sueldos x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha, 112) = @vch_periodo)    
                    
        /* Novedad VTE. CAMBIO TARIFA ESPECIAL */    
        -- Pendiente    
    
        /* Novedad VST. VARIACION TRANSITORIA DEL SALARIO */    
        UPDATE fco_integrada_det    
        SET nov_VST = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VST, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad SLN. SUSPENSIÓN TEMPORAL CONTRATO Y LICENCIA NO REMUNERADA */    
        UPDATE fco_integrada_det    
        SET nov_SLN = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_SLN, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.tiempo <> 0)    
    
        /* Novedad IGE. INCAPACIDAD GENERAL */    
        UPDATE fco_integrada_det    
        SET nov_IGE = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_IGE, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad LMA. LICENCIA MATERNA */    
        UPDATE fco_integrada_det    
        SET nov_LMA = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_LMA, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad VAC. VACACIONES */    
        UPDATE fco_integrada_det    
        SET nov_VAC = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VAC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad AVP. APORTE VOLUNTARIO */    
        UPDATE fco_integrada_det    
        SET nov_AVP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_T, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad AVP. APORTE VOLUNTARIO (Empleador) */    
        UPDATE fco_integrada_det    
        SET nov_AVP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND nov_AVP = ''    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_E, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad VCT. VARIACION DEL CENTRO DE TRABAJO */    
        UPDATE fco_integrada_det    
        SET nov_VCT = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND nov_VCT <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_hist_traslados_ctr x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
            
        /* Novedad IRP. INCAPACIDAD POR ACCIDENTE DE TRABAJO O ENF.PROFESIONAL -EN DIAS- */    
        UPDATE fco_integrada_det    
        SET nov_IRP = (SELECT CASE WHEN tiempo > 99 THEN '99' ELSE CASE WHEN tiempo < 0 THEN '00' ELSE RIGHT('00' + RTRIM(FLOOR(tiempo)), 2) END END    
                       FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_IRP, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.tiempo <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_IRP, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.tiempo <> 0)    
    
        /* Nueva AFP (Fondo de Pensiones al cual se traslada) */    
        UPDATE fco_integrada_det    
        SET cod_AFP_Tras = IsNull(a.cod_super, '')
        FROM fco_administradoras a    
        INNER JOIN fco_traslados_fpo t ON a.codigo = t.FPO_nueva AND a.tipo = 'AFP'    
        WHERE fco_integrada_det.compania = t.compania    
          AND fco_integrada_det.trabajador = t.trabajador    
          AND fco_integrada_det.compania = @pch_compania    
          AND fco_integrada_det.anio = @psi_anio     
          AND fco_integrada_det.mes = @pti_mes     
          AND (fco_integrada_det.sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND CONVERT(char(6), t.fecha_cambio, 112) = @vch_periodo    
    
        /* Nueva EPS (EPS al cual se traslada) */    
        UPDATE fco_integrada_det    
        SET cod_EPS_Tras = IsNull(a.cod_super, '')
        FROM fco_administradoras a    
        INNER JOIN fco_traslados_eps t ON a.codigo = t.EPS_nueva AND a.tipo = 'EPS'    
        WHERE fco_integrada_det.compania = t.compania    
          AND fco_integrada_det.trabajador = t.trabajador    
          AND fco_integrada_det.compania = @pch_compania    
          AND fco_integrada_det.anio = @psi_anio     
          AND fco_integrada_det.mes = @pti_mes     
          AND (fco_integrada_det.sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND CONVERT(char(6), t.fecha_cambio, 112) = @vch_periodo    
            
        /* Días cotizados a pensión e IBC */    
        UPDATE fco_integrada_det    
        SET dias_AFP = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END    
                       FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
            IBC_AFP = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            
        /* Días cotizados a salud e IBC */    
        UPDATE fco_integrada_det    
        SET dias_EPS = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END
                      FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
            IBC_EPS = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
  
    
        /* Días cotizados a riesgos profesionales e IBC */    
        UPDATE fco_integrada_det    
        SET dias_ARP = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END
                      FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
            IBC_ARP = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            
        /* IBC caja de compensación */    
        IF ISNULL(@vti_tipo_IBC_CCF, 2) <> 0  
            UPDATE fco_integrada_det    
            SET dias_CCF = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END
                        FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_CCF_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
                IBC_CCF = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_CCF_IBC, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_CCF_IBC, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        ELSE  
            UPDATE fco_integrada_det    
            SET dias_CCF = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END
                           FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_IBC_CCF, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),  
                IBC_CCF = (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_IBC_CCF, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_IBC_CCF, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                
        /* Aporte o Cotización Obligatoria a Pensión */    
        UPDATE fco_integrada_det    
        SET aporte_AFP =     
            (SELECT Round((importe - 1)/100,0)*100 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_Cot, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
         AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            
        /* Aporte Voluntario del Trabajador a Pensión */    
        UPDATE fco_integrada_det    
        SET voluntario_AFP =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_T, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_T, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
  
        /* Aporte Voluntario del Empleador a Pensión */    
        UPDATE fco_integrada_det    
        SET voluntario_AFP_cia =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_E, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_E, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte Fondo de Solidaridad Pensional subcuenta de Solidaridad */  --JCL.Jul.18/06--  
        IF @vti_FSP_Sol_tipo = 0  --Es un concepto
        BEGIN
            IF ISNUMERIC(@vch_FSP_Sol) = 1
                UPDATE fco_integrada_det    
                SET aporte_FSP =   
                        (SELECT SUM(importe) FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                         WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END
        ELSE --Es una Agrupación de Conceptos
            UPDATE fco_integrada_det    
            SET aporte_FSP =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    

        /* Aporte Fondo de Solidaridad Pensional subcuenta de Subsistencia */  --JCL.Jul.18/06--    
        IF @vti_FSP_Sub_tipo = 0  --Es un concepto
        BEGIN
            IF ISNUMERIC(@vch_FSP_Sub) = 1
                UPDATE fco_integrada_det    
                SET aporte_FSP_Subsistencia =   
                        (SELECT SUM(importe) FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_FSP_Sub, @psi_anio, @pti_mes) x    
                         WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_FSP_Sub, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END
        ELSE --Es una Agrupación de Conceptos
            UPDATE fco_integrada_det    
            SET aporte_FSP_Subsistencia =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_FSP_Sub, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_FSP_Sub, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    

        UPDATE fco_integrada_det    
        SET aporte_FSP_Subsistencia = aporte_FSP
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND aporte_FSP_Subsistencia = 0
          AND aporte_FSP > 0
        
        /* Valor no retenido por aportes voluntarios */    
        UPDATE fco_integrada_det    
        SET valor_no_retenido =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VNR, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VNR, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria a Salud */    
        UPDATE fco_integrada_det    
        SET aporte_EPS =     
            (SELECT Round((importe - 1)/100,0)*100 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_Cot, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* UPC Adicional */    
        UPDATE fco_integrada_det    
        SET UPC_adicional =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_UPC, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_UPC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Autorizaciones por Enfermedad General (Nro. y Valor por Trabajador) */    
        UPDATE fco_integrada_det    
        SET nro_aut_IGE = numero, vlr_aut_IGE = valor_total    
        FROM fco_autorizaciones a    
        INNER JOIN fco_autorizaciones_det b ON a.compania = b.compania AND a.autorizacion = b.autorizacion    
        WHERE fco_integrada_det.compania = @pch_compania AND fco_integrada_det.anio = @psi_anio     
          AND fco_integrada_det.mes = @pti_mes AND (fco_integrada_det.sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND fco_integrada_det.compania = a.compania    
          AND fco_integrada_det.trabajador = b.trabajador    
          AND a.tipo_incapacidad = 0    
          AND a.periodo = @vch_periodo            
    
        /* Autorizaciones por Licencia de Maternidad (Nro. y Valor por Trabajador) */    
        UPDATE fco_integrada_det    
        SET nro_aut_LMA = numero, vlr_aut_LMA = valor_total    
        FROM fco_autorizaciones a    
        INNER JOIN fco_autorizaciones_det b ON a.compania = b.compania AND a.autorizacion = b.autorizacion    
        WHERE fco_integrada_det.compania = @pch_compania AND fco_integrada_det.anio = @psi_anio     
          AND fco_integrada_det.mes = @pti_mes AND (fco_integrada_det.sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND fco_integrada_det.compania = a.compania    
          AND fco_integrada_det.trabajador = b.trabajador    
          AND a.tipo_incapacidad = 1    
          AND a.periodo = @vch_periodo            
    
        /* Tarifa del Centro de Trabajo */    
        UPDATE fco_integrada_det    
        SET tarifa_ARP = dbo.fn_fco_tarifa_ARP(compania, trabajador),    
            centro_trabajo = dbo.fn_fco_centro_trabajo(compania, trabajador)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
    
        /* Aporte o Cotización Obligatoria a Riesgos Profesionales */    
        UPDATE fco_integrada_det    
        SET aporte_ARP =     
            (SELECT Round((importe - 1)/100,0)*100 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_Cot, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria a la Caja de Compensación Familiar */    
        IF @vti_CCF_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_CCF_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_CCF =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_CCF_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_CCF_Cot, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END    
        ELSE    
            UPDATE fco_integrada_det    
            SET aporte_CCF =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_CCF_Cot, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_CCF_Cot, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria al SENA */    
        IF @vti_SENA_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_SENA_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_SENA =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_SENA_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_SENA_Cot, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END    
        ELSE    
            UPDATE fco_integrada_det    
            SET aporte_SENA =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_SENA_Cot, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_SENA_Cot, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria al ICBF */    
        IF @vti_ICBF_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_ICBF_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_ICBF =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_ICBF_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_ICBF_Cot, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END    
        ELSE    
            UPDATE fco_integrada_det    
            SET aporte_ICBF =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_ICBF_Cot, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_ICBF_Cot, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria a ESAP */    
        IF @vti_ESAP_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_ESAP_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_ESAP =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_ESAP_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
               AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_ESAP_Cot, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END    
        ELSE    
            UPDATE fco_integrada_det    
            SET aporte_ESAP =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_ESAP_Cot, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_ESAP_Cot, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria al Ministerio de Educación */    
        IF @vti_MEdu_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_MEdu_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_MEdu =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_MEdu_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_MEdu_Cot, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END    
        ELSE    
            UPDATE fco_integrada_det    
            SET aporte_MEdu =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_MEdu_Cot, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_MEdu_Cot, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            
        /* Inclusión de Empleados por Fuera de Nómina (Fantasmas) */    
        IF OBJECT_ID('dbo.fco_fantasmas') IS NOT NULL    
        BEGIN -- Estos siempre quedan al final del archivo hasta el día que alguien chille    
            SELECT @vsi_secuencia = MAX(secuencia) FROM fco_integrada_det    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
        
            SELECT trabajador, IDENTITY(smallint, 1, 1) AS secuencia    
            INTO #fco_fantasmas_temp    
            FROM fco_fantasmas a    
            WHERE a.compania = @pch_compania    
            AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
            AND ISNULL(EPS, '') + ISNULL(AFP, '') <> ''    
            AND ((anio-2000)*12 + mes) >= ((@psi_anio-2000)*12 + @pti_mes)        
            AND NOT EXISTS (SELECT 1 FROM fco_integrada_det x    
                            WHERE a.compania = x.compania AND a.sucursal = x.sucursal    
                              AND a.anio = x.anio AND a.mes = x.mes    
                              AND RTRIM(LTRIM(a.trabajador)) = RTRIM(LTRIM(x.trabajador)))    
    
  
            --JCL.Jun.05/06 Aqui faltaban campos !!!, la segunda linea de los campos no estaba.--  
            INSERT INTO fco_integrada_det    
            (compania, anio, mes, sucursal, trabajador, secuencia, tipo_documento, nro_id, digito_chequeo, tipo_cotizante,     
            subtipo_cotizante, extranjero_no_pension, residente_en_exterior, departamento, municipio,  
            primer_apellido, segundo_apellido, primer_nombre, segundo_nombre, nov_ING, nov_RET, nov_TDE, nov_TAE, nov_TDP,     
            nov_TAP, nov_VSP, nov_VTE, nov_VST, nov_SLN, nov_IGE, nov_LMA, nov_VAC, nov_AVP, nov_VCT, nov_IRP, cod_AFP,     
            cod_AFP_Tras, cod_EPS, cod_EPS_Tras, cod_CCF, dias_AFP, dias_EPS, dias_ARP, dias_CCF, salario, integral, IBC_AFP, IBC_EPS, IBC_ARP,    
            IBC_CCF, tarifa_AFP, aporte_AFP, voluntario_AFP, voluntario_AFP_cia,     
            aporte_FSP, aporte_FSP_subsistencia, valor_no_retenido, tarifa_EPS, aporte_EPS, UPC_adicional, nro_aut_IGE, vlr_aut_IGE, nro_aut_LMA,     
            vlr_aut_LMA, tarifa_ARP, centro_trabajo, aporte_ARP, tarifa_CCF, aporte_CCF, tarifa_SENA, aporte_SENA,     
            tarifa_ICBF, aporte_ICBF, tarifa_ESAP, aporte_ESAP, tarifa_MEdu, aporte_MEdu, origen)    
            SELECT @pch_compania, @psi_anio, @pti_mes, @pch_sucursal, a.trabajador,     
            b.secuencia + RIGHT('00000' + RTRIM(ISNULL(@vsi_secuencia, 0)), 5),  
            tipo_id, nro_id, '0' dc, tipo_cotizante,     
  
            subtipo_cotizante = 0, extranjero_no_pension = ' ', residente_en_exterior = ' ',  
            IsNull(ccf.departamento,''),  IsNull(ccf.municipio, ''),  
  
            primer_apellido, segundo_apellido, primer_nombre, segundo_nombre,     
            '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',    
            ISNULL(AFP, ''), '', ISNULL(EPS, ''), '',     
            ISNULL(CCF, ''), dias_AFP, dias_EPS, dias_ARP, dias_CCF=dias_AFP, salario, ' ', IBC_AFP, IBC_EPS, IBC_ARP,    
            IBC_CCF, @vdc_tar_AFP, aporte_AFP, 0, 0,     
            aporte_FSP_sol, aporte_FSP_sub, 0, @vdc_tar_EPS, aporte_EPS, UPC_adicional, '', 0, '', 0,     
            tarifa_ARP, CASE WHEN ISNUMERIC(CTR) = 1 THEN CTR ELSE 0 END, aporte_ARP, @vdc_tar_CCF, aporte_CCF, @vdc_tar_SENA, aporte_SENA,     
            @vdc_tar_ICBF, aporte_ICBF, @vdc_tar_ESAP, aporte_ESAP, @vdc_tar_MEdu, aporte_MEdu, 2    
            FROM fco_fantasmas a    
            INNER JOIN #fco_fantasmas_temp b ON a.trabajador = b.trabajador    
            LEFT JOIN fco_administradoras ccf ON ccf.tipo = 'CCF' AND ccf.codigo = a.CCF  
            WHERE a.compania = @pch_compania    
            AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
            AND ISNULL(EPS, '') + ISNULL(AFP, '') <> ''    
            AND ((anio-2000)*12 + mes) >= ((@psi_anio-2000)*12 + @pti_mes)        
        END    
    
        /* Redondeos (IBC al múltiplo de mil más cercano, Aportes al múltiplo de cien más cercano) */    
        UPDATE fco_integrada_det    
        SET IBC_AFP = Round((IBC_AFP - 1)/1000,0)*1000,    
            IBC_EPS = Round((IBC_EPS - 1)/1000,0)*1000,    
            IBC_ARP = Round((IBC_ARP - 1)/1000,0)*1000,    
            IBC_CCF = Round((IBC_CCF - 1)/1000,0)*1000,    
            aporte_AFP = Round((aporte_AFP - 1)/100,0)*100,    
            voluntario_AFP = Round((voluntario_AFP - 1)/100,0)*100,    
            voluntario_AFP_cia = Round((voluntario_AFP_cia - 1)/100,0)*100,    
            aporte_FSP = Round((aporte_FSP - 1)/100,0)*100,    
            aporte_EPS = Round((aporte_EPS - 1)/100,0)*100,    
            aporte_ARP = Round((aporte_ARP - 1)/100,0)*100    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
              
        DELETE fco_integrada_det  
        WHERE compania = @pch_compania  
          AND anio = @psi_anio  
          AND mes = @pti_mes  
          AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP = 0  
                        
    END /*1*/    

    -- Desde Agosto 30/06 siempre se recalculan los totales por si el usuario cambio valores por control de planilla
    /* TOTAL DE LA NOMINA */    
    SELECT @vdc_nomina = SUM(IsNull(IBC_CCF, 0))  
    FROM fco_integrada_det  
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  

    UPDATE fco_integrada_cab    
    SET valor_nomina = ISNULL(@vdc_nomina, 0)    
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')                  

    /* TOTAL DE EMPLEADOS */    
    SELECT @vsi_empleados = COUNT(*)    
    FROM fco_integrada_det    
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    

    UPDATE fco_integrada_cab    
    SET nro_empleados = ISNULL(@vsi_empleados, 0)    
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')      

    /* RENUMERACION DE LA SECUENCIA */   
    SELECT compania cia, trabajador tra, IDENTITY(smallint, 1, 1) sec  
    INTO #renumera  
    FROM fco_integrada_det  
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
    ORDER BY secuencia  

    UPDATE fco_integrada_det  
    SET secuencia = RIGHT('00000' + RTRIM(sec), 5)  
    FROM #renumera  
    WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
      AND compania = cia  
      AND trabajador = tra  

    DROP TABLE #renumera  
                
    /* RT04. TOTAL APORTES DEL PERIODO A SALUD */  
    SELECT compania, anio, mes, @pch_sucursal sucursal, cod_EPS, identity(int, 1, 1) as secuencia,  
           SUM(ISNULL(aporte_EPS, 0)) aportes,   
           SUM(ISNULL(UPC_adicional, 0)) UPC,   
           MAX(ISNULL(nro_aut_IGE, 0)) nro_aut_IGE,   
           SUM(ISNULL(vlr_aut_IGE, 0)) suma_aut_IGE,   
           MAX(ISNULL(nro_aut_LMA, 0)) nro_aut_LMA,  
           SUM(ISNULL(vlr_aut_LMA, 0)) suma_aut_LMA,  
           SUM(ISNULL(IBC_EPS, 0)) * 0.01 Fosyga,  
           COUNT(*) afiliados  
    INTO #fco_rt04  
    FROM fco_integrada_det d  
    WHERE compania = @pch_compania  
      AND anio = @psi_anio  
      AND mes = @pti_mes  
      AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
    GROUP BY compania, anio, mes, cod_EPS  

    INSERT INTO fco_integrada_rt04  
    (compania, anio, mes, sucursal, cod_EPS, secuencia, nit, dv,   
     suma_aportes, suma_UPC, nro_aut_IGE, suma_aut_IGE, nro_aut_LMA, suma_aut_LMA,   
     dias_mora, int_mora_aportes, int_mora_UPC,   
     nro_radicacion, saldo_favor_aportes, saldo_favor_UPC,   
     FOSYGA, total_afiliados)  
    SELECT   
        a.compania, a.anio, a.mes, a.sucursal, a.cod_EPS, a.secuencia,   
        ISNULL(b.registro_fiscal, ''), ISNULL(b.digito_verificacion, 0),    
        a.aportes, a.UPC, a.nro_aut_IGE, a.suma_aut_IGE, a.nro_aut_LMA, a.suma_aut_LMA,   
        0, 0, 0, '', 0, 0, Fosyga, afiliados  
    FROM #fco_rt04 a  
    INNER JOIN vw_fco_administradoras b ON a.compania = b.compania AND b.tipo = 'EPS' AND a.cod_EPS = b.codigo  
      
    DROP TABLE #fco_rt04  


    /* RT05. TOTAL APORTES DEL PERIODO A RIESGOS PROFESIONALES */  
    INSERT INTO fco_integrada_rt05  
    (compania, anio, mes, sucursal, cod_ARP, secuencia, nit, dv,   
     suma_aportes, nro_aut, incapacidades, otros_riesgos,   
     dias_mora, int_mora, nro_radicacion,   
     saldo_favor, FSRP, total_afiliados)  
    SELECT   
        cab.compania, cab.anio, cab.mes, cab.sucursal, cab.nueva_ARP, 1,   
        LEFT(adi.nit_ARP, 9), RIGHT(RTRIM(adi.nit_ARP), 1),  
        SUM(ISNULL(aporte_ARP, 0)), '', 0, 0,   
        0, 0, '', 0, SUM(aporte_ARP)*0.01, COUNT(*)  
    FROM fco_integrada_cab cab  
    INNER JOIN fco_integrada_det det ON cab.compania = det.compania AND cab.anio = det.anio AND cab.mes = det.mes AND (cab.sucursal = det.sucursal OR @pch_sucursal = '')  
    LEFT JOIN fco_cias_datos_adi adi ON cab.compania = adi.compania  
    WHERE cab.compania = @pch_compania  
      AND cab.anio = @psi_anio  
      AND cab.mes = @pti_mes  
      AND (cab.sucursal = @pch_sucursal OR @pch_sucursal = '')  
    GROUP BY cab.compania, cab.anio, cab.mes, cab.sucursal, cab.nueva_arp, adi.nit_ARP  

    -- JCL Agosto 28/06
    SELECT MAX(ISNULL(aut.numero, '')) nro, SUM(ISNULL(aut.valor_total, 0)) vlr
    INTO #pi_inc_arp
    FROM fco_autorizaciones aut
    WHERE aut.compania = @pch_compania
      AND (aut.sucursal = @pch_sucursal OR @pch_sucursal = '')
      AND aut.periodo = @vch_periodo 
      AND aut.tipo_entidad = 1  

    UPDATE fco_integrada_rt05
    SET nro_aut = ISNULL(nro, ''), incapacidades = ISNULL(vlr, 0)
    FROM #pi_inc_arp
    WHERE compania = @pch_compania  
      AND anio = @psi_anio  
      AND mes = @pti_mes  
      AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  

    DROP TABLE #pi_inc_arp            
END    
GO
GRANT EXECUTE ON dbo.sp_fco_planilla_integrada TO PUBLIC
GO
PRINT '*** Fin de Script de Actualización    ***'
PRINT '*****************************************'
