PRINT '*** Inicio de Script ***'
GO
set nocount on
go
IF OBJECT_ID('dbo.fco_integrada_temp') IS NOT NULL
    DROP TABLE dbo.fco_integrada_temp
GO
CREATE TABLE dbo.fco_integrada_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_integrada_temp
    PRIMARY KEY NONCLUSTERED (random, compania, trabajador)
)
GO
GRANT ALL ON fco_integrada_temp TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_procesos_pi') IS NOT NULL
    DROP TABLE dbo.fco_procesos_pi
GO
CREATE TABLE dbo.fco_procesos_pi
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal char(10) NOT NULL,    
    procesar bit NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E'
    CONSTRAINT pk_fco_procesos_pi PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla)
)
GO
GRANT ALL ON dbo.fco_procesos_pi TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_cab') IS NOT NULL
    DROP TABLE dbo.fco_integrada_cab
GO
CREATE TABLE dbo.fco_integrada_cab
-- Planilla Integrada 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,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    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,
    nueva_ARP varchar(6) 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_empleados smallint NOT NULL,
    valor_nomina decimal(12) NOT NULL,
    operador char(2) NOT NULL,
    sit_periodo tinyint NOT NULL DEFAULT 1,
    nro_planilla char(10) NULL,
    fecha_pago_real smalldatetime NULL,
    CONSTRAINT pk_fco_integrada_cab PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla)
)
GO
GRANT ALL ON dbo.fco_integrada_cab TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_det') IS NOT NULL
    DROP TABLE dbo.fco_integrada_det
GO
CREATE TABLE dbo.fco_integrada_det
-- Planilla Integrada 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,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    trabajador char(10) NOT NULL,    
    consecutivo tinyint NOT NULL DEFAULT 1, -- Consecutivo por trabajador
    -- Variables de novedades generales
    secuencia char(5) NOT NULL,
    tipo_documento char(2) NOT NULL,
    nro_id varchar(16) NOT NULL,
    digito_chequeo char(1) NOT NULL,
    tipo_cotizante tinyint NOT NULL,
    subtipo_cotizante tinyint NOT NULL,
    extranjero_no_pension char(1) NOT NULL,
    residente_en_exterior char(1) NOT NULL,
    departamento char(2) NOT NULL,
    municipio char(3) NOT NULL,    
    primer_apellido varchar(20) NOT NULL,
    segundo_apellido varchar(30) NOT NULL,
    primer_nombre varchar(20) NOT NULL,
    segundo_nombre varchar(30) 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_VTE char(1) NOT NULL,
    nov_VST char(1) NOT NULL,
    nov_SLN char(1) NOT NULL,
    nov_IGE char(1) NOT NULL,
    nov_LMA char(1) NOT NULL,
    nov_VAC char(1) NOT NULL,
    nov_AVP char(1) NOT NULL,
    nov_VCT char(1) NOT NULL,
    nov_IRP char(2) 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_EPS tinyint NOT NULL,
    dias_ARP tinyint NOT NULL,
    dias_CCF tinyint NOT NULL,
    salario decimal(9) NOT NULL,
    integral char(1) NOT NULL,
    IBC_AFP decimal(9) NOT NULL,
    IBC_EPS decimal(9) NOT NULL,
    IBC_ARP decimal(9) NOT NULL,
    IBC_CCF decimal(9) NOT NULL,
    -- Sistema General de AFPes
    tarifa_AFP decimal(6,5) NOT NULL,
    aporte_AFP decimal(9) NOT NULL,
    voluntario_AFP decimal(9) NOT NULL,
    voluntario_AFP_cia decimal(9) NOT NULL,
    aporte_total_AFP AS aporte_AFP + voluntario_AFP + voluntario_AFP_cia,
    aporte_FSP decimal(9) NOT NULL,
    aporte_FSP_subsistencia decimal(9) NOT NULL,
    valor_no_retenido decimal(9) 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,
    nro_aut_IGE varchar(15) NOT NULL,
    vlr_aut_IGE decimal(9) NOT NULL,
    nro_aut_LMA varchar(15) NOT NULL,
    vlr_aut_LMA decimal(9) NOT NULL,
    -- Sistema General de ARP Profesionales
    tarifa_ARP decimal(9,8) NOT NULL,
    centro_trabajo decimal(9) NOT NULL,
    aporte_ARP decimal(9) NOT NULL,
    -- Parafiscales
    tarifa_CCF decimal(6,5) NOT NULL,
    aporte_CCF decimal(9) NOT NULL,
    tarifa_SENA decimal(6,5) NOT NULL,
    aporte_SENA decimal(9) NOT NULL,
    tarifa_ICBF decimal(6,5) NOT NULL,
    aporte_ICBF decimal(9) NOT NULL,
    tarifa_ESAP decimal(6,5) NOT NULL,
    aporte_ESAP decimal(9) NOT NULL,
    tarifa_MEdu decimal(6,5) NOT NULL,
    aporte_MEdu decimal(9) NOT NULL,
    origen tinyint NOT NULL, -- 1 Normal, 2 Fantasma, 3 Editada manualmente
    eliminada bit NOT NULL DEFAULT 0
    CONSTRAINT pk_fco_integrada_det PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla, trabajador, consecutivo)
)
GO
GRANT ALL ON dbo.fco_integrada_det TO PUBLIC
GO

IF OBJECT_ID('dbo.fco_integrada_rt03') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt03
GO
CREATE TABLE dbo.fco_integrada_rt03
-- Planilla Integrada Registro Tipo 3
-- Total Aportes del Período a Pensiones por Administradora
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    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, tipo_planilla, cod_AFP)
)
GO
GRANT ALL ON dbo.fco_integrada_rt03 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt04') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt04
GO
CREATE TABLE dbo.fco_integrada_rt04
-- Planilla Integrada Registro Tipo 4
-- Total Aportes del Período a Salud por Administradora
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    cod_EPS 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_UPC decimal(10) NOT NULL,
    nro_aut_IGE varchar(15) NOT NULL,
    suma_aut_IGE decimal(10) NOT NULL,
    nro_aut_LMA varchar(15) NOT NULL,
    suma_aut_LMA decimal(10) NOT NULL,
    neto_aportes AS suma_aportes - suma_aut_IGE - suma_aut_LMA,
    dias_mora smallint NOT NULL,
    int_mora_aportes decimal(10) NOT NULL,
    int_mora_UPC decimal(10) NOT NULL,
    subtotal_aportes AS suma_aportes - suma_aut_IGE - suma_aut_LMA + int_mora_aportes,
    subtotal_UPC AS suma_UPC + int_mora_UPC,
    nro_radicacion varchar(10) NOT NULL,
    saldo_favor_aportes decimal(10) NOT NULL,
    saldo_favor_UPC decimal(10) NOT NULL,
    total_aportes AS suma_aportes - suma_aut_IGE - suma_aut_LMA + int_mora_aportes - saldo_favor_aportes,
    total_UPC AS suma_UPC + int_mora_UPC - saldo_favor_UPC,
    total_pagar AS suma_aportes - suma_aut_IGE - suma_aut_LMA + int_mora_aportes - saldo_favor_aportes + 
                   suma_UPC + int_mora_UPC - saldo_favor_UPC,
    FOSYGA decimal(10) NOT NULL,
    total_afiliados decimal(6) NOT NULL,
    origen tinyint not null default 0,
    CONSTRAINT pk_fco_integrada_rt04 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla, cod_EPS)
)
GO
GRANT ALL ON dbo.fco_integrada_rt04 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt05') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt05
go
CREATE TABLE dbo.fco_integrada_rt05
-- Planilla Integrada Registro Tipo 5
-- Total Aportes del Período a Riesgos Profesionales
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    cod_ARP varchar(6) NOT NULL,
    secuencia smallint NOT NULL,
    nit varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    suma_aportes decimal(10) NOT NULL,
    nro_aut varchar(15) NOT NULL,
    incapacidades decimal(10) NOT NULL,
    otros_riesgos decimal(10) NOT NULL,
    neto_aportes AS suma_aportes - incapacidades - otros_riesgos,
    dias_mora smallint NOT NULL,
    int_mora decimal(10) NOT NULL,
    subtotal_aportes AS suma_aportes - incapacidades - otros_riesgos + int_mora,
    nro_radicacion varchar(10) NOT NULL,
    saldo_favor decimal(10) NOT NULL,
    total_pagar AS suma_aportes - incapacidades - otros_riesgos + int_mora - saldo_favor,
    FSRP decimal(10) NOT NULL,
    total_afiliados decimal(6) NOT NULL,
    origen tinyint NOT NULL DEFAULT 0,
    CONSTRAINT pk_fco_integrada_rt05 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla, cod_ARP)

)
GO
GRANT ALL ON dbo.fco_integrada_rt05 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt06') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt06
GO
CREATE TABLE dbo.fco_integrada_rt06
-- Planilla Integrada Registro Tipo 6
-- Total Aportes del Período a Cajas de Compensación Familiar por Administradora
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    cod_CCF char(10) NOT NULL,
    secuencia smallint NOT NULL,
    nit varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    suma_aportes decimal(10) NOT NULL,
    dias_mora smallint NOT NULL,
    int_mora decimal(10) NOT NULL,
    total_pagar AS suma_aportes + int_mora,
    total_afiliados decimal(6) NOT NULL,
    CONSTRAINT pk_fco_integrada_rt06 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla, cod_CCF)
)
GO
GRANT ALL ON dbo.fco_integrada_rt06 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt07') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt07
GO
CREATE TABLE dbo.fco_integrada_rt07
-- Planilla Integrada Registro Tipo 7
-- Total Aportes del Período al SENA
-- En revisión del 25-ABR-07 desaparece el campo tipo_concepto /*OJO*/
-- En revisión del 25-AGO-07 Aparece el campo tipo_planilla
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    secuencia smallint NOT NULL,
    nit varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    valor decimal(10) NOT NULL,
    dias_mora smallint NOT NULL,
    int_mora decimal(10) NOT NULL,
    total_pagar AS valor + int_mora,
    nro_personas decimal(6) NOT NULL,
    CONSTRAINT pk_fco_integrada_rt07 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla)
)
GO
GRANT ALL ON dbo.fco_integrada_rt07 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt08') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt08
GO
CREATE TABLE dbo.fco_integrada_rt08
-- Planilla Integrada Registro Tipo 8
-- Total Aportes del Período al ICBF
-- En revisión del 25-ABR-07 desaparece el campo tipo_concepto /*OJO*/
-- En revisión del 25-AGO-07 Aparece el campo tipo_planilla
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    secuencia smallint NOT NULL,
    nit varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    valor decimal(10) NOT NULL,
    dias_mora smallint NOT NULL,
    int_mora decimal(10) NOT NULL,
    total_pagar AS valor + int_mora,
    nro_personas decimal(6) NOT NULL,
    CONSTRAINT pk_fco_integrada_rt08 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla)
)
GO
GRANT ALL ON dbo.fco_integrada_rt08 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt09') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt09
GO
CREATE TABLE dbo.fco_integrada_rt09
-- Planilla Integrada Registro Tipo 9
-- Total Aportes del Período al ESAP 
-- (Escuela Superior de Administración Pública)
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    secuencia smallint NOT NULL,
    nit varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    valor decimal(10) NOT NULL,
    dias_mora smallint NOT NULL,
    int_mora decimal(10) NOT NULL,
    total_pagar AS valor + int_mora,
    CONSTRAINT pk_fco_integrada_rt09 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla)
)
GO
GRANT ALL ON dbo.fco_integrada_rt09 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt10') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt10
GO
CREATE TABLE dbo.fco_integrada_rt10
-- Planilla Integrada Registro Tipo 10
-- Total Aportes del Período al Ministerio de Educación
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    secuencia smallint NOT NULL,
    nit varchar(16) NOT NULL,
    dv char(1) NOT NULL,
    valor decimal(10) NOT NULL,
    dias_mora smallint NOT NULL,
    int_mora decimal(10) NOT NULL,
    total_pagar AS valor + int_mora,
    CONSTRAINT pk_fco_integrada_rt10 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla)
)
GO
GRANT ALL ON dbo.fco_integrada_rt10 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_integrada_rt11') IS NOT NULL
    DROP TABLE dbo.fco_integrada_rt11
GO
CREATE TABLE dbo.fco_integrada_rt11
-- Planilla Integrada Registro Tipo 11
-- Total por Pagar durante el período
(
    compania char(4) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    sucursal varchar(10) NOT NULL,
    tipo_planilla char(1) NOT NULL DEFAULT 'E',
    pensiones decimal(10) NOT NULL,
    salud decimal(10) NOT NULL,
    riesgos decimal(10) NOT NULL,
    cajas decimal(10) NOT NULL,
    SENA decimal(10) NOT NULL,
    ICBF decimal(10) NOT NULL,
    ESAP decimal(10) NOT NULL,
    MinEducacion decimal(10) NOT NULL,
    Gran_Total AS pensiones + salud + riesgos + cajas + SENA + ICBF + ESAP + MinEducacion,
    conteo_AFP decimal(10) NOT NULL,
    conteo_EPS decimal(10) NOT NULL,
    conteo_ARP decimal(10) NOT NULL,
    conteo_CCF decimal(10) NOT NULL,
    CONSTRAINT pk_fco_integrada_rt11 PRIMARY KEY NONCLUSTERED (compania, anio, mes, sucursal, tipo_planilla)
)
GO
GRANT ALL ON dbo.fco_integrada_rt11 TO PUBLIC
GO
IF OBJECT_ID('dbo.fco_autorizaciones_ext') IS NOT NULL
    DROP TABLE dbo.fco_autorizaciones_ext
GO
CREATE TABLE dbo.fco_autorizaciones_ext
(
    compania char(4) NOT NULL,
    sucursal char(10) NOT NULL,
    cod_EPS char(10) NOT NULL,
    anio smallint NOT NULL,
    mes tinyint NOT NULL,
    tipo tinyint NOT NULL,
    trabajador char(10) NOT NULL, /* Retirado, Trasladado de EPS o en Blanco */
    numero varchar(15) NOT NULL,
    valor decimal(9) NOT NULL,
    CONSTRAINT pk_fco_autorizaciones_ext PRIMARY KEY (compania, sucursal, cod_EPS, anio, mes, tipo, trabajador, numero)
)
GO
GRANT ALL ON dbo.fco_autorizaciones_ext TO PUBLIC
GO

PRINT 'Tablas de Planilla Integrada... OK'
GO
IF OBJECT_ID('dbo.fn_ape1') IS NOT NULL
    DROP FUNCTION dbo.fn_ape1
GO
CREATE FUNCTION dbo.fn_ape1
(
    @pvc_nombre varchar(100)
)
RETURNS varchar(30)
AS
BEGIN
DECLARE
    @vti_pos1 tinyint,
    @pvc_cad varchar(30)

    SET @vti_pos1 = CharIndex('/', @pvc_nombre)
    IF @vti_pos1 = 0
        SET @pvc_cad = @pvc_nombre
    ELSE
        SET @pvc_cad = SubString(@pvc_nombre, 1, @vti_pos1 - 1)

    SET @pvc_cad = UPPER(Left(@pvc_cad, 1)) + LOWER(SubString(@pvc_cad, 2, 29))
    
    RETURN (@pvc_cad)
END
GO
GRANT EXECUTE ON fn_ape1 TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_ape2') IS NOT NULL
    DROP FUNCTION dbo.fn_ape2
GO
CREATE FUNCTION dbo.fn_ape2
(
    @pvc_nombre varchar(100)
)
RETURNS varchar(30)
AS
BEGIN
DECLARE
    @vti_pos1 tinyint,
    @vti_pos2 tinyint,
    @pvc_cad varchar(30)

    SET @vti_pos1 = CharIndex('/', @pvc_nombre)
    SET @vti_pos2 = CharIndex('/', SubString(@pvc_nombre, @vti_pos1 + 1, 100))

    IF IsNull(@vti_pos2,0) = 0
        SET @pvc_cad = SubString(@pvc_nombre, @vti_pos1 + 1, 100)
    ELSE
        SET @pvc_cad = SubString(@pvc_nombre, @vti_pos1 + 1, @vti_pos2 - 1)

    SET @pvc_cad = UPPER(Left(@pvc_cad, 1)) + LOWER(SubString(@pvc_cad, 2, 29))

    RETURN (@pvc_cad)
END
GO
GRANT EXECUTE ON fn_ape2 TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_nom1') IS NOT NULL
    DROP FUNCTION dbo.fn_nom1
GO
CREATE FUNCTION dbo.fn_nom1
(
    @pvc_nombre varchar(100)
)
RETURNS varchar(30)
AS
BEGIN
DECLARE
    @vti_pos1 tinyint,
    @vti_pos2 tinyint,
    @vti_pos3 tinyint,
    @pvc_cad varchar(30)

    SET @vti_pos1 = CharIndex('/', @pvc_nombre)
    SET @vti_pos2 = CharIndex('/', SubString(@pvc_nombre, @vti_pos1 + 1, 100))
    SET @vti_pos3 = CharIndex(' ', SubString(@pvc_nombre, @vti_pos1 + @vti_pos2 + 1, 100))

    IF IsNull(@vti_pos3,0) = 0
        SET @pvc_cad = SubString(@pvc_nombre, @vti_pos1 + @vti_pos2 + 1, 100)
    ELSE
        SET @pvc_cad = SubString(@pvc_nombre, @vti_pos1 + @vti_pos2 + 1, @vti_pos3 - 1)

    SET @pvc_cad = UPPER(Left(@pvc_cad, 1)) + LOWER(SubString(@pvc_cad, 2, 29))

    RETURN (@pvc_cad)
END
GO
GRANT EXECUTE ON fn_nom1 TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_nom2') IS NOT NULL
    DROP FUNCTION dbo.fn_nom2
GO
CREATE FUNCTION dbo.fn_nom2
(
    @pvc_nombre varchar(100)
)
RETURNS varchar(30)
AS
BEGIN
DECLARE
    @vti_pos1 tinyint,
    @vti_pos2 tinyint,
    @vti_pos3 tinyint,
    @pvc_cad varchar(30)

    SET @vti_pos1 = CharIndex('/', @pvc_nombre)
    SET @vti_pos2 = CharIndex('/', SubString(@pvc_nombre, @vti_pos1 + 1, 100))
    SET @vti_pos3 = CharIndex(' ', SubString(@pvc_nombre, @vti_pos1 + @vti_pos2 + 1, 100))

    IF IsNull(@vti_pos3,0) = 0
        SET @pvc_cad = ''
    ELSE
        SET @pvc_cad = SubString(@pvc_nombre, @vti_pos1 + @vti_pos2 + @vti_pos3 + 1, 30)

    SET @pvc_cad = UPPER(Left(@pvc_cad, 1)) + LOWER(SubString(@pvc_cad, 2, 29))

    RETURN (@pvc_cad)
END
GO
GRANT EXECUTE ON fn_nom2 TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_solonum') IS NOT NULL
    DROP FUNCTION dbo.fn_solonum
GO
CREATE FUNCTION dbo.fn_solonum(@pvc_cadena varchar(100))  
RETURNS varchar(100)  
AS  
BEGIN  
    DECLARE  
        @vvc_cad varchar(100),  
        @vti_contador tinyint  
  
    SET @vti_contador = 1  
    SET @vvc_cad = ''  
  
    WHILE @vti_contador <= Len(@pvc_cadena)  
    BEGIN  
        IF Substring(@pvc_cadena, @vti_contador, 1) LIKE '[0-9]'  
            SET @vvc_cad = @vvc_cad + Substring(@pvc_cadena, @vti_contador, 1)  
  
        SET @vti_contador = @vti_contador + 1  
    END  
  
    RETURN @vvc_cad  
END  
GO
GRANT EXECUTE ON dbo.fn_solonum TO PUBLIC
GO
IF OBJECT_ID('dbo.fntb_acum_conc_agr') IS NOT NULL
    DROP FUNCTION dbo.fntb_acum_conc_agr
GO
CREATE FUNCTION dbo.fntb_acum_conc_agr
(  
    @pch_compania char(4),  
    @pch_agr_conceptos char(3),  
    @psi_anio smallint,  
    @pti_mes tinyint  
)  
/*********************************************/        
/*  
 Organizacion: Data Tecnologia Ltda.     
 Descripcion:    
    Devuelve trabajador, importe y tiempo, para la compañía, agrupación de conceptos, año y mes dados   
    a partir de [acum_concepto]  
 Autor: Juan Carlos Leguizamon    
 Fecha: Octubre de 2003  
 Revisión: Junio de 2005
*/  
/*********************************************/        
RETURNS TABLE   
AS  
RETURN
(
    SELECT 
        a.trabajador, 
        a.concepto,
        importe = SUM(CASE WHEN b.signo = '+' THEN importe ELSE importe*-1 END),
        tiempo = SUM(CASE WHEN b.signo = '+' THEN tiempo ELSE tiempo*-1 END),
        a.referencia
    FROM acum_concepto a WITH(NOLOCK)
    INNER JOIN rel_conceptos_agr b ON a.compania = b.compania AND a.concepto = b.concepto
    WHERE
        a.compania = @pch_compania AND 
        b.agr_conceptos = @pch_agr_conceptos AND   
        a.anio = @psi_anio AND 
        a.mes_acumular = @pti_mes
    GROUP BY
        a.trabajador, a.concepto, a.referencia
)
GO
GRANT SELECT ON fntb_acum_conc_agr TO PUBLIC
GO
IF OBJECT_ID('dbo.fntb_acum_conc_cnc') IS NOT NULL
    DROP FUNCTION dbo.fntb_acum_conc_cnc
GO
CREATE FUNCTION dbo.fntb_acum_conc_cnc
(
    @pch_compania char(4),
    @psi_concepto smallint,
    @psi_anio smallint,
    @pti_mes tinyint
)
/*********************************************/      
/*
 Data Tecnologia Ltda.   
 Descripcion:  
    Devuelve trabajador, importe y tiempo, para la compañía, agrupación de conceptos, año y mes dados 
    a partir de [acum_concepto]
 Autor: Juan Carlos Leguizamon  
 Fecha: Octubre de 2003
 Revisión: Junio de 2005
*/
/*********************************************/      
RETURNS TABLE 
AS
RETURN
(
    SELECT 
        a.trabajador, 
        importe = SUM(importe),
        tiempo = SUM(a.tiempo),
        a.referencia
    FROM acum_concepto a
    WHERE
        a.compania = @pch_compania AND 
        a.concepto = @psi_concepto AND 
        a.anio = @psi_anio AND 
        a.mes_acumular = @pti_mes
    GROUP BY
        a.trabajador, a.referencia
)
GO
GRANT SELECT ON fntb_acum_conc_cnc TO PUBLIC
GO
IF OBJECT_ID('dbo.fntb_acum_mes_agr') IS NOT NULL
    DROP FUNCTION dbo.fntb_acum_mes_agr
GO
CREATE FUNCTION dbo.fntb_acum_mes_agr
(
    @pch_compania char(4),
    @pch_agr_conceptos char(3),
    @psi_anio smallint,
    @pti_mes tinyint
)
/*********************************************/      
/*
 Organizacion: Data Tecnologia Ltda.   
 Descripcion:  
    Devuelve trabajador, importe y tiempo, para la compañía, agrupación de conceptos, año y mes dados 
 Autor: Juan Carlos Leguizamon  
 Fecha: Octubre de 2003         
 Historial de Revisiones:              
-- Optimización Junio 22/05
*/
/*********************************************/      
RETURNS TABLE
AS
RETURN 
(
    SELECT 
        trabajador, 
        importe = 
        CASE WHEN @pti_mes = 1  THEN acum_imp_mes_01
             WHEN @pti_mes = 2  THEN acum_imp_mes_02
             WHEN @pti_mes = 3  THEN acum_imp_mes_03
             WHEN @pti_mes = 4  THEN acum_imp_mes_04
             WHEN @pti_mes = 5  THEN acum_imp_mes_05
             WHEN @pti_mes = 6  THEN acum_imp_mes_06
             WHEN @pti_mes = 7  THEN acum_imp_mes_07
             WHEN @pti_mes = 8  THEN acum_imp_mes_08
             WHEN @pti_mes = 9  THEN acum_imp_mes_09
             WHEN @pti_mes = 10 THEN acum_imp_mes_10
             WHEN @pti_mes = 11 THEN acum_imp_mes_11
             WHEN @pti_mes = 12 THEN acum_imp_mes_12
        END, 
        tiempo =
        CASE WHEN @pti_mes = 1  THEN acum_tie_mes_01
             WHEN @pti_mes = 2  THEN acum_tie_mes_02
             WHEN @pti_mes = 3  THEN acum_tie_mes_03
             WHEN @pti_mes = 4  THEN acum_tie_mes_04
             WHEN @pti_mes = 5  THEN acum_tie_mes_05
             WHEN @pti_mes = 6  THEN acum_tie_mes_06
             WHEN @pti_mes = 7  THEN acum_tie_mes_07
             WHEN @pti_mes = 8  THEN acum_tie_mes_08
             WHEN @pti_mes = 9  THEN acum_tie_mes_09
             WHEN @pti_mes = 10 THEN acum_tie_mes_10
             WHEN @pti_mes = 11 THEN acum_tie_mes_11
             WHEN @pti_mes = 12 THEN acum_tie_mes_12
        END
    FROM 
        acumulados_mensuales
    WHERE 
        compania = @pch_compania AND
        agr_conceptos = @pch_agr_conceptos AND
        anio = @psi_anio
)
GO
GRANT SELECT ON fntb_acum_mes_agr TO PUBLIC
GO
IF OBJECT_ID('dbo.fntb_acum_mes_cnc') IS NOT NULL
    DROP FUNCTION dbo.fntb_acum_mes_cnc
GO
CREATE FUNCTION dbo.fntb_acum_mes_cnc
(
    @pch_compania char(4),
    @psi_concepto smallint,
    @psi_anio smallint,
    @pti_mes tinyint
)
/*********************************************/      
/*
 Organizacion: Data Tecnologia Ltda.   
 Descripcion:  
    Devuelve trabajador, importe y tiempo, para la compañía, concepto, año y mes dados 
 Autor: Juan Carlos Leguizamon  
 Fecha: Octubre de 2003         
 Historial de Revisiones:              
-- Optimización Junio 22/05
*/
/*********************************************/      
RETURNS TABLE 
AS
RETURN
(
    SELECT 
        trabajador, 
        importe = 
        CASE WHEN @pti_mes = 1  THEN acum_imp_mes_01
             WHEN @pti_mes = 2  THEN acum_imp_mes_02
             WHEN @pti_mes = 3  THEN acum_imp_mes_03
             WHEN @pti_mes = 4  THEN acum_imp_mes_04
             WHEN @pti_mes = 5  THEN acum_imp_mes_05
             WHEN @pti_mes = 6  THEN acum_imp_mes_06
             WHEN @pti_mes = 7  THEN acum_imp_mes_07
             WHEN @pti_mes = 8  THEN acum_imp_mes_08
             WHEN @pti_mes = 9  THEN acum_imp_mes_09
             WHEN @pti_mes = 10 THEN acum_imp_mes_10
             WHEN @pti_mes = 11 THEN acum_imp_mes_11
             WHEN @pti_mes = 12 THEN acum_imp_mes_12
        END, 
        tiempo =
        CASE WHEN @pti_mes = 1  THEN acum_tie_mes_01
             WHEN @pti_mes = 2  THEN acum_tie_mes_02
             WHEN @pti_mes = 3  THEN acum_tie_mes_03
             WHEN @pti_mes = 4  THEN acum_tie_mes_04
             WHEN @pti_mes = 5  THEN acum_tie_mes_05
             WHEN @pti_mes = 6  THEN acum_tie_mes_06
             WHEN @pti_mes = 7  THEN acum_tie_mes_07
             WHEN @pti_mes = 8  THEN acum_tie_mes_08
             WHEN @pti_mes = 9  THEN acum_tie_mes_09
             WHEN @pti_mes = 10 THEN acum_tie_mes_10
             WHEN @pti_mes = 11 THEN acum_tie_mes_11
             WHEN @pti_mes = 12 THEN acum_tie_mes_12
        END        
    FROM 
        acumulados_mensuales
    WHERE 
        compania = @pch_compania AND
        concepto = @psi_concepto AND
        anio = @psi_anio

)
GO
GRANT SELECT ON fntb_acum_mes_cnc TO PUBLIC
GO
PRINT 'Funciones comunes de Planilla Integrada... OK'
GO
IF OBJECT_ID('dbo.fn_fco_subtipo_cotizante') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_subtipo_cotizante
GO
CREATE FUNCTION dbo.fn_fco_subtipo_cotizante
(
    @pch_compania char(4),
    @pch_trabajador char(10)
)
/* definicion para */
RETURNS tinyint
AS
BEGIN
    DECLARE @vti_subtipo tinyint

    SELECT @vti_subtipo = CASE WHEN relacion_laboral = '?' THEN 1 ELSE 0 END
    FROM trabajadores_grales
    WHERE compania = @pch_compania
      AND trabajador = @pch_trabajador

    RETURN ISNULL(@vti_subtipo, 0)
END
GO
GRANT EXECUTE ON dbo.fn_fco_subtipo_cotizante TO PUBLIC
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.fn_fco_tarifa_ARP') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_tarifa_ARP
GO
CREATE FUNCTION dbo.fn_fco_tarifa_ARP
(  
    @pch_compania char(4),  
    @pch_trabajador char(10)      
)  
RETURNS decimal(9,8)  
AS  
BEGIN  
    DECLARE   
        @vch_agt_CTR char(10),     -- Centro de Trabajo  
        @vdc_aux decimal(19,6),  
        @vdc_porcentaje decimal(9,8),  
        @vvc_metodo varchar(20),  
        @vti_metodo tinyint,  
        @vvc_var_tra varchar(20),  
        @vti_secuencia tinyint,  
        @vsi_impuesto smallint,  
        @vch_agr_tra char(10),  
        @vch_dato char(10)  
  
    SELECT @vch_agt_CTR = dato FROM vw_fdt_parametros   
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 24  
  
    SELECT @vvc_metodo = dato FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 33  
  
    SELECT @vvc_var_tra = dato FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 34  
  
    SELECT @vsi_impuesto = CONVERT(smallint, dato) FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 35  
  
    SELECT @vch_agr_tra = LEFT(LTRIM(dato), 10) FROM vw_fdt_parametros  
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 36  
  
    SET @vvc_metodo = ISNULL(@vvc_metodo, '1')  
    IF ISNUMERIC(LEFT(@vvc_metodo,1)) = 1  
        SET @vti_metodo = CONVERT(tinyint, LEFT(@vvc_metodo,1))  
    ELSE  
        SET @vti_metodo = 1  
  
    SET @vvc_var_tra = ISNULL(@vvc_var_tra, '00')  
    IF ISNUMERIC(LEFT(@vvc_var_tra,2)) = 1  
        SET @vti_secuencia = CONVERT(tinyint, LEFT(@vvc_var_tra,2))  
    ELSE  
        SET @vti_secuencia = 0  
  
    IF @vti_metodo = 1  -- Método Sugerido: CTR en [rel_trab_agr] y % en fco_centros_trabajo  
        SELECT @vdc_aux = a.tarifa  
        FROM vw_fco_centros_trabajo a  
        INNER JOIN rel_trab_agr b ON a.compania = b.compania AND a.centro_trabajo = b.dato  
        WHERE a.compania = @pch_compania   
          AND b.agrupacion = @vch_agt_CTR  
          AND b.trabajador = @pch_trabajador  
  
    IF @vti_metodo = 2 -- Método Coca Cola: % en variable del trabajador  
        SELECT @vdc_aux = variable_trabajador / 10  
        FROM variables_trabajador  
        WHERE compania = @pch_compania  
          AND trabajador = @pch_trabajador  
          AND secuencia = @vti_secuencia  
  
    IF @vti_metodo = 3 -- Otros clientes: Nivel en variable y % en tabla de impuestos  
    BEGIN  
        -- Nivel  
        SELECT @vdc_aux = variable_trabajador  
        FROM variables_trabajador  
        WHERE compania = @pch_compania  
          AND trabajador = @pch_trabajador  
          AND secuencia = @vti_secuencia  
  
        -- Porcentaje  
        SELECT @vdc_aux = porcentaje  / 100000  -- /100000 PARA Andina Trim JCL Junio 21/06
        FROM impuestos  
        WHERE impuesto = @vsi_impuesto  
          AND @vdc_aux BETWEEN limite_inferior AND limite_superior  
    END  
  
    IF @vti_metodo = 4 -- Método Colcafé y La Bastilla  
    BEGIN  
        -- Nivel  
        SELECT @vch_dato = dato  
        FROM rel_trab_agr  
        WHERE compania = @pch_compania  
          AND trabajador = @pch_trabajador  
          AND agrupacion = @vch_agr_tra  
  
        IF ISNUMERIC(@vch_dato) = 1 SET @vdc_aux = CONVERT(decimal, @vch_dato) ELSE SET @vdc_aux = 0  
  
        -- Porcentaje  
        SELECT @vdc_aux = porcentaje / 100000  
        FROM impuestos  
        WHERE impuesto = @vsi_impuesto  
          AND @vdc_aux BETWEEN limite_inferior AND limite_superior  
    END  
  
    IF @vdc_aux > 1 SET @vdc_aux = @vdc_aux / 100  
    IF @vdc_aux > 1 SET @vdc_aux = 0  
  
    SET @vdc_porcentaje = @vdc_aux  
  
    RETURN ISNULL(@vdc_porcentaje, 0)  
END  
GO
GRANT EXECUTE ON dbo.fn_fco_tarifa_ARP TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_fco_centro_trabajo') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_centro_trabajo
GO
CREATE FUNCTION dbo.fn_fco_centro_trabajo
(
    @pch_compania char(4),
    @pch_trabajador char(10)    
)
RETURNS decimal(9)
AS
BEGIN
    DECLARE 
        @vdc_centro_tra decimal(9),
        @vch_agt_CTR char(10)     -- Centro de Trabajo

    SELECT @vch_agt_CTR = dato FROM vw_fdt_parametros 
    WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 24

    SELECT @vdc_centro_tra = codigo_reporte
    FROM vw_fco_centros_trabajo a
    INNER JOIN rel_trab_agr b ON a.compania = b.compania AND a.centro_trabajo = b.dato
    WHERE a.compania = @pch_compania
      AND b.trabajador = @pch_trabajador
      AND b.agrupacion = @vch_agt_CTR
    
    RETURN ISNULL(@vdc_centro_tra, 0)
END
GO
GRANT EXECUTE ON dbo.fn_fco_centro_trabajo TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_fco_valida_nombre') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_valida_nombre
GO
CREATE FUNCTION dbo.fn_fco_valida_nombre(@pvc_nombre varchar(30))
RETURNS varchar(30)
AS
BEGIN
    DECLARE 
        @vvc_limpio varchar(30), 
        @i tinyint, 
        @vch_car char(1)

    SET @vvc_limpio = Replace(@pvc_nombre, 'ñ', 'n')
    SET @vvc_limpio = Replace(@vvc_limpio, 'á', 'a')
    SET @vvc_limpio = Replace(@vvc_limpio, 'é', 'e')
    SET @vvc_limpio = Replace(@vvc_limpio, 'í', 'i')
    SET @vvc_limpio = Replace(@vvc_limpio, 'ó', 'o')
    SET @vvc_limpio = Replace(@vvc_limpio, 'ú', 'u')

    SET @i = 1
    WHILE @i <= LEN(@vvc_limpio)
    begin
        SET @vch_car = SUBSTRING(@vvc_limpio, @i, 1)

        IF @vch_car NOT LIKE '[a-Z]'
            SET @vvc_limpio = REPLACE(@vvc_limpio, @vch_car, ' ')

        SET @i = @i + 1
    end

    RETURN @vvc_limpio
END
GO
GRANT EXECUTE ON dbo.fn_fco_valida_nombre TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_fco_salario_integral') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_salario_integral
GO
CREATE FUNCTION dbo.fn_fco_salario_integral
(
    @pch_compania char(4),
    @pch_trabajador char(10)
)
/* definicion para */
RETURNS char(1)
AS
BEGIN
    DECLARE @vch_integral char(1)

    SELECT @vch_integral = CASE WHEN dato = 'INTEGRAL' THEN 'X' ELSE ' ' END
    FROM rel_trab_agr
    WHERE compania = @pch_compania
      AND trabajador = @pch_trabajador
      AND agrupacion = 'TIPO_SAL'

    RETURN ISNULL(@vch_integral, '')
END
GO
GRANT EXECUTE ON dbo.fn_fco_salario_integral TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_fco_cod_super') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_cod_super
GO
CREATE FUNCTION dbo.fn_fco_cod_super
(
    @pch_tipo char(3),
    @pch_dato char(10)
)
RETURNS char(6)
AS
BEGIN
    DECLARE @vch_codigo char(6)

    SELECT @vch_codigo = LEFT(LTRIM(cod_super), 6)
    FROM fco_administradoras
    WHERE codigo = @pch_dato
      AND tipo = @pch_tipo

    RETURN ISNULL(@vch_codigo, ' ')
END
GO
GRANT EXECUTE ON dbo.fn_fco_cod_super TO PUBLIC
GO
IF OBJECT_ID('dbo.fn_fco_salario') IS NOT NULL
    DROP FUNCTION dbo.fn_fco_salario
GO
CREATE FUNCTION dbo.fn_fco_salario
(
    @pch_compania char(4),
    @pch_trabajador char(10),
    @pch_periodo char(6)
)
RETURNS decimal(9,0)
-- JCL. Junio de 2005
-- Devuelve el salario a un período dado
AS
BEGIN
    DECLARE @vdc_salario decimal(15,6),
			@vdc_minimo decimal(15,6)

    SELECT TOP 1 @vdc_salario = salario
    FROM historico_sueldos x
    WHERE x.compania = @pch_compania AND x.trabajador = @pch_trabajador 
      AND @pch_periodo >= CONVERT(char(6), x.fecha, 112)
    ORDER BY CONVERT(char(8), x.fecha, 112) + RTRIM(x.secuencia) DESC

    SELECT @vdc_minimo = real
	FROM parametros_rh
	WHERE compania = @pch_compania
	  AND parametro_rh = 'sal_minimo'
      AND secuencia_parametro = 1

    IF @vdc_salario < @vdc_minimo SET @vdc_salario = @vdc_minimo

    IF @vdc_salario > 25 * @vdc_minimo SET @vdc_salario = 25 * @vdc_minimo

    RETURN ISNULL(ROUND(@vdc_salario,0), 0)
END
GO
GRANT EXECUTE ON dbo.fn_fco_salario TO PUBLIC
GO
PRINT 'Funciones propias de Planilla Integrada... OK'
GO

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

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

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

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

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

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

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

    suc.descripcion AS suc_nombre

FROM fco_integrada_det a
LEFT JOIN criterios_valores_col b ON b.campo = 'tipo_cotizante' AND b.item = a.tipo_cotizante
LEFT JOIN vw_fco_sucursales suc ON suc.compania = a.compania AND suc.sucursal = a.sucursal
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0
-- CONDICIONES DE SEGURIDAD
AND
(
    (origen <> 1) OR
    (origen = 1
        AND EXISTS (SELECT 1 FROM aut_companias x WHERE x.compania = a.compania AND x.usuario = SYSTEM_USER)
        AND EXISTS (SELECT 1 FROM trabajadores_grales tg INNER JOIN rel_usu_clase_nom cn ON tg.clase_nomina = cn.clase_nomina
                    WHERE tg.compania = a.compania AND tg.trabajador = a.trabajador AND cn.usuario = SYSTEM_USER)
        AND NOT EXISTS (SELECT 1 FROM rel_trab_agr rta INNER JOIN rel_usu_agr_trab x ON rta.agrupacion = x.agrupacion AND rta.dato = x.dato
                        WHERE rta.compania = a.compania AND rta.trabajador = a.trabajador AND x.usuario = SYSTEM_USER)
    )
)
GO
GRANT SELECT ON dbo.vw_fco_integrada_det TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_res_arp') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_res_arp
GO
CREATE VIEW dbo.vw_fco_integrada_res_arp
AS    
SELECT     
    a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla, 
    a.centro_trabajo,
    IBC_ARP = isnull(SUM(a.IBC_ARP), 0),
    aporte_ARP = isnull(SUM(a.aporte_ARP), 0),
    nro_aut = 
    (SELECT ta.nro_aut FROM fco_integrada_rt05 ta WHERE ta.compania = a.compania AND ta.anio = a.anio AND ta.mes = a.mes AND ta.sucursal = a.sucursal AND ta.tipo_planilla = a.tipo_planilla),   
    vlr_aut = 
    isnull((SELECT ta.incapacidades FROM fco_integrada_rt05 ta WHERE ta.compania = a.compania AND ta.anio = a.anio AND ta.mes = a.mes AND ta.sucursal = a.sucursal AND ta.tipo_planilla = a.tipo_planilla), 0),
    (SELECT ctr.descripcion FROM vw_fco_centros_trabajo ctr  
     WHERE ctr.compania = a.compania AND ctr.codigo_reporte = a.centro_trabajo) AS ctr_nombre,    
    MAX(suc.descripcion) AS suc_nombre,
    afiliados = COUNT(DISTINCT a.trabajador)
FROM fco_integrada_det a    
LEFT JOIN vw_fco_sucursales suc     
ON suc.compania = a.compania AND suc.sucursal = a.sucursal    
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0    
GROUP BY a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla, a.centro_trabajo
GO
GRANT SELECT ON dbo.vw_fco_integrada_res_arp TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_res_sal') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_res_sal
GO
CREATE VIEW dbo.vw_fco_integrada_res_sal
AS    
SELECT     
    a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla, 
    a.cod_EPS,   
    IBC_EPS = isnull(SUM(a.IBC_EPS), 0),
    aporte_EPS = isnull(SUM(a.aporte_EPS), 0),
    UPC_adicional = isnull(SUM(a.UPC_adicional), 0),
    nro_aut_IGE = 
    (SELECT ts.nro_aut_IGE FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.tipo_planilla = a.tipo_planilla AND ts.cod_EPS = a.cod_EPS), 
    vlr_aut_IGE = 
    isnull((SELECT ts.suma_aut_IGE FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.tipo_planilla = a.tipo_planilla AND ts.cod_EPS = a.cod_EPS), 0),
    nro_aut_LMA = 
    (SELECT ts.nro_aut_LMA FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.tipo_planilla = a.tipo_planilla AND ts.cod_EPS = a.cod_EPS),   
    vlr_aut_LMA = 
    isnull((SELECT ts.suma_aut_LMA FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.tipo_planilla = a.tipo_planilla AND ts.cod_EPS = a.cod_EPS), 0),
    
    (SELECT eps.descripcion FROM vw_fco_administradoras eps     
     WHERE eps.compania = a.compania AND eps.tipo = 'EPS'     
       AND eps.codigo = a.cod_EPS) AS eps_nombre,    
  
    MAX(suc.descripcion) AS suc_nombre,
    afiliados = COUNT(DISTINCT a.trabajador)
FROM fco_integrada_det a    
LEFT JOIN vw_fco_sucursales suc     
ON suc.compania = a.compania AND suc.sucursal = a.sucursal    
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0    
GROUP BY a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla, a.cod_EPS
GO
GRANT SELECT ON dbo.vw_fco_integrada_res_sal TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt01') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt01
GO
CREATE VIEW dbo.vw_fco_integrada_rt01
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 1
-- Autor: Juan Carlos Leguizamon
-- Fecha: Junio 2005
-- Revisiones:
-- JCL 27-AGO-07 Inclusión del campo tipo_planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, tipo_planilla,
    '01' + RIGHT('00000' + RTRIM(secuencia), 5) + CONVERT(char(200), razon_social) +
    tipo_documento + CONVERT(char(16), nro_id) + dv + tipo_planilla + 
    '0000000000' + -- JCL Ajuste de junio 21/06
    Space(10) +
    ISNULL((select forma_presentacion from vw_fco_companias x where x.compania = a.compania), 'C') + -- JCL Ajuste Oct-30-06
    sucursal + CONVERT(char(40), nombre_sucursal) + 
    CONVERT(char(6), nueva_ARP) + 
    Left(periodo, 4) + '-' + Right(periodo, 2) + -- JCL Ajuste de junio 21/06
    Left(periodo_salud, 4) + '-' + Right(periodo_salud, 2) + -- JCL Ajuste de junio 21/06
    CONVERT(char(10), nro_radicacion) + 
    Convert(char(10), getdate(), 120) + -- JCL Ajuste de junio 21/06
    RIGHT('00000' + RTRIM(nro_empleados), 5) + 
    RIGHT('000000000000' + RTRIM(valor_nomina), 12) + '1' +
    operador AS registro1
FROM fco_integrada_cab a
WHERE tipo_planilla <> 'Y'
UNION
SELECT
    a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla,
    '01' + RIGHT('00000' + RTRIM(a.secuencia), 5) + CONVERT(char(200), a.razon_social) +
    a.tipo_documento + CONVERT(char(16), a.nro_id) + a.dv + a.tipo_planilla + 
    Right('0000000000' + LTRIM(RTRIM(IsNull(b.nro_planilla, '0'))), 10) + 
    IsNull(Convert(char(10), b.fecha_pago_real, 120), Space(10)) +
    ISNULL((select forma_presentacion from vw_fco_companias x where x.compania = a.compania), 'C') + -- JCL Ajuste Oct-30-06
    a.sucursal + CONVERT(char(40), a.nombre_sucursal) + 
    CONVERT(char(6), a.nueva_ARP) + 
    Left(a.periodo_salud, 4) + '-' + Right(a.periodo_salud, 2) + -- JCL Ajuste de junio 21/06
    Left(a.periodo_salud, 4) + '-' + Right(a.periodo_salud, 2) + -- JCL Ajuste de junio 21/06
    CONVERT(char(10), a.nro_radicacion) + 
    Convert(char(10), getdate(), 120) + -- JCL Ajuste de junio 21/06
    RIGHT('00000' + RTRIM(a.nro_empleados), 5) + 
    RIGHT('000000000000' + RTRIM(a.valor_nomina), 12) + '1' +
    a.operador AS registro1
FROM fco_integrada_cab a
LEFT JOIN fco_integrada_cab b ON a.compania = b.compania And a.anio = b.anio And a.mes = b.mes And a.sucursal = b.sucursal
  And b.tipo_planilla = 'E'
WHERE a.tipo_planilla = 'Y'
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt01 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt02') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt02
GO
CREATE VIEW dbo.vw_fco_integrada_rt02
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 2
-- Autor: Juan Carlos Leguizamon
-- Fecha: Junio 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, trabajador, secuencia, tipo_planilla,
    registro2 =
    '02' + secuencia + tipo_documento + CONVERT(char(16), nro_id) + 
    RIGHT('00' + RTRIM(tipo_cotizante), 2) + 
    RIGHT('00' + RTRIM(subtipo_cotizante), 2) + 
    extranjero_no_pension + residente_en_exterior + departamento + municipio +
    dbo.fn_fco_valida_nombre(CONVERT(char(20), LTRIM(REPLACE(primer_apellido, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    dbo.fn_fco_valida_nombre(CONVERT(char(30), LTRIM(REPLACE(segundo_apellido, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    dbo.fn_fco_valida_nombre(CONVERT(char(20), LTRIM(REPLACE(primer_nombre, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    dbo.fn_fco_valida_nombre(CONVERT(char(30), LTRIM(REPLACE(segundo_nombre, '  ', ' ')))) + -- JCL Ajuste Junio 21/06
    nov_ING	+ nov_RET + nov_TDE + nov_TAE + nov_TDP + nov_TAP + nov_VSP + nov_VTE +
    nov_VST + nov_SLN + nov_IGE + nov_LMA + nov_VAC + nov_AVP + nov_VCT + 
    RIGHT('00' + ltrim(rtrim(nov_IRP)), 2) +
    dbo.fn_fco_cod_super('AFP', cod_AFP) + 
    dbo.fn_fco_cod_super('AFP', cod_AFP_Tras) + -- JCL Ajuste Oct-09-06
    dbo.fn_fco_cod_super('EPS', cod_EPS) + 
    dbo.fn_fco_cod_super('EPS', cod_EPS_Tras) + -- JCL Ajuste Oct-09-06
    dbo.fn_fco_cod_super('CCF', cod_CCF) + 
    RIGHT('00' + RTRIM(dias_AFP), 2) + 
    RIGHT('00' + RTRIM(dias_EPS), 2) + 
    RIGHT('00' + RTRIM(dias_ARP), 2) + 
    RIGHT('00' + RTRIM(dias_CCF), 2) + 
    RIGHT('000000000' + RTRIM(salario), 9) + integral + 
    RIGHT('000000000' + RTRIM(IBC_AFP), 9) +
    RIGHT('000000000' + RTRIM(IBC_EPS), 9) +
    RIGHT('000000000' + RTRIM(IBC_ARP), 9) +
    RIGHT('000000000' + RTRIM(IBC_CCF), 9) +
    LEFT(RTRIM(tarifa_AFP) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_AFP), 9) + 
    RIGHT('000000000' + RTRIM(voluntario_AFP), 9) + 
    RIGHT('000000000' + RTRIM(voluntario_AFP_cia), 9) + 
    RIGHT('000000000' + RTRIM(aporte_total_AFP), 9) + 
    RIGHT('000000000' + RTRIM(aporte_FSP), 9) + 
    RIGHT('000000000' + RTRIM(aporte_FSP_subsistencia), 9) + 
    RIGHT('000000000' + RTRIM(valor_no_retenido), 9) + 
    LEFT(RTRIM(tarifa_EPS) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_EPS), 9) + 
    RIGHT('000000000' + RTRIM(UPC_adicional), 9) + 
    CONVERT(char(15), nro_aut_IGE) + 
    RIGHT('000000000' + RTRIM(vlr_aut_IGE), 9) + 
    CONVERT(char(15), nro_aut_LMA) +
    RIGHT('000000000' + RTRIM(vlr_aut_LMA), 9) + 
    LEFT(RTRIM(tarifa_ARP) + '000000000', 9) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(centro_trabajo), 9) +  + 
    RIGHT('000000000' + RTRIM(aporte_ARP), 9) + 
    LEFT(RTRIM(tarifa_CCF) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_CCF), 9) + 
    LEFT(RTRIM(tarifa_SENA) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_SENA), 9) + 
    LEFT(RTRIM(tarifa_ICBF) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_ICBF), 9) + 
    LEFT(RTRIM(tarifa_ESAP) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_ESAP), 9) + 
    LEFT(RTRIM(tarifa_MEdu) + '0000000', 7) + -- JCL Ajuste Junio 21/06
    RIGHT('000000000' + RTRIM(aporte_MEdu), 9)
FROM fco_integrada_det
WHERE eliminada = 0
AND aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt02 TO PUBLIC
GO
IF OBJECT_ID('dbo.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:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, tipo_planilla,
    registro =
    '03' + RIGHT('00000' + RTRIM(secuencia), 5) + dbo.fn_fco_cod_super('AFP', cod_AFP) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    RIGHT('0000000000' + RTRIM(suma_voluntarios), 10) +
    RIGHT('0000000000' + RTRIM(suma_voluntarios_cia), 10) +
    RIGHT('0000000000' + RTRIM(suma_FSP_sol), 10) +
    RIGHT('0000000000' + RTRIM(suma_FSP_sub), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora_aportes), 10) +
    RIGHT('0000000000' + RTRIM(int_mora_FSP_sol), 10) +
    RIGHT('0000000000' + RTRIM(int_mora_FSP_sub), 10) +
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt03
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt03 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt04') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt04
GO
CREATE VIEW dbo.vw_fco_integrada_rt04
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 4
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, tipo_planilla, 
    registro =
    '04' + RIGHT('00000' + RTRIM(secuencia), 5) + dbo.fn_fco_cod_super('EPS', cod_EPS) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    RIGHT('0000000000' + RTRIM(suma_UPC), 10) +
    CONVERT(char(15), nro_aut_IGE) +
    RIGHT('0000000000' + RTRIM(suma_aut_IGE), 10) +
    CONVERT(char(15), nro_aut_LMA) +
    RIGHT('0000000000' + RTRIM(suma_aut_LMA), 10) +
    RIGHT('0000000000' + RTRIM(neto_aportes), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(int_mora_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(subtotal_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(subtotal_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(nro_radicacion), 10) + 
    RIGHT('0000000000' + RTRIM(saldo_favor_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(saldo_favor_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(total_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(total_UPC), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('0000000000' + RTRIM(FOSYGA), 10) + 
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt04
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt04 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt05') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt05
GO
CREATE VIEW dbo.vw_fco_integrada_rt05
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 5
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, tipo_planilla, 
    registro =
    '05' + RIGHT('00000' + RTRIM(secuencia), 5) + CONVERT(char(6), cod_ARP) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    CONVERT(char(15), nro_aut) +
    RIGHT('0000000000' + RTRIM(incapacidades), 10) +
    RIGHT('0000000000' + RTRIM(otros_riesgos), 10) +
    RIGHT('0000000000' + RTRIM(neto_aportes), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(subtotal_aportes), 10) + 
    RIGHT('0000000000' + RTRIM(nro_radicacion), 10) + 
    RIGHT('0000000000' + RTRIM(saldo_favor), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('0000000000' + RTRIM(FSRP), 10) + 
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt05
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt05 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt06') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt06
GO
CREATE VIEW dbo.vw_fco_integrada_rt06
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 6
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, tipo_planilla, 
    registro =
    '06' + RIGHT('00000' + RTRIM(secuencia), 5) + dbo.fn_fco_cod_super('CCF', cod_CCF) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(suma_aportes), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(total_afiliados), 6)
FROM fco_integrada_rt06
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt06 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt07') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt07
GO
CREATE VIEW dbo.vw_fco_integrada_rt07
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 7 - SENA
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, tipo_planilla, 
    registro =
    '07' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(nro_personas), 6)
FROM fco_integrada_rt07
WHERE 1=0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt07 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt08') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt08
GO
CREATE VIEW dbo.vw_fco_integrada_rt08
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 8 - ICBF
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, tipo_planilla, 
    registro =
    '08' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10) +
    RIGHT('000000' + RTRIM(nro_personas), 6)
FROM fco_integrada_rt08
WHERE 1=0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt08 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt09') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt09
GO
CREATE VIEW dbo.vw_fco_integrada_rt09
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 9 - ESAP
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia, tipo_planilla,
    registro =
    '09' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10)
FROM fco_integrada_rt09
WHERE 1=0
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt09 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt10') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt10
GO
CREATE VIEW dbo.vw_fco_integrada_rt10
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 10 - MinEdu
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, secuencia,  tipo_planilla,
    registro =
    '10' + RIGHT('00000' + RTRIM(secuencia), 5) +
    RIGHT('0000000000000000' + nit, 16) + dv + 
    RIGHT('0000000000' + RTRIM(valor), 10) +
    RIGHT('0000' + RTRIM(dias_mora), 4) +
    RIGHT('0000000000' + RTRIM(int_mora), 10) + 
    RIGHT('0000000000' + RTRIM(total_pagar), 10)
FROM fco_integrada_rt10
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt10 TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_integrada_rt11') IS NOT NULL
    DROP VIEW dbo.vw_fco_integrada_rt11
GO
CREATE VIEW dbo.vw_fco_integrada_rt11
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 11 - TOTALES
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
SELECT
    compania, anio, mes, sucursal, 0 AS secuencia,tipo_planilla,
    registro =
    '11' + 
    RIGHT('0000000000' + RTRIM(pensiones), 10) +
    RIGHT('0000000000' + RTRIM(salud), 10) + 
    RIGHT('0000000000' + RTRIM(riesgos), 10) +
    RIGHT('0000000000' + RTRIM(cajas), 10) +
    RIGHT('0000000000' + RTRIM(SENA), 10) +
    RIGHT('0000000000' + RTRIM(ICBF), 10) +
    RIGHT('0000000000' + RTRIM(ESAP), 10) +
    RIGHT('0000000000' + RTRIM(MinEducacion), 10) +
    RIGHT('0000000000' + RTRIM(Gran_Total), 10) +
    RIGHT('0000000000' + RTRIM(conteo_AFP), 10) +
    RIGHT('0000000000' + RTRIM(conteo_EPS), 10) +
    RIGHT('0000000000' + RTRIM(conteo_ARP), 10) +
    RIGHT('0000000000' + RTRIM(conteo_CCF), 10) 
FROM fco_integrada_rt11
WHERE 1  =  0 -- Este registro no debe ser enviado
GO
GRANT SELECT ON dbo.vw_fco_integrada_rt11 TO PUBLIC
GO

IF OBJECT_ID('dbo.vw_fco_muni_tra') IS NOT NULL
    DROP VIEW dbo.vw_fco_muni_tra
GO
CREATE VIEW dbo.vw_fco_muni_tra
AS
SELECT compania, trabajador, dpto_tra = LEFT(dato, 2), muni_tra = SubString(dato, 4, 3)
FROM rel_trab_agr a
WHERE agrupacion = (SELECT x.dato FROM vw_fdt_parametros x
                    WHERE x.pais = 'COL' AND x.compania = a.compania
                      AND x.parametro = 'autoliq' AND x.secuencia = 44)
GO
GRANT SELECT ON dbo.vw_fco_muni_tra TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_periodos') IS NOT NULL
    DROP VIEW dbo.vw_fco_periodos
GO
CREATE VIEW dbo.vw_fco_periodos
AS
SELECT DISTINCT compania, periodo = Rtrim(anio) + '-' + Right('00' + RTrim(mes), 2), sit_periodo FROM fco_integrada_cab
GO
GRANT SELECT ON dbo.vw_fco_periodos TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_procesos_pi') IS NOT NULL
    DROP VIEW dbo.vw_fco_procesos_pi
GO
CREATE VIEW dbo.vw_fco_procesos_pi  
AS  
SELECT a.compania, a.anio, a.mes, a.sucursal,   
CASE WHEN a.sucursal = '' THEN '(Consolidado)' ELSE ISNULL(rtrim(a.sucursal) + '-' + rtrim(suc.descripcion), '(Consolidado)') END 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),
a.tipo_planilla
FROM fco_procesos_pi a  
LEFT JOIN vw_fco_sucursales suc ON suc.compania = a.compania AND suc.sucursal = a.sucursal  
AND  
(   (a.sucursal = '')   
 OR (a.sucursal IN   
     (SELECT sucursal FROM vw_fco_sucursales_cia   
      WHERE (   (clase_nomina = '--')  
             OR (clase_nomina IN (SELECT clase_nomina FROM rel_usu_clase_nom  
                                  WHERE usuario = SYSTEM_USER))  
            )   
      )  
     )  
)  
GO
GRANT SELECT ON dbo.vw_fco_procesos_pi TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_residente_en_exterior') IS NOT NULL
    DROP VIEW dbo.vw_fco_residente_en_exterior
GO
CREATE VIEW dbo.vw_fco_residente_en_exterior
AS
SELECT tg.compania, tg.trabajador, res_ext = case when rtc.coleccion is null then ' ' else 'X' end
FROM trabajadores_grales tg
LEFT JOIN rel_trab_coleccion rtc ON tg.compania = rtc.compania AND tg.trabajador = rtc.trabajador
    AND rtc.coleccion = (SELECT x.dato FROM vw_fdt_parametros x
                          WHERE x.pais = 'COL' AND x.compania = tg.compania
                            AND x.parametro = 'autoliq' AND x.secuencia = 43)
GO
GRANT SELECT ON dbo.vw_fco_residente_en_exterior TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_sueldos') IS NOT NULL
    DROP VIEW dbo.vw_fco_sueldos
GO
CREATE VIEW dbo.vw_fco_sueldos
AS  
SELECT compania, trabajador, fecha, salario  
FROM sueldos  
GO
GRANT SELECT ON dbo.vw_fco_sueldos TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_tc_riesgos') IS NOT NULL
    DROP VIEW dbo.vw_fco_tc_riesgos
GO
CREATE VIEW dbo.vw_fco_tc_riesgos
AS
SELECT compania, anio, mes, sucursal, tipo_planilla, nro_aut, incapacidades, otros_riesgos, nro_radicacion, saldo_favor
FROM fco_integrada_rt05
GO
GRANT SELECT ON dbo.vw_fco_tc_riesgos TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_tc_salud') IS NOT NULL
    DROP VIEW dbo.vw_fco_tc_salud
GO
CREATE VIEW dbo.vw_fco_tc_salud
AS
SELECT x.compania, x.anio, x.mes, x.sucursal, x.tipo_planilla, 
x.cod_EPS, a.descripcion AS nombre_EPS, x.nro_aut_IGE, x.suma_aut_IGE, x.nro_aut_LMA, x.suma_aut_LMA, 
x.nro_radicacion, x.saldo_favor_aportes, x.saldo_favor_UPC
FROM fco_integrada_rt04 x
LEFT JOIN vw_fco_administradoras a ON x.compania = a.compania AND x.cod_EPS = a.codigo AND a.tipo = 'EPS'
GO
GRANT SELECT ON dbo.vw_fco_tc_salud TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_tipo_cotiz') IS NOT NULL
    DROP VIEW dbo.vw_fco_tipo_cotiz
GO
CREATE VIEW dbo.vw_fco_tipo_cotiz  
AS  
SELECT tg.compania, tg.trabajador, tipo_cotizante =   
    CASE WHEN ISNUMERIC(ISNULL(tco.dato, '1')) = 1 THEN CONVERT(tinyint, ISNULL(tco.dato, '1')) ELSE '00' END  
FROM trabajadores_grales tg  
LEFT JOIN rel_trab_agr tco ON tg.compania = tco.compania AND tg.trabajador = tco.trabajador  
    AND tco.agrupacion = ISNULL((SELECT x.dato FROM vw_fdt_parametros x  
                          WHERE x.pais = 'COL' AND x.compania = tg.compania  
                            AND x.parametro = 'autoliq' AND x.secuencia = 41), 'TIPO_COTIZ')
GO
GRANT SELECT ON dbo.vw_fco_tipo_cotiz TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_tdo_trabajador') IS NOT NULL
    DROP VIEW dbo.vw_fco_tdo_trabajador
GO
CREATE VIEW dbo.vw_fco_tdo_trabajador
AS
SELECT rta.compania, rta.trabajador, rta.dato
FROM rel_trab_agr rta
WHERE rta.agrupacion = 
ISNULL((SELECT x.dato FROM vw_fdt_parametros x
        WHERE x.pais = 'COL' AND x.compania = rta.compania 
        AND x.parametro = 'autoliq' AND x.secuencia = 29), '')
GO
GRANT SELECT ON dbo.vw_fco_tdo_trabajador TO PUBLIC
GO
IF OBJECT_ID('dbo.vw_fco_hist_traslados_sena') IS NOT NULL
    DROP VIEW dbo.vw_fco_hist_traslados_sena
GO
CREATE VIEW dbo.vw_fco_hist_traslados_sena
AS
SELECT compania, trabajador, YEAR(fecha_alta) anio, MONTH(fecha_alta) mes
FROM hist_agrupaciones h
WHERE agrupacion = 'TIPO_COTIZ'
AND dato = '19'
AND EXISTS
(SELECT 1 FROM hist_agrupaciones x
 WHERE x.compania = h.compania AND x.agrupacion = h.agrupacion
 AND x.trabajador = h.trabajador 
 AND x.fecha_baja = h.fecha_alta
 AND x.dato = '12')
GO
GRANT ALL ON vw_fco_hist_traslados_sena TO PUBLIC
GO
PRINT 'Vistas de Planilla Integrada... OK'
GO
if not exists (select 1 from agrupaciones_trab where agrupacion = 'MUNI_TRA')
    exec sp_alta_agrupaciones_trab 'MUNI_TRA', 'Municipio de Trabajo para Planilla Integrada', '1', 0
go
if not exists (select 1 from rel_agr_companias where agrupacion = 'MUNI_TRA')    
    insert into rel_agr_companias (agrupacion, compania) SELECT 'MUNI_TRA', compania FROM companias
go
if not exists (select 1 from datos_agr_trab where agrupacion = 'MUNI_TRA')    
begin    
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '05-001','MEDELLIN'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '08-001','BARRANQUILLA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '11-001','BOGOTA D.C.'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '13-001','CARTAGENA DE INDIAS'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '15-001','TUNJA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '17-001','MANIZALES'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '18-001','FLORENCIA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '19-001','POPAYAN'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '20-001','VALLEDUPAR'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '23-001','MONTERIA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '27-001','QUIBDO'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '41-001','NEIVA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '44-001','RIOHACHA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '47-001','SANTA MARTA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '50-001','VILLAVICENCIO'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '52-001','PASTO'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '54-001','CUCUTA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '63-001','ARMENIA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '05-266','ENVIGADO'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '66-001','PEREIRA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '68-001','BUCARAMANGA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '70-001','SINCELEJO'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '73-001','IBAGUE'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '76-001','CALI'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '81-001','ARAUCA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '85-001','YOPAL'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '86-001','MOCOA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '88-001','SAN ANDRES'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '91-001','LETICIA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '94-001','PUERTO INIRIDA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '95-001','SAN JOSE DEL GUAVIARE'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '97-001','MITU'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '99-001','PUERTO CARREÑO'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '68-081','BARRANCABERMEJA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '05-088','BELLO'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '68-276','FLORIDABLANCA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '68-307','GIRON'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '05-360','ITAGUI'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '25-473','MOSQUERA'
    insert into datos_agr_trab (agrupacion, dato, descripcion) select 'MUNI_TRA', '05-615','RIONEGRO'
end
GO
PRINT 'Agrupación Municipio de Trabajo CREADA'
GO
if not exists (select 1 from agrupaciones_trab where agrupacion = 'TIPO_COTIZ')
    exec sp_alta_agrupaciones_trab 'TIPO_COTIZ', 'Tipo de Cotizante Planilla Integrada', '1', 0
go
if not exists (select 1 from rel_agr_companias where agrupacion = 'TIPO_COTIZ')    
    insert into rel_agr_companias (agrupacion, compania) SELECT 'TIPO_COTIZ', compania FROM companias
go
if not exists (select 1 from datos_agr_trab where agrupacion = 'TIPO_COTIZ')    
begin    
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '01', 'Dependiente'
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '03', 'Independiente'
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '12', 'Aprendices del SENA en etapa Lectiva'
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '17', 'Afiliado c. requisitos cumplidos pensión'
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '19', 'Aprendices del SENA en etapa Productiva'
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '20', 'Estudiantes (Régimen Especial-Ley789/02)'
    exec sp_alta_datos_agr_trab 'TIPO_COTIZ', '99', 'Planilla Integrada para Pensionados'
end
GO
PRINT 'Agrupación Tipo de Cotizante CREADA'
GO
DELETE criterios_valores_col WHERE campo = 'tipo_cotizante'
GO
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_cotizante', 1, 'Dependiente'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_cotizante', 12, 'Aprendices del SENA en etapa lectiva'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_cotizante', 17, 'Afiliado requisitos cumplidos a pensión'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_cotizante', 19, 'Aprendices del SENA en etapa productiva'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_cotizante', 20, 'Estudiantes (Régimen Especial-Ley789/02)'
GO
DELETE criterios_valores_col WHERE campo = 'tipo_documento'
GO
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_documento', 1, 'NI-NIT'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_documento', 2, 'CC-Cédula'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_documento', 3, 'NU-Número Unico de Identificación'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_documento', 4, 'CE-Cédula de Extranjería'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_documento', 5, 'TI-Tarjeta de Identidad'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_documento', 6, 'RC-Registro Civil'
INSERT INTO criterios_valores_col (campo, item, descripcion) SELECT 'tipo_documento', 7, 'PA-Pasaporte'
GO
PRINT 'Datos de Planilla Integrada... OK'
GO

IF OBJECT_ID('dbo.sp_fco_del_procesos_pi') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_del_procesos_pi 
GO
CREATE PROCEDURE dbo.sp_fco_del_procesos_pi
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_sucursal char(10),
    @pch_tipo_planilla char(1) = 'E'
)
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Baja de Procesos de Planilla Integrada
-- Autor: Juan Carlos Leguizamon
-- Fecha: Junio 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo tipo de planilla
/*************************************************************************/
BEGIN
    DELETE fco_procesos_pi
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = ISNULL(@pch_sucursal, '')
      AND tipo_planilla = @pch_tipo_planilla
END
GO
GRANT EXECUTE ON dbo.sp_fco_del_procesos_pi TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_ins_procesos_pi') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_ins_procesos_pi 
GO
CREATE PROCEDURE dbo.sp_fco_ins_procesos_pi
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_sucursal char(10), /* '0'. Todas, ''. Consolidado */
    @pch_tipo_planilla char(1) = 'E' /* E Activos, Y Independientes */
)
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Alta de Procesos de Planilla Integrada
-- Autor: Juan Carlos Leguizamon
-- Fecha: Julio 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
BEGIN
    IF @pch_sucursal = '0'
    BEGIN
        INSERT INTO fco_procesos_pi (compania, anio, mes, sucursal, procesar, tipo_planilla)
        SELECT @pch_compania, @psi_anio, @pti_mes, s.sucursal, 0, @pch_tipo_planilla
        FROM vw_fco_sucursales s
        WHERE compania = @pch_compania
          AND ISNULL(s.autoliquida, 1) = 1
          AND NOT EXISTS
            (SELECT 1 FROM fco_procesos_pi 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 NOT EXISTS(SELECT 1 FROM fco_procesos_pi 
                  WHERE compania = @pch_compania AND anio = @psi_anio 
                    AND mes = @pti_mes AND sucursal = @pch_sucursal and tipo_planilla = @pch_tipo_planilla)
            INSERT INTO fco_procesos_pi (compania, anio, mes, sucursal, procesar, tipo_planilla)
            SELECT @pch_compania, @psi_anio, @pti_mes, @pch_sucursal, 0, @pch_tipo_planilla
    END
END
GO
GRANT EXECUTE ON dbo.sp_fco_ins_procesos_pi TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_int_det_afp') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_int_det_afp
GO
CREATE PROCEDURE dbo.sp_fco_upd_int_det_afp
(
    @pch_compania  char(4),
    @psi_anio  smallint,
    @pti_mes  tinyint,
    @pvc_sucursal  varchar(10),
    @pch_tipo_planilla char(1),
    @pch_trabajador  char(10),
    @pch_secuencia  char(5),
    @pch_tipo_documento  char(2),
    @pvc_nro_id  varchar(16),
    @pti_tipo_cotizante  tinyint,
    @pvc_primer_apellido  varchar(20),
    @pvc_segundo_apellido  varchar(30),
    @pvc_primer_nombre  varchar(20),
    @pvc_segundo_nombre  varchar(30),
    @pch_nov_ING  char(1),
    @pch_nov_RET  char(1),
    @pch_nov_TDE  char(1),
    @pch_nov_TAE  char(1),
    @pch_nov_TDP  char(1),
    @pch_nov_TAP  char(1),
    @pch_nov_VSP  char(1),
    @pch_nov_VTE  char(1),
    @pch_nov_VST  char(1),
    @pch_nov_SLN  char(1),
    @pch_nov_IGE  char(1),
    @pch_nov_LMA  char(1),
    @pch_nov_VAC  char(1),
    @pch_nov_AVP  char(1),
    @pch_nov_VCT  char(1),
    @pch_nov_IRP  char(2),
    @pdc_salario  decimal(9, 0),
    @pch_cod_afp  char(10),
    @pch_cod_afp_Tras  char(10),
    @pti_dias_afp  tinyint,
    @pdc_IBC_afp  decimal(9, 0),
    @pdc_tarifa_afp  decimal(6, 5),
    @pdc_aporte_afp  decimal(9, 0),
    @pdc_voluntario_AFP decimal(9, 0),
    @pdc_voluntario_AFP_cia decimal(9, 0),
    @pdc_aporte_FSP_solidaridad decimal(9, 0), 
    @pdc_aporte_FSP_subsistencia decimal(9, 0), 
    @pdc_valor_no_retenido decimal(9, 0)
)
AS
BEGIN
    UPDATE fco_integrada_det
    SET 
        tipo_documento = ISNULL(@pch_tipo_documento, ''),
        nro_id = ISNULL(@pvc_nro_id, ''),
        tipo_cotizante = ISNULL(@pti_tipo_cotizante, 1),
        primer_apellido = ISNULL(@pvc_primer_apellido, ''),
        segundo_apellido = ISNULL(@pvc_segundo_apellido, ''),
        primer_nombre = ISNULL(@pvc_primer_nombre, ''),
        segundo_nombre = ISNULL(@pvc_segundo_nombre, ''),
        nov_ING = ISNULL(@pch_nov_ING, ''),
        nov_RET = ISNULL(@pch_nov_RET, ''),
        nov_TDE = ISNULL(@pch_nov_TDE, ''),
        nov_TAE = ISNULL(@pch_nov_TAE, ''),
        nov_TDP = ISNULL(@pch_nov_TDP, ''),
        nov_TAP = ISNULL(@pch_nov_TAP, ''),
        nov_VSP = ISNULL(@pch_nov_VSP, ''),
        nov_VTE = ISNULL(@pch_nov_VTE, ''),
        nov_VST = ISNULL(@pch_nov_VST, ''),
        nov_SLN = ISNULL(@pch_nov_SLN, ''),
        nov_IGE = ISNULL(@pch_nov_IGE, ''),
        nov_LMA = ISNULL(@pch_nov_LMA, ''),
        nov_VAC = ISNULL(@pch_nov_VAC, ''),
        nov_AVP =  ISNULL(@pch_nov_AVP, ''),
        nov_VCT = ISNULL(@pch_nov_VCT, ''),
        nov_IRP = ISNULL(@pch_nov_IRP, '00'),
        cod_afp = ISNULL(@pch_cod_afp, ''),
        cod_afp_Tras = ISNULL(@pch_cod_afp_Tras, ''),
        dias_afp = ISNULL(@pti_dias_afp, 0),
        salario = ISNULL(@pdc_salario, 0),
        IBC_afp = ISNULL(@pdc_IBC_afp, 0),
        tarifa_afp = ISNULL(@pdc_tarifa_afp, 0),
        aporte_afp = ISNULL(@pdc_aporte_afp, 0),
        voluntario_AFP = ISNULL(@pdc_voluntario_AFP, 0),
        voluntario_AFP_cia = ISNULL(@pdc_voluntario_AFP_cia, 0),
        aporte_FSP = ISNULL(@pdc_aporte_FSP_solidaridad, 0),
        aporte_FSP_subsistencia = ISNULL(@pdc_aporte_FSP_subsistencia, 0), 
        valor_no_retenido = ISNULL(@pdc_valor_no_retenido, 0)
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = ISNULL(@pvc_sucursal, '')
      AND tipo_planilla = @pch_tipo_planilla
      AND trabajador = @pch_trabajador

END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_afp TO PUBLIC
GO

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

END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_arp TO PUBLIC
GO

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

END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_ccf TO PUBLIC
GO

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


    -- JCL NOV-17-06
    -- Si se modifican números o valores de autorización entonces la próxima vez recalcular totales tipo 4
    IF ISNULL(@pvc_nro_aut_IGE, '') <> '' OR ISNULL(@pdc_vlr_aut_IGE, 0) > 0 OR ISNULL(@pvc_nro_aut_LMA, '') <> '' OR ISNULL(@pdc_vlr_aut_LMA, 0) > 0
        UPDATE fco_integrada_rt04
        SET origen = 0
        WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND (sucursal = ISNULL(@pvc_sucursal, '') OR @pvc_sucursal = '')
      AND tipo_planilla = @pch_tipo_planilla
END
GO
GRANT EXECUTE ON sp_fco_upd_int_det_eps TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_procesos_pi') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_procesos_pi 
GO
CREATE PROCEDURE dbo.sp_fco_upd_procesos_pi
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_sucursal char(10),
    @pbi_procesar bit,
    @pch_tipo_planilla char(1) = 'E'
)
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Cambio de Procesos de Planilla Integrada
-- Autor: Juan Carlos Leguizamon
-- Fecha: Junio 2005
-- Revisiones:
-- JCL 25-AGO-07 Inclusión del campo Tipo de Planilla
/*************************************************************************/
BEGIN
    UPDATE fco_procesos_pi
    SET procesar = @pbi_procesar
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = @pch_sucursal
      AND tipo_planilla = @pch_tipo_planilla
END
GO
GRANT EXECUTE ON dbo.sp_fco_upd_procesos_pi TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_sit_periodo') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_sit_periodo
GO
CREATE PROCEDURE dbo.sp_fco_upd_sit_periodo
(
    @pch_compania char(4),
    @pch_periodo char(7),
    @pch_operacion char(7)
)
AS
BEGIN    
    UPDATE fco_integrada_cab
    SET sit_periodo = CASE WHEN Upper(@pch_operacion) = 'FCO3060' THEN 2 ELSE 1 END
    WHERE compania = @pch_compania
      AND anio = Left(@pch_periodo, 4)
      AND mes = Right(@pch_periodo, 2)
END
GO
GRANT EXECUTE ON dbo.sp_fco_upd_sit_periodo TO PUBLIC
GO

IF OBJECT_ID('dbo.sp_fco_upd_tc_riesgos') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_tc_riesgos
GO
CREATE PROCEDURE dbo.sp_fco_upd_tc_riesgos
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pvc_sucursal varchar(10),
    @pch_tipo_planilla char(1),
    @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),
        origen = 1
    WHERE compania = @pch_compania
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND sucursal = IsNull(@pvc_sucursal, '')
      AND tipo_planilla = @pch_tipo_planilla
END
GO
GRANT EXECUTE ON dbo.sp_fco_upd_tc_riesgos TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_upd_tc_salud') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_upd_tc_salud
GO
CREATE PROCEDURE dbo.sp_fco_upd_tc_salud
(  
    @pch_compania char(4),  
    @psi_anio smallint,  
    @pti_mes tinyint,  
    @pvc_sucursal varchar(10),  
    @pch_tipo_planilla char(1),
    @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),
        origen = 1
    WHERE compania = @pch_compania  
      AND anio = @psi_anio  
      AND mes = @pti_mes  
      AND sucursal = IsNull(@pvc_sucursal, '')  
      AND tipo_planilla = @pch_tipo_planilla
      AND cod_EPS =@pch_cod_EPS  
END  
GO
GRANT EXECUTE ON dbo.sp_fco_upd_tc_salud TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_del_int_det') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_del_int_det
GO
CREATE PROCEDURE dbo.sp_fco_del_int_det
(
    @pch_compania   char(4),
    @psi_anio       smallint,
    @pti_mes        tinyint,
    @pvc_sucursal   varchar(10),
    @pch_tipo_planilla char(1),
    @pch_trabajador char(10)
)
AS
BEGIN
    DECLARE @vsi_sec smallint

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

    delete fco_integrada_det
    where compania = @pch_compania
    and anio = @psi_anio
    and mes = @pti_mes
    and (sucursal = @pvc_sucursal or @pvc_sucursal is null or @pvc_sucursal = '')
    and tipo_planilla = @pch_tipo_planilla
    and trabajador = @pch_trabajador
    
    update fco_integrada_det
    set secuencia = right('00000' + rtrim(convert(smallint, secuencia) - 1), 5)
    where compania = @pch_compania
    and anio = @psi_anio
    and mes = @pti_mes
    and (sucursal = @pvc_sucursal or @pvc_sucursal is null or @pvc_sucursal = '')
    and tipo_planilla = @pch_tipo_planilla
    and convert(smallint, secuencia) > @vsi_sec
        
END
GO
GRANT EXECUTE ON dbo.sp_fco_del_int_det TO PUBLIC
GO
IF OBJECT_ID('dbo.sp_fco_pi_autorizaciones') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_pi_autorizaciones
GO
CREATE PROCEDURE dbo.sp_fco_pi_autorizaciones
(
    @pch_compania char(4),    
    @psi_anio smallint,    
    @pti_mes tinyint,    
    @pch_sucursal char(10),
    @pch_tipo_planilla char(1) = 'E' -- JCL 27-AGO-07
)
AS
BEGIN
    /***********************************************************************/
    /* Autorizaciones por Enfermedad General (Nro. y Valor por Trabajador) */    
    /***********************************************************************/
    -- Autorizaciones donde el trabajador continua activo y en la misma EPS (se pueden mostrar a nivel de trabajadores en la planilla)
    -- Además la autorización se reportó detallada
    UPDATE fco_integrada_det
    SET nro_aut_IGE = x.numero, vlr_aut_IGE = x.valor
    FROM
    (SELECT a.compania, a.sucursal, a.tipo_planilla, a.cod_entidad, b.trabajador, 
     Convert(smallint, Left(a.periodo, 4)) anio, Convert(tinyint, Right(a.periodo, 2)) mes,
     MAX(a.numero) numero, SUM(b.valor) valor
     FROM fco_autorizaciones a
     INNER JOIN fco_autorizaciones_det b ON a.compania = b.compania AND a.autorizacion = b.autorizacion
     WHERE a.tipo_incapacidad = 0
     GROUP BY a.compania, a.sucursal, a.tipo_planilla, a.cod_entidad, b.trabajador, a.periodo) x
    WHERE fco_integrada_det.compania = x.compania 
      AND (fco_integrada_det.sucursal = x.sucursal OR @pch_sucursal = '')
      AND fco_integrada_det.tipo_planilla = x.tipo_planilla
      AND fco_integrada_det.cod_EPS = x.cod_entidad
      AND fco_integrada_det.trabajador = x.trabajador
      AND fco_integrada_det.anio = x.anio 
      AND fco_integrada_det.mes = x.mes
      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 fco_integrada_det.tipo_planilla = @pch_tipo_planilla

    DELETE fco_autorizaciones_ext
    WHERE compania = @pch_compania
      AND (sucursal = @pch_sucursal OR @pch_sucursal = '')
      AND tipo_planilla = @pch_tipo_planilla
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND tipo = 0

    -- Autorizaciones donde el trabajador está retirado o en otra EPS (no se pueden mostrar a nivel de trabajadores en la planilla)
    INSERT INTO fco_autorizaciones_ext
    (compania, sucursal, tipo_planilla, cod_EPS, anio, mes, tipo, trabajador, numero, valor)
    SELECT @pch_compania, @pch_sucursal, @pch_tipo_planilla, cod_entidad, 
           Convert(smallint, Left(a.periodo, 4)) anio, Convert(tinyint, Right(a.periodo, 2)) mes,
           tipo_incapacidad, b.trabajador, MAX(a.numero), SUM(b.valor)
    FROM fco_autorizaciones a
    INNER JOIN fco_autorizaciones_det b ON a.compania = b.compania AND a.autorizacion = b.autorizacion
    WHERE a.compania = @pch_compania
      AND a.periodo = RTrim(@psi_anio) + Right('00' + RTrim(@pti_mes), 2)
      AND a.tipo_incapacidad = 0
      AND (a.sucursal = @pch_sucursal OR @pch_sucursal = '')
      AND a.tipo_planilla = @pch_tipo_planilla
      AND NOT EXISTS
        (SELECT 1 FROM fco_integrada_det x
         WHERE x.compania = a.compania 
           AND (x.sucursal = a.sucursal OR @pch_sucursal = '')
           AND x.tipo_planilla = a.tipo_planilla
           AND x.cod_EPS = a.cod_entidad
           AND x.trabajador = b.trabajador
           AND RTrim(x.anio) + Right('00' + RTrim(x.mes), 2) = a.periodo
        )
    GROUP BY a.cod_entidad, a.periodo, a.tipo_incapacidad, b.trabajador
    
    -- Autorizaciones que no se reportaron detalladamente
    INSERT INTO fco_autorizaciones_ext
    (compania, sucursal, tipo_planilla, cod_EPS, anio, mes, tipo, trabajador, numero, valor)
    SELECT @pch_compania, @pch_sucursal, @pch_tipo_planilla, cod_entidad, Convert(smallint, Left(a.periodo, 4)) anio, Convert(tinyint, Right(a.periodo, 2)) mes,
           tipo_incapacidad, '', MAX(numero), SUM(valor_total)
    FROM fco_autorizaciones a
    WHERE compania = @pch_compania
      AND periodo = RTrim(@psi_anio) + Right('00' + RTrim(@pti_mes), 2)
      AND tipo_incapacidad = 0
      AND (sucursal = @pch_sucursal OR @pch_sucursal = '')
      AND tipo_planilla = @pch_tipo_planilla
      AND NOT EXISTS
        (SELECT 1 FROM fco_autorizaciones_det b
         WHERE a.compania = b.compania AND a.autorizacion = b.autorizacion
        )
    GROUP BY a.cod_entidad, a.periodo, a.tipo_incapacidad

    /***********************************************************************/
    /* Autorizaciones por Licencia de Maternidad (Nro. y Valor por Trabajador) */    
    /***********************************************************************/
    -- Autorizaciones donde el trabajador continua activo y en la misma EPS (se pueden mostrar a nivel de trabajadores en la planilla)
    -- Además la autorización se reportó detallada
    UPDATE fco_integrada_det
    SET nro_aut_LMA = x.numero, vlr_aut_LMA = x.valor
    FROM
    (SELECT a.compania, a.sucursal, a.tipo_planilla, a.cod_entidad, b.trabajador, 
     Convert(smallint, Left(a.periodo, 4)) anio, Convert(tinyint, Right(a.periodo, 2)) mes,
     MAX(a.numero) numero, SUM(b.valor) valor
     FROM fco_autorizaciones a
     INNER JOIN fco_autorizaciones_det b ON a.compania = b.compania AND a.autorizacion = b.autorizacion
     WHERE a.tipo_incapacidad = 1
     GROUP BY a.compania, a.sucursal, a.tipo_planilla, a.cod_entidad, b.trabajador, a.periodo) x
    WHERE fco_integrada_det.compania = x.compania 
      AND (fco_integrada_det.sucursal = x.sucursal OR @pch_sucursal = '')
      AND fco_integrada_det.tipo_planilla = x.tipo_planilla
      AND fco_integrada_det.cod_EPS = x.cod_entidad
      AND fco_integrada_det.trabajador = x.trabajador
      AND fco_integrada_det.anio = x.anio 
      AND fco_integrada_det.mes = x.mes
      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 fco_integrada_det.tipo_planilla = @pch_tipo_planilla

    DELETE fco_autorizaciones_ext
    WHERE compania = @pch_compania
      AND (sucursal = @pch_sucursal OR @pch_sucursal = '')
      AND tipo_planilla = @pch_tipo_planilla
      AND anio = @psi_anio
      AND mes = @pti_mes
      AND tipo = 1

    -- Autorizaciones donde el trabajador está retirado o en otra EPS (no se pueden mostrar a nivel de trabajadores en la planilla)
    INSERT INTO fco_autorizaciones_ext
    (compania, sucursal, tipo_planilla, cod_EPS, anio, mes, tipo, trabajador, numero, valor)
    SELECT @pch_compania, @pch_sucursal, @pch_tipo_planilla, cod_entidad, 
           Convert(smallint, Left(a.periodo, 4)) anio, Convert(tinyint, Right(a.periodo, 2)) mes,
           tipo_incapacidad, b.trabajador, MAX(a.numero), SUM(b.valor)
    FROM fco_autorizaciones a
    INNER JOIN fco_autorizaciones_det b ON a.compania = b.compania AND a.autorizacion = b.autorizacion
    WHERE a.compania = @pch_compania
      AND a.periodo = RTrim(@psi_anio) + Right('00' + RTrim(@pti_mes), 2)
      AND a.tipo_incapacidad = 1
      AND (a.sucursal = @pch_sucursal OR @pch_sucursal = '')
      AND a.tipo_planilla = @pch_tipo_planilla
      AND NOT EXISTS
        (SELECT 1 FROM fco_integrada_det x
         WHERE x.compania = a.compania 
           AND (x.sucursal = a.sucursal OR @pch_sucursal = '')
           AND x.tipo_planilla = a.tipo_planilla
           AND x.cod_EPS = a.cod_entidad
           AND x.trabajador = b.trabajador
           AND RTrim(x.anio) + Right('00' + RTrim(x.mes), 2) = a.periodo
        )
    GROUP BY a.cod_entidad, a.periodo, a.tipo_incapacidad, b.trabajador
    
    -- Autorizaciones que no se reportaron detalladamente
    INSERT INTO fco_autorizaciones_ext
    (compania, sucursal, tipo_planilla, cod_EPS, anio, mes, tipo, trabajador, numero, valor)
    SELECT @pch_compania, @pch_sucursal, @pch_tipo_planilla, cod_entidad, Convert(smallint, Left(a.periodo, 4)) anio, Convert(tinyint, Right(a.periodo, 2)) mes,
           tipo_incapacidad, '', MAX(numero), SUM(valor_total)
    FROM fco_autorizaciones a
    WHERE compania = @pch_compania
      AND periodo = RTrim(@psi_anio) + Right('00' + RTrim(@pti_mes), 2)
      AND tipo_incapacidad = 1
      AND (sucursal = @pch_sucursal OR @pch_sucursal = '')
      AND tipo_planilla = @pch_tipo_planilla
      AND NOT EXISTS
        (SELECT 1 FROM fco_autorizaciones_det b
         WHERE a.compania = b.compania AND a.autorizacion = b.autorizacion
        )
    GROUP BY a.cod_entidad, a.periodo, a.tipo_incapacidad

END
GO
GRANT EXECUTE ON dbo.sp_fco_pi_autorizaciones TO PUBLIC
GO

If Object_Id('dbo.sp_fco_upd_integrada_cab') Is Not Null
    Drop Procedure dbo.sp_fco_upd_integrada_cab
Go
Create Procedure dbo.sp_fco_upd_integrada_cab
(
    @pch_compania char(4),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pvc_sucursal varchar(10),
    @pch_tipo_planilla char(1),
    @pch_nro_planilla char(10),
    @pdt_fecha_pago smalldatetime
)
As
Begin
    Update fco_integrada_cab
    Set nro_planilla = @pch_nro_planilla,
        fecha_pago_real = @pdt_fecha_pago
    Where compania = @pch_compania
      And anio = @psi_anio
      And mes = @pti_mes
      And sucursal = IsNull(@pvc_sucursal, '')
      And tipo_planilla = @pch_tipo_planilla
End
Go
Grant Execute On dbo.sp_fco_upd_integrada_cab To Public
Go

IF OBJECT_ID('dbo.sp_fco_planilla_integrada') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_planilla_integrada
GO
CREATE PROCEDURE dbo.sp_fco_planilla_integrada    
(    
    @pch_compania char(4),    
    @psi_anio smallint,    
    @pti_mes tinyint,    
    @pch_sucursal char(10),  -- Nunca llega NULL    
    @pbi_regenerar bit,
    @pch_tipo_planilla char(1) = 'E' -- JCL 25-AGO-07
)    
AS    
/*************************************************************************/    
-- Modulo Fiscal Colombiano 2.0 ADAM V3    
-- Descripcion: Crea tabla base para autoliquidacion de aportes    
--              y genera archivo I Información del Formulario Integrado    
--              según formato de la Resolución 001303 de 2005 (Mayo 11).    
--             Si la tabla está llena se respetan los datos a menos que     
--             se indique lo contrario en el parámetro regenerar.    
-- Autor: Juan Carlos Leguizamon    
-- Fecha: Junio 2005    
-- Revisiones:    
-- Abr.16/06 - Ajustes según Resolución 0634 de Mar-06-06  
-- Jun.02/06 - Ajustes según Resolución 1317 de Abr-25-06   
-- Julio /06 - Ajustes varios según pruebas con operador
-- Agosto 8/06. Revisión nombre sucursal (se usaba fco_sucursales en lugar de vw_fco_sucursales)
-- Agosto 28/06. Ajuste para obtener valor correcto de incapacidades por riesgos profesionales
-- Sept-05-06. Ajuste porque se estaban perdiendo los valores de autorizaciones de incapacidades digitados
-- Sep-17-06. Se incluye nueva vista vw_fco_tdo_trabajador que interpreta el tipo documento segun lo que haya definido en cada cliente
--            Simplificacion del nro id del empleado y su dv (= 0).  Solo corregir departamento y municipio a quienes falten
-- Sep-22-06 - Se omite condición de fecha de baja a solicitud de GRASCO/DERSA    
-- Oct-12-06 - Codigos internos para nueva eps y nueva afp
-- Oct-03-06 - Para colombianos residentes fuera del pais el % de aporte a salud es diferente (1% y no 12%)  
-- Oct-03-06 - Control para que tarifa de pension sea cero si el subtipo de cotizante es 1 o 2  
-- Oct-26-06 - Corregir tarifa pension = 0 para quienes no aportan a pension
-- Oct-26-06 - Cuando un aprendiz del SENA pasa de etapa lectiva a productiva debe marcarse novedad ING (según SCN y SCA)
-- Nov-17-06 - Tarifas de aporte a SENA y a ICBF deben quedar en cero para quienes no aporten (solicitado por Merck S.A.)
-- Nov-17-06 - Incorporación correcta de incapacidades reportadas por la opcion de autorizaciones (casos presentados en Sudameris y Finca)
-- Nov-17-06 - Cuando se digita autorización ARP por detalle y luego se agrega cotizacion a otros riesgos, duplica el valor de la autorización
-- Dic-05-06 - Por error se habían omitido los códigos de traslado de Fondo de Pensiones
-- Abr-18-07 - No incluir fantasmas marcados como pensionados
-- Abr-19-07 - Pensión especial para Rohm And Haas
-- Ago-27-07 - Inclusión del campo Tipo Planilla (se modifican todas las tablas incluyendo campo tipo_planilla)
-- Ago-27-07 - Incluir variable período anterior para que no salgan retirados de hace más de dos meses
/*************************************************************************/    
BEGIN    
    SET NOCOUNT ON    
    
    -- Declaración de Variables    
    DECLARE     
        @vch_periodo char(6),    
        @vch_agt_AFP char(10),     -- Fondo de Pensiones    
        @vch_agt_EPS char(10),     -- EPS    
        @vch_var_SaT char(2),      -- Variable Salud Trabajador    
        @vch_var_SaE char(2),      -- Variable Salud Empleador    
        @vch_var_PeT char(2),      -- Variable Pensión Trabajador    
        @vch_var_PeE char(2),      -- Variable Pensión Empleador    
        @vch_var_CCF char(2),      -- Variable Aporte CCF    
        @vch_var_SENA char(2),     -- Variable Aporte SENA    
        @vch_var_ICBF char(2),     -- Variable Aporte ICBF    
        @vch_var_ESAP char(2),     -- Variable Aporte ESAP    
        @vch_var_MEdu char(2),     -- Variable Aporte MinEducación    
        @vdc_tar_EPS decimal(6,5), -- Tarifa Salud    
        @vdc_tar_AFP decimal(6,5), -- Tarifa Pensión    
        @vdc_tar_CCF decimal(6,5), -- Tarifa Cajas de Compensación    
        @vdc_tar_SENA decimal(6,5),-- Tarifa SENA    
        @vdc_tar_ICBF decimal(6,5),-- Tarifa ICBF    
        @vdc_tar_ESAP decimal(6,5),-- Tarifa ESAP    
        @vdc_tar_MEdu decimal(6,5),-- Tarifa MinEducación    
        @vch_agr_VST char(3),      -- /* Variación Transitoria del Salario (Ingresos o Aporte Sin Sueldo Basico)*/            
        @vch_agr_SLN char(3),      -- /* Suspensión temporal del contrato de trabajo y Licencias No Remuneradas */    
        @vch_agr_IGE char(3),      -- /* Incapacidad General */     
        @vch_agr_LMA char(3),      -- /* Licencia Materna */     
        @vch_agr_VAC char(3),      -- /* Vacaciones */     
        @vch_agr_AVP_T char(3),    -- /* Aporte Voluntario (al Fondo de Pensiones) - Trabajador */     
        @vch_agr_AVP_E char(3),    -- /* Aporte Voluntario (al Fondo de Pensiones) - Empleador */     
        @vch_agr_IRP char(3),      -- /* Incapacidad por Accidente de Trabajo */     
        @vch_agr_AFP_IBC char(3),  -- /* IBC Pensión */     
        @vch_agr_AFP_Cot char(3),  -- /* Cotización a Pensión */    
        @vch_agr_FSP char(3),      -- /* Fondo de Solidaridad Pensional */    
        @vch_agr_VNR char(3),      -- /* Valor No Retenido por Aportes Voluntarios */    
        @vch_agr_EPS_IBC char(3),  -- /* IBC Salud */     
        @vch_agr_EPS_Cot char(3),  -- /* Cotización a Salud */    
        @vch_agr_UPC char(3),      -- /* UPC Adicional */    
        @vch_agr_ARP_IBC char(3),  -- /* IBC Riesgos Profesionales */     
        @vch_agr_ARP_Cot char(3),  -- /* Cotización a Riesgos Profesionales */    
        @vch_agr_CCF_IBC char(3),  -- /* IBC Cajas de Compensación */     
        @vti_CCF_tipo tinyint,     -- /* Tipo de Dato Cotizacion CCF */    
        @vch_CCF_Cot char(5),      -- /* Cotización a la Caja de Compensación Familiar */    
        @vti_SENA_tipo tinyint,    -- /* Tipo de Dato Cotizacion SENA */    
        @vch_SENA_Cot char(5),     -- /* Cotización al SENA */            
        @vti_ICBF_tipo tinyint,    -- /* Tipo de Dato Cotizacion ICBF */    
        @vch_ICBF_Cot char(5),     -- /* Cotización al ICBF */    
        @vti_ESAP_tipo tinyint,    -- /* Tipo de Dato Cotizacion ESAP */    
        @vch_ESAP_Cot char(5),     -- /* Cotización al ESAP */    
        @vti_MEdu_tipo tinyint,    -- /* Tipo de Dato Cotizacion MinEducación */    
        @vch_Medu_Cot char(5),     -- /* Cotización al MinEducación */    
        @vsi_empleados smallint,   -- /* Total de Empleados */    
        @vdc_nomina decimal(12),   -- /* Total Nómina */    
        @vti_orden tinyint,        -- /* Orden de los Trabajadores en el medio */    
        @vsi_random smallint,      -- /* Valor randómico para manejo de procesos simultáneos */    
        @vsi_handicap smallint,    -- /* Por si se suceden procesos simultáneos */    
        @vsi_secuencia smallint,   -- /* Se utiliza en la parte "fantasmal" */    
        @vti_tipo_IBC_CCF tinyint, -- /* Tipo de dato que almacena el IBC de la CCF, concepto o agrupación */   
        @vsi_IBC_CCF smallint,     -- /* Concepto que guarda el IBC para la CCF */  
        @vti_FSP_Sol_tipo tinyint, -- /* Tipo de parametro para la subcuenta de solidaridad del FSP */ --JCL.Jul.18/06--
        @vch_FSP_Sol char(5),      -- /* Concepto para la subcuenta de solidaridad del FSP */  --JCL.Jun.02/06--  
        @vti_FSP_Sub_tipo tinyint, -- /* Tipo de parametro para la subcuenta de subsistencia del FSP */ --JCL.Jul.18/06--
        @vch_FSP_Sub char(5),      -- /* Concepto para la subcuenta de subsistencia del FSP */  --JCL.Jun.02/06--  
        @vch_var_CRE char(2),      -- /* Variable para la tarifa de salud de Colombianos Residentes en el Exterior */ -- JCL.Oct-03-06--  
        @vdc_tar_CRE decimal(6,5), -- /* Tarifa de salud para Colombianos Residentes en el Exterior */ -- JCL.Oct-03-06--  
        @vti_respetar_tot tinyint, -- /* Indica que no se deben borrar los totales de aportes a salud, el usuario los editó */
        @vti_resp_tot_arp tinyint, -- /* Indica que no se deben borrar los totales de aportes a riesgos, el usuario los editó */
        @vch_per_ant char(6)       -- /* Período anterior, para incluir retirados en el mes anterior por si algo se quedo por reportar */

    -- Llenado de variables generales    
    SET @vch_periodo = RTRIM(@psi_anio) + RIGHT('00' + RTRIM(@pti_mes),2)
    SET @vch_per_ant = CASE WHEN @pti_mes = 1 THEN RTRIM(@psi_anio - 1) + '12'
                                              ELSE RTRIM(@psi_anio) + RIGHT('00' + RTRIM(@pti_mes - 1), 2)
                       END
    
    -- 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 @vti_orden = CASE WHEN ISNUMERIC(dato) = 1 THEN dato ELSE 2 END FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 37    
    SET @vti_orden = ISNULL(@vti_orden, 2)    
  
    SELECT @vti_FSP_Sol_tipo = tipo, @vch_FSP_Sol = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 45 --JCL.Jul.18/06--
    SELECT @vti_FSP_Sub_tipo = tipo, @vch_FSP_Sub = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 46 --JCL.Jul.18/06--
  
    SELECT @vch_var_CRE = dato FROM vw_fdt_parametros WHERE pais = 'COL' AND compania = @pch_compania AND parametro = 'autoliq' AND secuencia = 48 -- JCL.Oct-03-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)    
    SET @vdc_tar_CRE = ISNULL(dbo.fn_fco_var_nom(@pch_compania, @vch_var_CRE, 0), 0.01)  
    
    IF EXISTS (SELECT 1 FROM fco_integrada_rt04 
               WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
                AND tipo_planilla = @pch_tipo_planilla AND origen = 1)
        SET @vti_respetar_tot = 1
    ELSE
        SET @vti_respetar_tot = 0 

    IF @pbi_regenerar = 1 SET @vti_respetar_tot = 0

    IF EXISTS (SELECT 1 FROM fco_integrada_rt05
               WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
                AND tipo_planilla = @pch_tipo_planilla AND origen = 1)
        SET @vti_resp_tot_arp = 1
    ELSE
        SET @vti_resp_tot_arp = 0 

    IF @pbi_regenerar = 1 SET @vti_resp_tot_arp = 0

    /* Borrar datos de procesos anteriores */    
    IF @vti_respetar_tot = 0 
        DELETE fco_integrada_rt04  
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '') 
        And tipo_planilla = @pch_tipo_planilla

    IF @vti_resp_tot_arp = 0
        DELETE fco_integrada_rt05  
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '') 
        And tipo_planilla = @pch_tipo_planilla

    -- 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 = '')
                                          And tipo_planilla = @pch_tipo_planilla)
    BEGIN /*1*/  
        DELETE fco_integrada_det    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '') 
        And tipo_planilla = @pch_tipo_planilla
        
        DELETE fco_integrada_cab    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '') 
        And tipo_planilla = @pch_tipo_planilla
      
        /* Registro Tipo 1. DATOS GENERALES DEL APORTANTE */    
        INSERT INTO fco_integrada_cab    
        (compania, anio, mes, sucursal, tipo_planilla, 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, @pch_tipo_planilla, 1, cias.nombre_cia,     
            ISNULL(LEFT(cda.tipo_id,2), 'NI'),     
            ISNULL(CASE WHEN LEN(ISNULL(dbo.fn_solonum(cias.registro_fiscal), '')) = 0 THEN ''    
                        ELSE LEFT(LEFT(dbo.fn_solonum(cias.registro_fiscal), LEN(dbo.fn_solonum(cias.registro_fiscal))-1), 16) END, ''),    
            dv = ISNULL(RIGHT(dbo.fn_solonum(cias.registro_fiscal), 1), ''),    
            fp = CASE WHEN LTRIM(RTRIM(@pch_sucursal)) = '' THEN 'C' ELSE 'S' END,    
            ns = ISNULL(suc.descripcion, ''),    
            narp = ISNULL(cda.cod_ARP, ''),  
            RTRIM(@psi_anio) + RIGHT('00' + RTRIM(@pti_mes), 2),    
            CASE WHEN @pti_mes = 12     
                 THEN RTRIM(@psi_anio + 1) + '01'    
                 ELSE RTRIM(@psi_anio) + RIGHT('00' + RTRIM(@pti_mes + 1), 2)    
            END,    
            nr = '',    
            fecha = GETDATE(),    
            ne = 0, -- Todavia no se sabe    
            vn = 0, -- Todavia no se sabe    
            operador = '00' -- Asignado por el Sistema    
        FROM companias cias    
        LEFT JOIN vw_fco_cias_datos_adi cda ON cda.compania = cias.compania    
        LEFT JOIN vw_fco_sucursales suc ON suc.compania  = cias.compania AND suc.sucursal = @pch_sucursal  
        WHERE cias.compania = @pch_compania    
    
        /* Registro Tipo 2: LIQUIDACION DETALLADA DE APORTES */    
        /* Seleccion de Trabajadores */    
        SELECT @vsi_random = FLOOR(RAND( (DATEPART(mm, GETDATE()) * 100000 )    
           + (DATEPART(ss, GETDATE()) * 1000 )    
           + DATEPART(ms, GETDATE()) ) * 32567) + 1  
    
        DELETE fco_integrada_temp WHERE random = @vsi_random    
    
        IF @vti_orden = 1    
        BEGIN  
            SELECT 
                tg.compania, tg.trabajador, 
                sucursal = CASE WHEN @pch_sucursal = '' THEN '' ELSE ISNULL(SUC.dato, '') END,  -- JCL. Sept-05-06
                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_per_ant)
              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')
                   AND (  (tcot.tipo_cotizante = '03' and @pch_tipo_planilla = 'Y')
                        OR(tcot.tipo_cotizante <> '03' and @pch_tipo_planilla = 'E')
                       )
                )
            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, 
                sucursal = CASE WHEN @pch_sucursal = '' THEN '' ELSE ISNULL(SUC.dato, '') END,  -- JCL. Sept-05-06
                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_per_ant)
              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')
                   AND (  (tcot.tipo_cotizante = '03' and @pch_tipo_planilla = 'Y')
                        OR(tcot.tipo_cotizante <> '03' and @pch_tipo_planilla = 'E')
                       )
                )
            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, 
                sucursal = CASE WHEN @pch_sucursal = '' THEN '' ELSE ISNULL(SUC.dato, '') END,  -- JCL. Sept-05-06
                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_per_ant)
              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')
                   AND (  (tcot.tipo_cotizante = '03' and @pch_tipo_planilla = 'Y')
                        OR(tcot.tipo_cotizante <> '03' and @pch_tipo_planilla = 'E')
                       )
                )
            ORDER BY t.nombre    
    
            INSERT INTO fco_integrada_temp  
            (random, compania, trabajador, sucursal, relacion_laboral, fecha_ingreso, fecha_baja, clave_unica, nombre, registro_fiscal, secuencia)  
            SELECT @vsi_random, * FROM #fco_integrada_temp3  
      
            DROP TABLE #fco_integrada_temp3  
        END  
  
        SELECT @vsi_handicap = MIN(secuencia) FROM fco_integrada_temp WHERE random = @vsi_random            
        
        /* Datos Basicos por Trabajador */    
        INSERT INTO fco_integrada_det
        (compania, anio, mes, sucursal, tipo_planilla, trabajador, consecutivo, 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, @pch_tipo_planilla, tg.trabajador, 1,
            RIGHT('00000' + RTRIM(tg.secuencia - @vsi_handicap + 1), 5),     
            td = LEFT(ISNULL(td.dato, 'CC'), 2), LEFT(LTRIM(IsNull(tg.clave_unica, '0')), 16), '0',    
            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 vw_fco_tdo_trabajador td ON 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    
  
        /* Llenar el departamento y el municipio a quienes no tienen 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.tipo_planilla = @pch_tipo_planilla
          AND fco_integrada_det.compania = x.compania
          AND fco_integrada_det.trabajador = x.trabajador
          AND departamento = ''
  
        /* Novedad ING. Cuando un aprendiz del SENA pasa de Etapa Lectiva a Productiva */
        UPDATE fco_integrada_det
        SET nov_ING = 'X'
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM vw_fco_hist_traslados_sena x
                      WHERE x.compania = fco_integrada_det.compania
                        AND x.trabajador = fco_integrada_det.trabajador
                        AND x.anio = fco_integrada_det.anio
                        AND x.mes = fco_integrada_det.mes)

        /* 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 tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM historial_laboral x     
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND x.codigo_incidencia = '0000000002'    
                        AND CONVERT(char(6), x.valor_03, 112) = @vch_periodo)    
    
        /* Novedad TDE. INGRESO A ESTA EPS (TRASLADO DESDE OTRA EPS) */    
        UPDATE fco_integrada_det    
        SET nov_TDE = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND nov_ING <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_hist_traslados_eps x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
    
        /* Novedad TAE. RETIRO DE ESTA EPS (TRASLADO A OTRA EPS) */    
        UPDATE fco_integrada_det    
        SET nov_TAE = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM fco_traslados_EPS x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_cambio, 112) = @vch_periodo)    
            
        /* Novedad TDP. INGRESO A ESTA AFP (TRASLADO DESDE OTRA AFP) */    
        UPDATE fco_integrada_det    
        SET nov_TDP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND nov_ING <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_hist_traslados_fpo x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
    
        /* Novedad TAP. RETIRO DE ESTA AFP (TRASLADO A OTRA AFP) */    
        UPDATE fco_integrada_det    
        SET nov_TAP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM fco_traslados_FPO x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_cambio, 112) = @vch_periodo)    
    
        /* Novedad VSP. VARIACION PERMANENTE DE SALARIO */    
        UPDATE fco_integrada_det    
        SET nov_VSP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND nov_ING <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_sueldos x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha, 112) = @vch_periodo)    
                    
        /* Novedad VTE. CAMBIO TARIFA ESPECIAL */    
        -- Pendiente    
    
        /* Novedad VST. VARIACION TRANSITORIA DEL SALARIO */    
        UPDATE fco_integrada_det    
        SET nov_VST = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VST, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad SLN. SUSPENSIÓN TEMPORAL CONTRATO Y LICENCIA NO REMUNERADA */    
        UPDATE fco_integrada_det    
        SET nov_SLN = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_SLN, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.tiempo <> 0)    
    
        /* Novedad IGE. INCAPACIDAD GENERAL */    
        UPDATE fco_integrada_det    
        SET nov_IGE = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_IGE, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad LMA. LICENCIA MATERNA */    
        UPDATE fco_integrada_det    
        SET nov_LMA = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_LMA, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad VAC. VACACIONES */    
        UPDATE fco_integrada_det    
        SET nov_VAC = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VAC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad AVP. APORTE VOLUNTARIO */    
        UPDATE fco_integrada_det    
        SET nov_AVP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_T, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad AVP. APORTE VOLUNTARIO (Empleador) */    
        UPDATE fco_integrada_det    
        SET nov_AVP = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND nov_AVP = ''    
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_E, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Novedad VCT. VARIACION DEL CENTRO DE TRABAJO */    
        UPDATE fco_integrada_det    
        SET nov_VCT = 'X'    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND nov_ING <> 'X'    
          AND EXISTS (SELECT 1 FROM vw_fco_hist_traslados_ctr x    
                      WHERE x.compania = fco_integrada_det.compania    
                        AND x.trabajador = fco_integrada_det.trabajador    
                        AND CONVERT(char(6), x.fecha_alta, 112) = @vch_periodo)    
            
        /* Novedad IRP. INCAPACIDAD POR ACCIDENTE DE TRABAJO O ENF.PROFESIONAL -EN DIAS- */    
        UPDATE fco_integrada_det    
        SET nov_IRP = (SELECT CASE WHEN tiempo > 30 THEN '30' 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 tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_IRP, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.tiempo <> 0)    
    
        /* Nueva AFP (Fondo de Pensiones al cual se traslada) */    
-- Sep-22-06    -- Corregido Dic-05-06
        UPDATE fco_integrada_det        
        SET cod_AFP_Tras = t.FPO_nueva    
        FROM fco_traslados_fpo t     
        WHERE t.compania = fco_integrada_det.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 fco_integrada_det.tipo_planilla = @pch_tipo_planilla
          AND CONVERT(char(6), t.fecha_cambio, 112) = @vch_periodo    
    
        /* Nueva EPS (EPS al cual se traslada) */    
-- Sep-22-06    
        UPDATE fco_integrada_det    
        SET cod_EPS_Tras = t.EPS_nueva
        FROM fco_traslados_eps t 
        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 fco_integrada_det.tipo_planilla = @pch_tipo_planilla
          AND CONVERT(char(6), t.fecha_cambio, 112) = @vch_periodo    
            
        /* Días cotizados a pensión e IBC */    
        UPDATE fco_integrada_det    
        SET dias_AFP = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END    
                       FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
            IBC_AFP = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            
        /* Días cotizados a salud e IBC */    
        UPDATE fco_integrada_det    
        SET dias_EPS = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END
                      FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
            IBC_EPS = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
  
    
        /* Días cotizados a riesgos profesionales e IBC */    
        UPDATE fco_integrada_det    
        SET dias_ARP = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END
                      FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
            IBC_ARP = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            
        /* IBC caja de compensación */    
        IF ISNULL(@vti_tipo_IBC_CCF, 2) <> 0  
            UPDATE fco_integrada_det    
            SET dias_CCF = (SELECT CASE WHEN tiempo > 30 THEN 30 ELSE CASE WHEN tiempo < 0 THEN 0 ELSE tiempo END END
                        FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_CCF_IBC, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0),    
                IBC_CCF = (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_CCF_IBC, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND tipo_planilla = @pch_tipo_planilla
              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 tipo_planilla = @pch_tipo_planilla
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vsi_IBC_CCF, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                
        /* Aporte o Cotización Obligatoria a Pensión */    
        UPDATE fco_integrada_det    
        SET aporte_AFP =     
            (SELECT Round((importe - 1)/100,0)*100 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_Cot, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
         AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AFP_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            
        /* Aporte Voluntario del Trabajador a Pensión */    
        UPDATE fco_integrada_det    
        SET voluntario_AFP =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_T, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_T, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
  
        /* Aporte Voluntario del Empleador a Pensión */    
        UPDATE fco_integrada_det    
        SET voluntario_AFP_cia =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_E, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_AVP_E, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte Fondo de Solidaridad Pensional subcuenta de Solidaridad */  --JCL.Jul.18/06--  
        IF @vti_FSP_Sol_tipo = 0  --Es un concepto
        BEGIN
            IF ISNUMERIC(@vch_FSP_Sol) = 1
                UPDATE fco_integrada_det    
                SET aporte_FSP =   
                        (SELECT SUM(importe) FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                         WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND tipo_planilla = @pch_tipo_planilla
                  AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        END
        ELSE --Es una Agrupación de Conceptos
            UPDATE fco_integrada_det    
            SET aporte_FSP =     
                (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                  WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
              AND tipo_planilla = @pch_tipo_planilla
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_FSP_Sol, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    

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

        UPDATE fco_integrada_det    
        SET aporte_FSP_Subsistencia = aporte_FSP
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND aporte_FSP_Subsistencia = 0
          AND aporte_FSP > 0
        
        /* Valor no retenido por aportes voluntarios */    
        UPDATE fco_integrada_det    
        SET valor_no_retenido =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VNR, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_VNR, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria a Salud */    
        UPDATE fco_integrada_det    
        SET aporte_EPS =     
            (SELECT Round((importe - 1)/100,0)*100 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_Cot, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_EPS_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* UPC Adicional */    
        UPDATE fco_integrada_det    
        SET UPC_adicional =     
            (SELECT importe FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_UPC, @psi_anio, @pti_mes) x    
              WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
          AND tipo_planilla = @pch_tipo_planilla
          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)    

        /* NOV-17-06 Autorizaciones de incapacidades por EG y LM */    
        EXEC sp_fco_pi_autorizaciones @pch_compania, @psi_anio, @pti_mes, @pch_sucursal, @pch_tipo_planilla
    
        /* 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 = '')    
          AND tipo_planilla = @pch_tipo_planilla
    
        /* 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 tipo_planilla = @pch_tipo_planilla
          AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_agr_ARP_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria a la Caja de Compensación Familiar */    
        IF @vti_CCF_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_CCF_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_CCF =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_CCF_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND tipo_planilla = @pch_tipo_planilla
                  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 tipo_planilla = @pch_tipo_planilla
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_CCF_Cot, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria al SENA */    
        IF @vti_SENA_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_SENA_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_SENA =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_SENA_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND tipo_planilla = @pch_tipo_planilla
                  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 tipo_planilla = @pch_tipo_planilla
              AND EXISTS (SELECT 1 FROM dbo.fntb_acum_mes_agr(@pch_compania, @vch_SENA_Cot, @psi_anio, @pti_mes) x    
                          WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
    
        /* Aporte o Cotización Obligatoria al ICBF */    
        IF @vti_ICBF_tipo = 0    
        BEGIN    
            IF ISNUMERIC(@vch_ICBF_Cot) = 1    
                UPDATE fco_integrada_det    
                SET aporte_ICBF =     
                    (SELECT importe FROM dbo.fntb_acum_mes_cnc(@pch_compania, @vch_ICBF_Cot, @psi_anio, @pti_mes) x    
                      WHERE x.trabajador = fco_integrada_det.trabajador AND x.importe <> 0)    
                WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
                  AND tipo_planilla = @pch_tipo_planilla
                  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 tipo_planilla = @pch_tipo_planilla
              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)    
                
        /* Porcentaje de aporte a salud para Colombianos Residentes en el Exterior */ --JCL.Oct-03-06  
        UPDATE fco_integrada_det  
        SET tarifa_EPS = @vdc_tar_CRE  
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
          AND tipo_planilla = @pch_tipo_planilla
          AND residente_en_exterior = 'X'  
        
        /* Control para que tarifa de pension sea cero si el subtipo de cotizante es uno o dos */  
        UPDATE fco_integrada_det  
        SET tarifa_AFP = 0  
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
          AND tipo_planilla = @pch_tipo_planilla
          AND subtipo_cotizante > 0  
    
        /* corregir tarifa pension para quienes no aportan a pension */
        UPDATE fco_integrada_det       
        SET  tarifa_AFP = 0      
        WHERE tipo_cotizante IN (12, 17, 19)
    	  and compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
          AND tipo_planilla = @pch_tipo_planilla
          and aporte_AFP = 0

        -- PENSION ESPECIAL ROHM AND HAAS
        IF @pch_compania = 'RH'
            UPDATE fco_integrada_det       
            SET  tarifa_AFP = (SELECT real / 100 FROM parametros_rh WHERE compania = @pch_compania And parametro_rh = 'var_nom_50')      
            WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
              AND tipo_planilla = @pch_tipo_planilla
              and exists
            (select 1 from rel_Trab_Agr x
             WHERE fco_integrada_det.compania = x.compania And fco_integrada_det.trabajador = x.trabajador
               AND x.agrupacion = 'PES' AND x.dato = 'SI')       

        /* Corregir tarifas parafiscales para quienes no aportan al parafiscales*/
        UPDATE fco_integrada_det
        SET tarifa_CCF = 0
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
          AND tipo_planilla = @pch_tipo_planilla
          and aporte_CCF = 0

        UPDATE fco_integrada_det
        SET tarifa_SENA = 0
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
          AND tipo_planilla = @pch_tipo_planilla
          and aporte_SENA = 0

        UPDATE fco_integrada_det
        SET tarifa_ICBF = 0
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
          AND tipo_planilla = @pch_tipo_planilla
          and aporte_ICBF = 0
        
        /* Inclusión de Empleados por Fuera de Nómina (Fantasmas) */    
        IF OBJECT_ID('dbo.fco_fantasmas') IS NOT NULL    
        BEGIN 
            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 tipo_planilla = @pch_tipo_planilla
            AND ISNULL(EPS, '') + ISNULL(AFP, '') <> ''    
            AND ((anio-2000)*12 + mes) >= ((@psi_anio-2000)*12 + @pti_mes)        
            AND IsNull(a.planilla_pens, 0) = 0 -- JCL ABR-18-07 Nos dimos cuenta por Rohm And Haas
            AND NOT EXISTS (SELECT 1 FROM fco_integrada_det x    
                            WHERE a.compania = x.compania AND a.sucursal = x.sucursal AND a.tipo_planilla = x.tipo_planilla
                              AND a.anio = x.anio AND a.mes = x.mes    
                              AND RTRIM(LTRIM(a.trabajador)) = RTRIM(LTRIM(x.trabajador)))    
    
  
            INSERT INTO fco_integrada_det    
            (compania, anio, mes, sucursal, tipo_planilla, trabajador, consecutivo, 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, @pch_tipo_planilla, a.trabajador, 1,    
            b.secuencia + RIGHT('00000' + RTRIM(ISNULL(@vsi_secuencia, 0)), 5),  
            tipo_id, nro_id, '0' dc, tipo_cotizante,       
            subtipo_cotizante = 0, extranjero_no_pension = ' ', residente_en_exterior = ' ',  
            IsNull(ccf.departamento,''),  IsNull(ccf.municipio, ''),    
            primer_apellido, segundo_apellido, primer_nombre, segundo_nombre,     
            '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',    
            ISNULL(AFP, ''), '', ISNULL(EPS, ''), '',     
            ISNULL(CCF, ''), dias_AFP, dias_EPS, dias_ARP, dias_CCF=dias_AFP, salario, ' ', IBC_AFP, IBC_EPS, IBC_ARP,    
            IBC_CCF, @vdc_tar_AFP, aporte_AFP, 0, 0,     
            aporte_FSP_sol, aporte_FSP_sub, 0, @vdc_tar_EPS, aporte_EPS, UPC_adicional, '', 0, '', 0,     
            tarifa_ARP, CASE WHEN ISNUMERIC(CTR) = 1 THEN CTR ELSE 0 END, aporte_ARP, @vdc_tar_CCF, aporte_CCF, @vdc_tar_SENA, aporte_SENA,     
            @vdc_tar_ICBF, aporte_ICBF, @vdc_tar_ESAP, aporte_ESAP, @vdc_tar_MEdu, aporte_MEdu, 2    
            FROM fco_fantasmas a    
            INNER JOIN #fco_fantasmas_temp b ON a.trabajador = b.trabajador    
            LEFT JOIN fco_administradoras ccf ON ccf.tipo = 'CCF' AND ccf.codigo = a.CCF  
            WHERE a.compania = @pch_compania    
            AND (sucursal = @pch_sucursal OR @pch_sucursal = '')    
            AND a.tipo_planilla = @pch_tipo_planilla
            AND ISNULL(EPS, '') + ISNULL(AFP, '') <> ''    
            AND ((anio-2000)*12 + mes) >= ((@psi_anio-2000)*12 + @pti_mes)        
        END    
    
        /* Redondeos (IBC al múltiplo de mil más cercano, Aportes al múltiplo de cien más cercano) */    
        UPDATE fco_integrada_det    
        SET IBC_AFP = Round((IBC_AFP - 1)/1000,0)*1000,    
            IBC_EPS = Round((IBC_EPS - 1)/1000,0)*1000,    
            IBC_ARP = Round((IBC_ARP - 1)/1000,0)*1000,    
            IBC_CCF = Round((IBC_CCF - 1)/1000,0)*1000,    
            aporte_AFP = Round((aporte_AFP - 1)/100,0)*100,    
            voluntario_AFP = Round((voluntario_AFP - 1)/100,0)*100,    
            voluntario_AFP_cia = Round((voluntario_AFP_cia - 1)/100,0)*100,    
            aporte_FSP = Round((aporte_FSP - 1)/100,0)*100,    
            aporte_EPS = Round((aporte_EPS - 1)/100,0)*100,    
            aporte_ARP = Round((aporte_ARP - 1)/100,0)*100    
        WHERE compania = @pch_compania AND anio = @psi_anio AND mes = @pti_mes AND (sucursal = @pch_sucursal OR @pch_sucursal = '')        
          AND tipo_planilla = @pch_tipo_planilla
              
        DELETE fco_integrada_det  
        WHERE compania = @pch_compania  
          AND anio = @psi_anio  
          AND mes = @pti_mes  
          AND (sucursal = @pch_sucursal OR @pch_sucursal = '')  
          AND tipo_planilla = @pch_tipo_planilla
          AND aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP = 0  
                        
    END /*1*/    

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

    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 = '')                  
      AND tipo_planilla = @pch_tipo_planilla

    /* 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 = '')    
      AND tipo_planilla = @pch_tipo_planilla

    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 = '')      
      AND tipo_planilla = @pch_tipo_planilla

    /* 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 = '')    
      AND tipo_planilla = @pch_tipo_planilla
    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 tipo_planilla = @pch_tipo_planilla
      AND compania = cia
      AND trabajador = tra

    DROP TABLE #renumera  
                
    /* RT04. TOTAL APORTES DEL PERIODO A SALUD */  
    IF @vti_respetar_tot = 0 
    Begin
        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 = '')  
          AND tipo_planilla = @pch_tipo_planilla
        GROUP BY compania, anio, mes, cod_EPS
    
        INSERT INTO fco_integrada_rt04  
        (compania, anio, mes, sucursal, tipo_planilla, 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, @pch_tipo_planilla, 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  
    
        -- Llenando la tabla origen de los totales tipo 4 o totales para Salud
        -- Lo que se puede mostrar detalladamente
        UPDATE fco_integrada_rt04
        SET nro_aut_IGE = IsNull(n_IGE, ''),
            suma_aut_IGE = IsNull(v_IGE, 0),
            nro_aut_LMA = IsNull(n_LMA, ''),
            suma_aut_LMA = IsNull(v_LMA, 0)
        FROM (SELECT a.cod_EPS EPS, MAX(nro_aut_IGE) n_IGE, SUM(vlr_aut_IGE) v_IGE, MAX(nro_aut_LMA) n_LMA, SUM(vlr_aut_LMA) v_LMA
              FROM fco_integrada_det a
              WHERE a.compania = @pch_compania  
                AND a.anio = @psi_anio  
                AND a.mes = @pti_mes  
                AND (a.sucursal = @pch_sucursal OR @pch_sucursal = '')  
                AND a.tipo_planilla = @pch_tipo_planilla
              GROUP BY a.cod_EPS) as x
        WHERE cod_EPS = EPS
          AND compania = @pch_compania
          AND anio = @psi_anio 
          AND mes = @pti_mes
          AND (sucursal = @pch_sucursal OR @pch_sucursal = '')      
          AND tipo_planilla = @pch_tipo_planilla

        -- Lo que no se puede mostrar detalladamente (EG)
        UPDATE fco_integrada_rt04
        SET nro_aut_IGE = left(nro_aut_IGE + '/' + IsNull(n_IGE, ''), 15),
            suma_aut_IGE = suma_aut_IGE + IsNull(v_IGE, 0)
        FROM (SELECT a.cod_EPS EPS, MAX(numero) n_IGE, SUM(valor) v_IGE
              FROM fco_autorizaciones_ext a
              WHERE a.compania = @pch_compania  
                AND a.anio = @psi_anio  
                AND a.mes = @pti_mes  
                AND (a.sucursal = @pch_sucursal OR @pch_sucursal = '')  
                AND a.tipo_planilla = @pch_tipo_planilla
                AND a.tipo = 0
              GROUP BY a.cod_EPS) as x
        WHERE cod_EPS = EPS
          AND compania = @pch_compania
          AND anio = @psi_anio 
          AND mes = @pti_mes
          AND (sucursal = @pch_sucursal OR @pch_sucursal = '')      
          AND tipo_planilla = @pch_tipo_planilla
    
        -- Lo que no se puede mostrar detalladamente (LM)
        UPDATE fco_integrada_rt04
        SET nro_aut_LMA = left(nro_aut_LMA + '/' + IsNull(n_LMA, ''), 15),
            suma_aut_LMA = suma_aut_LMA + IsNull(v_LMA, 0)
        FROM (SELECT a.cod_EPS EPS, MAX(numero) n_LMA, SUM(valor) v_LMA
              FROM fco_autorizaciones_ext a
              WHERE a.compania = @pch_compania  
                AND a.anio = @psi_anio  
                AND a.mes = @pti_mes  
                AND (a.sucursal = @pch_sucursal OR @pch_sucursal = '')  
                AND a.tipo_planilla = @pch_tipo_planilla
                AND a.tipo = 1
              GROUP BY a.cod_EPS) as x
        WHERE cod_EPS = EPS
          AND compania = @pch_compania
          AND anio = @psi_anio 
          AND mes = @pti_mes
          AND (sucursal = @pch_sucursal OR @pch_sucursal = '')      
          AND tipo_planilla = @pch_tipo_planilla
    End

    /* RT05. TOTAL APORTES DEL PERIODO A RIESGOS PROFESIONALES */  
    IF @vti_resp_tot_arp = 0
    Begin
        INSERT INTO fco_integrada_rt05  
        (compania, anio, mes, sucursal, tipo_planilla, 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.tipo_planilla, cab.nueva_ARP, 1,   
            LEFT(adi.nit_ARP, 9), RIGHT(RTRIM(adi.nit_ARP), 1),  
            SUM(ISNULL(aporte_ARP, 0)), '', 0, 0,   
            0, 0, '', 0, SUM(aporte_ARP)*0.01, COUNT(*)  
        FROM fco_integrada_cab cab  
        INNER JOIN fco_integrada_det det ON cab.compania = det.compania AND cab.anio = det.anio AND cab.mes = det.mes 
            AND (cab.sucursal = det.sucursal OR @pch_sucursal = '')  AND cab.tipo_planilla = det.tipo_planilla
        LEFT JOIN fco_cias_datos_adi adi ON cab.compania = adi.compania
        WHERE cab.compania = @pch_compania
          AND cab.anio = @psi_anio
          AND cab.mes = @pti_mes
          AND (cab.sucursal = @pch_sucursal OR @pch_sucursal = '')
          AND cab.tipo_planilla = @pch_tipo_planilla
        GROUP BY cab.compania, cab.anio, cab.mes, cab.sucursal, cab.tipo_planilla, cab.nueva_arp, adi.nit_ARP  

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

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

        DROP TABLE #pi_inc_arp            
    End
    
END    
GO
GRANT EXECUTE ON dbo.sp_fco_planilla_integrada TO PUBLIC
GO


PRINT 'Procedimientos de Planilla Integrada... OK'
GO
PRINT '*** Fin de Script ***'
--PRINT 'Hora Actual: ' + RTrim(GETDATE())
GO
