<?php
/*-----------------------------------*
* Proyecto : SAI                    *
* Autor    : Federico A. Ocampo     *
* Desc: Interfaz web de Seleccion   *
*       para Armado de Informes     *
*-----------------------------------*/

//--------------------------------------
require_once 'PostgreClass.php';
require_once "AppConfig.php";
//--------------------------------------


/*****************************************************************************
.::. Clase ObtieneDatos .::.
@Autor:   Federico A. Ocampo
@Email:   rguevara@mcanet.com.ar
@Empresa: MCAnet
@Descripcion:	Esta clase provee los metodos para obtener, de la base de datos
				correspondiente, las diferentes tablas. Realiza las consultas
				necesarias y retorna, por cada consulta, un arreglo con toda la
				tabla resultado.
*****************************************************************************/
class ObtieneDatos_PG
{
    var $AppConfig;  //Configuracion de la aplicacion
    var $ManejaBD;   //Clase que administra la conexion con la base de datos
    var $DB_CONNECT_ERROR = "FALLO AL CONECTAR CON LA BASE DE DATOS";
    var $DB_QUERY_NULL    = "La consulta no obtuvo resultados";


    /**
    * Constructor: inicializa las propiedades de la clase
    * Recibe todos los parametros por referencia
    * @param AppConfig Objeto con la configuracion de la aplicacion
    * @param ManejadorBD clase para gestionar la conexion con la base de datos
    */
    function ObtieneDatos_PG(&$AppConfig, &$ManejadorBaseDatos)
    {
      $this->AppConfig =& $AppConfig;
      $this->ManejaBD  =& $ManejadorBaseDatos;
    }

	/**  METODOS DE LA CLASE    */
	
	/**
	* Empieza una transaccion
	* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
	*/
	/*function Begin_Transaction()
	{
		$SQL_BEGIN = 'BEGIN;';
		return $this->obtenerDatos($SQL_BEGIN);
	}*/
	
	/**
	* Termina un bloque de transaccion
	* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
	*/
	/*function End_Transaction()
	{
		$SQL_END = 'COMMIT;';
		return $this->obtenerDatos($SQL_END);
	}*/
	
	/**
	* Vuelve atras las operaciones de un bloque de transaccion
	* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
	*/
	/*function Rollback_Transaction()
	{
		$SQL_END = 'ROLLBACK;';
		return $this->obtenerDatos($SQL_END);
	}*/
	
	/**
    * Obtiene de la base de datos los domicilios disponibles para un socio
    * @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
    */
	function TiposDomiciliosDisponibles()
	{
		$SQL_TIPOSDOMICILIOS = 'SELECT td_cod, td_desc FROM acde.tipdom WHERE td_cod != \'C\' ORDER BY td_cod ASC';
		
		return $this->obtenerDatos($SQL_TIPOSDOMICILIOS);
	}
	
	/**
    * Obtiene de la base de datos los domicilios disponibles para un socio
    * @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
    */
	function DomiciliosDisponibles($codsoc)
	{
		$SQL_DOMICILIOS = 'SELECT dom_tipdom, dom_dom FROM acde.domsoc WHERE dom_soc =\'' . $codsoc . '\' AND dom_tipdom != \'C\' ORDER BY dom_soc, dom_tipdom ASC';
		
		return $this->obtenerDatos($SQL_DOMICILIOS);
	}

	/**
	* Obtiene de la base el ultimo codigo de socio de la tabla de socios (el maximo)
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo]
	*/
	function Ultimo_Socio()
	{
		$SQL_ULTIMOSOCIO = 'SELECT max(soc_cod) FROM acde.socio;;';
		return $this->obtenerDatos($SQL_ULTIMOSOCIO);
	}

	/**
	* Obtiene de la base el importe de la tabla cuotas
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function ImporteDeCuota($p_CodCatSoc, $p_Anio)
	{
		$SQL_IMPORTEDECUOTA = 'SELECT cuo_imp FROM acde.cuotas WHERE cuo_cat=\''. $p_CodCatSoc . '\' and cuo_fecvig=\''.$p_Anio.'\';';
		return $this->obtenerDatos($SQL_IMPORTEDECUOTA);
	}

	/**
	* Obtiene de la base de datos la lista de familiares disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function FamiliaresDisponibles()
	{
		$SQL_FAMILIAR = 'SELECT rf_cod, rf_desc FROM acde.relfam ORDER BY rf_desc asc';
		return $this->obtenerDatos($SQL_FAMILIAR);
	}

	/**
	* Obtiene de la base de datos la lista de paises disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function PaisesDisponibles()
	{
		$SQL_PAISES = 'SELECT pais_cod, pais_desc FROM acde.pais ORDER BY pais_desc asc';
		return $this->obtenerDatos($SQL_PAISES);
	}

	/**
    * Obtiene de la base de datos la lista de provincias disponibles para ser generados
    * @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
    */
	function ProvinciasDisponibles($pais)
	{
		$SQL_PROVINCIAS = 'SELECT prov_cod, prov_desc FROM acde.provincia WHERE prov_pais =\'' . $pais . '\' ORDER BY prov_desc asc';
		return $this->obtenerDatos($SQL_PROVINCIAS);
	}

	/**
	* Obtiene de la base de datos la lista de tratos disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function TratamientosDisponibles()
	{
		$SQL_TRATAMIENTOS = 'SELECT tra_cod, tra_descr, tra_desc FROM acde.trato ORDER BY tra_cod asc';
		return $this->obtenerDatos($SQL_TRATAMIENTOS);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de documentos disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function TiposDeDocumentosDisponibles()
	{
		$SQL_TIPDOC = 'SELECT td_cod, td_descr FROM acde.tipdoc ORDER BY td_cod asc';
		return $this->obtenerDatos($SQL_TIPDOC);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de estados civiles disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function EstadosCivilesDisponibles()
	{
		$SQL_ESTCIV = 'SELECT ec_cod, ec_desc FROM acde.estciv ORDER BY ec_cod asc';
		return $this->obtenerDatos($SQL_ESTCIV);
	}

	/**
	* Obtiene de la base de datos la lista de sexos disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function SexosDisponibles()
	{
		$SQL_SEXO = 'SELECT sex_cod, sex_desc FROM acde.sexo ORDER BY sex_cod asc';
		return $this->obtenerDatos($SQL_SEXO);
	}

	/**
	* Obtiene de la base de datos la lista de estados societarios disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function EstadosSocietariosDisponibles()
	{
		$SQL_ESTSOC = 'SELECT es_cod, es_desc, es_factu FROM acde.estsoc ORDER BY es_cod asc';
		return $this->obtenerDatos($SQL_ESTSOC);
	}


	/**
	* Obtiene de la base de datos la lista de grupos disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function GruposDisponibles()
	{
		$SQL_GRUPOS = 'SELECT gru_cod, gru_desc FROM acde.grupo ORDER BY gru_cod asc';
		return $this->obtenerDatos($SQL_GRUPOS);
	}

	/**
	* Obtiene de la base de datos la lista profesiones disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function ProfesionesDisponibles()
	{
		$SQL_PROFESION = 'SELECT pro_cod, pro_desc FROM acde.profesion ORDER BY pro_cod asc';
		return $this->obtenerDatos($SQL_PROFESION);
	}

	/**
	* Obtiene de la base de datos la lista socios disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function SociosDisponibles()
	{
		$SQL_SOCIOS = 'SELECT soc_cod, soc_apel, soc_nom FROM acde.socio ORDER BY soc_cod asc';
		return $this->obtenerDatos($SQL_SOCIOS);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de comprobantes disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function TipComDisponibles()
	{
		$SQL_TIPCOM = 'SELECT atc_tcom, atc_dtcom FROM admin.atipcom ORDER BY atc_tcom asc';
		return $this->obtenerDatos($SQL_TIPCOM);
	}

	/**
	* Obtiene de la base de datos la lista de despachos disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function DespachosDisponibles()
	{
		$SQL_DESPACHOS = 'SELECT des_cod, des_desc FROM acde.despacho ORDER BY des_cod asc';
		return $this->obtenerDatos($SQL_DESPACHOS);
	}

	/**
	* Obtiene de la base de datos la lista categorias disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function CatSocDisponibles()
	{
		$SQL_CATSOC = 'SELECT cs_cod, cs_dcat FROM acde.catsoc ORDER BY cs_cod asc';
		return $this->obtenerDatos($SQL_CATSOC);
	}

	/**
	* Obtiene de la base de datos de las versiones de facturacion
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function VersionesDisponibles()
	{
		$SQL_VERFAC = 'SELECT * FROM acde.verfac WHERE ver_mabi=true ORDER BY ver_cod asc';
		return $this->obtenerDatos($SQL_VERFAC);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de categorias disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function TipCatSocDisponibles()
	{
		$SQL_TIPCATSOC = 'SELECT tcs_cod, tcs_desc FROM acde.ticaso ORDER BY tcs_cod asc';
		return $this->obtenerDatos($SQL_TIPCATSOC);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de tarjetas disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function TiposDeTarjetasDisponibles()
	{
		$SQL_TARJETAS = 'SELECT tt_cod, tt_desc FROM acde.tiptar ORDER BY tt_cod asc';
		return $this->obtenerDatos($SQL_TARJETAS);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de tarjetas disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function TarjetasDisponibles()
	{
		$SQL_TARJETAS = 'SELECT tar_cod, tar_desc, tar_tipo FROM acde.tarjeta ORDER BY tar_cod asc';
		return $this->obtenerDatos($SQL_TARJETAS);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de tarjetas disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function CantidadVersionesActivadas()
	{
		$SQL_CANTACTI = 'SELECT count(*) FROM acde.verfac WHERE ver_mabi=true';
		return $this->obtenerDatos($SQL_CANTACTI);
	}

	/**
	* Obtiene de la base de datos la lista de tipos de tarjetas disponibles para ser generados
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function BuscaVersionActiva()
	{
		$SQL_VERACTIVA = 'SELECT * FROM acde.verfac WHERE ver_mabi=true';
		return $this->obtenerDatos($SQL_VERACTIVA);
	}

	/**
	* Obtiene de la base de datos la lista operaciones
	* @param string Tipo de comprobante
	* @return array Retorna un arreglo multidimensional:
	*/
	function OperacionesDisponibles($TipCom)
	{
		//El parametro no puede ser vacio
		if(!empty($TipCom))
		{
			//'Sanea' la entrada para evitar ataques SQL-Injection
			$TipComSano = $this->sanearTextoSQL($TipCom);
			$SQL_OPE = "SELECT op_ope, op_dope FROM admin.operac WHERE op_tcom = " . $TipComSano . "ORDER BY op_ope asc";
		}
		else
		{
			//Si es vacio, genera el warning y devuelvo vacio
			if($this->AppConfig->DEBUG["nivel"] >1)
			{
				$war_msg = "Error en parametros: TipCom";
				trigger_error($war_msg, E_USER_WARNING);
			}
		}

		return $this->obtenerDatos($SQL_OPE);
	}

	/**
	* Obtiene de la base de datos la lista conceptos relacionados con las operaciones
	* @param string Tipo de comprobante
	* @param string Operacion
	* @return array Retorna un arreglo multidimensional:
	*/
	function OperConDisponibles($TipCom, $Ope)
	{
		//El parametro no puede ser vacio
		if( !empty($TipCom) && !empty($Ope) )
		{
			//'Sanea' la entrada para evitar ataques SQL-Injection
			$TipComSano = $this->sanearTextoSQL($TipCom);
			//$OpeSano = $this->sanearTextoSQL($Ope);

			$SQL_OPERCON = "SELECT oc_conc, oc_dopco FROM admin.opercon WHERE oc_tcom  = " . $TipComSano ." and oc_ope =". $Ope .  " ORDER BY oc_conc asc";

		}
		else
		{
			//Si es vacio, genera el warning y devuelvo vacio
			if($this->AppConfig->DEBUG["nivel"] >1)
			{
				$war_msg = "Error en parametros: TipCom";
				trigger_error($war_msg, E_USER_WARNING);
			}
		}
		return $this->obtenerDatos($SQL_OPERCON);
	}

	/**
	* Obtiene de la base de datos el importe correspondiente
	* @param string Tipo de comprobante
	* @param string Operacion
	* @param string Evento
	* @return array Retorna un arreglo multidimensional:
	*/
	function ImporteGasto($TipCom, $Ope, $Eve)
	{
		//El parametro no puede ser vacio
		if( !empty($TipCom) && !empty($Ope) && !empty($Eve) )
		{
			//'Sanea' la entrada para evitar ataques SQL-Injection
			$TipComSano = $this->sanearTextoSQL($TipCom);
			$EveSano = $this->sanearTextoSQL($Eve);

			$SQL_IMPO = "SELECT ri_imp FROM acde.relimp WHERE ri_tcom  = " . $TipComSano . " AND ri_ope =". $Ope .  " AND ri_conc =". $EveSano .  " ORDER BY ri_imp asc";
		}
		else
		{
			//Si es vacio, genera el warning y devuelvo vacio
			if($this->AppConfig->DEBUG["nivel"] >1)
			{
				$war_msg = "Error en parametros: TipCom";
				trigger_error($war_msg, E_USER_WARNING);
			}
		}

		return $this->obtenerDatos($SQL_IMPO);
	}
	
	/**
	* FUNCIONES LEO: Obtienen campos para ser cargados en formularios completos y asi
	* poder modificarlos. Se pasan siempre campos clave para recuperarlos.
	*/

	/**
	* Obtiene de la base de datos la categoria de socio
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function Leo_DOMSOC($codsoc, $tipdom)
	{
		$SQL_DOMSOC = 'SELECT * FROM acde.domsoc WHERE dom_soc = ' . $codsoc . ' AND dom_tipdom =  \'' . $tipdom . '\';';
		return $this->obtenerDatos($SQL_DOMSOC);
	}

	/**
	* Obtiene de la base de datos la categoria de socio
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function Leo_CATSOC($p_categ)
	{
		$SQL_CATSOC = 'SELECT cs_cod, cs_dcat, cs_tipo, cs_edadd, cs_edadh FROM acde.catsoc WHERE cs_cod = \'' . $p_categ . '\';';
		return $this->obtenerDatos($SQL_CATSOC);
	}

	/**
	* Obtiene de la base de datos el estado del socio
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function Leo_ESTSOC($p_estsoc)
	{
		$SQL_ESTSOC = 'SELECT * FROM acde.estsoc WHERE es_cod = \'' . $p_estsoc . '\';';
		return $this->obtenerDatos($SQL_ESTSOC);
	}


	/**
	* Obtiene de la base de datos el tipo de categoria del socio
	* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
	*/
	function Leo_TICASO($p_TipCat)
	{
		$SQL_TICASO = 'SELECT tcs_cod, tcs_desc, tcs_perrec FROM acde.ticaso WHERE tcs_cod = \'' . $p_TipCat . '\';';
		return $this->obtenerDatos($SQL_TICASO);
	}

	/**
	* Obtiene de la base de datos el socio
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][campo1][campo2]
	*/
	function Leo_SOCIO($p_Socio)
	{
		$SQL_SOCIO = "SELECT * FROM acde.socio WHERE soc_cod=".$p_Socio. ";";
		return $this->obtenerDatos($SQL_SOCIO);
	}

	/**
	* Obtiene de la base de datos la version de facturacion
	* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
	*/
	function Leo_VERFAC($p_Ver)
	{
		$SQL_VERFAC = 'SELECT * FROM acde.verfac WHERE ver_cod=' . $p_Ver . ';';
		return $this->obtenerDatos($SQL_VERFAC);
	}

	/**
	* Obtiene de la base de datos la gral de acde
	* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
	*/
	function Leo_GRALACDE($p_Ver)
	{
		$v_SQL = 'SELECT * FROM acde.gralacde WHERE gr_ver='.$p_Ver.';';
		return $this->obtenerDatos($v_SQL);
	}

	/**
	* Obtiene de la base los datos de la tabla relimp
	* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
	*/
	function Leo_RELIMP($p_TipCom, $p_Ope, $p_Conc)
	{
		$SQL_RELIMP = 'SELECT * FROM acde.relimp WHERE ri_tcom= \'' . $p_TipCom . '\' AND ri_ope=' . $p_Ope . ' AND ri_conc= \''. $p_Conc. '\' ;';
		return $this->obtenerDatos($SQL_RELIMP);
	}

	/**
	* Obtiene de la base los datos de la tabla TIPTAR
	* @param string $p_TipTar
	* @return una matriz del tipo Matriz[v_Item][campo0][campo1] ...[campon]
	*/
	function Leo_TIPTAR($p_TipTar)
	{
		$SQL_TIPTAR = 'SELECT * FROM acde.tiptar WHERE tt_cod = \'' . $p_TipTar . '\';';
		return $this->obtenerDatos($SQL_TIPTAR);
	}

	/**
	* Obtiene de la base los datos de la tabla
	* @param num $p_Tar Código de tarjeta
	* @return una matriz del tipo Matriz[v_Item][campo0][campo1] ...[campon]
	*/
	function Leo_TARJETA($p_Tar, $v_sql)
	{
		$SQL_TARJETA = 'SELECT * FROM acde.tarjeta WHERE tar_cod = ' . $p_Tar . ';';
		$v_sql = $SQL_TARJETA;
		return $this->obtenerDatos($SQL_TARJETA);
	}
	
	
  //-------------------------------------INTERFAZ PRIVADA-------------------------------------/
	/**
	* Accede a la BD y obtiene los resultados de la consulta identificando si existen errores
	* de conexion o consulta
	* @param string <var>consulta</var> sentencia SQL a enviar a la base de datos
	* @return array Retorna un arreglo bidimensional de la forma arreglo[empresa][descrip]
	*/
	function obtenerDatos(&$consulta)
	{
		//Retorno de la funcion
		$ret_datos = "";

		//Para manejar errores
		$NIVEL_DEBUG = $this->AppConfig->DEBUG["nivel"];
		$this->ManejaBD->procesoCorrecto  = true;
		$procesoCorrecto = $this->ManejaBD->conectarBD();
		if($procesoCorrecto)
		{
			$procesoCorrecto = $this->ManejaBD->consultarBD($consulta);
			if($procesoCorrecto)
			{
				if($NIVEL_DEBUG>2) 
				{
					trigger_error("Consulta realizada: $consulta", E_USER_NOTICE);
				}
				//Obtiene un arreglo asociativo de toda la tabla resultado
				$ret_datos = $this->ManejaBD->obtenerTotalFilasArray();
				$this->ManejaBD->procesoCorrecto  = true;
			}
			else
			{
				if($NIVEL_DEBUG>2) 
				{
					trigger_error($this->DB_QUERY_NULL."(NULO): $consulta - Result_error: " . pg_result_error($this->ManejaBD->consulta) .
					"Last error: " .  pg_last_error($this->ManejaBD->enlace) , E_USER_NOTICE);
				}
				$this->ManejaBD->procesoCorrecto  = false;
			}
	
			$this->ManejaBD->liberarConsulta();
			$this->ManejaBD->desconectarBD();
		}
		else
		{
			trigger_error("Error: Matando proceso". $this->DB_CONNECT_ERROR, E_USER_NOTICE);
			$this->ManejaBD->procesoCorrecto  = false;
			//die("Error: ". $this->DB_CONNECT_ERROR);//Podria retornarse un valor especifico que indique error
		}

		return $ret_datos;
	}

	/**
	*Filtra las cadenas recibidas, que formaran parte e una consulta SQL, para evitar SQL-Injection
	*@param string <var>Texto</var> Texto a filtrar
	*@return string Texto filtrado con los caracteres criticos escapados/eliminados
	*/
	function sanearTextoSQL($texto)
	{
		$ret_sts = "";

		if(!empty($texto))
		{
			//Si esta activado MagicQuotes se eliminan todas las contrabarras que escapan comillas (ej: '\"' )
			if (get_magic_quotes_gpc())
			{
				$texto = stripslashes($texto);
			}

			//Si el valor NO es numerico, se le agregan comillas simples y se escapan los caracteres criticos
			if (!is_numeric($texto))
			{
				$ret_sts = "'"; //comilla incial

				//Chequea si existe la funcion mysql_real_escape_string (PHP >= 4.3) para filtrar el texto
				if (function_exists("mysql_real_escape_string"))
				{
					$ret_sts .= mysql_real_escape_string($texto);
				}
				else
				{
					//Si no existe se agregan contrabarras para escapar posibles comillas
					$ret_sts .= addslashes($texto); //IMPLEMENTAR UNA FUNCION ALTERNATIVA A LA INEXISTENTE
				}

				$ret_sts .= "'"; //comilla final
			}
		}

		return $ret_sts;
	}

	/**
	* Obtiene de la base los datos el importe de la cuota del socio
	* @param string $p_Cat Categoria del socio
	* @return array Retorna una matriz de la forma matriz[item_registro][campo1][campo2]...[campon]
	*/
	function Busca_Importe_Cuota($p_Cat, $p_FecVig)
	{
		if( $p_FecVig == '' )
			$SQL_CUOTAS = "SELECT * FROM acde.cuotas WHERE cuo_cat='" . $p_Cat . "' ORDER BY DESC";
		else
			$SQL_CUOTAS = "SELECT * FROM acde.cuotas WHERE cuo_cat='" . $p_Cat . "' AND cuo_fecvig<= '"  . $p_FecVig. "'   ORDER BY cuo_fecvig DESC LIMIT 1";

		return $this->obtenerDatos($SQL_CUOTAS);
	}

	
	function Busca_Importe_CuotasCat($p_FecVig)
	{
		$SQL_CUOTAS = "SELECT * FROM acde.cuotas WHERE cuo_fecvig<= '"  . $p_FecVig. "' ORDER BY cuo_fecvig DESC";
		return $this->obtenerDatos($SQL_CUOTAS);
	}
	
	/**
	* Obtiene de la base los datos el importe de la cuota del socio
	* @param string $p_Cat Categoria del socio
	* @return array Retorna una matriz de la forma matriz[item_registro][campo1][campo2]...[campon]
	*/
	function Busca_Categoria_Socio($p_Edad)
	{
		$SQL_CATSOC = "SELECT * FROM acde.catsoc WHERE cs_edadd<=" . $p_Edad . " AND cs_edadh>=" . $p_Edad;

		return $this->obtenerDatos($SQL_CATSOC);
	}
	
	/**
	* Actualiza de la tabla TARJETAS los campos de generaci�n de archivos.
	* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
	*/
	function HabilitaEnvioDeArchivo($p_Tarjeta)
	{
		$v_SQL = 'UPDATE acde.tarjeta SET tar_ulfeen=null WHERE tar_cod='.$p_Tarjeta;
		return $this->obtenerDatos($v_SQL);
	}
}
?>