CREATE OR REPLACE PROCEDURE sp_var_ailiq_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 varchar,
    pid_sesion         IN number
)
AS 
/*****************************************************************/
/*** Modulo:      Módulo Fiscal Colombiano ADAM V.3 - Embargos ***/
/*** Descripcion: Halla el valor base en tiempo de cálculo     ***/
/*** Revision:    Juan Carlos Leguizamón                       ***/
/*** Fecha:	  Junio 17 2002                                ***/
/*** Motor:	  Oracle 8i		Version interna: 1.0   ***/
/*****************************************************************/
    vdc_valor number(19,6);
    vch_clave char(10);
    vin_id_cursor integer;
    vin_registros integer;
    vvc_varname varchar(40);
    vti_status smallint;
    vvc_valor varchar2(40); 
    vch_varclass char(2);
    vti_flag smallint;
    vsi_anio_acumular smallint;
    vti_mes_acumular smallint;
    vch_tipo_nomina char(2);
    vsi_numero_liquidacion smallint;
   
BEGIN 
 
    vdc_valor := 0;
    mvar_value := 0;
    chvar_value := NULL;

    IF pti_periodo > 0 THEN
        RETURN;
    END IF;

    /*** Se obtiene la información necesaria para la consulta ***/
    vvc_varname := 'anio_acumular';
    sp_varname 
       (vvc_varname, 
        vdc_valor,
	vvc_valor,
	vch_varclass,
	vti_flag,
	vti_status,pid_sesion);
    vsi_anio_acumular := vdc_valor;

    vvc_varname := 'mes_acumular';
    sp_varname 
       (vvc_varname,
	vdc_valor,
	vvc_valor,
	vch_varclass,
	vti_flag,
	vti_status,pid_sesion);
    vti_mes_acumular := vdc_valor;

    vvc_varname := 'numero_liquidacion';
    sp_varname
       (vvc_varname,
	vdc_valor,
	vvc_valor,
	vch_varclass,
	vti_flag,
	vti_status,pid_sesion);
    vsi_numero_liquidacion := vdc_valor;

    vvc_varname := 'tipo_nomina';
    sp_varname
       (vvc_varname,
	vdc_valor,
	vvc_valor,
	vch_varclass,
	vti_flag,
	vti_status,pid_sesion);
    vch_tipo_nomina := vvc_valor;

    BEGIN
        SELECT
            referencia2
        INTO
            vch_clave
        FROM
            liquidaciones_det
        WHERE
            compania = pch_compania And
            tipo_nomina = vch_tipo_nomina And
            anio_acumular = vsi_anio_acumular And
            concepto = psi_concepto And
            numero_liquidacion = vsi_numero_liquidacion And
            trabajador = pch_trabajador And
            referencia = pch_referencia And
            secuencia = psi_secuencia;
    EXCEPTION
        WHEN OTHERS THEN vch_clave := '';
    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
            liquidaciones_det liq, rel_conceptos_agr rca
	WHERE
            liq.compania = rca.compania And liq.concepto = rca.concepto And
            liq.compania = pch_compania And
            liq.tipo_nomina  = pch_tipo_nomina And
            liq.anio_acumular = vsi_anio_acumular And
            liq.numero_liquidacion = vsi_numero_liquidacion And
            liq.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
            liquidaciones_det
	WHERE
            compania = pch_compania And
            tipo_nomina  = pch_tipo_nomina And
            anio_acumular = vsi_anio_acumular And
            numero_liquidacion = vsi_numero_liquidacion And
            trabajador = pch_trabajador And
            concepto = LTrim(RTrim(pch_referencia));
    END IF;

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