--EXECUTE sp_fco_archivos_dian 'FBP', 2006    
--select * from fco_dian   where trabajador like '%1409278%'  
-- select * from acumulados_mensuales where anio = 2006 and agr_conceptos = 'A56' and trabajador = '     30708'  
alter  PROCEDURE sp_fco_archivos_dian    
(    
    @pch_compania char(4),    
    @psi_anio smallint,    
    @pti_recalcular_ala tinyint = 1    
)    
/*************************************************/    
/*** FCO - Módulo Fiscal Colombiano            ***/    
/*** Autor: Juan Carlos Leguizamón             ***/    
/*** Fecha: 24-ABR-07                          ***/    
  
/*** Descripcion: Genera archivos para la DIAN ***/    
/*************************************************/    
AS    
BEGIN    
    DELETE fco_dian WHERE compania = @pch_compania AND anio = @psi_anio    
        
    /* PARTE 1. FORMATO 1001 - INFORMACION DE PAGOS O ABONOS EN CUENTA */    
    /* Concepto 5001 - Salarios, prestaciones sociales y demás pagos laborales */    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5001, 'Salarios', trabajador, '',   
        dbo.fn_fco_cir_salarios(@pch_compania, @psi_anio, trabajador)  +  
        dbo.fn_fco_cir_cesantias(@pch_compania, @psi_anio, trabajador)  +  
        dbo.fn_fco_cir_pensiones(@pch_compania, @psi_anio, trabajador)  +
	dbo.fn_fco_cir_gastos_rep(@pch_compania, @psi_anio, trabajador)  +
	dbo.fn_fco_cir_otros_ing(@pch_compania, @psi_anio, trabajador)    ,  0    
    FROM trabajadores_grales    
    WHERE compania = @pch_compania    
      AND Year(fecha_ingreso) <= @psi_anio    
      AND (fecha_baja is null OR Year(fecha_baja) >= @psi_anio)    
  
/* INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5001, 'Pensiones', trabajador, '',   
 dbo.fn_fco_cir_pensiones(@pch_compania, @psi_anio, trabajador)  , 0    
    FROM trabajadores_grales    
    WHERE compania = @pch_compania    
      AND Year(fecha_ingreso) <= @psi_anio    
      AND (fecha_baja is null OR Year(fecha_baja) >= @psi_anio)    
*/  
        
    -- VALORES TOMADOS DE AUTOLIQUIDACIONES DE APORTES    
    IF @pti_recalcular_ala = 1    
        EXEC sp_fco_calcula_totales_ala @pch_compania, @psi_anio    
    
    /* Concepto 5010 - Pagos parafiscales (SENA, Cajas de Compensación e ICBF) */    
    -- Aportes al SENA    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5010, 'SENA', '', 'SENA', SUM(total_pagar), 0    
    FROM fco_integrada_rt07    
    WHERE compania = @pch_compania AND anio = @psi_anio    
    
    -- Aportes a Cajas de Compensación Familiar    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5010, 'CCF', '', cod_CCF, SUM(total_pagar), 0    
    FROM fco_integrada_rt06 a    
    INNER JOIN fco_administradoras b ON a.cod_CCF = b.codigo AND b.tipo = 'CCF' AND IsNull(b.cod_super, '') <> ''    
    WHERE compania = @pch_compania AND anio = @psi_anio    
    GROUP BY cod_CCF    
    
    -- Aportes al ICBF    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5010, 'ICBF', '', 'ICBF', SUM(total_pagar), 0    
    FROM fco_integrada_rt08    
    WHERE compania = @pch_compania AND anio = @psi_anio    
    
    /* Concepto 5011 - Pagos a EPS y ARP */    
    -- Aportes a la EPS    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5011, 'EPS', '', cod_EPS, SUM(total_pagar), 0    
    FROM fco_integrada_rt04 a    
    INNER JOIN fco_administradoras b ON a.cod_EPS = b.codigo AND b.tipo = 'EPS' AND IsNull(b.cod_super, '') <> ''    
    WHERE compania = @pch_compania AND anio = @psi_anio    
    GROUP BY cod_EPS    
    
    -- Aportes a la ARP    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5011, 'ARP', '', 'ARP', SUM(total_pagar), 0    
    FROM fco_integrada_rt05    
    WHERE compania = @pch_compania AND anio = @psi_anio    
    
    /* Concepto 5012 - Pagos a Pensiones */    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1001, 5012, 'AFP', '', cod_AFP, SUM(total_pagar), 0    
    FROM fco_integrada_rt03 a    
    INNER JOIN fco_administradoras b ON a.cod_AFP = b.codigo AND b.tipo = 'AFP' AND IsNull(b.cod_super, '') <> ''    
    WHERE compania = @pch_compania AND anio = @psi_anio    
    GROUP BY cod_AFP    
    
    /* PARTE 2. FORMATO 1002 - INFORMACION DE RETENCIONES EN LA FUENTE PRACTICADAS */    
    /* Concepto 2301 - Retención por salarios y demás pagos laborales */    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1002, 2301, 'Retencion', trabajador, '',     
        dbo.fn_fco_acum_ani('retencion', 7, @pch_compania, @psi_anio, trabajador),     
        dbo.fn_fco_acum_ani('otros', 101, @pch_compania, @psi_anio, trabajador)    
    FROM trabajadores_grales    
    WHERE compania = @pch_compania    
      AND Year(fecha_ingreso) <= @psi_anio    
      AND (fecha_baja is null OR Year(fecha_baja) >= @psi_anio)    
      AND IsNull(dbo.fn_fco_acum_ani('retencion', 7, @pch_compania, @psi_anio, trabajador), 0) +     
          IsNull(dbo.fn_fco_acum_ani('otros', 101, @pch_compania, @psi_anio, trabajador), 0) > 0    
    
    /* PARTE 3. FORMATO 1009 - INFORMACION DEL SALDO DE LOS PASIVOS */    
    /* Concepto 2205 - Saldo de los pasivos laborales incluido en el cálculo actuarial */    
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1009, 2205, 'Pasivos', trabajador, '',     
    Round(dbo.fn_fco_acum_ani('otros', 102, @pch_compania, @psi_anio, trabajador), 0), 0    
    FROM trabajadores_grales    
    WHERE compania = @pch_compania    
      AND Year(fecha_ingreso) <= @psi_anio    
      AND (fecha_baja is null OR Year(fecha_baja) >= @psi_anio)    
      AND dbo.fn_fco_acum_ani('otros', 102, @pch_compania, @psi_anio, trabajador) > 0    
    
    /* PARTE 4. FORMATO 1008 - INFORMACION DE LOS DEUDORES DE CREDITOS ACTIVOS A DICIEMBRE 31 DEL AÑO ANTERIOR */    
    /* Concepto 1317 - Cuentas por cobrar a empleados */        
    INSERT INTO fco_dian (compania, anio, formato, concepto, subconcepto, trabajador, entidad, valor, base)    
    SELECT @pch_compania, @psi_anio, 1008, 1317, 'Créditos', trabajador, '', dbo.fn_fco_dian_creditos(@pch_compania, @psi_anio, trabajador), 0    
    FROM trabajadores_grales    
    WHERE compania = @pch_compania    
      AND Year(fecha_ingreso) <= @psi_anio    
      AND (fecha_baja is null OR Year(fecha_baja) >= @psi_anio)        
END    
    
  
