IF EXISTS (SELECT 1 FROM dbo.sysobjects WHERE ID = OBJECT_ID(N'dbo.sp_fco_rep_cir') 
AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
   DROP PROCEDURE dbo.sp_fco_rep_cir
GO
CREATE PROCEDURE dbo.sp_fco_rep_cir            
(            
  @psi_id_rep  smallint,
  @pvc_usuario varchar(30),
  @pti_cod_rep tinyint,
  @pch_trab_dde char(10) = '',
  @pch_trab_hta char(10) = '',
  @pch_agr_1 char(10) = '',
  @pch_agr_2 char(10) = '',
  @pch_agr_3 char(10) = '',
  @pch_dato_dde char(10) = '',
  @pch_dato_hta char(10) = '',--hasta aqui serian parametros fijos
  @pch_compania    char(4),            
  @pch_sucursal    char(10),            
  @psm_anio        char(5),
  @pdt_fecha_exp   char(8)
)            
/**********************************************************************************/            
/*** Modulo:      Modulo Fiscal Colombiano ADAM V.3                             ***/            
/*** Descripcion: Genera tablas con la informacion del Certificado de Ingresos  ***/            
/***              y Retenciones DIAN                                            ***/            
/*** Tablas:   vw_fdt_parametros, Ciudades, Departamentos, Trabajadores,            ***/            
/***              Trabajadores_Grales, Acumulados_Mensuales                     ***/            
/***    Version con Sociedades: fco_sucursales                                   ***/            
/*** Vistas:   vw_companias, vw_div_trabajador                                  ***/            
/*** Autor:   Juan Carlos Leguizamon                                            ***/            
/*** Fecha:   Febrero 1 de 2002                                                 ***/            
/*** Revision:    PANAMCO MARZO 7 DE 2003                                       ***/            
/*** PANAMCO OTROS INGRESOS MARZO 11 DE 2003                                    ***/            
/*** Motor:   SQL Server 2000 Version interna: 1.00                             ***/            
/**********************************************************************************/            
/*** Adecuacion: Diana Cecilia Rios Peinado                                     ***/
/*** Octubre 3 de 2005                                                          ***/
AS            
DECLARE             
  @vsm_numero          SMALLINT,            
  @vch_agr_ing         CHAR(3),            
  @vch_agr_ngr         CHAR(3),            
  @vch_agr_ces         CHAR(3),            
  @vch_agr_pen         CHAR(3),            
  @vtn_tipo_param      TINYINT,            
  @vch_agr_rtf         CHAR(3),            
  @vsm_cnc_rtf         SMALLINT,            
  @cch_trabajador      CHAR(10),            
  @cvc_nombre          VARCHAR(100),            
  @cvc_cedula          VARCHAR(25),            
  @cdt_ingreso         SMALLDATETIME,            
  @cdt_baja            SMALLDATETIME,            
  @vdt_desde           SMALLDATETIME,            
  @vdt_hasta           SMALLDATETIME,            
  @vdc_ingresos        DECIMAL(19,6),            
  @vdc_no_gravados     DECIMAL(19,6),            
  @vdc_cesantias       DECIMAL(19,6),            
  @vdc_pensiones       DECIMAL(19,6),            
  @vdc_retencion       DECIMAL(19,6),            
  @vdc_ingresos_ni     DECIMAL(19,6),            
  @vdc_no_gravados_ni  DECIMAL(19,6),            
  @vdc_cesantias_ni    DECIMAL(19,6),            
  @vdc_pensiones_ni    DECIMAL(19,6),            
  @vdc_retencion_ni    DECIMAL(19,6),            
  @vdc_ingresos_qa     DECIMAL(19,6),            
  @vdc_no_gravados_qa  DECIMAL(19,6),            
  @vdc_cesantias_qa    DECIMAL(19,6),            
  @vdc_pensiones_qa    DECIMAL(19,6),            
  @vdc_retencion_qa    DECIMAL(19,6),            
  @vdc_valor_ng        DECIMAL(19,6),            
  @vdc_valor_gr        DECIMAL(19,6),            
  @vdc_ctr_ng          DECIMAL(19,6),            
  @vdc_trab            DECIMAL(19,6),            
  @vdc_tot_no          DECIMAL(19,6),            
  @ctn_mes_acumular    TINYINT,            
  @vch_tipo_nomina     CHAR(2),            
  @vtn_primer_mes      TINYINT,            
  @vtn_ultimo_mes      TINYINT,            
  @vch_dia             CHAR(2),            
  /* variables marzo 11 */          
  @vch_agr_otr         CHAR(3),            
  @vdc_otros_ing       DECIMAL(19,6),            
  @vdc_otros_ing_ni    DECIMAL(19,6),            
  @vdc_otros_ing_qa    DECIMAL(19,6),            
  @vdc_tope_exc        DECIMAL(19,6),            
  @vdt_fecsalmin       SMALLDATETIME,            
  @vdc_dias_laborados  DECIMAL(19,0),            
  @vdc_meses_laborados DECIMAL(10,2), 
  @vdc_sal_minimo      DECIMAL(19,6),            
  @vdc_valor_exc       DECIMAL(19,6),            
  @vdc_ingresos_t      DECIMAL(19,6),            
  @vdc_no_gravados_t   DECIMAL(19,6),          
  @vsi_traslados       SMALLINT,          
  /* LAG - Cambios para Certificado 2005 */
  @vch_agr_AFP         CHAR(3),
  @vch_agr_EPS         CHAR(3), 
  @vch_agr_VOL         CHAR(3),
  @vch_agr_VOL_SB      CHAR(3),
  @vdc_valor_AFP       DECIMAL(19,6),
  @vdc_valor_EPS       DECIMAL(19,6),
  @vdc_valor_VOL       DECIMAL(19,6),
  @vdc_valor_AFP_NI    DECIMAL(19,6),
  @vdc_valor_EPS_NI    DECIMAL(19,6),
  @vdc_valor_VOL_NI    DECIMAL(19,6),

  --DCRP para convertir los parametros de entrada
  @vch_compania    char(4),
  @vch_sucursal    char(10),
  @vsm_anio        smallint,
  @vdt_fecha       smalldatetime,    

  @vti_trab_dde tinyint,
  @vti_trab_hta tinyint,
  
  --DCRP, faltan los gastos de representacion
  @vch_agr_rep     char(3),
  @vdc_gastos_rep  decimal(19,6),
  @vdc_gastos_rep_ng  decimal(19,6),
  @vdc_gastos_rep_gr  decimal(19,6)

BEGIN
     SET @vch_compania = LTRIM(RTRIM(@pch_compania))
     SET @vch_sucursal = LTRIM(RTRIM(@pch_sucursal))
     SET @vdt_fecha = @pdt_fecha_exp
     SET @vsm_anio = CONVERT(smallint, @psm_anio)

     SET @vti_trab_dde = 0
     IF ISNULL(LTRIM(RTRIM(@pch_trab_dde)),'0') = '0'
        SET @vti_trab_dde = 1
    
     SET @vti_trab_hta = 0
     IF ISNULL(LTRIM(RTRIM(@pch_trab_hta),'0') = '0'
        SET @vti_trab_hta = 1

  /* Hallar el tope para el año a generar */            
  SELECT 
    @vdc_tope_exc = cuota_fija            
  FROM 
    impuestos            
  WHERE 
    impuesto = 14            
    AND @vsm_anio between limite_inferior and limite_superior            
            
  /* Recuperar los parametros */          
  SELECT @vch_agr_ing = dato FROM vw_fdt_parametros             
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 1            
           
  SELECT @vch_agr_ngr = dato FROM vw_fdt_parametros        
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 2            
            
  SELECT @vch_agr_ces = dato FROM vw_fdt_parametros             
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 3            
            
  SELECT @vch_agr_pen = dato FROM vw_fdt_parametros             
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 5            
           
  SELECT @vch_agr_otr = dato FROM vw_fdt_parametros             
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 6            
            
  SELECT @vtn_tipo_param = tipo FROM vw_fdt_parametros            
  WHERE pais = 'COL' AND compania = @vch_compania And parametro = 'retencion' And secuencia = 7            
                
  IF @vtn_tipo_param = 0            
    SELECT @vsm_cnc_rtf = dato FROM vw_fdt_parametros            
    WHERE pais = 'COL' AND compania = @vch_compania And parametro = 'retencion' And secuencia = 7            
  ELSE            
    SELECT @vch_agr_rtf = dato FROM vw_fdt_parametros            
    WHERE pais = 'COL' AND compania = @vch_compania And parametro = 'retencion' And secuencia = 7            
  
  /* LAG - Nuevos parámetros certificado 2004 */
  SELECT @vch_agr_AFP = dato FROM vw_fdt_parametros               
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 17
  
  SELECT @vch_agr_EPS = dato FROM vw_fdt_parametros               
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 18
  
  SELECT @vch_agr_VOL = dato FROM vw_fdt_parametros               
  WHERE pais = 'COL' AND compania = @vch_compania AND parametro = 'retencion' AND secuencia = 19
  
  /* SCN Encontrasr el Salario Minimo desde el historico */            
  SET @vdt_fecsalmin = Convert(smalldatetime, Convert(varchar, @vsm_anio) + '0101')                        
            
  SELECT @vdc_sal_minimo = salario_minimo  FROM hist_sal_min_zona                
  WHERE zona = 'A' AND fecha = @vdt_fecsalmin            
            
  /* Borrar los datos actuales */
  DELETE fco_cir_cab
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario
  AND cod_rep = @pti_cod_rep
  
  DELETE fco_cir_det
  WHERE id_rep = @psi_id_rep
  AND usuariow = @pvc_usuario
  AND cod_rep = @pti_cod_rep

--OJO: esta que?            
  /* scn*/            
  DELETE             
    MF_CIR_DET_temp            
  WHERE             
    compania = @pch_compania And            
    sociedad = @pch_sociedad And            
    sucursal = @pch_sucursal             
                                    
  /* Insertar los nuevos datos */          
  /* PARTE I: Cabecera del Certificado */            
    INSERT INTO fco_cir_cab            
      (id_rep, usuariow, cod_rep, compania, sociedad, sucursal, anio, fecha_exp,            
      nombre_cia, registro_fiscal, domicilio,            
      municipio, departamento,             
      sucursales, pagador_nombre, pagador_id,            
      poner_carreta, cod_admon, cod_depto, cod_municipio, telefono)            
    SELECT             
      @psi_id_rep, @pvc_usuario, @pti_cod_rep, @vch_compania, @vch_sucursal, @vsm_anio, @vdt_fecha,             
      C.nombre_cia, C.registro_fiscal, C.domicilio,            
      M.nombre, D.nombre,            
      C.agencias, C.pagador_nombre, C.pagador_id, 0,            
      c.cod_admon, c.cod_dpto, c.cod_ciudad, c.telefono
    FROM            
      vw_fco_companias C, fco_ciudades M, fco_departamentos D            
    WHERE            
      C.cod_dpto = D.codigo And            
      C.cod_ciudad = M.codigo And            
      M.cod_dpto = D.codigo And            
      C.compania = @vch_compania            
            
  SET DATEFORMAT ymd              
  /* PARTE II: Detalle del Certificado */            
  DECLARE cr_detalle CURSOR FOR        
  SELECT DISTINCT            
    T.trabajador, T.nombre, T.clave_unica, TG.fecha_ingreso, TG.fecha_baja          
  FROM            
    trabajadores T, trabajadores_grales TG, vw_fco_div_trabajador SUC
  WHERE             
    TG.trabajador = T.trabajador And             
    TG.compania = SUC.compania And TG.trabajador = SUC.trabajador And             
    TG.compania = @vch_compania And             
    Year(IsNull(TG.fecha_baja,getdate())) >= @vsm_anio And             
    Year(TG.fecha_ingreso) <= @vsm_anio And             
    SUC.dato = @vch_sucursal
    AND ((@vti_trab_dde = 1) OR (T.trabajador >= RTRIM(@pch_trab_dde) AND @vti_trab_dde = 0)) AND
       ((@vti_trab_hta = 1) OR (T.trabajador <= RTRIM(@pch_trab_hta) AND @vti_trab_hta = 0))
  ORDER BY
    T.nombre            
            
  SET @vsm_numero = 0            
            
  OPEN cr_detalle            
            
  FETCH NEXT FROM cr_detalle             
  INTO @cch_trabajador, @cvc_nombre, @cvc_cedula, @cdt_ingreso, @cdt_baja            
                
  WHILE @@fetch_status = 0            
  BEGIN            
--  PRINT '1.TRABAJADOR : ' + @cch_trabajador          
    SET @vtn_ultimo_mes = 0            
            
    SELECT TOP 1           
      @vtn_ultimo_mes =  mes_acumular            
    FROM           
      acum_concepto            
    WHERE           
      compania = @vch_compania And            
      trabajador = @cch_trabajador And            
      ((tipo_nomina <> '00'  and tipo_nomina = @vch_sucursal) or            
      (tipo_nomina = '00' and referencia = @vch_sucursal) or            
      (tipo_nomina = 'CF')) And            
      anio = @vsm_anio            
    ORDER BY           
      mes_acumular DESC            
            
    SELECT TOP 1           
      @vtn_primer_mes =  mes_acumular            
    FROM           
      acum_concepto            
    WHERE           
      compania = @vch_compania And            
      trabajador = @cch_trabajador And            
      ((tipo_nomina <> '00'  and tipo_nomina in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania =  b.compania and A.sucursal = @vch_sucursal)) or            
      (tipo_nomina = '00' and referencia in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania =  b.compania and  A.sucursal = @vch_sucursal)) or            
      (tipo_nomina = 'CF')) And            
      anio = @vsm_anio            
    ORDER BY           
      mes_acumular ASC            
           
    IF NOT EXISTS (            
    SELECT 1 FROM acum_concepto            
    WHERE compania = @vch_compania And            
          trabajador = @cch_trabajador And            
          ((tipo_nomina <> '00'  and tipo_nomina in
		 (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B
		 WHERE a.compania =  b.compania And A.sucursal = @vch_sucursal 
			And B.sucursal <> @vch_sucursal)) or            
           (tipo_nomina = '00' and referencia in
		 (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania = b.compania And A.sucursal = @vch_sucursal And
		 B.sucursal <> @vch_sucursal))) And            
          anio = @vsm_anio And            
          mes_acumular > IsNull(@vtn_ultimo_mes,0))            
    BEGIN            
--   PRINT '2.TRABAJADOR : ' + @cch_trabajador          
      SELECT           
        @vdc_ingresos = 0, @vdc_no_gravados = 0, @vdc_cesantias = 0, 
        @vdc_pensiones = 0, @vdc_retencion = 0, @vdc_otros_ing = 0, 
        @vdc_valor_AFP = 0, @vdc_valor_EPS = 0, @vdc_valor_VOL = 0
                    
      IF Year(@cdt_ingreso) = @vsm_anio            
        SET @vdt_desde = @cdt_ingreso            
      ELSE            
      BEGIN            
        /* JAS 20040310 */          
        --SET @vdt_desde = Convert(smalldatetime, IsNull('01-' + Replicate(0, 2- Len(Convert(varchar,@vtn_primer_mes))) + Convert(varchar,@vtn_primer_mes) + '-' + Convert(varchar, @vsm_anio),'01-01-' + convert(varchar,@vsm_anio)))            
        SET @vdt_desde = CONVERT(SMALLDATETIME, ISNULL(Convert(varchar, @vsm_anio) + Replicate(0, 2- Len(Convert(varchar,@vtn_primer_mes))) + Convert(varchar,@vtn_primer_mes) + '01', convert(varchar, @vsm_anio) + '0101'))                
      END            
            
      IF Year(@cdt_baja) = @vsm_anio             
        SET @vdt_hasta = @cdt_baja            
      ELSE            
      BEGIN            
        SELECT @vch_dia = CASE @vtn_ultimo_mes WHEN 1 THEN '31' WHEN 2 THEN '28' WHEN 3 THEN '31'            
                                WHEN 4 THEN '30' WHEN 5 THEN '31' WHEN 6 THEN '30' WHEN 7 THEN '31'            
                                WHEN 8 THEN '31' WHEN 9 THEN '30' WHEN 10 THEN '31'            
                                WHEN 11 THEN '30' WHEN 12 THEN '31' END             
        /* JAS 20040310 */          
        --SET @vdt_hasta = Convert(smalldatetime, IsNull(@vch_dia + '-' + Replicate(0, 2- Len(Convert(varchar,@vtn_ultimo_mes))) + Convert(varchar,@vtn_ultimo_mes) + '-' + Convert(varchar, @vsm_anio),'31-12-' + convert(varchar, @vsm_anio)))            
        SET @vdt_hasta = CONVERT(SMALLDATETIME, ISNULL(Convert(varchar, @vsm_anio) + Replicate(0, 2- Len(Convert(varchar,@vtn_ultimo_mes))) + Convert(varchar,@vtn_ultimo_mes) + @vch_dia, convert(varchar, @vsm_anio) + '1231'))          
      END            
            
      IF DATEPART(DAY,@vdt_hasta) > 30 OR (DATEPART(DAY,@vdt_hasta) >= 28 AND DATEPART(MONTH,@vdt_hasta) = 2)            
        SET @vdc_dias_laborados = (DATEPART(YEAR,@vdt_hasta) * 360) + (DATEPART(MONTH,@vdt_hasta) * 30) + 30            
      ELSE            
        SET @vdc_dias_laborados = (DATEPART(YEAR,@vdt_hasta) * 360) + (DATEPART(MONTH,@vdt_hasta) * 30) + DATEPART(DAY,@vdt_hasta)            
            
      IF DATEPART(DAY,@vdt_desde) > 30 OR (DATEPART(DAY,@vdt_desde) >= 28 AND DATEPART(MONTH,@vdt_desde) = 2)            
        SET @vdc_dias_laborados = @vdc_dias_laborados - ((DATEPART(YEAR,@vdt_desde) * 360) + (DATEPART(MONTH,@vdt_desde) * 30) + 30)            
      ELSE            
        SET @vdc_dias_laborados = @vdc_dias_laborados - ((DATEPART(YEAR,@vdt_desde) * 360) + (DATEPART(MONTH,@vdt_desde) * 30) + DATEPART(DAY,@vdt_desde))            
            
      SET @vdc_dias_laborados = @vdc_dias_laborados + 1            
      SET @vdc_meses_laborados = (@vdc_dias_laborados * 12) / 360            
            
      /* Ingresos Laborales */            
      SELECT            
        @vdc_ingresos =            
        ISNULL(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)
      FROM            
        acum_concepto AC, rel_conceptos_agr RCA            
      WHERE            
        AC.compania = RCA.compania And            
        AC.concepto = RCA.concepto And            
        AC.compania = @vch_compania And            
        AC.trabajador = @cch_trabajador And            
        ((AC.tipo_nomina <> '00' And AC.tipo_nomina in            
        (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B            
        WHERE	a.compania = b.compania
		 		And A.sucursal = @vch_sucursal)) Or             
        (AC.tipo_nomina = '00' And RTrim(AC.referencia) in             
        (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B             
        WHERE a.compania =  b.compania 
				And A.sucursal = @vch_sucursal)) Or            
        (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
        ) And            
        AC.anio = @vsm_anio And            
        RCA.agr_conceptos = @vch_agr_ing            
            
      /* AQUI JUANCA */            
      /* Conceptos No Gravados: Aportes a Pensiones y al Fondo de Solidaridad */            
          
      /* JAS 20040310 */          
      /* TOCA DISTINGUIR LOS TRABAJADORES TRASLADADOS */          
    
      SET @vsi_traslados = 0          
      SELECT         
        @vsi_traslados = COUNT(DISTINCT planta)          
      FROM          
        mf_trab_pla          
      WHERE          
        trabajador = @cch_trabajador          

      IF @vsi_traslados = 1           
      BEGIN          
        SELECT             
          @vdc_no_gravados =            
          isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
        FROM            
          acum_concepto AC, rel_conceptos_agr RCA            
        WHERE            
          AC.compania = RCA.compania And            
          AC.concepto = RCA.concepto And            
          AC.compania = @vch_compania And            
          AC.trabajador = @cch_trabajador And            
      (            
          (            
          AC.tipo_nomina <> '00' And AC.tipo_nomina in             
          (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B            
          WHERE a.compania =  b.compania and A.sociedad = B.sociedad And 
			A.sucursal = @vch_sucursal)            
          ) Or             
          /* ojo, cuando el tipo nomina = '00' y los conceptos son los relacionados en esta agrupacion FCE, no tienen en referencia el codigo de la planta, lo que necesito es que             
          si el concepto esta en acum concepto y el trabajador este en 00, sume aunque no tenga la referencia sea null, */            
          (            
          AC.tipo_nomina = '00' And (            
          RTrim(AC.referencia) in             
          (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B             
          WHERE a.compania = b.compania and A.sociedad = B.sociedad And
			 A.sucursal = @vch_sucursal))            
          ) Or            
          /* SOLUCION */            
          (            
          AC.tipo_nomina = '00' And (            
          AC.concepto in             
          (select x.concepto from rel_conceptos_agr x            
          where x.compania = @vch_compania and x.agr_conceptos = 'FCE' /* and signo = '+'*/))            
          ) Or            
          (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
          ) And            
          AC.anio = @vsm_anio And            
          RCA.agr_conceptos = @vch_agr_ngr            
      END          
      ELSE          
      BEGIN          
        SELECT             
          @vdc_no_gravados =            
          isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)
        FROM            
          acum_concepto AC, rel_conceptos_agr RCA            
        WHERE            
          AC.compania = RCA.compania And            
          AC.concepto = RCA.concepto And            
          AC.compania = @vch_compania And            
          AC.trabajador = @cch_trabajador And            
          (            
          (            
          AC.tipo_nomina <> '00' And AC.tipo_nomina in             
          (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B            
          WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)            
          ) --Or      
           /* ojo, cuando el tipo nomina = '00' y los conceptos son los relacionados en esta agrupacion FCE, no tienen en referencia el codigo de la planta, lo que necesito es que             
          si el concepto esta en acum concepto y el trabajador este en 00, sume aunque no tenga la referencia sea null, */            
  --        (            
  --      AC.tipo_nomina = '00' And (            
  --    RTrim(AC.referencia) in             
  --  (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B             
  -- WHERE A.sociedad = B.sociedad And A.sucursal = @vch_sucursal))            
  -- )          
          /* SOLUCION */            
          ) And AC.anio = @vsm_anio And  RCA.agr_conceptos = @vch_agr_ngr            
      END            
          
      /* Conceptos de Cesantias */            
      SELECT             
        @vdc_cesantias =            
        isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
      FROM            
        acum_concepto AC, rel_conceptos_agr RCA            
      WHERE            
        AC.compania = RCA.compania And            
        AC.concepto = RCA.concepto And            
        AC.compania = @vch_compania And            
        AC.trabajador = @cch_trabajador And            
        ((AC.tipo_nomina <> '00' And AC.tipo_nomina in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B
		 WHERE a.compania = b.compania and  A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or             
        (AC.tipo_nomina = '00' And RTrim(AC.referencia) in
		 (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
			WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or            
        (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
        ) And            
        AC.anio = @vsm_anio And            
        RCA.agr_conceptos = @vch_agr_ces            
            
      /* Conceptos de Pension de Jubilacion */            
      SELECT            
        @vdc_pensiones =            
        isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)
      FROM            
        acum_concepto AC, rel_conceptos_agr RCA            
      WHERE            
        AC.compania = RCA.compania And            
        AC.concepto = RCA.concepto And            
        AC.compania = @vch_compania And            
        AC.trabajador = @cch_trabajador And            
        ((AC.tipo_nomina <> '00' And AC.tipo_nomina in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE  a.compania = b.compania and A.sociedad = B.sociedad And
			 A.sucursal = @vch_sucursal)) Or             
        (AC.tipo_nomina = '00' And RTrim(AC.referencia) in 
			(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
			WHERE a.compania =  b.compania and A.sociedad = B.sociedad And 
			A.sucursal = @vch_sucursal)) Or            
        (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
        ) And            
        AC.anio = @vsm_anio And            
        RCA.agr_conceptos = @vch_agr_pen            
            
      /* Otros Ingresos */            
      SELECT             
        @vdc_otros_ing =            
        isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)
      FROM            
        acum_concepto AC, rel_conceptos_agr RCA            
      WHERE            
        AC.compania = RCA.compania And            
        AC.concepto = RCA.concepto And            
        AC.compania = @vch_compania And            
        AC.trabajador = @cch_trabajador And            
        ((AC.tipo_nomina <> '00' And AC.tipo_nomina in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
			WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or             
        (AC.tipo_nomina = '00' And RTrim(AC.referencia) in
		 (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania = b.compania and  A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or            
        (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
        ) And            
        AC.anio = @vsm_anio And            
        RCA.agr_conceptos = @vch_agr_otr            
            
      /* Valor de la Retención en la Fuente */          
      IF @vtn_tipo_param = 0  -- Es un concepto solamente            
        SELECT             
          @vdc_retencion = isnull(sum(importe),0)
        FROM            
          acum_concepto AC            
        WHERE            
          AC.compania = @vch_compania And            
          AC.trabajador = @cch_trabajador And            
          ((AC.tipo_nomina <> '00' And AC.tipo_nomina in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B
		 WHERE a.compania = b.compania  and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or             
          (AC.tipo_nomina = '00' And RTrim(AC.referencia) in
		 (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or            
          (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
          ) And            
          AC.anio = @vsm_anio And            
          concepto = @vsm_cnc_rtf            
      ELSE            
        SELECT             
          @vdc_retencion =            
          isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)
        FROM            
          acum_concepto AC, rel_conceptos_agr RCA            
        WHERE            
          AC.compania = RCA.compania And            
          AC.concepto = RCA.concepto And            
          AC.compania = @vch_compania And            
          AC.trabajador = @cch_trabajador And            
          ((AC.tipo_nomina <> '00' And AC.tipo_nomina in
			 (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B
		 WHERE a.compania = b.compania and  A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or             
          (AC.tipo_nomina = '00' And RTrim(AC.referencia) in
		 (SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania = b.compania and  A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or            
          (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
          ) And            
          AC.anio = @vsm_anio And            
          agr_conceptos = @vch_agr_rtf            
            
--      IF IsNull(@vdc_ingresos,0) + IsNull(@vdc_cesantias,0) + IsNull(@vdc_pensiones,0)           
--      + ISNULL(@vdc_otros_ing, 0) <> 0  /* JAS 20040310 */          
--      BEGIN            
  
--  PRINT '3.TRABAJADOR : ' + @cch_trabajador          

      /*  Pensiones Obligatorias y Salud - JAS 20050216 */  
      SELECT 
        @vdc_valor_AFP =           
        isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)         
      FROM            
        acum_concepto AC, rel_conceptos_agr RCA            
      WHERE            
        AC.compania = RCA.compania And            
        AC.concepto = RCA.concepto And            
        AC.compania = @vch_compania And            
        AC.trabajador = @cch_trabajador And            
        ((AC.tipo_nomina <> '00' And AC.tipo_nomina in 
			(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B
		 WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or             
        (AC.tipo_nomina = '00' And RTrim(AC.referencia) in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania =  b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or            
        (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
        ) And            
        AC.anio = @vsm_anio And            
        RCA.agr_conceptos = @vch_agr_AFP
     
      SELECT 
        @vdc_valor_EPS =           
        isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
      FROM            
        acum_concepto AC, rel_conceptos_agr RCA            
      WHERE            
        AC.compania = RCA.compania And            
        AC.concepto = RCA.concepto And            
        AC.compania = @vch_compania And            
        AC.trabajador = @cch_trabajador And            
        ((AC.tipo_nomina <> '00' And AC.tipo_nomina in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or             
        (AC.tipo_nomina = '00' And RTrim(AC.referencia) in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or            
        (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
        ) And            
        AC.anio = @vsm_anio And            
        RCA.agr_conceptos = @vch_agr_EPS
      
      SET @vdc_valor_AFP = ISNULL(@vdc_valor_AFP,0) + ISNULL(@vdc_valor_EPS,0)  
      
      SELECT 
        @vdc_valor_VOL =           
        isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
      FROM            
        acum_concepto AC, rel_conceptos_agr RCA            
      WHERE            
        AC.compania = RCA.compania And            
        AC.concepto = RCA.concepto And            
        AC.compania = @vch_compania And            
        AC.trabajador = @cch_trabajador And            
        ((AC.tipo_nomina <> '00' And AC.tipo_nomina in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B 
		WHERE a.compania = b.compania and  A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or             
        (AC.tipo_nomina = '00' And RTrim(AC.referencia) in 
		(SELECT B.sucursal FROM fco_sucursales A, fco_sucursales B
		 WHERE a.compania = b.compania and A.sociedad = B.sociedad And A.sucursal = @vch_sucursal)) Or            
        (AC.tipo_nomina = 'CF' And @vch_sucursal = '01')            
        ) And            
        AC.anio = @vsm_anio And            
        RCA.agr_conceptos = @vch_agr_VOL

        /******************************************************************************************************/            
        /******                         n o m i n a     i n t e r a c t i v a                          ********/            
        /******************************************************************************************************/            
        SELECT 
          @vdc_ingresos_ni = 0, @vdc_no_gravados_ni = 0, @vdc_cesantias_ni = 0, 
          @vdc_pensiones_ni = 0, @vdc_retencion_ni = 0, @vdc_otros_ing_ni = 0,
          @vdc_valor_AFP_NI = 0, @vdc_valor_EPS_NI = 0, @vdc_valor_VOL_NI = 0
    
/* OJO AQUI ES EL DETALLITO GRACIAS*/

        
        DECLARE cr_ni CURSOR FOR            
        SELECT            
          distinct mes_acumular            
        FROM            
          liquidaciones_det AC, rel_conceptos_agr RCA            
        WHERE            
          AC.compania = RCA.compania And            
          AC.concepto = RCA.concepto And            
          AC.compania = @vch_compania And            
          AC.trabajador = @cch_trabajador And            
          AC.anio_acumular = @vsm_anio And            
          AC.sit_transaccion = 2 And            
          (RCA.agr_conceptos in (@vch_agr_ing, @vch_agr_ngr, @vch_agr_ces, @vch_agr_pen, @vch_agr_rtf, @vch_agr_otr)
			 or AC.concepto = @vsm_cnc_rtf)            
            
        OPEN cr_ni                    
        FETCH NEXT FROM cr_ni INTO @ctn_mes_acumular            
        WHILE @@fetch_status = 0            
        BEGIN            
          --SET @vch_tipo_nomina = ''            
          SET @vch_tipo_nomina = @vch_sucursal  --modificado por DCRP Ago3/2003      
                
          SELECT TOP 1           
            @vch_tipo_nomina = tipo_nomina            
          FROM           
            acum_concepto            
          WHERE           
            compania = @vch_compania And            
            trabajador = @cch_trabajador And            
            anio = @vsm_anio And            
            mes_acumular = @ctn_mes_acumular And            
            tipo_nomina = @vch_sucursal            
            
          IF IsNull(@vch_tipo_nomina,'') <> ''             
          BEGIN            
            /* Ingresos Laborales */            
            SELECT            
              @vdc_ingresos_ni = IsNull(@vdc_ingresos_ni, 0) +            
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And            
              AC.mes_acumular = @ctn_mes_acumular And            
              AC.sit_transaccion = 2 And            
              RCA.agr_conceptos = @vch_agr_ing            
            
            /* Conceptos No Gravados: Aportes a Pensiones y al Fondo de Solidaridad */            
            SELECT             
              @vdc_no_gravados_ni = IsNull(@vdc_no_gravados_ni, 0) +             
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And            
              AC.mes_acumular = @ctn_mes_acumular And            
              AC.sit_transaccion = 2 And            
              RCA.agr_conceptos = @vch_agr_ngr            
          
            /* Conceptos de Cesantias */            
            SELECT             
              @vdc_cesantias_ni = IsNull(@vdc_cesantias_ni,0) +             
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And            
              AC.mes_acumular = @ctn_mes_acumular And             
              AC.sit_transaccion = 2 And            
              RCA.agr_conceptos = @vch_agr_ces            
            
            /* Conceptos de Pensiones de Jubilacion */            
            SELECT             
              @vdc_pensiones_ni = IsNull(@vdc_pensiones_ni,0) +             
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And         
              AC.mes_acumular = @ctn_mes_acumular And            
              AC.sit_transaccion = 2 And            
           RCA.agr_conceptos = @vch_agr_pen            
            
            /* Conceptos de Otros Ingresos */            
            SELECT             
              @vdc_otros_ing_ni = IsNull(@vdc_otros_ing_ni,0) +             
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And            
              AC.mes_acumular = @ctn_mes_acumular And            
              AC.sit_transaccion = 2 And            
              RCA.agr_conceptos = @vch_agr_otr            
                    
            /* Valor de la Retención en la Fuente */          
            IF @vtn_tipo_param = 0  -- Es un concepto solamente            
              SELECT             
                @vdc_retencion_ni = IsNull(@vdc_retencion_ni,0)  + isnull(sum(importe),0)            
              FROM            
                liquidaciones_det AC            
              WHERE            
                AC.compania = @vch_compania And            
                AC.trabajador = @cch_trabajador And            
                AC.anio_acumular = @vsm_anio And            
                AC.mes_acumular = @ctn_mes_acumular And            
                AC.sit_transaccion = 2 And            
                concepto = @vsm_cnc_rtf            
            ELSE            
              SELECT             
                @vdc_retencion_ni = IsNull(@vdc_retencion_ni,0) +            
                isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
              FROM            
                liquidaciones_det AC, rel_conceptos_agr RCA            
              WHERE            
                AC.compania = RCA.compania And            
                AC.concepto = RCA.concepto And            
                AC.compania = @vch_compania And            
                AC.trabajador = @cch_trabajador And            
                AC.anio_acumular = @vsm_anio And            
                AC.mes_acumular = @ctn_mes_acumular And            
                AC.sit_transaccion = 2 And            
                RCA.agr_conceptos = @vch_agr_rtf            
            
            /*  Pensiones Obligatorias y Salud - JAS 20050216 */  
            SELECT 
              @vdc_valor_AFP_NI =           
              IsNull(@vdc_valor_AFP_NI,0) +             
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And            
              AC.mes_acumular = @ctn_mes_acumular And            
              AC.sit_transaccion = 2 And            
              RCA.agr_conceptos = @vch_agr_AFP
            
            SELECT 
              @vdc_valor_EPS_NI =           
              IsNull(@vdc_valor_EPS_NI,0) +             
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And            
              AC.mes_acumular = @ctn_mes_acumular And            
              AC.sit_transaccion = 2 And            
              RCA.agr_conceptos = @vch_agr_EPS
            
            SET @vdc_valor_AFP_NI = ISNULL(@vdc_valor_AFP_NI,0) + ISNULL(@vdc_valor_EPS_NI,0)  
            
            SELECT 
              @vdc_valor_VOL_NI =           
              IsNull(@vdc_valor_VOL_NI,0) +             
              isnull(sum(case RCA.signo WHEN '+' THEN AC.importe WHEN '-' THEN AC.importe*(-1) END),0)            
            FROM            
              liquidaciones_det AC, rel_conceptos_agr RCA            
            WHERE            
              AC.compania = RCA.compania And            
              AC.concepto = RCA.concepto And            
              AC.compania = @vch_compania And            
              AC.trabajador = @cch_trabajador And            
              AC.anio_acumular = @vsm_anio And            
              AC.mes_acumular = @ctn_mes_acumular And            
              AC.sit_transaccion = 2 And            
              RCA.agr_conceptos = @vch_agr_VOL

          END            
          FETCH NEXT FROM cr_ni INTO @ctn_mes_acumular            
        END /* WHILE DE NI */            
        CLOSE cr_ni            
        DEALLOCATE cr_ni            
            
        /******************************************************************************************************/            
        /******               f i n  d e   n o m i n a     i n t e r a c t i v a                     ********/            
        /******************************************************************************************************/            
          
        SELECT 
          @vdc_valor_gr = 0, @vdc_valor_ng = 0,
          @vdc_ctr_ng= 0, @vdc_trab= 0, @vdc_tot_no=0            
          
        IF IsNull(@vdc_ingresos,0) + IsNull(@vdc_cesantias,0) + ISNULL(@vdc_ingresos_ni, 0)  
        + IsNull(@vdc_pensiones,0) + ISNULL(@vdc_otros_ing, 0) <> 0  /* JAS 20040310 */          
        BEGIN            
          /* SCN Modificado para controlar el Tope del 30% maximo excento de la aporte no gravable - 15/04/2003*/             
          
        /* JAS 20040310 COMENTARIADO */          
/*          
          SET @vdc_ctr_ng = ISNULL(@vdc_ingresos,0) * 0.30            
          SET @vdc_trab = ISNULL(@vdc_no_gravados,0) + ISNULL(@vdc_no_gravados_ni,0)             
          SET @vdc_tot_no = ISNULL(@vdc_no_gravados,0) + ISNULL(@vdc_no_gravados_ni,0)             
            
          IF @vdc_tot_no > @vdc_ctr_ng             
          BEGIN                   
            SET @vdc_tot_no = @vdc_ctr_ng            
*/          
            /* Tabla temporal para cuadre de totales*/            
/*          
            INSERT INTO MF_CIR_DET_TEMP            
              (compania, sociedad, sucursal, anio, numero,             
              trabajador, nombre, cedula,  tot_ing, tot_no_grav, ctr_ng, secuencia)            
            VALUES             
              (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,             
              @cch_trabajador, @cvc_nombre, @cvc_cedula, @vdc_ingresos, @vdc_trab,            
              @vdc_ctr_ng, 99)            
          END             
            
          SET @vdc_valor_gr = ((IsNull(@vdc_ingresos,0) + IsNull(@vdc_ingresos_ni,0)             
              + IsNull(@vdc_ingresos_qa,0)) - (IsNull(@vdc_tot_no,0) )) * 0.75            
            
          SET @vdc_valor_exc = ( (IsNull(@vdc_ingresos,0) + IsNull(@vdc_ingresos_ni,0)             
              + IsNull(@vdc_ingresos_qa,0)) - (IsNull(@vdc_tot_no,0) )) * 0.25            
*/            
          
          /* JAS 20040310 */          
          /* Sumar los ingresos y excentos de NS y NI */          
--  PRINT '4.TRABAJADOR : ' + @cch_trabajador          
--  PRINT 'INGRESOS : ' + CONVERT(VARCHAR, @vdc_ingresos)          
--  PRINT 'INGRESOS_NI : ' + CONVERT(VARCHAR, @vdc_ingresos_ni)          
--  PRINT 'EXCENTO : ' + CONVERT(VARCHAR, @vdc_no_gravados)          
--  PRINT 'EXCENTO_NI : ' + CONVERT(VARCHAR, @vdc_no_gravados_ni)          
          
          SET @vdc_ingresos_t = ISNULL(@vdc_ingresos, 0) + ISNULL(@vdc_ingresos_ni, 0)
							   + ISNULL(@vdc_otros_ing,0) +  isnull(@vdc_otros_ing_ni,0)

          SET @vdc_no_gravados_t = ISNULL(@vdc_no_gravados, 0) + ISNULL(@vdc_no_gravados_ni, 0)          
          /* Hallar el 30% de los ingresos */          
          SET @vdc_valor_exc = @vdc_ingresos_t * 0.3          

--  PRINT 'INGRESOS_T : ' + CONVERT(VARCHAR, @vdc_ingresos_t)          
--  PRINT 'EXCENTOS_T : ' + CONVERT(VARCHAR, @vdc_no_gravados_t)          
--  PRINT 'TOPE 30% : ' + CONVERT(VARCHAR, @vdc_valor_exc)          
          /* Verificar que lo excento no supere el 30% de los ingresos */          
          IF @vdc_no_gravados_t > @vdc_valor_exc          
          BEGIN          
            SET @vdc_no_gravados_t = @vdc_valor_exc          
          END         
--  PRINT 'EXCENTOS_T : ' + CONVERT(VARCHAR, @vdc_no_gravados_t)          
           
			 /* JAS - 20050216 */
          /* Hallar el 25% excento */          
          SET @vdc_valor_ng = (@vdc_ingresos_t - @vdc_no_gravados_t) * 0.25          
          
          /* Verificar que lo excento no supere el tope de excento */          
          IF @vdc_valor_ng > @vdc_tope_exc * @vdc_meses_laborados           
          BEGIN          
            SET @vdc_valor_ng = @vdc_tope_exc * @vdc_meses_laborados            
          END          
          
          /* SET @vdc_valor_gr = (@vdc_ingresos_t - @vdc_no_gravados_t) - @vdc_valor_ng   
          SET @vdc_valor_ng = @vdc_ingresos_t - @vdc_valor_gr          
          COMENTARIADO Y SE INSERTÓ LA SIG LINEA - JAS - 20050216 */
          SET @vdc_valor_ng = ISNULL(@vdc_valor_ng,0) + ISNULL(@vdc_cesantias,0) + isnull(@vdc_cesantias_ni,0)
		  SET @vdc_valor_gr = ISNULL(@vdc_ingresos, 0) + ISNULL(@vdc_ingresos_ni, 0) 
--  PRINT 'TOPE EXCENTO : ' + CONVERT(VARCHAR, @vdc_tope_exc)          
--  PRINT 'MESES LABORA : ' + CONVERT(VARCHAR, @vdc_meses_laborados)          
--  PRINT 'VALOR GRAVADO : ' + CONVERT(VARCHAR, @vdc_valor_gr)          
--  PRINT 'VALOR NO GRAV : ' + CONVERT(VARCHAR, @vdc_valor_ng)          
--  PRINT 'RETENCION     : ' + CONVERT(VARCHAR, @vdc_retencion + IsNull(@vdc_retencion_ni,0))      
--  PRINT 'CESANTIAS     : ' + CONVERT(VARCHAR, @vdc_cesantias + IsNull(@vdc_cesantias_ni,0))      
  /* JAS 20040310 */          
/*          
          SET @vdc_valor_gr = (@vdc_ingresos - @vdc_tot_no) - @vdc_valor_exc            
          SET @vdc_valor_ng = IsNull(@vdc_ingresos,0) + IsNull(@vdc_ingresos_ni,0)           
              + IsNull(@vdc_ingresos_qa,0) - @vdc_valor_gr            
*/          
        END            
      IF IsNull(@vdc_ingresos_t,0) + IsNull(@vdc_cesantias,0) + IsNull(@vdc_pensiones,0)           
      + ISNULL(@vdc_otros_ing, 0) <> 0  /* JAS 20040310 */          
      BEGIN            
         SET @vsm_numero = @vsm_numero + 1            
         INSERT INTO MF_CIR_DET             
          (compania, sociedad, sucursal, anio, numero,             
          trabajador, nombre, cedula,             
          fecha_desde, fecha_hasta, campo_ng, campo_gr, secuencia,            
          valor_retencion)            
        VALUES             
          (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,             
          @cch_trabajador, @cvc_nombre, @cvc_cedula,            
          @vdt_desde, @vdt_hasta, @vdc_valor_ng, @vdc_valor_gr, 1,            
          ISNULL(@vdc_retencion, 0) + IsNull(@vdc_retencion_ni,0) + IsNull(@vdc_retencion_qa,0))            
            
        INSERT INTO MF_CIR_DET             
          (compania, sociedad, sucursal, anio, numero,             
          campo_ng, secuencia)            
        VALUES             
          (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,             
          ISNULL(@vdc_cesantias, 0) + IsNull(@vdc_cesantias_ni,0) + IsNull(@vdc_cesantias_qa,0), 2)            
            
        INSERT INTO MF_CIR_DET             
          (compania, sociedad, sucursal, anio, numero, campo_ng, secuencia)            
        VALUES             
          (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,             
          ISNULL(@vdc_pensiones, 0) + IsNull(@vdc_pensiones_ni,0) + IsNull(@vdc_pensiones_qa,0), 4)            
           
        /* marzo 11 otros ingresos  */          
        INSERT INTO MF_CIR_DET             
          (compania, sociedad, sucursal, anio, numero,             
          campo_ng, secuencia)            
        VALUES             
          (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,             
          IsNull(@vdc_otros_ing,0) + IsNull(@vdc_otros_ing_ni,0) + IsNull(@vdc_otros_ing_qa,0), 5)            

   	    /* Salud, solidaridad y pensiones obligatorias - 20050216 */  
        INSERT INTO MF_CIR_DET                   
          (compania, sociedad, sucursal, anio, numero,                   
          campo_ng, secuencia)                  
        VALUES                   
          (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,                   
          ISNULL(@vdc_valor_AFP,0) + ISNULL(@vdc_valor_AFP_NI,0), 6)                  
            
        /* Aportes Voluntarios y AFC - 20050216 */  
        INSERT INTO MF_CIR_DET                   
          (compania, sociedad, sucursal, anio, numero,                   
          campo_ng, secuencia)                  
        VALUES                   
          (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,                   
          ISNULL(@vdc_valor_VOL,0) + ISNULL(@vdc_valor_VOL_NI,0), 7)                  
         
        /* Rentas Exentas (25% y Cesantias) - 20050216 */  
        INSERT INTO MF_CIR_DET                   
          (compania, sociedad, sucursal, anio, numero,                   
          campo_ng, secuencia)
        VALUES                   
          (@vch_compania, @pch_sociedad, @vch_sucursal, @vsm_anio, @vsm_numero,                   
          ISNULL(@vdc_valor_ng,0), 8)              

      END /* si ingresos > 0 */            
    END            
    FETCH NEXT FROM cr_detalle             
    INTO @cch_trabajador, @cvc_nombre, @cvc_cedula, @cdt_ingreso, @cdt_baja            
  END            
  CLOSE cr_detalle            
  DEALLOCATE cr_detalle            
END

GO
GRANT EXECUTE ON dbo.sp_fco_rep_cir TO PUBLIC
GO
