IF NOT EXISTS(SELECT 1 FROM datos_agr_trab WHERE agrupacion = 'TIPO_COTIZ' and dato = '99') 
AND EXISTS (SELECT 1 FROM agrupaciones_trab WHERE agrupacion = 'TIPO_COTIZ' )
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '99', 'Planilla Integrada para Pensionados'
GO
UPDATE fdt_parametros SET dato = 'MUNI_TRA' WHERE parametro = 'autoliq' AND secuencia = 44 AND dato = 'MUNIC_TRA'
GO
-- ************************************************************************************************ --
-- Operación FCO5016 Archivo Planilla Integrada para Pensionados
-- ************************************************************************************************ --
DELETE rel_oper_menus WHERE ejecuta_operacion = 'FCO5016';
DELETE rel_oper_modulos WHERE operacion = 'FCO5016';
DELETE operaciones WHERE operacion = 'FCO5016';
DELETE aut_operaciones WHERE operacion = 'FCO5016';

INSERT INTO operaciones (operacion, descripcion_ope, icono, tipo_operacion) 
VALUES ('FCO5016', 'Generar Archivo Planilla Integrada (Pensionados)', 7, 1);

INSERT INTO rel_oper_menus (modulo, menu, secuencia, tipo_llamada, ejecuta_menu, ejecuta_operacion) 
SELECT 'F1', 50, IsNull(max(secuencia),0) + 1, 2, null, 'FCO5016' from rel_oper_menus WHERE modulo='F1' and menu = 50;

INSERT INTO rel_oper_modulos (operacion, modulo)  VALUES ('FCO5016','F1');
INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad) VALUES ('ADAM','FCO5016',4);
INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad)
SELECT usuario, 'FCO5016', nivel_seguridad FROM aut_operaciones  WHERE usuario <> 'ADAM' AND operacion = 'MF3020'
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

-- ************************************************************************************************ --
-- Operación FCO2096 Control Planilla Integrada Pensionados
-- ************************************************************************************************ --
DELETE rel_oper_menus WHERE ejecuta_operacion = 'FCO2096';
DELETE rel_oper_modulos WHERE operacion = 'FCO2096';
DELETE operaciones WHERE operacion = 'FCO2096';
DELETE aut_operaciones WHERE operacion = 'FCO2096';

INSERT INTO operaciones (operacion, descripcion_ope, icono, tipo_operacion)  
VALUES ('FCO2096', 'Control Planilla Integrada Pensionados', 2, 1);

INSERT INTO rel_oper_menus (modulo, menu, secuencia, tipo_llamada, ejecuta_menu, ejecuta_operacion) 
SELECT 'F1', 20, IsNull(max(secuencia),0) + 1, 2, null, 'FCO2096' from rel_oper_menus WHERE modulo='F1' and menu = 20;

INSERT INTO rel_oper_modulos (operacion, modulo)  VALUES ('FCO2096','F1');

INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad) VALUES ('ADAM','FCO2096',4);
INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad)
SELECT usuario, 'FCO2096', nivel_seguridad FROM aut_operaciones  WHERE usuario <> 'ADAM' AND operacion = 'MF2090'

go

alter table criterios_valores_col alter column descripcion varchar(100) not null
go

IF OBJECT_ID('dbo.fn_fco_var_nom') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_var_nom
GO
CREATE FUNCTION dbo.fn_fco_var_nom
(
    @pch_compania char(4),
    @pch_var_nro char(2),
    @pbi_porcentaje bit = 0
)
RETURNS decimal(16,6)
-- JCL. Junio 22/05.
-- Retorna un valor de variables que contienen porcentaje
-- El valor devuelto va entre cero y uno, o NULL
AS
BEGIN
    DECLARE
        @vdc_tar_Aux decimal(16,6) -- Variable Auxiliar para interpretar tarifas

    SET @vdc_tar_Aux = NULL

    SELECT @vdc_tar_Aux = real FROM parametros_rh
    WHERE compania = @pch_compania AND parametro_rh = 'var_nom_' + @pch_var_nro

    IF @pbi_porcentaje = 0
    BEGIN
        IF @vdc_tar_Aux >= 1000 SET @vdc_tar_Aux = @vdc_tar_Aux / 100000
        IF @vdc_tar_Aux >= 1 SET @vdc_tar_Aux = @vdc_tar_Aux / 100
        IF @vdc_tar_Aux > 1 SET @vdc_tar_Aux = NULL
    END

    RETURN @vdc_tar_Aux
END
GO
GRANT EXECUTE ON dbo.fn_fco_var_nom TO PUBLIC
GO

IF OBJECT_ID('dbo.fco_exclusiones') IS NOT NULL
    DROP TABLE dbo.fco_exclusiones
go
if not exists(select 1 from fdt_parametros where pais = 'COL' AND compania = '0' AND parametro = 'autoliq' AND secuencia = 46)
    insert into fdt_parametros (pais, compania, parametro, secuencia, descripcion, dato, tipo, campo) 
    values ('COL', '0', 'autoliq',46,'Concepto aporte a FSP subcuenta de Subsistencia',10235,7,0);
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
/*************************************************************************/    
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 */  
        @vsi_FSP_Sol smallint,     -- /* Concepto para la subcuenta de solidaridad del FSP */  --JCL.Jun.02/06--  
        @vsi_FSP_Sub smallint      -- /* 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 @vsi_FSP_Sol = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 45 --JCL.Jun.02/06--  
    SELECT @vsi_FSP_Sub = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 46 --JCL.Jul.14/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)    
    
    -- 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*/    
        /* 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 = '')  
  
        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. Parte 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,    
            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), ''),     
            ISNULL(    
                CASE WHEN LEN(ISNULL(dbo.fn_solonum(registro_fiscal), '')) = 0     
                    THEN ''    
                    ELSE LEFT(LEFT(dbo.fn_solonum(registro_fiscal), LEN(dbo.fn_solonum(registro_fiscal))-1), 16)    
                END, ''),    
            dv = ISNULL(RIGHT(dbo.fn_solonum(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 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 */    
        /* RT2 Parte 1.  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            
        
        /* RT2 Parte 2.  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            
  
        /* RT2 Parte 3. 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)    
    
        /* RT2 Parte 4. 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)    
    
        /* RT2 Parte 5. 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)    
            
        /* RT2 Parte 6. 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)    
    
        /* RT2 Parte 7. 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)    
    
        /* RT2 Parte 8. 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)    
                    
        /* RT2 Parte 9. Novedad VTE. CAMBIO TARIFA ESPECIAL */    
        -- Pendiente    
    
        /* RT2 Parte 10. 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)    
    
        /* RT2 Parte 11. 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)    
    
        /* RT2 Parte 12. 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)    
    
        /* RT2 Parte 13. 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)    
    
        /* RT2 Parte 14. 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)    
    
        /* RT2 Parte 15a. 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)    
    
        /* RT2 Parte 15b. 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)    
    
        /* RT2 Parte 16. 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)    
            
        /* RT2 Parte 17. 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)    
    
        /* RT2. Parte 18. 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    
    
        /* RT2. Parte 19. 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    
            
        /* RT2. Parte 20. 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)    
            
        /* RT2. Parte 21. 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)    
  
    
        /* RT2. Parte 22. 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)    
            
        /* RT2. Parte 23. 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)    
    
        /* RT2. Parte 24. IBC de Referencia */    
        -- Desapareció con la resolución 634 de 2006  
            
        /* RT2. Parte 25. 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)    
            
        /* RT2. Parte 26. 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)    
  
        /* RT2. Parte 27. 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)    
    
        /* RT2. Parte 27. Aporte Fondo de Solidaridad Pensional subcuenta de Solidaridad */  --JCL.Jul.14/06 (TODO EL UPDATE) --  
        UPDATE fco_integrada_det    
        SET aporte_FSP =   
                (SELECT SUM(importe) FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_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, @vsi_FSP_Sol, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
  
        UPDATE fco_integrada_det    
        SET aporte_FSP_Subsistencia =   
                (SELECT SUM(importe) FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_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, @vsi_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
        
        /* RT2. Parte 28. 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)    
    
        /* RT2. Parte 29. 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)    
    
        /* RT2. Parte 30. 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)    
    
        /* RT2. Parte 31. 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            
    
        /* RT2. Parte 32. 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            
    
        /* RT2. Parte 33. 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 = '')    
    
        /* RT2. Parte 34. 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)    
    
        /* RT2. Parte 35. 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)    
    
        /* RT2. Parte 36. 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)    
    
        /* RT2. Parte 37. 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)    
    
        /* RT2. Parte 38. 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)    
    
        /* RT2. Parte 39. 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)    
            
        /* RT2. Parte 40. 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, 0, 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    
    
        /* RT2. Parte 41. 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 = '')    
    
            
        /* RT1. Parte 3. 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 = '')                  
  
        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  
                        
        /* RT1. Parte 2. 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)),   
            MAX(ISNULL(aut.numero, '')),   
            SUM(ISNULL(aut.valor_total, 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  
        LEFT JOIN fco_autorizaciones aut ON aut.compania = cab.compania AND aut.sucursal = cab.sucursal AND aut.periodo = @vch_periodo AND aut.tipo_entidad = 1  
        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  
            
    END /*1*/    
END    
GO
GRANT EXECUTE ON dbo.sp_fco_planilla_integrada 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_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.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, 
    a.primer_apellido, a.segundo_apellido, a.primer_nombre, a.segundo_nombre, 
    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 = 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_pi_pens_det') IS NOT NULL
    DROP VIEW dbo.vw_fco_pi_pens_det
GO
CREATE VIEW dbo.vw_fco_pi_pens_det
AS
SELECT 
    a.compania, a.anio, a.mes, a.sucursal, a.trabajador, a.secuencia, 
    a.pens_ape1, a.pens_ape2, a.pens_nom1, a.pens_nom2, a.pens_tdoc, a.pens_id, 
    a.tipo_pension, 
    tipo_pension_des = IsNull((Select x.descripcion From criterios_valores_col x Where x.campo = 'tipo_pension' AND x.item = a.tipo_pension), ''),
    a.pension_compartida, 
    a.caus_ape1, a.caus_ape2, a.caus_nom1, a.caus_nom2, a.caus_tdoc, a.caus_id, 
    a.tipo_pensionado, 
    tipo_pensionado_des = IsNull((Select x.descripcion From criterios_valores_col x Where x.campo = 'tipo_pensionado' AND x.item = a.tipo_pensionado), ''),
    a.residente_en_exterior, 
    a.departamento,
    departamento_des = IsNull((Select x.nombre From fco_departamentos x Where x.codigo = a.departamento), ''),
    a.municipio, 
    municipio_des = IsNull((Select x.nombre From fco_ciudades x Where x.cod_dpto = a.departamento and x.codigo = a.municipio), ''),
    a.situa_en_exterior, 
    a.nov_ING, a.nov_RET, a.nov_TDE, a.nov_TAE, a.nov_TDP, a.nov_TAP, a.nov_VSP, a.nov_SUS, 
    a.mesada, 

    a.cod_EPS, 
    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,

    a.cod_EPS_Tras, 
    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,

    a.dias_EPS, a.tarifa_EPS, a.aporte_EPS, a.UPC_adicional, 

    a.cod_AFP, 
    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,

    a.cod_AFP_Tras, 
    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,

    a.dias_AFP, a.tarifa_AFP, a.aporte_AFP, a.voluntario_AFP, a.aporte_total_AFP, a.valor_no_retenido, 
    a.dias_FSP, a.aporte_FSP_sol, a.aporte_FSP_sub, a.tarifa_FSP, 

    a.cod_CCF, 
    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,

    a.dias_CCF, a.tarifa_CCF, a.aporte_CCF, a.origen, a.eliminada,    

    suc_nombre = (Select suc.descripcion From vw_fco_sucursales suc Where suc.compania = a.compania AND suc.sucursal = a.sucursal)

FROM fco_pi_pens_rt2 a
WHERE aporte_EPS + aporte_AFP + aporte_CCF <> 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_pi_pens_det TO PUBLIC
GO
SET NOCOUNT ON
GO
IF OBJECT_ID('dbo.fco_pi_pens_proc') IS NOT NULL
    DROP TABLE dbo.fco_pi_pens_proc
GO
CREATE TABLE dbo.fco_pi_pens_proc
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal char(10) NOT NULL,
    procesar bit NOT NULL,
    CONSTRAINT pk_fco_pi_pens_proc PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal)
)
GO
GRANT ALL ON dbo.fco_pi_pens_proc TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_pi_pens_rt1') IS NOT NULL
    DROP TABLE dbo.fco_pi_pens_rt1
GO
CREATE TABLE dbo.fco_pi_pens_rt1
-- Planilla Integrada Pensionados Registro Tipo 1: Datos Generales del Aportante
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    secuencia smallint NOT NULL,
    razon_social varchar(200) NOT NULL,
    tipo_documento char(2) NOT NULL,
    nro_id varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    forma_presentacion char(1) NOT NULL,
    nombre_sucursal varchar(40) NOT NULL,
    periodo char(6) NOT NULL,
    periodo_salud char(6) NOT NULL,
    nro_radicacion varchar(10) NOT NULL,
    fecha_pago smalldatetime NOT NULL,
    nro_pensionados smallint NOT NULL,
    valor_nomina decimal(12) NOT NULL,
    tipo_pagador tinyint NOT NULL, -- 1 Empleador 2 AFP 3 Pagador
    operador char(2) NOT NULL,
    sit_periodo tinyint NOT NULL DEFAULT 1,
    CONSTRAINT pk_fco_pi_pens_rt1 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal)
)
GO
GRANT ALL ON dbo.fco_pi_pens_rt1 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_pi_pens_rt2') IS NOT NULL
    DROP TABLE dbo.fco_pi_pens_rt2
GO
CREATE TABLE dbo.fco_pi_pens_rt2
-- Planilla Integrada Pensionados Registro Tipo 2: Liquidación Detallada de Aportes
(
    -- Llave primaria
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    trabajador char(10) NOT NULL,
    -- Variables de novedades generales
    secuencia char(7) NOT NULL,
    -- Datos del Pensionado
    pens_ape1 varchar(20) NOT NULL,
    pens_ape2 varchar(30) NOT NULL,
    pens_nom1 varchar(20) NOT NULL,
    pens_nom2 varchar(30) NOT NULL,
    pens_tdoc char(2) NOT NULL,
    pens_id varchar(16) NOT NULL,

    tipo_pension tinyint NOT NULL,
    pension_compartida char(1) NOT NULL,

    -- Datos del Causante
    caus_ape1 varchar(20) NOT NULL,
    caus_ape2 varchar(30) NOT NULL,
    caus_nom1 varchar(20) NOT NULL,
    caus_nom2 varchar(30) NOT NULL,
    caus_tdoc char(2) NOT NULL,
    caus_id varchar(16) NOT NULL,

    tipo_pensionado char(1) NOT NULL,
    residente_en_exterior char(1) NOT NULL,
    departamento char(2) NOT NULL,
    municipio char(3) NOT NULL,    
    situa_en_exterior char(1) NOT NULL,

    -- (Novedades)
    nov_ING char(1) NOT NULL,
    nov_RET char(1) NOT NULL,
    nov_TDE char(1) NOT NULL,
    nov_TAE char(1) NOT NULL,
    nov_TDP char(1) NOT NULL,
    nov_TAP char(1) NOT NULL,
    nov_VSP char(1) NOT NULL,
    nov_SUS char(1) NOT NULL,
    -- (Fin Novedades)

    cod_AFP char(10) NOT NULL,
    cod_AFP_Tras varchar(6) NOT NULL,
    cod_EPS char(10) NOT NULL,
    cod_EPS_Tras varchar(6) NOT NULL,
    cod_CCF char(10) NOT NULL,
    dias_AFP tinyint NOT NULL,
    dias_FSP tinyint NOT NULL,
    dias_EPS tinyint NOT NULL,
    dias_CCF tinyint NOT NULL,
    mesada decimal(9) NOT NULL,

    -- Sistema General de Pensiones
    tarifa_AFP decimal(6,5) NOT NULL,
    aporte_AFP decimal(9) NOT NULL,
    voluntario_AFP decimal(9) NOT NULL,
    aporte_total_AFP AS aporte_AFP + voluntario_AFP,
    valor_no_retenido decimal(9) NOT NULL,
    -- Fondo de Solidaridad Pensional
    aporte_FSP_sol decimal(9) NOT NULL,
    aporte_FSP_sub decimal(9) NOT NULL,
    tarifa_FSP decimal(6,5) NOT NULL,
    -- Sistema General de EPS
    tarifa_EPS decimal(6,5) NOT NULL,
    aporte_EPS decimal(9) NOT NULL,
    UPC_adicional decimal(9) NOT NULL,
    -- Cajas de Compensación Familiar
    tarifa_CCF decimal(6,5) NOT NULL,
    aporte_CCF decimal(9) NOT NULL,
    origen tinyint NOT NULL, -- 1 Normal, 2 Fantasma, 3 Editada manualmente
    eliminada bit NOT NULL DEFAULT 0
    CONSTRAINT pk_fco_pi_pens_rt2 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, trabajador)
)
GO
GRANT ALL ON dbo.fco_pi_pens_rt2 TO PUBLIC
GO

IF OBJECT_ID('dbo.fco_pi_pens_temp') IS NOT NULL
    DROP TABLE dbo.fco_pi_pens_temp
GO
CREATE TABLE dbo.fco_pi_pens_temp
(
    random smallint NOT NULL,
    compania char(4) NOT NULL,
    trabajador char(10) NOT NULL, 
    sucursal char(10) NOT NULL,
    relacion_laboral char(10) NULL, 
    fecha_ingreso smalldatetime NULL, 
    fecha_baja smalldatetime NULL, 
    clave_unica varchar(25) NULL,
    nombre varchar(100) NOT NULL,
    registro_fiscal varchar(20) NULL,
    secuencia smallint NOT NULL,
    CONSTRAINT pk_fco_pi_pens_temp
    PRIMARY KEY NONCLUSTERED (random, compania, trabajador)
)
GO
GRANT ALL ON fco_pi_pens_temp TO PUBLIC
GO
alter table criterios_valores_col alter column descripcion varchar(100) not null
go
IF OBJECT_ID('dbo.fn_fco_tarifa_FSP') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_tarifa_FSP
GO
CREATE FUNCTION dbo.fn_fco_tarifa_FSP
(
    @pch_compania char(4), 
    @pch_trabajador char(10), 
    @psi_anio smallint,
    @pti_mes tinyint,
    @pdc_valor decimal(19,6), -- mesada para los pensionados
    @pbi_pensionado bit = 1
)
RETURNS decimal(6,5)
AS
BEGIN
    DECLARE 
        @vdc_tarifa decimal(6,5),
        @vdc_sal_min decimal(16,6),
        @vdc_salarios decimal(5,2) -- Cantidad de Salarios Mínimos
        
    SELECT @vdc_sal_min = real FROM parametros_rh
    WHERE compania = @pch_compania AND parametro_rh = 'Sal_Minimo' AND secuencia_parametro = 1
      AND Convert(char(6), fecha, 112) <= Rtrim(@psi_anio) + Right('00' + RTrim(@pti_mes), 2)

    IF @vdc_sal_min IS NULL
        SELECT TOP 1 @vdc_sal_min = salario_minimo FROM hist_sal_min_zona
        WHERE zona = 'A' AND Convert(char(6), fecha, 112) <= Rtrim(@psi_anio) + Right('00' + RTrim(@pti_mes), 2)
        ORDER BY fecha Desc
    
    IF IsNull(@vdc_sal_min, 0) = 0 
        SET @vdc_salarios = 0
    ELSE
        SET @vdc_salarios = @pdc_valor / @vdc_sal_min

    SELECT @vdc_tarifa = porcentaje FROM impuestos
    WHERE impuesto = 5
      AND @vdc_salarios BETWEEN limite_inferior AND limite_superior
    
    RETURN ISNULL(@vdc_tarifa, 0)
END
GO
GRANT EXECUTE ON dbo.fn_fco_tarifa_FSP TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_pensionados') IS NOT NULL
    DROP VIEW dbo.vw_fco_pensionados
GO
CREATE VIEW dbo.vw_fco_pensionados
AS
SELECT compania, trabajador, fecha_ingreso, fecha_baja, causa_baja, relacion_laboral, clase_nomina, sistema_antiguedad, sit_trabajador
FROM trabajadores_grales tg
WHERE EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = tg.compania AND x.usuario = SYSTEM_USER)
AND EXISTS (SELECT 1 FROM rel_usu_clase_nom x WHERE x.clase_nomina = tg.clase_nomina AND x.usuario = SYSTEM_USER)
AND NOT EXISTS (SELECT 1 FROM rel_trab_agr x INNER JOIN rel_usu_agr_trab y ON x.agrupacion = y.agrupacion AND x.dato = y.dato 
                WHERE x.compania = tg.compania AND y.usuario = SYSTEM_USER)
AND EXISTS (SELECT 1 FROM rel_trab_agr x WHERE x.compania = tg.compania AND x.trabajador = tg.trabajador
            AND x.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') AND x.dato = '99')
GO
GRANT SELECT ON dbo.vw_fco_pensionados TO PUBLIC
GO

IF OBJECT_ID('dbo.vw_fco_info_pensionados') IS NOT NULL
    DROP VIEW dbo.vw_fco_info_pensionados
GO
CREATE VIEW dbo.vw_fco_info_pensionados
AS
SELECT 
    p.compania, p.trabajador, 
    tipo_pension = isnull(CASE WHEN IsNumeric(Left(dato_09, 2)) = 1 THEN Convert(tinyint, Left(dato_09, 2)) ELSE 1 END, 1),
    compartida = isnull(CASE WHEN UPPER(LEFT(dato_03, 1)) = 'S' THEN 'S' ELSE 'N' END,'N'),
    caus_ape1 = isnull(dato_05, ''),
    caus_ape2 = isnull(dato_07, ''),
    caus_nom1 = isnull(dato_06, ''),
    caus_nom2 = isnull(dato_08, ''),
    caus_tdoc = isnull(LEFT(dato_02, 2), ''),
    caus_id = isnull(LEFT(RTRIM(FLOOR(dato_11)), 16), 0),
    tipo_pensionado = isnull(CASE WHEN IsNumeric(Left(dato_10, 2)) = 1 THEN Convert(tinyint, Left(dato_10, 2)) ELSE 1 END,1),
    residente_en_exterior = isnull(CASE WHEN UPPER(LEFT(dato_01, 1)) = 'S' THEN 'S' ELSE 'N' END,'N'),
    situa_en_exterior = isnull(CASE WHEN UPPER(LEFT(dato_04, 1)) = 'S' THEN 'S' ELSE 'N' END,'N')
FROM vw_fco_pensionados p 
LEFT JOIN inf_soc_trabajador i ON i.trabajador = p.trabajador AND i.indice_inf_soc = 'PENSIONADO' AND i.secuencia = 1
GO
GRANT SELECT ON dbo.vw_fco_info_pensionados TO PUBLIC
GO

IF OBJECT_ID('dbo.vw_fco_pi_pens_det') IS NOT NULL
    DROP VIEW dbo.vw_fco_pi_pens_det
GO
CREATE VIEW dbo.vw_fco_pi_pens_det
AS
SELECT 
    a.compania, a.anio, a.mes, a.sucursal, a.trabajador, a.secuencia, 
    a.pens_ape1, a.pens_ape2, a.pens_nom1, a.pens_nom2, a.pens_tdoc, a.pens_id, 
    a.tipo_pension, 
    tipo_pension_des = IsNull((Select x.descripcion From criterios_valores_col x Where x.campo = 'tipo_pension' AND x.item = a.tipo_pension), ''),
    a.pension_compartida, 
    a.caus_ape1, a.caus_ape2, a.caus_nom1, a.caus_nom2, a.caus_tdoc, a.caus_id, 
    a.tipo_pensionado, 
    tipo_pensionado_des = IsNull((Select x.descripcion From criterios_valores_col x Where x.campo = 'tipo_pensionado' AND x.item = a.tipo_pensionado), ''),
    a.residente_en_exterior, 
    a.departamento,
    departamento_des = IsNull((Select x.nombre From fco_departamentos x Where x.codigo = a.departamento), ''),
    a.municipio, 
    municipio_des = IsNull((Select x.nombre From fco_ciudades x Where x.cod_dpto = a.departamento and x.codigo = a.municipio), ''),
    a.situa_en_exterior, 
    a.nov_ING, a.nov_RET, a.nov_TDE, a.nov_TAE, a.nov_TDP, a.nov_TAP, a.nov_VSP, a.nov_SUS, 
    a.mesada, 

    a.cod_EPS, 
    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,

    a.cod_EPS_Tras, 
    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,

    a.dias_EPS, a.tarifa_EPS, a.aporte_EPS, a.UPC_adicional, 

    a.cod_AFP, 
    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,

    a.cod_AFP_Tras, 
    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,

    a.dias_AFP, a.tarifa_AFP, a.aporte_AFP, a.voluntario_AFP, a.aporte_total_AFP, a.valor_no_retenido, 
    a.dias_FSP, a.aporte_FSP_sol, a.aporte_FSP_sub, a.tarifa_FSP, 

    a.cod_CCF, 
    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,

    a.dias_CCF, a.tarifa_CCF, a.aporte_CCF, a.origen, a.eliminada,    

    suc_nombre = (Select suc.descripcion From vw_fco_sucursales suc Where suc.compania = a.compania AND suc.sucursal = a.sucursal)

FROM fco_pi_pens_rt2 a
WHERE aporte_EPS + aporte_AFP + aporte_CCF <> 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_pi_pens_det TO PUBLIC
GO

IF OBJECT_ID('dbo.vw_fco_pi_pens_proc') IS NOT NULL
    DROP VIEW dbo.vw_fco_pi_pens_proc
GO
CREATE VIEW dbo.vw_fco_pi_pens_proc
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_pi_pens_proc 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_pi_pens_proc TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_pi_pens_rt1') IS NOT NULL
    DROP VIEW dbo.vw_fco_pi_pens_rt1
GO
CREATE VIEW dbo.vw_fco_pi_pens_rt1
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Pensionados Registro Tipo 1
-- Autor: Juan Carlos Leguizamon
-- Fecha: Julio 2006
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal,
    '01' + RIGHT('00000' + RTRIM(secuencia), 5) + CONVERT(char(150), razon_social) +
    tipo_documento + CONVERT(char(16), nro_id) + dv + ' ' + 
    forma_presentacion + sucursal + CONVERT(char(40), nombre_sucursal) + 
    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_pensionados), 7) + 
    RIGHT('000000000000' + RTRIM(valor_nomina), 12) + '1' +
    operador AS registro1
FROM fco_pi_pens_rt1  
GO
GRANT SELECT ON dbo.vw_fco_pi_pens_rt1 TO PUBLIC
GO

IF OBJECT_ID('dbo.vw_fco_pi_pens_rt2') IS NOT NULL
    DROP VIEW dbo.vw_fco_pi_pens_rt2
GO
CREATE VIEW dbo.vw_fco_pi_pens_rt2
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Pensionados Registro Tipo 2
-- Autor: Juan Carlos Leguizamon
-- Fecha: Julio 2006
-- Revisiones:
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, trabajador, secuencia, 
    registro2 =
    '02' + 
    secuencia + 
    dbo.fn_fco_valida_nombre(Convert(char(20), pens_ape1)) +
    dbo.fn_fco_valida_nombre(Convert(char(30), pens_ape2)) +
    dbo.fn_fco_valida_nombre(Convert(char(20), pens_nom1)) +
    dbo.fn_fco_valida_nombre(Convert(char(30), pens_nom2)) +
    pens_tdoc +
    CONVERT(char(16), pens_id) + 
    RIGHT('00' + RTRIM(tipo_pension), 2) + 
    pension_compartida +
    dbo.fn_fco_valida_nombre(Convert(char(20), caus_ape1)) +
    dbo.fn_fco_valida_nombre(Convert(char(30), caus_ape2)) +
    dbo.fn_fco_valida_nombre(Convert(char(20), caus_nom1)) +
    dbo.fn_fco_valida_nombre(Convert(char(30), caus_nom2)) +
    caus_tdoc +
    CONVERT(char(16), caus_id) +
    tipo_pensionado +
    residente_en_exterior + 
    departamento + 
    municipio + 
    situa_en_exterior +
    nov_ING + nov_RET + nov_TDE + nov_TAE + nov_TDP + nov_TAP + nov_VSP + nov_SUS + 
    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_FSP), 2) + 
    RIGHT('00' + RTRIM(dias_EPS), 2) + 
    RIGHT('00' + RTRIM(dias_CCF), 2) + 
    RIGHT('000000000' + RTRIM(mesada), 9) + 
    LEFT(RTRIM(tarifa_AFP) + '0000000', 7) +
    RIGHT('000000000' + RTRIM(aporte_AFP), 9) + 
    RIGHT('000000000' + RTRIM(voluntario_AFP), 9) + 
    RIGHT('000000000' + RTRIM(aporte_total_AFP), 9) + 
    RIGHT('000000000' + RTRIM(valor_no_retenido), 9) + 
    RIGHT('0000000' + RTRIM(aporte_FSP_sol), 7) + 
    RIGHT('0000000' + RTRIM(aporte_FSP_sub), 7) + 
    LEFT(RTRIM(tarifa_FSP) + '0000000', 7) +
    LEFT(RTRIM(tarifa_EPS) + '0000000', 7) +
    RIGHT('000000000' + RTRIM(aporte_EPS), 9) + 
    RIGHT('000000000' + RTRIM(UPC_adicional), 9) + 
    LEFT(RTRIM(tarifa_CCF) + '0000000', 7) +
    RIGHT('000000000' + RTRIM(aporte_CCF), 9)
FROM fco_pi_pens_rt2
WHERE eliminada = 0
AND aporte_EPS + aporte_AFP + aporte_CCF <> 0
GO
GRANT SELECT ON dbo.vw_fco_pi_pens_rt2 TO PUBLIC
GO
ALTER TRIGGER trinsinf_soc_trabajador on dbo.inf_soc_trabajador 
FOR INSERT, UPDATE 
NOT FOR REPLICATION 
AS 
/**********************************************************/ 
/* Nombre fisico: t0057.tri */ 
/* Autor: Fernando Diaz Medina */ 
/* Fecha: 26/Dic/96 */ 
/* Proyecto: ADAMv3 */ 
/**********************************************************/ 
-- Reprogramado por JCL en Julio 14/06 
-- DATA TECNOLOGIA LTDA.
DECLARE 
    @i_flag_int TINYINT, 
    @i_dato_int DECIMAL(19,6), 
    @i_flag_char TINYINT, 
    @i_dato_char VARCHAR(255), 
    @i_flag_date TINYINT, 
    @i_dato_date SMALLDATETIME, 
    @i_flag_number TINYINT, 
    @i_dato_number DECIMAL(19,6), 
    @i_fin TINYINT, 
    @i_trabajador CHAR(10), 
    @i_status_char TINYINT, 
    @i_status_int TINYINT, 
    @i_status_number TINYINT, 
    @i_status_date TINYINT, 
    @i_indice CHAR(10), 
    @i_dato_01 VARCHAR(255), 
    @i_dato_02 VARCHAR(255), 
    @i_dato_03 VARCHAR(255), 
    @i_dato_04 VARCHAR(255), 
    @i_dato_05 VARCHAR(255), 
    @i_dato_06 VARCHAR(255), 
    @i_dato_07 VARCHAR(255), 
    @i_dato_08 VARCHAR(255), 
    @i_dato_09 VARCHAR(255), 
    @i_dato_10 VARCHAR(255), 
    @i_dato_11 DECIMAL(19,6), 
    @i_dato_12 DECIMAL(19,6), 
    @i_dato_13 DECIMAL(19,6), 
    @i_dato_14 DECIMAL(19,6), 
    @i_dato_15 DECIMAL(19,6), 
    @i_dato_16 DECIMAL(19,6), 
    @i_dato_17 DECIMAL(19,6), 
    @i_dato_18 DECIMAL(19,6), 
    @i_dato_19 DECIMAL(19,6), 
    @i_dato_20 DECIMAL(19,6), 
    @i_dato_21 SMALLDATETIME, 
    @i_dato_22 SMALLDATETIME, 
    @i_dato_23 SMALLDATETIME, 
    @i_dato_24 SMALLDATETIME, 
    @i_dato_25 SMALLDATETIME, 
    @d_dato_01 VARCHAR(255), 
    @d_dato_02 VARCHAR(255), 
    @d_dato_03 VARCHAR(255), 
    @d_dato_04 VARCHAR(255), 
    @d_dato_05 VARCHAR(255), 
    @d_dato_06 VARCHAR(255), 
    @d_dato_07 VARCHAR(255), 
    @d_dato_08 VARCHAR(255), 
    @d_dato_09 VARCHAR(255), 
    @d_dato_10 VARCHAR(255), 
    @d_dato_11 DECIMAL(19,6), 
    @d_dato_12 DECIMAL(19,6), 
    @d_dato_13 DECIMAL(19,6), 
    @d_dato_14 DECIMAL(19,6), 
    @d_dato_15 DECIMAL(19,6), 
    @d_dato_16 DECIMAL(19,6), 
    @d_dato_17 DECIMAL(19,6), 
    @d_dato_18 DECIMAL(19,6), 
    @d_dato_19 DECIMAL(19,6), 
    @d_dato_20 DECIMAL(19,6), 
    @d_dato_21 SMALLDATETIME, 
    @d_dato_22 SMALLDATETIME, 
    @d_dato_23 SMALLDATETIME, 
    @d_dato_24 SMALLDATETIME, 
    @d_dato_25 SMALLDATETIME, 
    @i_fecha SMALLDATETIME 
 
IF @@rowcount = 0 
    RETURN
 
/* Existencia de campos foráneos */ 
IF NOT EXISTS(SELECT 1 FROM trabajadores t INNER JOIN inserted i ON t.trabajador = i.trabajador)
BEGIN
    RAISERROR ('No existe el trabajador especificado [trabajadores]', 16, 1)
    ROLLBACK TRANSACTION
    RETURN
END
IF NOT EXISTS(SELECT 1 FROM indices_inf_soc x INNER JOIN inserted i ON x.indice_inf_soc = i.indice_inf_soc)
BEGIN
    RAISERROR ('No existe el índice de inf. socioeconómica especificado [inf_soc_trabajador]', 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END 

/* Seguridad por Clase de Nómina */ 
IF EXISTS(SELECT 1 FROM inserted i INNER JOIN trabajadores_grales tg ON tg.trabajador = i.trabajador
          WHERE tg.clase_nomina IS NOT NULL
            AND NOT EXISTS(SELECT 1 FROM rel_usu_clase_nom r WHERE tg.clase_nomina = r.clase_nomina AND r.usuario = system_user))
BEGIN 
    RAISERROR ('El usuario no tiene autoridad para la clase de nómina a la que pertenece el trabajador [inf_soc_trabajador]', 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END
 
/* Seguridad por Apartado */
IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN trabajadores_grales tg ON tg.trabajador = i.trabajador
              INNER JOIN aut_apartados a ON a.compania = tg.compania
              WHERE a.usuario = system_user and a.num_apartado = 8 and a.nivel_seguridad > 1)
BEGIN 
    RAISERROR ('El usuario no tiene autoridad para modificar información socioeconómica en esta compañía', 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END 
 
/* Seguridad por Agrupaciones de trabajador */ 
IF EXISTS
(SELECT 1 FROM inserted i
 INNER JOIN rel_trab_agr rta ON i.trabajador = rta.trabajador 
 INNER JOIN rel_agr_companias rac ON rta.compania = rac.compania AND rac.agrupacion = rta.agrupacion
 INNER JOIN rel_usu_agr_trab ruat ON rta.agrupacion = ruat.agrupacion AND rta.dato = ruat.dato
 WHERE ruat.usuario = system_user ) 
BEGIN 
    RAISERROR ('El usuario no tiene autoridad para el dato de agrupación al que pertenece el trabajador [inf_soc_trabajador]', 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END 
 
/**** Si tipo_indice = 3 (Interpersonal) ****/  
/**** Verifica que exista el trabajador = la Persona Relacionada ****/ 
IF EXISTS
(SELECT 1 FROM inserted 
 WHERE (trabajador_persona IS NULL and persona_relacionada IS NOT NULL) 
    OR (trabajador_persona IS NOT NULL and persona_relacionada IS NULL)) 
BEGIN 
    RAISERROR ('No se ha especificado trabajador_persona o bien persona_relacionada. [inf_soc_trabajador]', 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END 
 
IF EXISTS
(SELECT 1 FROM inserted i
 INNER JOIN indices_inf_soc iis ON i.indice_inf_soc = iis.indice_inf_soc
 WHERE i.trabajador_persona = 2 AND iis.tipo_indice = 3 
   AND NOT EXISTS
       (SELECT 1 FROM personas_relacionada pr
        WHERE i.trabajador = pr.trabajador 
          AND i.persona_relacionada = pr.persona_relacionada)
) 
BEGIN 
    RAISERROR ('No existe la persona relacionada con el trabajador [inf_soc_trabajador]', 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END 
 
IF EXISTS
(SELECT 1 FROM inserted i
 INNER JOIN indices_inf_soc iis ON i.indice_inf_soc = iis.indice_inf_soc
 WHERE i.trabajador_persona = 1 AND iis.tipo_indice = 3 
   AND NOT EXISTS (SELECT 1 FROM trabajadores t WHERE i.trabajador = t.trabajador)
) 
BEGIN 
    RAISERROR ('No existe el trabajador relacionado con el trabajador [inf_soc_trabajador]' , 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END 
 
-- ****************************************************************************************************
--  VALIDACIONES NUEVAS
--  JCL. JULIO 15/06
--  EVITAR QUE METAN BASURA EN CAMPOS DE SELECCION
-- ****************************************************************************************************
Declare @vch_indice char(10), 
        @vvc_des varchar(20)

--*********
-- CAMPO 01
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 1 AND i.dato_01 IS NOT NULL AND i.dato_01 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 1 AND i.dato_01 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS 
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 1 AND i.dato_01 = d.dato_01)

        SELECT @vvc_des = des_col_01 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 02
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 2 AND i.dato_02 IS NOT NULL AND i.dato_02 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 2 AND i.dato_02 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc
        FROM inserted i WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 2 AND i.dato_02 = d.dato_01)

        SELECT @vvc_des = des_col_02 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 03
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 3 AND i.dato_03 IS NOT NULL AND i.dato_03 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 3 AND i.dato_03 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 3 AND i.dato_03 = d.dato_01)

        SELECT @vvc_des = des_col_03 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 04
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 4 AND i.dato_04 IS NOT NULL AND i.dato_04 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 4 AND i.dato_04 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 4 AND i.dato_04 = d.dato_01)

        SELECT @vvc_des = des_col_04 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 05
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 5 AND i.dato_05 IS NOT NULL AND i.dato_05 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 5 AND i.dato_05 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 5 AND i.dato_05 = d.dato_01)

        SELECT @vvc_des = des_col_05 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 06
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 6 AND i.dato_06 IS NOT NULL AND i.dato_06 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 6 AND i.dato_06 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 6 AND i.dato_06 = d.dato_01)

        SELECT @vvc_des = des_col_06 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 07
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 7 AND i.dato_07 IS NOT NULL AND i.dato_07 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 7 AND i.dato_07 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 7 AND i.dato_07 = d.dato_01)

        SELECT @vvc_des = des_col_07 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 08
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 8 AND i.dato_08 IS NOT NULL AND i.dato_08 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 8 AND i.dato_08 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 8 AND i.dato_08 = d.dato_01)

        SELECT @vvc_des = des_col_08 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 09
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 9 AND i.dato_09 IS NOT NULL AND i.dato_09 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 9 AND i.dato_09 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 9 AND i.dato_09 = d.dato_01)

        SELECT @vvc_des = des_col_09 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 10
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 10 AND i.dato_10 IS NOT NULL AND i.dato_10 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 10 AND i.dato_10 = d.dato_01)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 10 AND i.dato_10 = d.dato_01)

        SELECT @vvc_des = des_col_10 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 11
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 11 AND i.dato_11 IS NOT NULL AND i.dato_11 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 11 AND i.dato_11 = d.dato_02)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 11 AND i.dato_11 = d.dato_02)

        SELECT @vvc_des = des_col_11 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 12
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 12 AND i.dato_12 IS NOT NULL AND i.dato_12 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 12 AND i.dato_12 = d.dato_02)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 12 AND i.dato_12 = d.dato_02)

        SELECT @vvc_des = des_col_12 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 13
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 13 AND i.dato_13 IS NOT NULL AND i.dato_13 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 13 AND i.dato_13 = d.dato_02)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 13 AND i.dato_13 = d.dato_02)

        SELECT @vvc_des = des_col_13 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 14
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 14 AND i.dato_14 IS NOT NULL AND i.dato_14 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 14 AND i.dato_14 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 14 AND i.dato_14 = d.dato_03)

        SELECT @vvc_des = des_col_14 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 15
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 15 AND i.dato_15 IS NOT NULL AND i.dato_15 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 15 AND i.dato_15 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 15 AND i.dato_15 = d.dato_03)

        SELECT @vvc_des = des_col_15 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 16
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 16 AND i.dato_16 IS NOT NULL AND i.dato_16 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 16 AND i.dato_16 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 16 AND i.dato_16 = d.dato_03)

        SELECT @vvc_des = des_col_16 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 16
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 16 AND i.dato_16 IS NOT NULL AND i.dato_16 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 16 AND i.dato_16 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 16 AND i.dato_16 = d.dato_03)

        SELECT @vvc_des = des_col_16 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 17
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 17 AND i.dato_17 IS NOT NULL AND i.dato_17 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 17 AND i.dato_17 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 17 AND i.dato_17 = d.dato_03)

        SELECT @vvc_des = des_col_17 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 18
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 18 AND i.dato_18 IS NOT NULL AND i.dato_18 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 18 AND i.dato_18 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 18 AND i.dato_18 = d.dato_03)

        SELECT @vvc_des = des_col_18 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 19
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 19 AND i.dato_19 IS NOT NULL AND i.dato_19 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 19 AND i.dato_19 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 19 AND i.dato_19 = d.dato_03)

        SELECT @vvc_des = des_col_19 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 20
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 20 AND i.dato_20 IS NOT NULL AND i.dato_20 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 20 AND i.dato_20 = d.dato_03)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 20 AND i.dato_20 = d.dato_03)

        SELECT @vvc_des = des_col_20 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 21
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 21 AND i.dato_21 IS NOT NULL AND i.dato_21 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 21 AND i.dato_21 = d.dato_04)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 21 AND i.dato_21 = d.dato_04)

        SELECT @vvc_des = des_col_21 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 22
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 22 AND i.dato_22 IS NOT NULL AND i.dato_22 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 22 AND i.dato_22 = d.dato_04)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 22 AND i.dato_22 = d.dato_04)

        SELECT @vvc_des = des_col_22 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 23
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 23 AND i.dato_23 IS NOT NULL AND i.dato_23 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 23 AND i.dato_23 = d.dato_04)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 23 AND i.dato_23 = d.dato_04)

        SELECT @vvc_des = des_col_23 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 24
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 24 AND i.dato_24 IS NOT NULL AND i.dato_24 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 24 AND i.dato_24 = d.dato_04)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 24 AND i.dato_24 = d.dato_04)

        SELECT @vvc_des = des_col_24 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

--*********
-- CAMPO 25
-- ********
IF EXISTS
(SELECT 1 FROM datos_ind_inf_soc d 
 INNER JOIN inserted i ON i.indice_inf_soc = d.indice_inf_soc
 WHERE d.num_col = 25 AND i.dato_25 IS NOT NULL AND i.dato_25 <> '')
Begin
    IF NOT EXISTS(SELECT 1 FROM inserted i INNER JOIN datos_ind_inf_soc d ON i.indice_inf_soc = d.indice_inf_soc
                  WHERE d.num_col = 25 AND i.dato_25 = d.dato_04)
    BEGIN
        SELECT TOP 1 @vch_indice = i.indice_inf_soc FROM inserted i
        WHERE NOT EXISTS
        (SELECT 1 FROM datos_ind_inf_soc d WHERE i.indice_inf_soc = d.indice_inf_soc AND d.num_col = 25 AND i.dato_25 = d.dato_04)

        SELECT @vvc_des = des_col_25 FROM indices_inf_soc WHERE indice_inf_soc = @vch_indice

        RAISERROR ('El dato digitado para %s no es válido, seleccione uno de la lista', 16, 1, @vvc_des)
        ROLLBACK TRANSACTION
        RETURN
    END 
End

/*Actualización de Historial_laboral*/ 
IF EXISTS 
(SELECT 1 FROM parametros_rh p
 INNER JOIN inserted i ON i.indice_inf_soc = p.alfanumerico
 WHERE p.compania = '0' AND p.parametro_rh = 'Inc_HL_ID')
BEGIN
-- Esta parte del programa se dejó igual... está diseñada para un solo registro, no para inserts o updates masivos
SELECT @i_flag_int    = 0,    
       @i_dato_int    = NULL,    
       @i_flag_char   = 0,    
       @i_dato_char   = NULL,    
       @i_flag_date   = 0,    
       @i_dato_date   = NULL,    
       @i_flag_number = 0,    
       @i_dato_number = NULL,    
       @i_fin = 0,    
       @i_status_char = 0,    
       @i_status_int  = 0,    
       @i_status_number = 0,    
       @i_status_date = 0,    
       @i_indice = ' '    
    
select @i_fecha = getdate()    
    
select @i_dato_01 = i.dato_01, @i_dato_02 = i.dato_02, @i_dato_03 = i.dato_03, @i_dato_04 = i.dato_04, @i_dato_05 = i.dato_05,       
       @i_dato_06 = i.dato_06, @i_dato_07 = i.dato_07, @i_dato_08 = i.dato_08, @i_dato_09 = i.dato_09, @i_dato_10 = i.dato_10,       
       @i_dato_11 = i.dato_11, @i_dato_12 = i.dato_12, @i_dato_13 = i.dato_13, @i_dato_14 = i.dato_14, @i_dato_15 = i.dato_15,      
       @i_dato_16 = i.dato_16, @i_dato_17 = i.dato_17, @i_dato_18 = i.dato_18, @i_dato_19 = i.dato_19, @i_dato_20 = i.dato_20,       
       @i_dato_21 = i.dato_21, @i_dato_22 = i.dato_22, @i_dato_23 = i.dato_23, @i_dato_24 = i.dato_24, @i_dato_25 = i.dato_25,       
       @i_trabajador = i.trabajador, @i_indice = i.indice_inf_soc    
from inserted i    
    
select @d_dato_01 = d.dato_01, @d_dato_02 = d.dato_02, @d_dato_03 = d.dato_03, @d_dato_04 = d.dato_04, @d_dato_05 = d.dato_05,       
       @d_dato_06 = d.dato_06, @d_dato_07 = d.dato_07, @d_dato_08 = d.dato_08, @d_dato_09 = d.dato_09, @d_dato_10 = d.dato_10,       
       @d_dato_11 = d.dato_11, @d_dato_12 = d.dato_12, @d_dato_13 = d.dato_13, @d_dato_14 = d.dato_14, @d_dato_15 = d.dato_15,      
       @d_dato_16 = d.dato_16, @d_dato_17 = d.dato_17, @d_dato_18 = d.dato_18, @d_dato_19 = d.dato_19, @d_dato_20 = d.dato_20,       
       @d_dato_21 = d.dato_21, @d_dato_22 = d.dato_22, @d_dato_23 = d.dato_23, @d_dato_24 = d.dato_24, @d_dato_25 = d.dato_25    
from deleted d    
    
WHILE @i_fin = 0     
BEGIN    
if @i_dato_char is null and @i_flag_char < 1     
begin    
   if @i_dato_01 is not null and @d_dato_01 is null    
      select @i_status_char = 1       
   else if @i_dato_01 is null and @d_dato_01 is not null    
           select @i_status_char = 2      
   else if @i_dato_01 is not null and @d_dato_01 is not null and @i_dato_01 <> @d_dato_01    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 1    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 1))    
      begin    
       select @i_dato_char = @i_dato_01    
       select @i_flag_char = 1    
      end    
end    
if @i_dato_char is null and @i_flag_char < 2     
begin    
   if @i_dato_02 is not null and @d_dato_02 is null    
      select @i_status_char = 1       
   else if @i_dato_02 is null and @d_dato_02 is not null    
           select @i_status_char = 2      
   else if @i_dato_02 is not null and @d_dato_02 is not null and @i_dato_02 <> @d_dato_02    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 2    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 2))    
      begin    
       select @i_dato_char = @i_dato_02    
       select @i_flag_char = 2    
      end    
end    
if @i_dato_char is null and @i_flag_char < 3     
begin    
   if @i_dato_03 is not null and @d_dato_03 is null    
      select @i_status_char = 1       
   else if @i_dato_03 is null and @d_dato_03 is not null    
           select @i_status_char = 2      
   else if @i_dato_03 is not null and @d_dato_03 is not null and @i_dato_03 <> @d_dato_03    
      select @i_status_char = 3    
      
if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 3    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 3))    
      begin    
       select @i_dato_char = @i_dato_03    
       select @i_flag_char = 3    
      end    
end    
if @i_dato_char is null and @i_flag_char < 4     
begin    
   if @i_dato_04 is not null and @d_dato_04 is null    
      select @i_status_char = 1       
   else if @i_dato_04 is null and @d_dato_04 is not null    
           select @i_status_char = 2      
   else if @i_dato_04 is not null and @d_dato_04 is not null and @i_dato_04 <> @d_dato_04    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 4    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 4))    
      begin    
       select @i_dato_char = @i_dato_04    
       select @i_flag_char = 4    
      end    
end    
if @i_dato_char is null and @i_flag_char < 5     
begin    
   if @i_dato_05 is not null and @d_dato_05 is null    
      select @i_status_char = 1       
   else if @i_dato_05 is null and @d_dato_05 is not null    
           select @i_status_char = 2      
   else if @i_dato_05 is not null and @d_dato_05 is not null and @i_dato_05 <> @d_dato_05    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 5    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 5))    
      begin    
       select @i_dato_char = @i_dato_05    
       select @i_flag_char = 5    
      end    
end    
if @i_dato_char is null and @i_flag_char < 6     
begin    
   if @i_dato_06 is not null and @d_dato_06 is null    
      select @i_status_char = 1       
   else if @i_dato_06 is null and @d_dato_06 is not null    
           select @i_status_char = 2      
   else if @i_dato_06 is not null and @d_dato_06 is not null and @i_dato_06 <> @d_dato_06    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 6    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
 and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 6))    
      begin    
       select @i_dato_char = @i_dato_06    
       select @i_flag_char = 6    
      end    
end    
if @i_dato_char is null and @i_flag_char < 7     
begin    
   if @i_dato_07 is not null and @d_dato_07 is null    
      select @i_status_char = 1       
   else if @i_dato_07 is null and @d_dato_07 is not null    
           select @i_status_char = 2      
   else if @i_dato_07 is not null and @d_dato_07 is not null and @i_dato_07 <> @d_dato_07    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 7    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 7))                  
      begin    
       select @i_dato_char = @i_dato_07    
       select @i_flag_char = 7    
      end    
end    
if @i_dato_char is null and @i_flag_char < 8     
begin    
   if @i_dato_08 is not null and @d_dato_08 is null    
      select @i_status_char = 1       
   else if @i_dato_08 is null and @d_dato_08 is not null    
           select @i_status_char = 2      
   else if @i_dato_08 is not null and @d_dato_08 is not null and @i_dato_08 <> @d_dato_08    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 8    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                           from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 8))                  
      begin    
       select @i_dato_char = @i_dato_08    
       select @i_flag_char = 8    
      end    
end    
if @i_dato_char is null and @i_flag_char < 9     
begin    
   if @i_dato_09 is not null and @d_dato_09 is null    
      select @i_status_char = 1       
   else if @i_dato_09 is null and @d_dato_09 is not null    
           select @i_status_char = 2      
   else if @i_dato_09 is not null and @d_dato_09 is not null and @i_dato_09 <> @d_dato_09    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 9    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 9))                  
      begin    
       select @i_dato_char = @i_dato_09    
       select @i_flag_char = 9    
      end    
end    
if @i_dato_char is null and @i_flag_char < 10     
begin    
   if @i_dato_10 is not null and @d_dato_10 is null    
      select @i_status_char = 1       
   else if @i_dato_10 is null and @d_dato_10 is not null    
           select @i_status_char = 2      
   else if @i_dato_10 is not null and @d_dato_10 is not null and @i_dato_10 <> @d_dato_10    
      select @i_status_char = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 10    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 10))                  
      begin    
       select @i_dato_char = @i_dato_10    
       select @i_flag_char = 10    
      end    
end    
if @i_dato_int is null and @i_flag_int < 1     
begin    
   if @i_dato_11 is not null and @d_dato_11 is null or @d_dato_11 = 0    
      select @i_status_int = 1       
   else if (@i_dato_11 is null or @i_dato_11 = 0) and @d_dato_11 is not null    
           select @i_status_int = 2      
   else if @i_dato_11 is not null and @d_dato_11 is not null and @i_dato_11 <> @d_dato_11    
      select @i_status_int = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 11    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 11))                  
      begin    
       select @i_dato_int = @i_dato_11    
       select @i_flag_int = 1    
      end    
end    
if @i_dato_int is null and @i_flag_int < 2     
begin    
   if @i_dato_12 is not null and @d_dato_12 is null or @d_dato_12 = 0    
      select @i_status_int = 1       
   else if (@i_dato_12 is null or @i_dato_12 = 0) and @d_dato_12 is not null    
           select @i_status_int = 2      
   else if @i_dato_12 is not null and @d_dato_12 is not null and @i_dato_12 <> @d_dato_12    
      select @i_status_int = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))     
                and rh.entero = 12    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 12))                  
      begin    
       select @i_dato_int = @i_dato_12    
       select @i_flag_int = 2    
      end    
end    
if @i_dato_int is null and @i_flag_int < 3     
begin    
   if @i_dato_13 is not null and @d_dato_13 is null or @d_dato_13 = 0    
      select @i_status_int = 1       
   else if (@i_dato_13 is null or @i_dato_13 = 0) and @d_dato_13 is not null    
           select @i_status_int = 2      
   else if @i_dato_13 is not null and @d_dato_13 is not null and @i_dato_13 <> @d_dato_13    
      select @i_status_int = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
         and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 13    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 13))                  
      begin    
       select @i_dato_int = @i_dato_13    
       select @i_flag_int = 3    
      end    
end    
if @i_dato_number is null and @i_flag_number < 1     
begin    
   if @i_dato_14 is not null and @d_dato_14 is null or @d_dato_14 = 0    
      select @i_status_number = 1       
   else if (@i_dato_14 is null or @i_dato_14 = 0) and @d_dato_14 is not null    
           select @i_status_number = 2      
   else if @i_dato_14 is not null and @d_dato_14 is not null and @i_dato_14 <> @d_dato_14    
      select @i_status_number = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 14    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 14))                  
      begin    
       select @i_dato_number = @i_dato_14    
       select @i_flag_number = 1    
end    
end    
if @i_dato_number is null and @i_flag_number < 2     
begin    
   if @i_dato_15 is not null and @d_dato_15 is null or @d_dato_15 = 0    
      select @i_status_number = 1       
   else if (@i_dato_15 is null or @i_dato_15 = 0) and @d_dato_15 is not null    
           select @i_status_number = 2      
   else if @i_dato_15 is not null and @d_dato_15 is not null and @i_dato_15 <> @d_dato_15    
      select @i_status_number = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 15    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 15))                  
      begin    
       select @i_dato_number = @i_dato_15    
       select @i_flag_number = 2    
      end    
end    
if @i_dato_number is null and @i_flag_number < 3     
begin    
   if @i_dato_16 is not null and @d_dato_16 is null or @d_dato_16 = 0    
      select @i_status_number = 1       
   else if (@i_dato_16 is null or @i_dato_16 = 0) and @d_dato_16 is not null    
           select @i_status_number = 2      
   else if @i_dato_16 is not null and @d_dato_16 is not null and @i_dato_16 <> @d_dato_16    
      select @i_status_number = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 16    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'                                 
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 16))                  
      begin    
       select @i_dato_number = @i_dato_16    
       select @i_flag_number = 3    
      end    
end    
if @i_dato_number is null and @i_flag_number < 4     
begin    
   if @i_dato_17 is not null and @d_dato_17 is null or @d_dato_17 = 0    
      select @i_status_number = 1       
   else if (@i_dato_17 is null or @i_dato_17 = 0) and @d_dato_17 is not null    
           select @i_status_number = 2      
   else if @i_dato_17 is not null and @d_dato_17 is not null and @i_dato_17 <> @d_dato_17    
      select @i_status_number = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 17    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 17))                  
      begin    
       select @i_dato_number = @i_dato_17    
       select @i_flag_number = 4    
      end    
end     
if @i_dato_number is null and @i_flag_number < 5    
begin    
   if @i_dato_18 is not null and @d_dato_18 is null or @d_dato_18 = 0    
     select @i_status_number = 1       
   else if (@i_dato_18 is null or @i_dato_18 = 0) and @d_dato_18 is not null    
           select @i_status_number = 2      
   else if @i_dato_18 is not null and @d_dato_18 is not null and @i_dato_18 <> @d_dato_18    
      select @i_status_number = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 18    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 18))                  
      begin    
       select @i_dato_number = @i_dato_18    
       select @i_flag_number = 5    
      end    
end    
if @i_dato_number is null and @i_flag_number < 6    
begin    
   if @i_dato_19 is not null and @d_dato_19 is null or @d_dato_19 = 0    
      select @i_status_number = 1       
   else if (@i_dato_19 is null or @i_dato_19 = 0) and @d_dato_19 is not null    
           select @i_status_number = 2      
   else if @i_dato_19 is not null and @d_dato_19 is not null and @i_dato_19 <> @d_dato_19    
      select @i_status_number = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 19    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 19))                  
      begin    
       select @i_dato_number = @i_dato_19    
       select @i_flag_number = 6    
      end    
end    
if @i_dato_number is null and @i_flag_number < 7    
begin    
   if @i_dato_20 is not null and @d_dato_20 is null or @d_dato_20 = 0    
      select @i_status_number = 1       
   else if (@i_dato_20 is null or @i_dato_20 = 0) and @d_dato_20 is not null    
           select @i_status_number = 2      
   else if @i_dato_20 is not null and @d_dato_20 is not null and @i_dato_20 <> @d_dato_20    
      select @i_status_number = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 20    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 20))                  
      begin    
       select @i_dato_number = @i_dato_20    
       select @i_flag_number = 7    
      end    
end    
if @i_dato_date is null and @i_flag_date < 1    
begin    
   if @i_dato_21 is not null and @d_dato_21 is null    
      select @i_status_date = 1       
   else if @i_dato_21 is null and @d_dato_21 is not null    
           select @i_status_date = 2      
   else if @i_dato_21 is not null and @d_dato_21 is not null and @i_dato_21 <> @d_dato_21    
      select @i_status_date = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 21    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 21))                  
      begin    
       select @i_dato_date = @i_dato_21    
       select @i_flag_date = 1    
      end    
end    
if @i_dato_date is null and @i_flag_date < 2    
begin    
   if @i_dato_22 is not null and @d_dato_22 is null    
      select @i_status_date = 1       
   else if @i_dato_22 is null and @d_dato_22 is not null    
           select @i_status_date = 2      
   else if @i_dato_22 is not null and @d_dato_22 is not null and @i_dato_22 <> @d_dato_22    
      select @i_status_date = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 22    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 22))                  
      begin    
       select @i_dato_date = @i_dato_22    
       select @i_flag_date = 2    
      end    
end    
if @i_dato_date is null and @i_flag_date < 3    
begin    
   if @i_dato_23 is not null and @d_dato_23 is null    
      select @i_status_date = 1       
   else if @i_dato_23 is null and @d_dato_23 is not null    
           select @i_status_date = 2      
   else if @i_dato_23 is not null and @d_dato_23 is not null and @i_dato_23 <> @d_dato_23    
      select @i_status_date = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 23    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 23))                  
      begin    
       select @i_dato_date = @i_dato_23    
       select @i_flag_date = 3    
      end    
end    
if @i_dato_date is null and @i_flag_date < 4    
begin    
   if @i_dato_24 is not null and @d_dato_24 is null    
      select @i_status_date = 1       
   else if @i_dato_24 is null and @d_dato_24 is not null    
           select @i_status_date = 2      
   else if @i_dato_24 is not null and @d_dato_24 is not null and @i_dato_24 <> @d_dato_24    
      select @i_status_date = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 24    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 24))                  
      begin    
       select @i_dato_date = @i_dato_24    
       select @i_flag_date = 4    
      end    
end    
if @i_dato_date is null and @i_flag_date < 5    
begin    
   if @i_dato_25 is not null and @d_dato_25 is null    
      select @i_status_date = 1       
   else if @i_dato_25 is null and @d_dato_25 is not null    
           select @i_status_date = 2      
   else if @i_dato_25 is not null and @d_dato_25 is not null and @i_dato_25 <> @d_dato_25    
      select @i_status_date = 3    
      
      if exists(select 1 from parametros_rh rh, inserted i    
                where rh.compania = '0'    
                and rh.parametro_rh = 'Inc_HL_ID'    
                and rh.alfanumerico = ltrim(rtrim(@i_indice))    
                and rh.entero = 25    
                and rh.secuencia_parametro = (select max(secuencia_parametro)    
                                              from parametros_rh    
                                              where compania = '0'    
                                              and parametro_rh = 'Inc_HL_ID'    
                                              and alfanumerico = ltrim(rtrim(@i_indice))    
                                              and entero = 25))                  
      begin    
       select @i_dato_date = @i_dato_25    
       select @i_flag_date = 5    
      end    
end    
  
    -- JCL NOV. 24/04 EVITA ERROR DE NO EXISTE LA REGLA DE HISTORIAL LABORAL    
    IF EXISTS(SELECT 1 FROM parametros_rh WHERE parametro_rh = 'Inc_HL_ID' AND alfanumerico = @i_indice AND compania = '0')     
    -- END JCL  
        if  @i_status_char = 2 or @i_status_int = 2 or @i_status_number = 2 or @i_status_date = 2     
             begin    
                 exec sp_alta_historial_laboral '0', @i_trabajador, 'ID', @i_indice, @i_fecha, NULL,    
                 'Baja dato inf. socioeconómica', @i_dato_int, @i_dato_number, @i_dato_date,     
                 @i_dato_char, NULL ,NULL,NULL    
             end    
    
   if @i_dato_char is not null or @i_dato_number is not null or @i_dato_date is not null or @i_dato_int is not null    
     begin    
      if @i_status_char = 1 or @i_status_int = 1 or @i_status_number = 1 or @i_status_date = 1     
      begin          
         exec sp_alta_historial_laboral '0', @i_trabajador, 'ID', @i_indice, @i_fecha, NULL,    
         'Alta dato inf. socioeconómica', @i_dato_int, @i_dato_number, @i_dato_date,    
         @i_dato_char, NULL     
      end        
      else if  @i_status_char = 3 or @i_status_int = 3 or @i_status_number = 3 or @i_status_date = 3     
        begin                  
       exec sp_alta_historial_laboral '0', @i_trabajador, 'ID', @i_indice, @i_fecha, NULL,    
                 'Cambio dato inf. socioeconómica',@i_dato_int, @i_dato_number, @i_dato_date,    
                 @i_dato_char, NULL     
        end        
    
      select @i_dato_char = NULL    
      select @i_dato_number = NULL    
      select @i_dato_int = NULL    
      select @i_dato_date = NULL       
      select @i_status_char = 0    
      select @i_status_number = 0    
      select @i_status_int = 0    
      select @i_status_date = 0    
     end    
   else    
      select @i_fin = 1    
    
end    
     
END -- Actualizar historial laboral
 
/* Evita cambio de llave */ 
 
if (update(trabajador) or update(indice_inf_soc) or update(secuencia)) and exists(SELECT * FROM deleted) 
BEGIN 
    RAISERROR ('El usuario ha intentado actualizar campo llave [inf_soc_trabajador]', 16, 1)
    ROLLBACK TRANSACTION 
    RETURN 
END 

go
DELETE criterios_valores_col WHERE campo = 'tipo_pension'
GO
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 1, 'Vejez'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 2, 'Sobrevivencia vitalicia riesgo común'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 3, 'Sobrevivencia temporal riesgo común'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 4, 'Sobrevivencia vitalicia riesgo común, cónyuge o compañera (o) menor de 30 años sin hijos'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 5, 'Sobrevivencia vitalicia por riesgo profesional'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 6, 'Sobrevivencia temporal riesgo profesional'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 7, 'Sobrevivencia temporal riesgo profesional cónyuge o compañera (o) menor de 30 años sin hijos'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 8, 'Invalidez riesgo común'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 9, 'Invalidez riesgo profesional'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 10, 'Jubilación'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 11, 'Jubilación para compartir'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 12, 'Sanción'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 13, 'Convencional'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 14, 'Convencional para compartir'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pension', 15, 'Gracia'
GO
DELETE criterios_valores_col WHERE campo = 'tipo_pensionado'
GO
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pensionado', 1, 'Régimen de prima media con tope 25 smlmv'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pensionado', 2, 'Régimen de prima media sin tope máximo'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pensionado', 3, 'Régimen de ahorro individual'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_pensionado', 4, 'Pensionado de Riesgos Profesionales'


GO
SET NOCOUNT ON
/*
delete rel_usu_ind_inf_soc where indice_inf_soc = 'PENSIONADO'
delete rel_ind_inf_soc_cias where indice_inf_soc = 'PENSIONADO'
delete datos_ind_inf_soc where indice_inf_soc = 'PENSIONADO'
delete indices_inf_soc where indice_inf_soc = 'PENSIONADO'
if object_id('AP_REL_INDICES_INF_SOC') is not null delete AP_REL_INDICES_INF_SOC where indice_inf_soc = 'PENSIONADO'
*/

IF NOT EXISTS(SELECT * FROM indices_inf_soc WHERE indice_inf_soc = 'PENSIONADO')
    INSERT INTO indices_inf_soc
    (indice_inf_soc, descripcion, abreviatura, tipo_indice, des_col_01, des_col_02, des_col_03, 
     des_col_04, des_col_05, des_col_06, des_col_07, des_col_08, des_col_09, des_col_10, 
     des_col_11, orden_columnas)
    SELECT 'PENSIONADO', 'FCO-Info Pensionados Planilla Unica', 'PENSIONADO', 1, 'Reside en Exterior', 'Tipo Id.Causante', 'Compartida', 
    'Pago Exterior', 'Pri.Ape.Causante', 'Pri.Nom.Causante', 'Seg.Ape.Causante', 'Seg.Nom.Causante', 'Tipo Pensión', 'Tipo Pensionado',
    'Nro.Id. Causante', 'dato_09*dato_03*dato_10*dato_04*dato_01*dato_02*dato_11*dato_05*dato_07*dato_06*dato_08'
go
IF NOT EXISTS(SELECT 1 FROM datos_ind_inf_soc WHERE indice_inf_soc = 'PENSIONADO')
Begin
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 1,1,'S'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 1,2,'N'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 2,1,'CC Cedula'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 2,2,'CE C.Extr.'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 2,3,'TI Tarj.Id'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 2,4,'RC Reg.Civ'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 2,5,'PA Passpor'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 3,1,'S'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 3,2,'N'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 4,1,'S'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 4,2,'N'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,1,'01 Vejez'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,2,'02 Sobrevivencia vitalicia riesgo común'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,3,'03 Sobrevivencia temporal riesgo común'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,4,'04 Sobrevivencia vitalicia riesgo común,'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,5,'05 Sobrevivencia vitalicia rc Conyuge'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,6,'06 Sobrevivencia temporal riesgo profesi'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,7,'07 Sobrevivencia temporal RP Conyuge'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,8,'08 Invalidez riesgo común'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,9,'09 Invalidez riesgo profesional'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,10,'10 Jubilación'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,11,'11 Jubilación para compartir'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,12,'12 Sanción'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,13,'13 Convencional'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,14,'14 Convencional para compartir'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 9,15,'15 Gracia'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 10,1,'01 Régimen de prima media con tope 25 sm'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 10,2,'02 Régimen de prima media sin tope máxim'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 10,3,'03 Régimen de ahorro individual'
    INSERT INTO datos_ind_inf_soc (indice_inf_soc, num_col, secuencia, dato_01) SELECT 'PENSIONADO', 10,4,'04 Pensionado de Riesgos Profesionales'
End
go
IF NOT EXISTS(SELECT 1 FROM rel_ind_inf_soc_cias WHERE indice_inf_soc = 'PENSIONADO')
    INSERT INTO rel_ind_inf_soc_cias (indice_inf_soc, compania) SELECT 'PENSIONADO', compania FROM companias
go
IF NOT EXISTS(SELECT 1 FROM rel_usu_ind_inf_soc WHERE indice_inf_soc = 'PENSIONADO')
    INSERT INTO rel_usu_ind_inf_soc (indice_inf_soc, usuario) SELECT 'PENSIONADO', 'adam'
go
print '***Importante*** No olvide autorizar a los usuarios adecuados para el indice PENSIONADO'
GO
IF OBJECT_ID('dbo.sp_fco_del_pi_pens_proc') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_del_pi_pens_proc 
GO
CREATE PROCEDURE dbo.sp_fco_del_pi_pens_proc
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_sucursal char(10)
)
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Baja de Procesos de Planilla Integrada Pensionados
-- Autor: Juan Carlos Leguizamon
-- Fecha: Julio 2005
-- Revisiones:
/*************************************************************************/
BEGIN
    IF NOT EXISTS(SELECT 1 FROM fco_pi_pens_proc
              WHERE compania = @pch_compania AND anio = @psi_anio
                AND mes = @pti_mes AND sucursal = ISNULL(@pch_sucursal, ''))
    BEGIN
        RAISERROR ('El registro a eliminar no existe', 16, 1)
        RETURN
    END

    DELETE fco_pi_pens_proc
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = ISNULL(@pch_sucursal, '')
END
GO
GRANT EXECUTE ON dbo.sp_fco_del_pi_pens_proc TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_ins_pi_pens_proc') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_ins_pi_pens_proc 
GO
CREATE PROCEDURE dbo.sp_fco_ins_pi_pens_proc
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_sucursal char(10) /* '0'. Todas, ''. Consolidado */
)
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Alta de Procesos de Planilla Integrada Pensionados
-- Autor: Juan Carlos Leguizamon
-- Fecha: Julio 2006
-- Revisiones:
/*************************************************************************/
BEGIN
    IF @pch_sucursal = '0'
    BEGIN
        INSERT INTO fco_pi_pens_proc (compania, anio, mes, sucursal, procesar)
        SELECT @pch_compania, @psi_anio, @pti_mes, s.sucursal, 0
        FROM vw_fco_sucursales s
        WHERE compania = @pch_compania
          AND ISNULL(s.autoliquida, 1) = 1
          AND NOT EXISTS
            (SELECT 1 FROM fco_pi_pens_proc x 
             WHERE x.compania = @pch_compania AND x.anio = @psi_anio AND x.mes = @pti_mes 
               AND x.sucursal = s.sucursal)
    END
    ELSE
    BEGIN
        IF EXISTS(SELECT 1 FROM fco_pi_pens_proc 
                  WHERE compania = @pch_compania AND anio = @psi_anio 
                    AND mes = @pti_mes AND sucursal = @pch_sucursal)
        BEGIN
            RAISERROR ('El registro a insertar en [fco_pi_pens_proc] ya existe', 16, 1)
            RETURN
        END
        INSERT INTO fco_pi_pens_proc (compania, anio, mes, sucursal, procesar)
        SELECT @pch_compania, @psi_anio, @pti_mes, @pch_sucursal, 0
    END
END
GO
GRANT EXECUTE ON dbo.sp_fco_ins_pi_pens_proc TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_pi_pens_proc') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_pi_pens_proc 
GO
CREATE PROCEDURE dbo.sp_fco_upd_pi_pens_proc
(
    @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 Pensionados
-- Autor: Juan Carlos Leguizamon
-- Fecha: Julio 2006
-- Revisiones:
/*************************************************************************/
BEGIN
    IF NOT EXISTS(SELECT 1 FROM fco_pi_pens_proc
              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_pi_pens_proc
    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_pi_pens_proc TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_pi_pens_det_afp') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_pi_pens_det_afp
GO
CREATE PROCEDURE dbo.sp_fco_upd_pi_pens_det_afp
(
    @pch_compania char(4), 
    @psi_anio smallint, 
    @pti_mes tinyint, 
    @pvc_sucursal varchar(10), 
    @pch_trabajador char(10), 
    @pvc_pens_ape1 varchar(20), 
    @pvc_pens_ape2 varchar(30), 
    @pvc_pens_nom1 varchar(20), 
    @pvc_pens_nom2 varchar(30), 
    @pch_pens_tdoc char(2), 
    @pvc_pens_id varchar(16), 
    @pti_tipo_pension tinyint, 
    @pch_pension_compartida char(1), 
    @pvc_caus_ape1 varchar(20), 
    @pvc_caus_ape2 varchar(30), 
    @pvc_caus_nom1 varchar(20), 
    @pvc_caus_nom2 varchar(30), 
    @pch_caus_tdoc char(2), 
    @pvc_caus_id varchar(16), 
    @pch_tipo_pensionado char(1), 
    @pch_residente_en_exterior char(1), 
    @pch_departamento char(2), 
    @pch_municipio char(3), 
    @pch_situa_en_exterior char(1), 
    @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_SUS char(1), 
    @pch_cod_AFP char(10),
    @pvc_cod_AFP_Tras varchar(6), 
    @pti_dias_AFP tinyint, 
    @pti_dias_FSP tinyint, 
    @pdc_mesada decimal(9), 
    @pdc_tarifa_AFP decimal(6,5),
    @pdc_aporte_AFP decimal(9),
    @pdc_voluntario_AFP decimal(9),
    @pdc_valor_no_retenido decimal(9),
    @pdc_aporte_FSP_sol decimal(9),
    @pdc_aporte_FSP_sub decimal(9),
    @pdc_tarifa_FSP decimal(6,5)
)
AS
BEGIN
    UPDATE fco_pi_pens_rt2
    SET pens_ape1 = IsNull(@pvc_pens_ape1, ''), 
        pens_ape2 = IsNull(@pvc_pens_ape2, ''),
        pens_nom1 = IsNull(@pvc_pens_nom1, ''),
        pens_nom2 = IsNull(@pvc_pens_nom2, ''),
        pens_tdoc = IsNull(@pch_pens_tdoc, ''),
        pens_id = IsNull(@pvc_pens_id, ''),
        tipo_pension = IsNull(@pti_tipo_pension, ''),
        pension_compartida = IsNull(@pch_pension_compartida, ''),
        caus_ape1 = IsNull(@pvc_caus_ape1, ''),
        caus_ape2 = IsNull(@pvc_caus_ape2, ''),
        caus_nom1 = IsNull(@pvc_caus_nom1, ''),
        caus_nom2 = IsNull(@pvc_caus_nom2, ''),
        caus_tdoc = IsNull(@pch_caus_tdoc, ''),
        caus_id = IsNull(@pvc_caus_id, ''),
        tipo_pensionado = IsNull(@pch_tipo_pensionado, ''),
        residente_en_exterior = IsNull(@pch_residente_en_exterior, ''),
        departamento = IsNull(@pch_departamento, ''),
        municipio = IsNull(@pch_municipio, ''),
        situa_en_exterior = IsNull(@pch_situa_en_exterior, ''),
        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_SUS = IsNull(@pch_nov_SUS, ''),
        cod_AFP = IsNull(@pch_cod_AFP, ''),
        cod_AFP_Tras = IsNull(@pvc_cod_AFP_Tras, ''),
        dias_AFP = IsNull(@pti_dias_AFP, ''),
        dias_FSP = IsNull(@pti_dias_FSP, ''),
        mesada = IsNull(@pdc_mesada, ''),
        tarifa_AFP = IsNull(@pdc_tarifa_AFP, ''),
        aporte_AFP = IsNull(@pdc_aporte_AFP, ''),
        voluntario_AFP = IsNull(@pdc_voluntario_AFP, ''),
        valor_no_retenido = IsNull(@pdc_valor_no_retenido, ''),
        aporte_FSP_sol = IsNull(@pdc_aporte_FSP_sol, ''),
        aporte_FSP_sub = IsNull(@pdc_aporte_FSP_sub, ''),
        tarifa_FSP = IsNull(@pdc_tarifa_FSP, '')
    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 dbo.sp_fco_upd_pi_pens_det_afp TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_pi_pens_det_ccf') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_pi_pens_det_ccf
GO
CREATE PROCEDURE dbo.sp_fco_upd_pi_pens_det_ccf
(
    @pch_compania char(4), 
    @psi_anio smallint, 
    @pti_mes tinyint, 
    @pvc_sucursal varchar(10), 
    @pch_trabajador char(10), 
    @pvc_pens_ape1 varchar(20), 
    @pvc_pens_ape2 varchar(30), 
    @pvc_pens_nom1 varchar(20), 
    @pvc_pens_nom2 varchar(30), 
    @pch_pens_tdoc char(2), 
    @pvc_pens_id varchar(16), 
    @pti_tipo_pension tinyint, 
    @pch_pension_compartida char(1), 
    @pvc_caus_ape1 varchar(20), 
    @pvc_caus_ape2 varchar(30), 
    @pvc_caus_nom1 varchar(20), 
    @pvc_caus_nom2 varchar(30), 
    @pch_caus_tdoc char(2), 
    @pvc_caus_id varchar(16), 
    @pch_tipo_pensionado char(1), 
    @pch_residente_en_exterior char(1), 
    @pch_departamento char(2), 
    @pch_municipio char(3), 
    @pch_situa_en_exterior char(1), 
    @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_SUS char(1), 
    @pch_cod_CCF char(10),
    @pti_dias_CCF tinyint,
    @pdc_mesada decimal(9), 
    @pdc_tarifa_CCF decimal(6,5),
    @pdc_aporte_CCF decimal(9)
)
AS
BEGIN
    UPDATE fco_pi_pens_rt2
    SET pens_ape1 = IsNull(@pvc_pens_ape1, ''), 
        pens_ape2 = IsNull(@pvc_pens_ape2, ''),
        pens_nom1 = IsNull(@pvc_pens_nom1, ''),
        pens_nom2 = IsNull(@pvc_pens_nom2, ''),
        pens_tdoc = IsNull(@pch_pens_tdoc, ''),
        pens_id = IsNull(@pvc_pens_id, ''),
        tipo_pension = IsNull(@pti_tipo_pension, 0),
        pension_compartida = IsNull(@pch_pension_compartida, ''),
        caus_ape1 = IsNull(@pvc_caus_ape1, ''),
        caus_ape2 = IsNull(@pvc_caus_ape2, ''),
        caus_nom1 = IsNull(@pvc_caus_nom1, ''),
        caus_nom2 = IsNull(@pvc_caus_nom2, ''),
        caus_tdoc = IsNull(@pch_caus_tdoc, ''),
        caus_id = IsNull(@pvc_caus_id, ''),
        tipo_pensionado = IsNull(@pch_tipo_pensionado, ''),
        residente_en_exterior = IsNull(@pch_residente_en_exterior, ''),
        departamento = IsNull(@pch_departamento, ''),
        municipio = IsNull(@pch_municipio, ''),
        situa_en_exterior = IsNull(@pch_situa_en_exterior, ''),
        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_SUS = IsNull(@pch_nov_SUS, ''),
        cod_CCF = IsNull(@pch_cod_CCF, ''),
        dias_CCF = IsNull(@pti_dias_CCF, 0),
        mesada = IsNull(@pdc_mesada, ''),
        tarifa_CCF = IsNull(@pdc_tarifa_CCF, 0), 
        aporte_CCF = IsNull(@pdc_aporte_CCF, 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 dbo.sp_fco_upd_pi_pens_det_ccf TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_pi_pens_det_eps') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_pi_pens_det_eps
GO
CREATE PROCEDURE dbo.sp_fco_upd_pi_pens_det_eps
(
    @pch_compania char(4), 
    @psi_anio smallint, 
    @pti_mes tinyint, 
    @pvc_sucursal varchar(10), 
    @pch_trabajador char(10), 
    @pvc_pens_ape1 varchar(20), 
    @pvc_pens_ape2 varchar(30), 
    @pvc_pens_nom1 varchar(20), 
    @pvc_pens_nom2 varchar(30), 
    @pch_pens_tdoc char(2), 
    @pvc_pens_id varchar(16), 
    @pti_tipo_pension tinyint, 
    @pch_pension_compartida char(1), 
    @pvc_caus_ape1 varchar(20), 
    @pvc_caus_ape2 varchar(30), 
    @pvc_caus_nom1 varchar(20), 
    @pvc_caus_nom2 varchar(30), 
    @pch_caus_tdoc char(2), 
    @pvc_caus_id varchar(16), 
    @pch_tipo_pensionado char(1), 
    @pch_residente_en_exterior char(1), 
    @pch_departamento char(2), 
    @pch_municipio char(3), 
    @pch_situa_en_exterior char(1), 
    @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_SUS char(1), 
    @pch_cod_EPS char(10), 
    @pvc_cod_EPS_Tras varchar(6), 
    @pti_dias_EPS tinyint, 
    @pdc_mesada decimal(9), 
    @pdc_tarifa_EPS decimal(6,5), 
    @pdc_aporte_EPS decimal(9),
    @pdc_UPC_adicional decimal(9)
)
AS
BEGIN
    UPDATE fco_pi_pens_rt2
    SET pens_ape1 = IsNull(@pvc_pens_ape1, ''), 
        pens_ape2 = IsNull(@pvc_pens_ape2, ''),
        pens_nom1 = IsNull(@pvc_pens_nom1, ''),
        pens_nom2 = IsNull(@pvc_pens_nom2, ''),
        pens_tdoc = IsNull(@pch_pens_tdoc, ''),
        pens_id = IsNull(@pvc_pens_id, ''),
        tipo_pension = IsNull(@pti_tipo_pension, ''),
        pension_compartida = IsNull(@pch_pension_compartida, ''),
        caus_ape1 = IsNull(@pvc_caus_ape1, ''),
        caus_ape2 = IsNull(@pvc_caus_ape2, ''),
        caus_nom1 = IsNull(@pvc_caus_nom1, ''),
        caus_nom2 = IsNull(@pvc_caus_nom2, ''),
        caus_tdoc = IsNull(@pch_caus_tdoc, ''),
        caus_id = IsNull(@pvc_caus_id, ''),
        tipo_pensionado = IsNull(@pch_tipo_pensionado, ''),
        residente_en_exterior = IsNull(@pch_residente_en_exterior, ''),
        departamento = IsNull(@pch_departamento, ''),
        municipio = IsNull(@pch_municipio, ''),
        situa_en_exterior = IsNull(@pch_situa_en_exterior, ''),
        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_SUS = IsNull(@pch_nov_SUS, ''),
        cod_EPS = IsNull(@pch_cod_EPS, ''),
        cod_EPS_Tras = IsNull(@pvc_cod_EPS_Tras, ''),
        dias_EPS = IsNull(@pti_dias_EPS, ''),
        mesada = IsNull(@pdc_mesada, ''),
        tarifa_EPS = IsNull(@pdc_tarifa_EPS, ''),
        aporte_EPS = IsNull(@pdc_aporte_EPS, ''),
        UPC_adicional = IsNull(@pdc_UPC_adicional, '')
    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 dbo.sp_fco_upd_pi_pens_det_eps TO PUBLIC
GO
-- ************************************************************************************************ --
-- Operación FCO5016 Archivo Planilla Integrada para Pensionados
-- ************************************************************************************************ --
IF NOT EXISTS(SELECT 1 FROM operaciones WHERE operacion = 'FCO5016')
BEGIN
    DELETE rel_oper_menus WHERE ejecuta_operacion = 'FCO5016';
    DELETE rel_oper_modulos WHERE operacion = 'FCO5016';
    DELETE operaciones WHERE operacion = 'FCO5016';
    DELETE aut_operaciones WHERE operacion = 'FCO5016';
    
    INSERT INTO operaciones (operacion, descripcion_ope, icono, tipo_operacion) 
    VALUES ('FCO5016', 'Generar Archivo Planilla Integrada (Pensionados)', 7, 1);
    
    INSERT INTO rel_oper_menus (modulo, menu, secuencia, tipo_llamada, ejecuta_menu, ejecuta_operacion) 
    SELECT 'F1', 50, IsNull(max(secuencia),0) + 1, 2, null, 'FCO5016' from rel_oper_menus WHERE modulo='F1' and menu = 50;
    
    INSERT INTO rel_oper_modulos (operacion, modulo)  VALUES ('FCO5016','F1');
    INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad) VALUES ('ADAM','FCO5016',4);
    INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad)
    SELECT usuario, 'FCO5016', nivel_seguridad FROM aut_operaciones  WHERE usuario <> 'ADAM' AND operacion = 'MF3020'
END
go

-- ************************************************************************************************ --
-- Operación FCO2096 Control Planilla Integrada Pensionados
-- ************************************************************************************************ --
IF NOT EXISTS(SELECT 1 FROM operaciones WHERE operacion = 'FCO2096')
BEGIN
    DELETE rel_oper_menus WHERE ejecuta_operacion = 'FCO2096';
    DELETE rel_oper_modulos WHERE operacion = 'FCO2096';
    DELETE operaciones WHERE operacion = 'FCO2096';
    DELETE aut_operaciones WHERE operacion = 'FCO2096';
    
    INSERT INTO operaciones (operacion, descripcion_ope, icono, tipo_operacion)  
    VALUES ('FCO2096', 'Control Planilla Integrada Pensionados', 2, 1);
    
    INSERT INTO rel_oper_menus (modulo, menu, secuencia, tipo_llamada, ejecuta_menu, ejecuta_operacion) 
    SELECT 'F1', 20, IsNull(max(secuencia),0) + 1, 2, null, 'FCO2096' from rel_oper_menus WHERE modulo='F1' and menu = 20;
    
    INSERT INTO rel_oper_modulos (operacion, modulo)  VALUES ('FCO2096','F1');
    
    INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad) VALUES ('ADAM','FCO2096',4);
    INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad)
    SELECT usuario, 'FCO2096', nivel_seguridad FROM aut_operaciones  WHERE usuario <> 'ADAM' AND operacion = 'MF2090'
END

go

IF OBJECT_ID('dbo.sp_fco_planilla_integrada_pens') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_planilla_integrada_pens
GO
CREATE PROCEDURE dbo.sp_fco_planilla_integrada_pens    
(    
    @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: Planilla Integrada para Pensionados
-- Autor: Juan Carlos Leguizamon    
-- Fecha: Julio 2006
-- Revisiones:    
/*************************************************************************/    
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    
        @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    
        @vch_agr_SUS char(3),      -- /* Suspensión */    
        @vch_agr_AVP_T char(3),    -- /* Aporte Voluntario (al Fondo de Pensiones) - Trabajador */     
        @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_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 */    
        @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 */  
        @vsi_FSP_Sol smallint,     -- /* Concepto para la subcuenta de solidaridad del FSP */ 
        @vsi_FSP_Sub smallint      -- /* Concepto para la subcuenta de subsistencia del FSP */  
  
    -- 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_AVP_T = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 13    
    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_SUS = 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_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 @vsi_FSP_Sol = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 45 
    SELECT @vsi_FSP_Sub = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 46 
  
    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_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 @vch_var_CCF = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'parafiscal' AND secuencia = 9    
          
    -- 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)    
    
    -- Proceso Principal        
    IF @pbi_regenerar = 1 OR NOT EXISTS(SELECT 1 FROM fco_pi_pens_rt1    
                                        WHERE compania = @pch_compania    
                                          AND anio = @psi_anio    
                                          AND mes = @pti_mes    
                                          AND (sucursal = @pch_sucursal OR @pch_sucursal = ''))    
    BEGIN /*1*/    
        /* Borrar datos de procesos anteriores */      
        DELETE fco_pi_pens_rt2
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
  
        DELETE fco_pi_pens_rt1    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
      
        /* Registro Tipo 1. Parte 1: DATOS GENERALES DEL APORTANTE */    
        INSERT INTO fco_pi_pens_rt1   
        (compania, anio, mes, sucursal, secuencia, razon_social, tipo_documento, nro_id, dv, forma_presentacion, 
         nombre_sucursal, periodo, periodo_salud, nro_radicacion, fecha_pago, nro_pensionados, valor_nomina, tipo_pagador, operador) 
        SELECT
            @pch_compania, @psi_anio, @pti_mes, @pch_sucursal,
            ISNULL((SELECT MAX(secuencia) + 1 FROM fco_pi_pens_rt1 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), ''),
            ISNULL(
                CASE WHEN LEN(ISNULL(dbo.fn_solonum(registro_fiscal), '')) = 0
                    THEN ''
                    ELSE LEFT(LEFT(dbo.fn_solonum(registro_fiscal), LEN(dbo.fn_solonum(registro_fiscal))-1), 16)
                END, ''),
            dv = ISNULL(RIGHT(dbo.fn_solonum(registro_fiscal), 1), ''),
            fp = CASE WHEN LTRIM(RTRIM(@pch_sucursal)) = '' THEN 'C' ELSE 'S' END,
            ns = ISNULL(suc.descripcion, ''),
            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(),
            np = 0, -- Todavia no se sabe
            vn = 0, -- Todavia no se sabe
            1, -- Tipo de Pagador
            operador = '00' -- Asignado por el Sistema
        FROM companias cias
        LEFT JOIN fco_cias_datos_adi cda ON cda.compania = cias.compania
        LEFT JOIN 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 */    
        /* RT2 Parte 1.  Seleccion de Trabajadores */    
        SELECT @vsi_random = FLOOR(RAND( (DATEPART(mm, GETDATE()) * 100000 )    
           + (DATEPART(ss, GETDATE()) * 1000 )    
           + DATEPART(ms, GETDATE()) ) * 32567) + 1    
      
        DELETE fco_pi_pens_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_pi_pens_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 = '99')
            ORDER BY CONVERT(decimal, dbo.fn_solonum(isnull(t.clave_unica, '0')))
            
            INSERT INTO fco_pi_pens_temp     
            (random, compania, trabajador, sucursal, relacion_laboral, fecha_ingreso, fecha_baja, clave_unica,    
             nombre, registro_fiscal, secuencia)  
            SELECT @vsi_random, * FROM #fco_pi_pens_temp1  
  
            DROP TABLE #fco_pi_pens_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_pi_pens_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 = '99')
            ORDER BY isnull(t.clave_unica, '0')
  
            INSERT INTO fco_pi_pens_temp     
            (random, compania, trabajador, sucursal, relacion_laboral, fecha_ingreso, fecha_baja, clave_unica,    
             nombre, registro_fiscal, secuencia)  
            SELECT @vsi_random, * FROM #fco_pi_pens_temp2  
      
            DROP TABLE #fco_pi_pens_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_pi_pens_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 = '99')
            ORDER BY t.nombre    
    
            INSERT INTO fco_pi_pens_temp  
            (random, compania, trabajador, sucursal, relacion_laboral, fecha_ingreso, fecha_baja, clave_unica,    
             nombre, registro_fiscal, secuencia)  
            SELECT @vsi_random, * FROM #fco_pi_pens_temp3  
      
            DROP TABLE #fco_pi_pens_temp3  
        END  
  
        SELECT @vsi_handicap = MIN(secuencia) FROM fco_pi_pens_temp WHERE random = @vsi_random            
        
        /* Datos Basicos por Trabajador */    
        INSERT INTO fco_pi_pens_rt2    
        (compania, anio, mes, sucursal, trabajador, secuencia, 
         pens_ape1, pens_ape2, pens_nom1, pens_nom2, pens_tdoc, pens_id, 
         tipo_pension, pension_compartida, 
         caus_ape1, caus_ape2, caus_nom1, caus_nom2, caus_tdoc, caus_id, 
         tipo_pensionado, residente_en_exterior, departamento, municipio, situa_en_exterior, 
         nov_ING, nov_RET, nov_TDE, nov_TAE, nov_TDP, nov_TAP, nov_VSP, nov_SUS, 
         cod_AFP, cod_AFP_Tras, cod_EPS, cod_EPS_Tras, cod_CCF, 
         dias_AFP, dias_FSP, dias_EPS, dias_CCF, mesada, 
         tarifa_AFP, aporte_AFP, voluntario_AFP, valor_no_retenido, aporte_FSP_sol, aporte_FSP_sub, tarifa_FSP, 
         tarifa_EPS, aporte_EPS, UPC_adicional, tarifa_CCF, aporte_CCF, origen)
        SELECT     
            @pch_compania, @psi_anio, @pti_mes, tg.sucursal, tg.trabajador, RIGHT('0000000' + RTRIM(tg.secuencia - @vsi_handicap + 1), 7),
            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),
            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,
            pen.tipo_pension, pen.compartida,
            pen.caus_ape1, pen.caus_ape2, pen.caus_nom1, pen.caus_nom2, pen.caus_tdoc, pen.caus_id, 
            pen.tipo_pensionado, pen.residente_en_exterior, 
            IsNull(mun.dpto_tra, IsNull(ccf.departamento, '')), IsNull(mun.muni_tra, IsNull(ccf.municipio, '')), pen.situa_en_exterior, 
            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 = '', SUS = '', 
            cod_AFP = ISNULL(AFP.dato, ''), cod_AFP_Tras = '', cod_EPS = ISNULL(EPS.dato, ''), cod_EPS_Tras = '', cod_CCF = ISNULL(ccf.ccf, ''),     
            dias_AFP = 0, dias_FSP = 0, dias_EPS = 0, dias_CCF = 0, 
            mesada = dbo.fn_fco_salario(tg.compania, tg.trabajador, @vch_periodo),   
            @vdc_tar_AFP, aporte_AFP = 0, voluntario_AFP = 0, valor_no_retenido = 0, aporte_FSP_sol = 0, aporte_FSP_sub = 0, tarifa_FSP = 0,
            @vdc_tar_EPS, aporte_EPS = 0, UPC_Adicional = 0, @vdc_tar_CCF, aporte_CCF = 0, 1
        FROM fco_pi_pens_temp tg    
        INNER JOIN vw_fco_info_pensionados pen ON pen.compania = tg.compania AND pen.trabajador = tg.trabajador  
        INNER JOIN vw_fco_ccf_trabajador ccf ON ccf.compania = tg.compania AND ccf.trabajador = tg.trabajador    
        LEFT JOIN vw_fco_muni_tra mun ON mun.compania = tg.compania AND mun.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_pi_pens_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_pi_pens_rt2  
        SET departamento = dpto_tra, municipio = muni_tra  
        FROM vw_fco_muni_tra x  
        WHERE fco_pi_pens_rt2.compania = @pch_compania AND fco_pi_pens_rt2.anio = @psi_anio AND fco_pi_pens_rt2.mes = @pti_mes   
          AND (fco_pi_pens_rt2.sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND fco_pi_pens_rt2.compania = x.compania  
          AND fco_pi_pens_rt2.trabajador = x.trabajador            
  
        /* RT2 Parte 3. 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_pi_pens_rt2    
        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_pi_pens_rt2.compania    
                        AND x.trabajador = fco_pi_pens_rt2.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_pi_pens_rt2    
        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_pi_pens_rt2.compania    
                        AND x.trabajador = fco_pi_pens_rt2.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
    
        /* Novedad TAE. RETIRO DE ESTA EPS (TRASLADO A OTRA EPS) */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.compania    
                        AND x.trabajador = fco_pi_pens_rt2.trabajador    
                        AND CONVERT(char(6), x.fecha_cambio, 112) = @vch_periodo)    
            
        /* Novedad TDP. INGRESO A ESTA AFP (TRASLADO DESDE OTRA AFP) */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.compania    
                        AND x.trabajador = fco_pi_pens_rt2.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
    
        /* Novedad TAP. RETIRO DE ESTA AFP (TRASLADO A OTRA AFP) */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.compania    
                        AND x.trabajador = fco_pi_pens_rt2.trabajador    
                        AND CONVERT(char(6), x.fecha_cambio, 112) = @vch_periodo)    
    
        /* Novedad VSP. VARIACION PERMANENTE DE SALARIO */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.compania    
                        AND x.trabajador = fco_pi_pens_rt2.trabajador    
                        AND CONVERT(char(6), x.fecha, 112) = @vch_periodo)    
                    
        /* Novedad SUS. SUSPENSIÓN TEMPORAL CONTRATO Y LICENCIA NO REMUNERADA */    
        UPDATE fco_pi_pens_rt2    
        SET nov_SUS = '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_SUS, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_pi_pens_rt2.trabajador AND x.tiempo <> 0)    
    
        /* Nueva AFP (Fondo de Pensiones al cual se traslada) */    
        UPDATE fco_pi_pens_rt2    
        SET cod_AFP_Tras = 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_pi_pens_rt2.compania = t.compania    
          AND fco_pi_pens_rt2.trabajador = t.trabajador    
          AND fco_pi_pens_rt2.compania = @pch_compania    
          AND fco_pi_pens_rt2.anio = @psi_anio     
          AND fco_pi_pens_rt2.mes = @pti_mes     
          AND (fco_pi_pens_rt2.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_pi_pens_rt2    
        SET cod_EPS_Tras = 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_pi_pens_rt2.compania = t.compania    
          AND fco_pi_pens_rt2.trabajador = t.trabajador    
          AND fco_pi_pens_rt2.compania = @pch_compania    
          AND fco_pi_pens_rt2.anio = @psi_anio     
          AND fco_pi_pens_rt2.mes = @pti_mes     
          AND (fco_pi_pens_rt2.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_pi_pens_rt2    
        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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
            
        /* Días cotizados a salud e IBC */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
           
        /* IBC caja de compensación */    
        IF ISNULL(@vti_tipo_IBC_CCF, 2) <> 0  
            UPDATE fco_pi_pens_rt2    
            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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
        ELSE  
            UPDATE fco_pi_pens_rt2    
            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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
            
        /* Aporte o Cotización Obligatoria a Pensión */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
            
        /* Aporte Voluntario del Trabajador a Pensión */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
              
        /* Aporte Fondo de Solidaridad Pensional */  
        UPDATE fco_pi_pens_rt2    
        SET aporte_FSP_sol =   
                (SELECT SUM(importe) FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_FSP_Sol, @psi_anio, @pti_mes) x    
                 WHERE x.trabajador = fco_pi_pens_rt2.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_FSP_Sol, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_pi_pens_rt2.trabajador AND x.importe <> 0)    
          
        UPDATE fco_pi_pens_rt2 
        SET aporte_FSP_sub =   
                (SELECT SUM(importe) FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_FSP_Sub, @psi_anio, @pti_mes) x    
                 WHERE x.trabajador = fco_pi_pens_rt2.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_FSP_Sub, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_pi_pens_rt2.trabajador AND x.importe <> 0)    
          
        /* Tarifa de FSP */
        UPDATE fco_pi_pens_rt2
        SET tarifa_FSP = dbo.fn_fco_tarifa_FSP(compania, trabajador, @psi_anio, @pti_mes, mesada, 1)
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND aporte_FSP_sol + aporte_FSP_sub + mesada > 0

        /* Valor no retenido por aportes voluntarios */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria a Salud */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
    
        /* UPC Adicional */    
        UPDATE fco_pi_pens_rt2    
        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_pi_pens_rt2.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_pi_pens_rt2.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_pi_pens_rt2    
                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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
        END    
        ELSE    
            UPDATE fco_pi_pens_rt2    
            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_pi_pens_rt2.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_pi_pens_rt2.trabajador AND x.importe <> 0)    
    
        /* Redondeos (IBC al múltiplo de mil más cercano, Aportes al múltiplo de cien más cercano) */    
        UPDATE fco_pi_pens_rt2    
        SET aporte_AFP = Round((aporte_AFP - 1)/100,0)*100,    
            voluntario_AFP = Round((voluntario_AFP - 1)/100,0)*100,    
            aporte_FSP_sol = Round((aporte_FSP_sol - 1)/100,0)*100,    
            aporte_FSP_sub = Round((aporte_FSP_sub - 1)/100,0)*100,    
            aporte_EPS = Round((aporte_EPS - 1)/100,0)*100
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                
        /* TOTAL DE LA NOMINA */    
        SELECT @vdc_nomina = SUM(IsNull(mesada, 0))  
        FROM fco_pi_pens_rt2  
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  

        UPDATE fco_pi_pens_rt1    
        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 = '')                  
  
        DELETE fco_pi_pens_rt2  
        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 = 0  
                        
        /* TOTAL DE EMPLEADOS */    
        SELECT @vsi_empleados = COUNT(*)    
        FROM fco_pi_pens_rt2    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
    
        UPDATE fco_pi_pens_rt1    
        SET nro_pensionados = 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_pi_pens_rt2  
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
        ORDER BY secuencia  
  
        UPDATE fco_pi_pens_rt2  
        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  
            
    END /*1*/    
END    
GO
GRANT EXECUTE ON dbo.sp_fco_planilla_integrada_pens TO PUBLIC
GO

IF NOT EXISTS (SELECT 1 FROM syscolumns sc INNER JOIN sysobjects so ON sc.id = so.id WHERE so.name = 'fdt_embargos' AND sc.name = 'porcentaje_aumento')
    ALTER TABLE fdt_embargos ADD porcentaje_aumento	tinyint NULL
GO
IF NOT EXISTS (SELECT 1 FROM syscolumns sc INNER JOIN sysobjects so ON sc.id = so.id WHERE so.name = 'fdt_embargos' AND sc.name = 'valor_aumento')
    ALTER TABLE fdt_embargos ADD valor_aumento decimal(14,2) NULL
GO
IF NOT EXISTS (SELECT 1 FROM syscolumns sc INNER JOIN sysobjects so ON sc.id = so.id WHERE so.name = 'fdt_embargos' AND sc.name = 'mes_aumento')
    ALTER TABLE fdt_embargos ADD mes_aumento tinyint NULL
GO
IF NOT EXISTS (SELECT 1 FROM syscolumns sc INNER JOIN sysobjects so ON sc.id = so.id WHERE so.name = 'fdt_embargos' AND sc.name = 'anio_desde')
    ALTER TABLE fdt_embargos ADD anio_desde integer NULL
GO
IF OBJECT_ID('dbo.fdt_hist_aum_emb') IS NOT NULL
drop table dbo.fdt_hist_aum_emb
go
CREATE TABLE dbo.fdt_hist_aum_emb
(
    compania            char(4) NOT NULL,
    trabajador          char(10) NOT NULL,
    concepto            smallint NOT NULL,
    secuencia           tinyint NOT NULL,
    id_calendario       integer NOT NULL,
    cuota_anterior      decimal(14,2)  NULL,
    cuota_nueva         decimal(14,2)  NULL,
    porcentaje_aum      decimal(14,2)  NULL,
    valor_aum           decimal(14,2)  NULL,
    tipo_nomina         char(2)        NULL,
    anio                smallint       NULL,
    periodo             smallint       NULL,
    CONSTRAINT PK_fdt_hist_aum_emb PRIMARY KEY NONCLUSTERED 
    (compania, trabajador, concepto, secuencia, id_calendario) 
)
ON [PRIMARY]
GO
GRANT ALL ON fdt_hist_aum_emb TO PUBLIC
GO
IF OBJECT_ID('dbo.fdt_embargos_tipo_nom') IS NOT NULL
    drop table dbo.fdt_embargos_tipo_nom
GO
CREATE TABLE dbo.fdt_embargos_tipo_nom
(
    compania            char(4) NOT NULL,
    trabajador          char(10) NOT NULL,
    concepto            smallint NOT NULL,
    secuencia           tinyint NOT NULL,
    tipo_nomina         char(4)  NOT NULL,
    CONSTRAINT PK_fdt_embargos_tipo_nom PRIMARY KEY NONCLUSTERED 
    (compania, trabajador, concepto, secuencia, tipo_nomina) 
)
ON [PRIMARY]
GO
GRANT ALL ON fdt_embargos_tipo_nom TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fdt_alta_emb_tipo_nom') IS NOT NULL
   DROP PROCEDURE dbo.sp_fdt_alta_emb_tipo_nom
GO
CREATE PROCEDURE dbo.sp_fdt_alta_emb_tipo_nom  
(  
    @pch_compania      char(4),  
    @pch_trabajador    char(10),  
    @psi_concepto      smallint,  
    @pti_secuencia     tinyint,  
    @pch_tipo_nom	   char(2),
    @pti_alta          tinyint
)  
/*********************************************************************/  
/*** Modulo:      Módulo Fiscal ADAM V.3 - Embargos                ***/  
/*** Descripcion: Crea o Actualiza los tipos de nomina del embargo ***/  
/*** Autor:   Laura A. Guzmán                                      ***/  
/*** Fecha:   Junio 28 de 2006                                     ***/  
/*** Motor:   SQL Server 7.0 Version interna: 1.00                 ***/  
/*********************************************************************/  
AS  
BEGIN  
    DELETE FROM fdt_embargos_tipo_nom
    WHERE compania = @pch_compania And   
    trabajador = @pch_trabajador And  
    concepto = @psi_concepto And  
    secuencia = @pti_secuencia and
    tipo_nomina = @pch_tipo_nom

    IF @pti_alta = 1
        INSERT INTO fdt_embargos_tipo_nom
            (compania,  
             trabajador,  
             concepto,  
             secuencia,  
             tipo_nomina)  
        VALUES  
            (@pch_compania,  
             @pch_trabajador,  
             @psi_concepto,  
             @pti_secuencia,  
             @pch_tipo_nom)

END  
GO
GRANT EXECUTE ON dbo.sp_fdt_alta_emb_tipo_nom TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fdt_aum_embargos_ns') IS NOT NULL
   DROP PROCEDURE dbo.sp_fdt_aum_embargos_ns
GO
CREATE PROCEDURE dbo.sp_fdt_aum_embargos_ns
(
    @pch_compania      char(4),
    @psi_id_calendario smallint
)
/*********************************************************************/
/*** Modulo:      Módulo Fiscal Colombiano - Embargos              ***/
/*** Descripcion: aumenta cuota fija de embargos                   ***/
/*** Autor:	  Laura A. Guzman M                                    ***/
/*** Fecha:	  Junio 29 de 2006                                     ***/
/*** Motor:	  SQL Server 2000	Version interna: 1.00              ***/
/*********************************************************************/
AS


DECLARE
    @vch_tipo_nom    char(2),
    @vsi_anio        smallint,
    @vsi_periodo     smallint,
    @vsi_mes         smallint

BEGIN
    SELECT
        @vch_tipo_nom = tipo_nomina, @vsi_anio = anio, @vsi_periodo = periodo, @vsi_mes = mes_acumular
    FROM
        calendario_procesos
    WHERE
        id_calendario = @psi_id_calendario


    INSERT INTO fdt_hist_aum_emb (compania, 
                                  trabajador, 
                                  concepto, 
                                  secuencia, 
                                  id_calendario,
                                  cuota_anterior,
                                  cuota_nueva,
                                  porcentaje_aum,
                                  valor_aum,
                                  tipo_nomina,
                                  anio,
                                  periodo)
    SELECT @pch_compania, a.trabajador, a.concepto, a.secuencia, @psi_id_calendario, a.cuota_fija, a.cuota_fija + (a.cuota_fija * (convert(decimal(5,2),b.dato) / 100)),
    convert(decimal(5,2),b.dato), 0, @vch_tipo_nom, @vsi_anio, @vsi_periodo
    FROM fdt_embargos a, fdt_parametros b
    WHERE a.compania = b.compania
    AND b.secuencia = a.porcentaje_aumento
    AND a.compania = @pch_compania
    AND a.situacion = 1
    AND a.porcentaje_aumento = b.secuencia
    AND b.parametro = 'otros'
    AND ISNULL(a.porcentaje_aumento,0) > 0
    AND a.mes_aumento = @vsi_mes
    AND a.anio_desde >= @vsi_anio


    INSERT INTO fdt_hist_aum_emb (compania, 
                                  trabajador, 
                                  concepto, 
                                  secuencia, 
                                  id_calendario,
                                  cuota_anterior,
                                  cuota_nueva,
                                  porcentaje_aum,
                                  valor_aum,
                                  tipo_nomina,
                                  anio,
                                  periodo)
    SELECT @pch_compania, a.trabajador, a.concepto, a.secuencia, @psi_id_calendario, a.cuota_fija, a.cuota_fija + a.valor_aumento,
    0, a.valor_aumento, @vch_tipo_nom, @vsi_anio, @vsi_periodo
    FROM fdt_embargos a, fdt_parametros b
    WHERE a.compania = b.compania
    AND b.secuencia = a.porcentaje_aumento
    AND a.compania = @pch_compania
    AND a.situacion = 1
    AND a.porcentaje_aumento = b.secuencia
    AND b.parametro = 'otros'
    AND ISNULL(a.valor_aumento,0) > 0
    AND a.mes_aumento = @vsi_mes
    AND a.anio_desde >= @vsi_anio

    UPDATE
        fdt_embargos
    SET
        cuota_fija = cuota_nueva
    FROM
        fdt_hist_aum_emb a
    WHERE
        a.compania = fdt_embargos.compania And
        a.trabajador = fdt_embargos.trabajador And
        a.concepto = fdt_embargos.concepto And
        a.secuencia = fdt_embargos.secuencia And
        a.id_calendario = @psi_id_calendario And
        fdt_embargos.situacion = 1

END
GO
GRANT EXECUTE ON dbo.sp_fdt_aum_embargos_ns TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fdt_rea_aum_emb_ns') IS NOT NULL
   DROP PROCEDURE dbo.sp_fdt_rea_aum_emb_ns
GO
CREATE PROCEDURE dbo.sp_fdt_rea_aum_emb_ns
(
    @pch_compania      char(4),
    @psi_id_calendario smallint
)
/*********************************************************************/
/*** Modulo:      Módulo Fiscal Colombiano - Embargos              ***/
/*** Descripcion: aumenta cuota fija de embargos                   ***/
/*** Autor:	  Laura A. Guzman M                                    ***/
/*** Fecha:	  Junio 29 de 2006                                     ***/
/*** Motor:	  SQL Server 2000	Version interna: 1.00              ***/
/*********************************************************************/
AS
BEGIN
    UPDATE
        fdt_embargos
    SET
        cuota_fija = cuota_anterior
    FROM
        fdt_hist_aum_emb a
    WHERE
        a.compania = fdt_embargos.compania And
        a.trabajador = fdt_embargos.trabajador And
        a.concepto = fdt_embargos.concepto And
        a.secuencia = fdt_embargos.secuencia And
        fdt_embargos.compania = @pch_compania And
        a.id_calendario = @psi_id_calendario 

    DELETE
        fdt_hist_aum_emb
    WHERE
        compania = @pch_compania And
        id_calendario = @psi_id_calendario
    

END
GO
GRANT EXECUTE ON dbo.sp_fdt_rea_aum_emb_ns TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fdt_crea_embargo') IS NOT NULL
   DROP PROCEDURE dbo.sp_fdt_crea_embargo
GO
CREATE PROCEDURE dbo.sp_fdt_crea_embargo  
(  
    @pch_compania      char(4),  
    @pch_trabajador    char(10),  
    @psi_concepto      smallint,  
    @pti_secuencia     tinyint,  
    @pdt_fecha_embargo smalldatetime,  
    @pdc_oficina       decimal(6,0),  
    @pti_clase         tinyint,  
    @pvc_expediente    varchar(10),  
    @pdc_juzgado       decimal(12,0),  
    @pti_banco         tinyint,  
    @pdc_cuenta        decimal(12,0),  
    @pti_tipo_id_dem   tinyint,  
    @pdc_id_demandante decimal(11,0),  
    @pvc_apellidos     varchar(20),  
    @pvc_nombres       varchar(20),  
    @pch_agr_conceptos char(3),  
    @psi_cnc_base      smallint,  
    @pti_quinta_parte  tinyint,  
    @pdc_monto_total   decimal(14,2),  
    @pdc_porcentaje    decimal(5,2),  
    @pdc_cuota_fija    decimal(14,2),  
    @pdc_saldo_actual  decimal(14,2)
--agregado por DCRP Agosto 22/2003
    ,@pch_ofOrigen	char(4)
    ,@pch_ofDestino	char(4)
    ,@pch_ciudad_pago   char(2)  
    ,@pti_porcentaje_aum tinyint
    ,@pti_valor_aum	decimal(14,2)
    ,@pti_mes_aum   tinyint
    ,@pin_anio_desde	integer
)  
/*********************************************************************/  
/*** Modulo:      Módulo Fiscal ADAM V.3 - Embargos                ***/  
/*** Descripcion: Crea o Actualiza el embargo para el trabajador   ***/  
/*** Autor:   Juan Carlos Leguizamon                           ***/  
/*** Fecha:   Abril 22 de 2002                                 ***/  
/*** Motor:   SQL Server 7.0 Version interna: 1.00      ***/  
/*********************************************************************/  
AS  
BEGIN  
    IF NOT EXISTS(SELECT 1 FROM fdt_embargos  
                  WHERE compania = @pch_compania And   
                        trabajador = @pch_trabajador And  
                        concepto = @psi_concepto And  
                        secuencia = @pti_secuencia)  
    BEGIN  
        INSERT INTO fdt_embargos  
            (compania,  
             trabajador,  
             concepto,  
             secuencia,  
             fecha_alta,  
             situacion,  
             consecutivo_oficina,  
             oficina_origen,  
             oficina_destino,  
             clase_deposito,  
             numero_expediente,  
             codigo_juzgado,  
             banco,  
             cuenta,  
             tipo_id_demandante,  
             id_demandante,  
             apellido_demandante,  
             nombre_demandante,  
             agr_conceptos_base,  
             concepto_base,  
             quinta_parte,  
             monto_total,  
             saldo_actual,  
             porcentaje,  
             cuota_fija,
	         ciudad_pago,
	         porcentaje_aumento,
             valor_aumento,
             mes_aumento,
             anio_desde)  
        VALUES  
            (@pch_compania,  
             @pch_trabajador,  
             @psi_concepto,  
             @pti_secuencia,  
             @pdt_fecha_embargo,  
             1,  
             @pdc_oficina,  
             @pch_ofOrigen, --'0010',  
             @pch_ofDestino, --'0010',  
             @pti_clase,  
             @pvc_expediente,  
             @pdc_juzgado,  
             @pti_banco,  
             @pdc_cuenta,  
             @pti_tipo_id_dem,  
             @pdc_id_demandante,  
             @pvc_apellidos,  
             @pvc_nombres,  
             @pch_agr_conceptos,  
             @psi_cnc_base,  
             @pti_quinta_parte,  
             @pdc_monto_total,  
             @pdc_monto_total,  
             @pdc_porcentaje,  
             @pdc_cuota_fija,
	         @pch_ciudad_pago,
             @pti_porcentaje_aum,
	         @pti_valor_aum,
             @pti_mes_aum,
             @pin_anio_desde)  
    END  
    ELSE  
    BEGIN  
        UPDATE fdt_embargos  
        SET  fecha_alta = @pdt_fecha_embargo,  
             consecutivo_oficina = @pdc_oficina,  
             clase_deposito = @pti_clase,  
             numero_expediente = @pvc_expediente,  
             codigo_juzgado = @pdc_juzgado,  
             banco = @pti_banco,  
             cuenta = @pdc_cuenta,  
             tipo_id_demandante = @pti_tipo_id_dem,  
             id_demandante = @pdc_id_demandante,  
             apellido_demandante = @pvc_apellidos,  
             nombre_demandante = @pvc_nombres,  
             agr_conceptos_base = @pch_agr_conceptos,  
             concepto_base = @psi_cnc_base,  
             quinta_parte = @pti_quinta_parte,   
             monto_total = @pdc_monto_total,  
             porcentaje = @pdc_porcentaje,  
             cuota_fija = @pdc_cuota_fija,  
             saldo_actual = @pdc_saldo_actual,
	         oficina_origen = @pch_ofOrigen,  --agregado DCRP Agosto21/2003
             oficina_destino = @pch_ofDestino,
             ciudad_pago = @pch_ciudad_pago,
	         porcentaje_aumento = @pti_porcentaje_aum,
	         valor_aumento = @pti_valor_aum,
             mes_aumento = @pti_mes_aum,
             anio_desde = @pin_anio_desde
      WHERE  
            compania = @pch_compania And  
            trabajador = @pch_trabajador And  
            concepto = @psi_concepto And  
            secuencia = @pti_secuencia  
    END  

    UPDATE fdt_embargos SET cuenta = null WHERE cuenta = 0
END  
GO
GRANT EXECUTE ON dbo.sp_fdt_crea_embargo TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fdt_incorpora_embargos_ni') IS NOT NULL
   DROP PROCEDURE dbo.sp_fdt_incorpora_embargos_ni
GO
CREATE PROCEDURE dbo.sp_fdt_incorpora_embargos_ni
(
    @pch_compania           	char(4)     	= NULL, 
    @pch_tipo_nomina        	char(2)     	= NULL,
    @psi_anio_acumular      	smallint    	= 0, 
    @pti_mes_acumular       	tinyint    	= 0,
    @psi_numero_liquidacion 	smallint 	= 0, 
    @pch_trabajador		char(10)    	= NULL,
    @pdt_fecha_liquidacion	smalldatetime	= NULL,
    @pch_usuario            	char(30)    	= NULL,
    @pdt_fecha_hoy		smalldatetime
)
/*********************************************************************/
/*** Modulo:      Modulo Fiscal Embargos                           ***/
/*** Descripcion: Incorpora embargos a la liquidación              ***/
/*** Autor:	  Juan Carlos Leguizamon                           ***/
/*** Fecha:	  Junio 14 de 2002                                 ***/
/*** Motor:	  SQL Server 7.0	Version interna: 1.00      ***/
/*********************************************************************/
AS
DECLARE 
    @cch_trabajador    char(10),
    @csi_concepto      smallint,
    @cti_secuencia     tinyint,
    @cch_agr_base      char(3),
    @csi_cnc_base smallint,
    @cti_quinta_parte  tinyint,
    @cdc_monto_total   decimal(14,2),
    @cdc_saldo_actual  decimal(14,2),
    @cdc_porcentaje    decimal(5,2),
    @cdc_cuota_fija    decimal(14,2),
    @vdc_factor_01     decimal(15,6),
    @vch_referencia    char(10),
    @vch_referencia2   char(10)

BEGIN
    /* Eliminar las transacciones ya generadas por este incorpora */
    DELETE
        liquidaciones_det
    WHERE
        compania = @pch_compania And
        tipo_nomina = @pch_tipo_nomina And
        anio_acumular = @psi_anio_acumular And
        mes_acumular = @pti_mes_acumular And
        numero_liquidacion = @psi_numero_liquidacion And
        origen_transaccion = 9 And
        (
         (trabajador = @pch_trabajador And IsNull(LTrim(RTrim(@pch_trabajador)), '') <> '') OR
         (IsNull(LTrim(RTrim(@pch_trabajador)), '') = '')
        )

    /* Recorrer los embargos activos */
    DECLARE cr_embargos CURSOR FOR
    SELECT
        e.trabajador, e.concepto, e.secuencia, e.agr_conceptos_base, 
        IsNull(e.concepto_base,0), IsNull(e.quinta_parte,0), 
        IsNull(e.monto_total,0), IsNull(e.saldo_actual,0),
        IsNull(e.porcentaje,0), IsNull(e.cuota_fija,0)
    FROM fdt_embargos e
    INNER JOIN trabajadores_grales tg ON e.compania = tg.compania And e.trabajador = tg.trabajador AND tg.sit_trabajador = 1
    INNER JOIN rel_conc_tipo_nomina rctn ON rctn.compania = e.compania AND rctn.concepto = e.concepto AND rctn.tipo_nomina = @pch_tipo_nomina
    INNER JOIN fdt_embargos_tipo_nom fetn ON fetn.compania = e.compania AND fetn.trabajador = e.trabajador AND fetn.concepto = e.concepto AND fetn.secuencia = e.secuencia AND fetn.tipo_nomina = @pch_tipo_nomina  
    WHERE
        e.compania = @pch_compania And
        e.situacion = 1 And
        (
         (LTrim(RTrim(tg.trabajador)) = LTrim(RTrim(@pch_trabajador)) And IsNull(LTrim(RTrim(@pch_trabajador)), '') <> '') OR
         (IsNull(LTrim(RTrim(@pch_trabajador)), '') = '' And 
          tg.trabajador in (SELECT trabajador FROM liquidaciones_enc 
                            WHERE compania = @pch_compania And
                                  numero_liquidacion = @psi_numero_liquidacion))
        )

    OPEN cr_embargos

    FETCH cr_embargos
    INTO @cch_trabajador, @csi_concepto, @cti_secuencia, @cch_agr_base, @csi_cnc_base,
         @cti_quinta_parte, @cdc_monto_total, @cdc_saldo_actual, @cdc_porcentaje, @cdc_cuota_fija

    WHILE @@FETCH_STATUS = 0 
    BEGIN
        IF (@cdc_monto_total + @cdc_saldo_actual > 0) OR (@cdc_monto_total = 0)
        BEGIN
            /* factor_01 */
            IF @cdc_monto_total + @cdc_saldo_actual > 0
	BEGIN
                IF @cdc_saldo_actual - @cdc_cuota_fija > 0
                    SET @vdc_factor_01 = @cdc_cuota_fija
                ELSE
                    SET @vdc_factor_01 = @cdc_saldo_actual
	END
	ELSE
                    SET @vdc_factor_01 = @cdc_cuota_fija


            /* referencias */                        
            IF @csi_cnc_base > 0
                SELECT @vch_referencia = Convert(varchar, @csi_cnc_base),
                       @vch_referencia2 = 'C'
            ELSE
                SELECT @vch_referencia = @cch_agr_base,
                       @vch_referencia2 = 'A'
            
        EXEC sp_alta_liquidaciones_det
            @pch_compania,
            @pch_tipo_nomina,
            @psi_anio_acumular,
            @pti_mes_acumular,
            @psi_numero_liquidacion,
            @csi_concepto,
            @cch_trabajador,
            @vch_referencia,    /* referencia */
            null,    		/* secuencia */
            @vch_referencia2,	/* referencia2 */
            @pdt_fecha_hoy,	/* fecha */
            @pdt_fecha_hoy,    	/* fecha2*/
            @cdc_porcentaje,	/* tiempo */
            @vdc_factor_01,     /* factor_01 */
            @cti_secuencia, 	/* factor_02 */
            @cti_quinta_parte,  /* factor_03 */
            0,                  /* importe_reportado */
            0,       		/* importe */
            null,    		/* turno_trn */
            null,    		/* puesto_trn */
            null,    		/* agrupacion_01_trn */
            null,    		/* dato_01_trn */
            null,    		/* agrupacion_02_trn */
            null,    		/* dato_02_trn */
            null,    		/* agrupacion_03_trn */
            null,    		/* dato_03_trn */
            null,    		/* agrupacion_04_trn */
            null,    		/* dato_04_trn */
            null,               /* coleccion_1 */
            null,               /* coleccion_2 */
            null,               /* coleccion_2 */
            9,    		/* origen_transaccion */
            @pch_usuario, 	/* usuario_registro */
            @pdt_fecha_hoy,	/* fecha_registro */
            null,    		/* usuario_proceso */
            null,		/* fecha_proceso */
            null,    		/* usuario_aplico */
            null,    		/* fecha_aplico */
            1    		/* sit_transaccion */

        END /* IF (@cdc_monto_total + @cdc_saldo_actual > 0) OR (@cdc_monto_total = 0) */

        FETCH cr_embargos
        INTO @cch_trabajador, @csi_concepto, @cti_secuencia, @cch_agr_base, @csi_cnc_base,
             @cti_quinta_parte, @cdc_monto_total, @cdc_saldo_actual, @cdc_porcentaje, @cdc_cuota_fija

    END /* WHILE @@FETCH_STATUS = 0 */

    CLOSE cr_embargos
    DEALLOCATE cr_embargos
END
GO
GRANT EXECUTE ON dbo.sp_fdt_incorpora_embargos_ni TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fdt_incorpora_embargos_ns') IS NOT NULL
   DROP PROCEDURE dbo.sp_fdt_incorpora_embargos_ns
GO
CREATE PROCEDURE dbo.sp_fdt_incorpora_embargos_ns  
(  
    @pch_compania        char(4),  
    @psi_id_calendario   smallint,  
    @pch_clase_nomina    char(2),  
    @pch_trabajador      char(10),  
    @pvc_usuario         varchar(30),  
    @pdt_fecha_hoy       smalldatetime  
)  
AS  
/*********************************************************************/  
/*** Modulo:      Modulo Fiscal ADAM v3 - Embargos                 ***/  
/*** Descripcion: Incorpora embargos a la nómina                   ***/  
/*** Autor:   Juan Carlos Leguizamon                               ***/  
/*** Fecha:   Abril 23 de 2002                                     ***/  
-- Revisiones:   
-- Sept.01/04.   
-- Sept.02/04. Incorporar el saldo actual en el factor_03 (implica   
-- variable para que la política halle si debe utilizar "quinta parte"  
-- Junio 29/06.  Tener en cuenta nueva tabla fdt_embargos_tipo_nom ***/  
/*********************************************************************/  
DECLARE   
    @cch_trabajador    char(10),  
    @csi_concepto      smallint,  
    @cti_secuencia     tinyint,  
    @cch_agr_base      char(3),  
    @csi_cnc_base      smallint,  
    @cti_quinta_parte  tinyint,  
    @cdc_monto_total   decimal(14,2),  
    @cdc_saldo_actual  decimal(14,2),  
    @cdc_porcentaje    decimal(5,2),  
    @cdc_cuota_fija    decimal(14,2),  
    @vdc_factor_01     decimal(15,6),  
    @vch_referencia    char(10),  
    @vch_referencia2   char(10),  
    @vch_tipo_nomina   char(2)  
BEGIN  
    IF EXISTS (SELECT 1 FROM cal_proc_cias WHERE compania = @pch_compania AND id_calendario = @psi_id_calendario AND sit_periodo = 2)  
    BEGIN  
        RAISERROR ('El periodo está cerrado', 16, 1)  
        RETURN  
    END  
  
    /* Hallar el Tipo de Nómina */  
    SELECT @vch_tipo_nomina = tipo_nomina FROM calendario_procesos  
    WHERE id_calendario = @psi_id_calendario  
  
    /* Eliminar las transacciones ya generadas por este incorpora */  
    DELETE  
        transacciones_ns  
    WHERE  
        compania = @pch_compania And  
        clase_nomina = @pch_clase_nomina And  
        id_calendario = @psi_id_calendario And  
        origen_transaccion = 9 And  
        (  
         (trabajador = @pch_trabajador And IsNull(LTrim(RTrim(@pch_trabajador)), '') <> '') OR  
         (IsNull(LTrim(RTrim(@pch_trabajador)), '') = '')  
        )  
  
    /* Recorrer los embargos activos */  
    DECLARE cr_embargos CURSOR FOR  
    SELECT  
        e.trabajador, e.concepto, e.secuencia, e.agr_conceptos_base,   
        IsNull(e.concepto_base,0), IsNull(e.quinta_parte,0),   
        IsNull(e.monto_total,0), IsNull(e.saldo_actual,0),  
        IsNull(e.porcentaje,0), IsNull(e.cuota_fija,0)  
    FROM fdt_embargos e  
    INNER JOIN trabajadores_grales tg ON e.compania = tg.compania And e.trabajador = tg.trabajador AND tg.sit_trabajador = 1  
    INNER JOIN rel_conc_tipo_nomina rctn ON rctn.compania = e.compania AND rctn.concepto = e.concepto AND rctn.tipo_nomina = @vch_tipo_nomina  
    INNER JOIN fdt_embargos_tipo_nom fetn ON fetn.compania = e.compania AND fetn.trabajador = e.trabajador AND fetn.concepto = e.concepto AND fetn.secuencia = e.secuencia AND fetn.tipo_nomina = @vch_tipo_nomina  
    WHERE  
        e.compania = @pch_compania And  
        tg.clase_nomina = @pch_clase_nomina And  
        e.situacion = 1 And  
        (  
         (e.trabajador = @pch_trabajador And IsNull(LTrim(RTrim(@pch_trabajador)), '') <> '') OR  
         (IsNull(LTrim(RTrim(@pch_trabajador)), '') = '')  
        )   
  
    OPEN cr_embargos  
  
    FETCH cr_embargos  
    INTO @cch_trabajador, @csi_concepto, @cti_secuencia, @cch_agr_base, @csi_cnc_base,  
         @cti_quinta_parte, @cdc_monto_total, @cdc_saldo_actual, @cdc_porcentaje, @cdc_cuota_fija  
  
    WHILE @@FETCH_STATUS = 0   
    BEGIN  
        IF (@cdc_monto_total + @cdc_saldo_actual > 0) OR (@cdc_monto_total = 0)  
        BEGIN  
            /* factor_01 */  
            IF @cdc_monto_total + @cdc_saldo_actual > 0  
     BEGIN  
                IF @cdc_saldo_actual - @cdc_cuota_fija > 0  
                    SET @vdc_factor_01 = @cdc_cuota_fija  
                ELSE  
                    SET @vdc_factor_01 = @cdc_saldo_actual  
     END  
     ELSE  
                    SET @vdc_factor_01 = @cdc_cuota_fija  
  
  
        /* referencias */                          
        IF @csi_cnc_base > 0  
            SELECT @vch_referencia = Convert(varchar, @csi_cnc_base),  
                   @vch_referencia2 = 'C'  
        ELSE  
            SELECT @vch_referencia = @cch_agr_base,  
                   @vch_referencia2 = 'A'  
  
        SET @vch_referencia = ISNULL(@vch_referencia, '')  
          
        EXEC sp_alta_transacciones_ns  
            @pch_compania,  
            @pch_clase_nomina,  
            @psi_id_calendario,  
            @csi_concepto,  
            @cch_trabajador,  
            @vch_referencia,   /* referencia */  
            NULL,      /* secuencia */  
            @vch_referencia2, /* referencia2 */  
            @pdt_fecha_hoy, /* fecha */  
            @pdt_fecha_hoy,     /* fecha2*/  
            @cdc_porcentaje, /* tiempo */  
            @vdc_factor_01,    /* factor_01 */  
            @cti_secuencia,  /* factor_02 */  
            @cti_quinta_parte,    /* factor_03 */  
            0,         /* importe_reportado */  
            0,         /* importe */  
            null,      /* turno_trn */  
            null,      /* puesto_trn */  
            null,      /* agrupacion_01_trn */  
            null,      /* dato_01_trn */  
            null,      /* agrupacion_02_trn */  
            null,      /* dato_02_trn */  
            null,      /* agrupacion_03_trn */  
            null,      /* dato_03_trn */  
            null,      /* agrupacion_04_trn */  
            null,      /* dato_04_trn */  
            9,      /* origen_transaccion */  
            @pvc_usuario,  /* usuario_registro */  
            @pdt_fecha_hoy, /* fecha_registro */  
            null,      /* usuario_proceso */  
            null,  /* fecha_proceso */  
            null,      /* usuario_cambio */  
            null,      /* fecha_cambio */  
            1,      /* sit_transaccion */  
            1          /* checa bajas del periodo */  
  
        END /* IF (@cdc_monto_total + @cdc_saldo_actual > 0) OR (@cdc_monto_total = 0) */  
  
        FETCH cr_embargos  
        INTO @cch_trabajador, @csi_concepto, @cti_secuencia, @cch_agr_base, @csi_cnc_base,  
             @cti_quinta_parte, @cdc_monto_total, @cdc_saldo_actual, @cdc_porcentaje, @cdc_cuota_fija  
  
    END /* WHILE @@FETCH_STATUS = 0 */  
  
    CLOSE cr_embargos  
    DEALLOCATE cr_embargos  
END  
GO
GRANT EXECUTE ON dbo.sp_fdt_incorpora_embargos_ns TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fdt_embargos') IS NOT NULL
    DROP VIEW dbo.vw_fdt_embargos
GO
CREATE VIEW dbo.vw_fdt_embargos
AS
SELECT
    E.compania, D.nombre_cia, 
    D.registro_fiscal, 
    T.clave_unica cedula, E.trabajador, 
    ltrim(rtrim(dbo.fn_Primer_Apellido(T.nombre))) + ' ' + 
    ltrim(rtrim(dbo.fn_Segundo_Apellido(T.nombre))) As Apellidos,  
    ltrim(rtrim(dbo.fn_Primer_Nombre(T.nombre))) + ' ' +  
    ltrim(rtrim(dbo.fn_Segundo_Nombre(T.nombre))) As Nombres,  
    E.concepto, C.descripcion, E.secuencia, 
    E.fecha_alta, E.fecha_baja, E.situacion, E.consecutivo_oficina,
    E.oficina_origen, E.oficina_destino, E.clase_deposito,
    E.numero_expediente, E.codigo_juzgado, E.banco, E.cuenta,
    E.tipo_id_demandante, E.id_demandante, E.apellido_demandante, 
    E.nombre_demandante, E.agr_conceptos_base, E.concepto_base,
    base = CASE IsNull(E.concepto_base, 0) WHEN 0 THEN E.agr_conceptos_base ELSE Convert(varchar,E.concepto_base) END,
    E.quinta_parte, E.monto_total, E.saldo_actual, E.porcentaje, E.cuota_fija, E.ciudad_pago, E.porcentaje_aumento,
    E.valor_aumento, E.mes_aumento, E.anio_desde
FROM 
    fdt_embargos E, trabajadores T, conceptos C, companias D
WHERE
    E.compania = D.compania And
    E.trabajador = T.trabajador And
    E.concepto = C.concepto
GO
GRANT SELECT ON vw_fdt_embargos TO PUBLIC
GO
