CREATE OR REPLACE PROCEDURE sp_var_aiper_refe
(
    bcalind            number,
    pch_compania       char,
    pch_clase_nomina   char,
    psi_id_cal         smallint,
    pch_tipo_nomina    char,
    psi_anio	        smallint,
    pti_periodo        smallint,
    pdt_fec_termino	date,
    pch_trabajador     char,
    psi_concepto       smallint,
    pch_referencia     char,
    psi_secuencia      smallint, 
    chsub_var1	        varchar2,
    chsub_var2	        varchar2,
    mvar_value	        IN OUT number,
    chvar_value        IN OUT varchar2,
    pid_sesion         IN number
)
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 17 2002                                ***/
/*** Motor:	  Oracle 8i             Version interna: 1.00  ***/
/*****************************************************************/
    vdc_valor     number(19,6);
    vch_clave     char(10);
    vin_id_cursor integer;
    vin_registros integer;
BEGIN  
    vdc_valor := 0;
    mvar_value := 0;
    chvar_value := NULL;

    IF pti_periodo = 0 THEN
        RETURN;
    END IF;

    BEGIN
        SELECT
            referencia2
        INTO
            vch_clave
        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;
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            vch_clave := 'vacio';
            vin_id_cursor := dbms_sql.open_cursor;
            dbms_sql.parse(vin_id_cursor,
             ' SELECT referencia2' ||
             ' FROM TT' || RTrim(pch_compania) || RTrim(To_Char(psi_id_cal)) ||
             ' WHERE compania = ''' || pch_compania || '''' ||
             ' AND clase_nomina = ''' || pch_clase_nomina || '''' ||
             ' AND id_calendario = ' || To_Char(psi_id_cal) ||
             ' AND concepto = ' || To_Char(psi_concepto) || 
             ' AND trabajador = ''' || pch_trabajador || '''' ||
             ' AND referencia = ''' || pch_referencia || '''' ||
             ' AND secuencia = ' || To_Char(psi_secuencia), dbms_sql.v7);

             dbms_sql.define_column_char(vin_id_cursor, 1, vch_clave, 10);
             vin_registros := dbms_sql.execute(vin_id_cursor);
             IF dbms_sql.fetch_rows(vin_id_cursor) > 0 THEN
                 dbms_sql.column_value_char(vin_id_cursor, 1, vch_clave);
             END IF;
             dbms_sql.close_cursor(vin_id_cursor);
    END;

    IF LTrim(RTrim(vch_clave)) = 'A' THEN -- La base es una agrupación de conceptos
        SELECT
            Sum(Nvl(Decode(signo,'-',-1*importe,importe),0))
        INTO
            vdc_valor
        FROM
            transacciones_ns tns, rel_conceptos_agr rca
	WHERE
            tns.compania = rca.compania And tns.concepto = rca.concepto And
            tns.compania = pch_compania And
            tns.clase_nomina  = pch_clase_nomina And
            tns.id_calendario = psi_id_cal And
            tns.trabajador = pch_trabajador And
            rca.agr_conceptos = LTrim(RTrim(pch_referencia));

    ELSE -- La base es un concepto

        SELECT
            Sum(Nvl(importe,0))
        INTO
            vdc_valor
        FROM
            transacciones_ns
	WHERE
            compania = pch_compania And
            clase_nomina  = pch_clase_nomina And
            id_calendario = psi_id_cal And
            concepto = LTrim(RTrim(pch_referencia)) And
            trabajador = pch_trabajador;
    END IF;

    mvar_value := Nvl(vdc_valor,0);
    RETURN;
END;
/
CREATE PUBLIC SYNONYM sp_var_aiper_refe FOR ADAM.sp_var_aiper_refe;
GRANT EXECUTE ON sp_var_aiper_refe TO adama;
