You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
372 lines
12 KiB
372 lines
12 KiB
<?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 ObtieneDatosGeneral .::.
|
|
@Autor: Federico A. Ocampo
|
|
@Email: federico@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 ObtieneDatosGeneral
|
|
{
|
|
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 ObtieneDatosGeneral(&$AppConfig, &$ManejadorBaseDatos)
|
|
{
|
|
$this->AppConfig =& $AppConfig;
|
|
$this->ManejaBD =& $ManejadorBaseDatos;
|
|
}
|
|
|
|
/**
|
|
* 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);
|
|
}*/
|
|
|
|
/*---Leos------------------------------------------------------------------------------*/
|
|
/**
|
|
* Obtiene de la base de datos los datos de la tabla GEMITE
|
|
* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function Leo_GEMITE($p_Version, $p_Clave)
|
|
{
|
|
$SQL_GEMITE = 'SELECT * FROM general.gemite WHERE gem_ver=' . $p_Version . ' AND gem_clave=\''. $p_Clave .'\'
|
|
LIMIT 1;';
|
|
return $this->obtenerDatos($SQL_GEMITE);
|
|
}
|
|
|
|
/**
|
|
* Obtiene de la base de datos los datos de la tabla MONEDA
|
|
* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function Leo_MONEDA($p_Moneda)
|
|
{
|
|
$SQL_MONEDA = 'SELECT * FROM general.moneda WHERE moneda=' . $p_Moneda . ';';
|
|
return $this->obtenerDatos($SQL_MONEDA);
|
|
}
|
|
|
|
/**
|
|
* Obtiene de la base de datos el nombre de la entidad
|
|
* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function Leo_ENTIDAD($p_Enti)
|
|
{
|
|
$SQL_NOMENTI = 'SELECT * FROM general.entidad WHERE en_enti=' . $p_Enti . ';';
|
|
return $this->obtenerDatos($SQL_NOMENTI);
|
|
}
|
|
|
|
/**
|
|
* Obtiene de la base de datos los datos de la tabla rentsuc
|
|
* @return array Retorna un arreglo multidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function Leo_RENTSUC($p_Emp, $p_Suc, $p_TipEnt)
|
|
{
|
|
$SQL_RENTSUC = 'SELECT res_emp, res_suc, res_tip, res_entid, res_entih, res_usua FROM general.rentsuc WHERE res_emp=' . $p_Emp . ' AND res_suc='. $p_Suc . ' AND res_tip=\'' . $p_TipEnt . '\';';
|
|
return $this->obtenerDatos($SQL_RENTSUC);
|
|
}
|
|
|
|
/**
|
|
* Obtiene de la base de datos los datos de la tabla RELNUM
|
|
* @return array Retorna una matriz de la forma matriz[item_registro][campo1][campo2]...[campon]
|
|
*/
|
|
function Leo_RELNUM($p_Emp, $p_TipCom, $p_Ope)
|
|
{
|
|
$SQL_RELNUM = 'SELECT * FROM general.relnum WHERE rn_emp=' . $p_Emp . ' AND rn_tcom=\''. $p_TipCom.'\' AND rn_ope=' . $p_Ope. ';';
|
|
|
|
return $this->obtenerDatos($SQL_RELNUM);
|
|
}
|
|
|
|
/**
|
|
* Obtiene de la base de datos los datos de la tabla TIPENT
|
|
* @return array Retorna una matriz de la forma matriz[item_registro][campo1][campo2]...[campon]
|
|
*/
|
|
function Leo_TIPENT($p_TipEnt, $p_Ent)
|
|
{
|
|
$SQL_TIPENT = 'SELECT * FROM general.tipent WHERE te_tip =\''. $p_TipEnt .'\' AND te_ent=' . $p_Ent . ';';
|
|
return $this->obtenerDatos($SQL_TIPENT);
|
|
}
|
|
|
|
/** FUNCIONES DE NUMERACION AUTOMATICA DE COMPROBANTES */
|
|
|
|
function Leo_CodNum($p_empresa, $p_sucursal, $p_codrel)
|
|
{
|
|
$SQL_CODNUM = 'SELECT * FROM general.codnum WHERE empresa='.$p_empresa.' AND sucursa='.$p_sucursal.' AND numerac='.$p_codrel.' ORDER BY empresa, sucursa, numerac;';
|
|
return $this->obtenerDatos($SQL_CODNUM);
|
|
}
|
|
|
|
function Leo_Automat($p_empresa, $p_sucursal, $p_codrel, $p_anio, $p_mes, $p_dia)
|
|
{
|
|
$SQL_AUTOMAT = 'SELECT * FROM general.automat WHERE empresa='.$p_empresa.' AND sucursa='.$p_sucursal.
|
|
' AND codrel='.$p_codrel.' AND anio='.$p_anio.' AND mes='.$p_mes.' AND dia='.$p_dia.
|
|
' ORDER BY empresa, sucursa, codrel, anio, mes, dia;';
|
|
|
|
return $this->obtenerDatos($SQL_AUTOMAT);
|
|
}
|
|
|
|
|
|
function Leo_Manual($p_empresa, $p_sucursal, $p_codrel, $p_anio, $p_mes, $p_nro)
|
|
{
|
|
$SQL_MANUAL = 'SELECT * FROM general.manual WHERE empresa='.$p_empresa.' AND sucursa='.$p_sucursal.
|
|
' AND codrel='.$p_codrel.' AND anio='.$p_anio.' AND mes='.$p_mes.' AND nro='.$p_nro.
|
|
' ORDER BY empresa, sucursa, codrel, anio, mes, nro;';
|
|
|
|
return $this->obtenerDatos($SQL_MANUAL);
|
|
}
|
|
|
|
|
|
//-------------------------------------Funciones de ayuda-----------------------------------/
|
|
/**
|
|
* Obtiene de la base de datos la lista de empresas disponibles
|
|
* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function EmpresasDisponibles()
|
|
{
|
|
$SQL_EMPRESAS = 'SELECT empresa, descrip FROM general.empresa ORDER BY empresa asc';
|
|
return $this->obtenerDatos($SQL_EMPRESAS);
|
|
}
|
|
|
|
/**
|
|
* Obtiene de la base de datos la lista operaciones
|
|
* @param string Tipo de comprobante
|
|
* @return array Retorna un arreglo multidimensional:
|
|
*/
|
|
function TipEntDisponibles($p_TipEnt, $p_Ent)
|
|
{
|
|
//El parametro no puede ser vacio
|
|
if(!empty($p_TipEnt))
|
|
{
|
|
//El parametro es opcional
|
|
if(!empty($p_Ent))
|
|
{
|
|
//'Sanea' la entrada para evitar ataques SQL-Injection
|
|
$TipEntSano = $this->sanearTextoSQL($p_TipEnt);
|
|
$SQL_TIPENT = "SELECT te_ent, te_tip, te_nom FROM general.tipent WHERE te_tip = " . $TipEntSano . " AND te_ent = " . $p_Ent . " ORDER BY te_ent ASC;";
|
|
// echo "seleccionando uno: $SQL_TIPENT";
|
|
}
|
|
else
|
|
{
|
|
//'Sanea' la entrada para evitar ataques SQL-Injection
|
|
$TipEntSano = $this->sanearTextoSQL($p_TipEnt);
|
|
$SQL_TIPENT = "SELECT te_ent, te_tip, te_nom FROM general.tipent WHERE te_tip='" . $p_TipEnt . "' ORDER BY te_ent ASC;";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Si es vacio, genera el warning y devuelvo vacio
|
|
if($this->AppConfig->DEBUG["nivel"] >1)
|
|
{
|
|
$war_msg = "Error en parametros: p_TipEnt";
|
|
trigger_error($war_msg, E_USER_WARNING);
|
|
}
|
|
}
|
|
|
|
return $this->obtenerDatos($SQL_TIPENT);
|
|
}
|
|
|
|
/**
|
|
* Obtiene de la base de datos la lista operaciones
|
|
* @param string Tipo de comprobante
|
|
* @return array Retorna un arreglo multidimensional:
|
|
*/
|
|
function TipEntDisponible($p_TipEnt, $p_Ent)
|
|
{
|
|
//El parametro no puede ser vacio
|
|
if(!empty($p_TipEnt))
|
|
{
|
|
//'Sanea' la entrada para evitar ataques SQL-Injection
|
|
$TipComSano = $this->sanearTextoSQL($p_TipEnt);
|
|
if(empty($p_Ent))
|
|
$p_Ent='null';
|
|
|
|
$SQL_TIPENT = "SELECT te_ent, te_tip, te_nom FROM general.tipent WHERE te_tip = " . $TipComSano . " AND te_ent = " . $p_Ent . " ORDER BY te_ent asc";
|
|
}
|
|
else
|
|
{
|
|
//Si es vacio, genera el warning y devuelvo vacio
|
|
if($this->AppConfig->DEBUG["nivel"] >1)
|
|
{
|
|
$war_msg = "Error en parametros: p_TipEnt";
|
|
trigger_error($war_msg, E_USER_WARNING);
|
|
}
|
|
}
|
|
|
|
return $this->obtenerDatos($SQL_TIPENT);
|
|
}
|
|
|
|
|
|
/**
|
|
* Obtiene de la base de datos la lista de tipos de entidades disponibles
|
|
* @return array Retorna un arreglo bidimensional de la forma arreglo[codigo][descrip]
|
|
*/
|
|
function TiposDeEntidadesDisponibles()
|
|
{
|
|
$SQL_TIPOE = 'SELECT ti_tipo, ti_dtip FROM general.tipoe ORDER BY ti_tipo asc';
|
|
return $this->obtenerDatos($SQL_TIPOE);
|
|
}
|
|
|
|
/** FUNCIONES BUSCA
|
|
* Funciones especificas de busqueda, reemplazan los GetRecord
|
|
*/
|
|
|
|
function Busca_Manual($p_empresa, $p_sucursal, $p_codrel, $p_anio, $p_mes, $p_nro)
|
|
{
|
|
$SQL_MANUAL = 'SELECT * FROM general.manual WHERE empresa='.$p_empresa.' AND sucursa='.$p_sucursal.
|
|
' AND codrel='.$p_codrel.' AND anio='.$p_anio.' AND mes='.$p_mes.' AND nro<='.$p_nro.'
|
|
ORDER BY empresa, sucursa, codrel, anio, mes, nro;';
|
|
|
|
return $this->obtenerDatos($SQL_MANUAL);
|
|
}
|
|
|
|
function Busca_Manual_Inverso($p_empresa, $p_sucursal, $p_codrel, $p_anio, $p_mes, $p_nro)
|
|
{
|
|
$SQL_MANUAL = 'SELECT * FROM general.manual WHERE empresa='.$p_empresa.' AND sucursa='.$p_sucursal.
|
|
' AND codrel='.$p_codrel.' AND anio='.$p_anio.' AND mes='.$p_mes.' AND nro<'.$p_nro.'
|
|
ORDER BY empresa, sucursa, codrel, anio, mes, nro DESC LIMIT 1;';
|
|
|
|
return $this->obtenerDatos($SQL_MANUAL);
|
|
}
|
|
|
|
|
|
//-------------------------------------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("General Consulta realizada correctamente: $consulta", E_USER_NOTICE);
|
|
}
|
|
//Obtiene un arreglo asociativo de toda la tabla resultado
|
|
$ret_datos = $this->ManejaBD->obtenerTotalFilasArray();
|
|
}
|
|
else
|
|
{
|
|
if($NIVEL_DEBUG>2)
|
|
{
|
|
trigger_error($this->DB_QUERY_NULL." (SQL ERRONEO): $consulta", E_USER_NOTICE);
|
|
$this->ManejaBD->procesoCorrecto = false;
|
|
}
|
|
}
|
|
|
|
$this->ManejaBD->liberarConsulta();
|
|
$this->ManejaBD->desconectarBD();
|
|
}
|
|
else
|
|
{
|
|
$this->ManejaBD->procesoCorrecto = false;
|
|
trigger_error("Error:". $this->DB_CONNECT_ERROR, E_USER_NOTICE);
|
|
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;
|
|
}
|
|
|
|
|
|
}
|
|
?>
|