CREATE PROCEDURE dbo.sp_var_aiper_refe        
    @bcalind            bit,      
    @pch_compania       char(4),      
    @pch_clase_nomina   char(2),      
    @psi_id_cal         smallint,      
    @pch_tipo_nomina    char(2),      
    @psi_anio         smallint,      
    @pti_periodo        tinyint,      
    @pdt_fec_termino smalldatetime,      
    @pch_trabajador     char(10),      
    @psi_concepto       smallint,      
    @pch_referencia     char(10),      
    @psi_secuencia      smallint,       
    @chsub_var1         varchar(10),      
    @chsub_var2         varchar(10),      
    @mvar_value         decimal(19,6) OUTPUT,       
    @chvar_value        varchar(40) OUTPUT,      
    @id_sesion          smallint      
AS       
/*****************************************************************/      
/*** Modulo:      Módulo Fiscal Colombiano ADAM V.3 - Embargos ***/      
/*** Descripcion: Halla el valor base en tiempo de cálculo     ***/      
/*** Autor:   Laura Guzman / 2001                          ***/      
/*** Revision:    Juan Carlos Leguizamón                       ***/      
/*** Fecha:   Junio 5 2002                                 ***/      
/*** Motor:   SQL Server 7.0 Version interna: 1.00  ***/      
/*** Cambio   SCN Para Monitores JAVA                   ***/      
/*****************************************************************/      
BEGIN       
DECLARE       
    @vdc_valor    decimal(19,6),       
    @vvc_clave    varchar(10)      
       
 DECLARE @SQLString   nVARCHAR(2000)      
 DECLARE @ParmDefinition nVARCHAR(500)      
 DECLARE @chtable         VARCHAR(40)      
 DECLARE @SQLString1   VARCHAR(500)      
      
    IF @pti_periodo = 0      
        RETURN      
      
    SELECT @vdc_valor = 0, @mvar_value = 0, @chvar_value = NULL      
      
 SELECT       
  @chtable = table_name       
 FROM       
  table_actual      
 WHERE        
  id_sesion = @id_sesion             
          
SELECT        
        @vvc_clave = referencia2        
    FROM        
        transacciones_ns        
    WHERE        
        compania = @pch_compania And        
        clase_nomina = @pch_clase_nomina And        
        id_calendario = @psi_id_cal And        
        concepto = @psi_concepto And        
        trabajador = @pch_trabajador And        
        referencia = @pch_referencia And        
        secuencia = @psi_secuencia         
      
/*SET @SQLString1 =       
  "SELECT  @maddOUT  = referencia2 FROM " + "transacciones_ns "+        
  " WHERE compania      ='" + rtrim( @pch_compania ) +       
  "' AND id_calendario = " + cast (@psi_id_cal as char(5)) +       
  " AND trabajador    ='" + @pch_trabajador +       
  "' AND concepto      = " + cast (@psi_concepto  as char(6)) +      
  " AND clase_nomina  = '" + @pch_clase_nomina +      
  "' AND referencia = '" + @pch_referencia +       
  "' AND secuencia = "  + @psi_secuencia      
      
 SET @ParmDefinition = '@maddOUT VARCHAR(10) OUTPUT'      
 EXECUTE sp_executesql @SQLString, @ParmDefinition, @maddOUT=@vvc_clave OUTPUT*/      
      
    IF @vvc_clave = 'A'  -- La base es una agrupación de conceptos      
    BEGIN                     
  SET @SQLString =       
   "SELECT @maddOUT1  = Sum(IsNull(Case when signo = '-' then -1*importe else importe end,0)) FROM " + @chtable +        
   " tns, rel_conceptos_agr rca" +      
   " WHERE tns.compania = rca.compania " +      
   " AND tns.concepto = rca.concepto " +      
   " AND tns.compania      ='" + rtrim( @pch_compania ) +       
   "' AND tns.id_calendario = " + cast (@psi_id_cal as char(5)) +       
   " AND tns.trabajador    ='" + @pch_trabajador +       
   "' AND tns.clase_nomina  = '" + @pch_clase_nomina +      
   "' AND rca.agr_conceptos = '" + LTRIM(RTRIM(@pch_referencia)) + "'"      
      
  SET @ParmDefinition = '@maddOUT1 DECIMAL(19, 6) OUTPUT'      
  EXECUTE sp_executesql @SQLString, @ParmDefinition, @maddOUT1=@vdc_valor OUTPUT      
    END      
    ELSE -- La base es un concepto      
    BEGIN      
  SET @SQLString =       
   "SELECT @maddOUT1  = Sum(IsNull(importe,0)) FROM " + @chtable +        
   " WHERE compania      ='" + rtrim( @pch_compania ) +       
   "' AND id_calendario = " + cast (@psi_id_cal as char(5)) +       
   " AND trabajador    ='" + @pch_trabajador +       
   "' AND clase_nomina  = '" + @pch_clase_nomina +      
   "' AND concepto = " + CASE WHEN ISNUMERIC(LTRIM(RTRIM(@pch_referencia))) = 0 THEN '0' ELSE LTRIM(RTRIM(@pch_referencia)) end  
-- ajuste jcl nov-09-06 para que no de error cuando la referencia llega vacia , sin embargo el concepto no va a calcular bien  
  
  SET @ParmDefinition = '@maddOUT1 DECIMAL(19, 6) OUTPUT'      
  EXECUTE sp_executesql @SQLString, @ParmDefinition, @maddOUT1=@vdc_valor OUTPUT      
    END      
      
    SELECT @mvar_value = IsNull(@vdc_valor,0)      
    RETURN      
END      
    
  
