|
// +----------------------------------------------------------------------+
//
// $Id: index.html,v 1.49 2010-07-22 16:55:10 ed Exp $
/**
* Da acceso al Usaurio, y logea conexiones logradas y no logradas
* Ojo con las del exterior
*/
require_once('libs/funciones.php');
require_once('libs/config.php');
require_once('libs/conexion.php');
require_once('DB.php');
require_once('revo/conexion.php');
require_once('revo/Usuario.php');
require_once('Sesion.php');
// si al mero inicio encontramos esta variable, desregistramos
if (isset($_SESSION['usuario'])) {
Sesion::registra(0);
$_SESSION = array();
}
if (ATP_GRUPO == 'Consorcio') {
$leyenda_agencia = "CMA's Traffic Project";
$img_logo = 'images/cma2.png';
$img_icon = 'images/cma_icon.png';
} else {
$leyenda_agencia = "Examinadora Traffic Project";
// $img_logo = 'images/logo_def.png';
$img_logo = 'images/cia_examinadora_ico.png';
//$img_icon = 'images/mundoaaaico.png';
}
//global $ATP_SCHEMA;
$db = &$GLOBALS['_ATP_db'];
$ATP_SCHEMA = strtoupper($GLOBALS['ATP_SCHEMA']);
if (!isset($_POST['ingresa']) or (isset($_SESSION['ingresa']) && $_SESSION['ingresa'] == 1)) {
echo "
$ATP_SCHEMA $leyenda_agencia
";
}
if (isset($_POST['ingresa']) && $_POST['ingresa'] == 1) {
if (!is_numeric($_POST['usuario'])) {
imprimeError('Usuario inválido');
exit;
}
$usuario = new Usuario;
try {
$arr_usu = $usuario->valida($_POST['usuario'], $_POST['password']);
} catch (Exception $e) {
trigger_error('Error al validar usuario');
}
if (!isset($arr_usu)) {
session_destroy();
echo '
'.$leyenda_agencia.' '.$NOMBREADUANA.'
'.$leyenda_agencia.'
El usuario que ingreso no es valido con la contraseña que digito.
Escriba su contraseña usando las mayusculas o minusculas adecuadas.
Password y/o usuario no validos.
';
$usuario->registraBitacora($_POST['usuario'], $_POST['password'], 'N');
exit;
}
$remoto = $usuario->accesoRemoto();
if (!$remoto) {
$msg = 'No está configurado para acceso fuera de la intranet, ';
$msg .= 'por favor solicitelo a sistemas. ';
$msg .= "($_SERVER[REMOTE_ADDR], $_POST[usuario])";
trigger_error($msg, E_USER_ERROR);
exit;
}
// Actualizamos su acceso
$usuario->actualizaAcceso($_POST['usuario']);
$_SESSION['usuario'] = $_POST['usuario'];
// para el esquema actual, luego del login registramos en la base
Sesion::registra();
if (checa_privilegios() == 1) {
genera_menu(0, 1, true);
// Creamos una bitacora de acceso para
// ver el comportamiento
$usuario->registraBitacora($_POST['usuario'], $_POST['password'], 'S');
//$datos = pg_fetch_row($query,0);
$refs_sin_tracking = '';
$_SESSION['relacion_cliente'] = $arr_usu['relacion_cliente'];
//$Rfcs = $db->getCol("select id from cliente where ejecutivo_trafico='$_SESSION[usuario]'");
$Rfcs = $db->getCol("SELECT id_cliente FROM clientes_ejecutivos WHERE id_ejecutivo='{$_SESSION['usuario']}'");
$usuarios_todas = array(0); //aqui se ponen los usuarios que pueden ver todas las referencias
switch ($GLOBALS['ADUANA']) {
case 240:
array_push($usuarios_todas, 302, 324, 328);
break;
case 430:
array_push($usuarios_todas, 205);
break;
case 510:
array_push($usuarios_todas, 2894);
break;
}
// meteré el arreglo usuarios_todas en la sesión para poder usarlo en referencias_sin_tracking
$_SESSION['usuarios_todas'] = $usuarios_todas;
if ($GLOBALS['VERSION_DOCS'] == 2) {
if (sizeOf($Rfcs) > 0 or in_array($_SESSION['usuario'], $usuarios_todas)) { // si el usuario tiene clientes o si es de los "masters"
$rfcs='';
foreach ($Rfcs as $indice => $rfc) {
$Rfcs[$indice]= "'$rfc'";
}
$rfcs = implode(", ", $Rfcs);
$and = (!in_array($_SESSION['usuario'], $usuarios_todas)) ? "and t.cliente in($rfcs)" : "";
$virtual = "";
if ($GLOBALS['TIPOADUANA'] == 'TERRESTRE') {
$virtual = "t.virtual = 'f' and ";
}
if (in_array($_SESSION['usuario'], $usuarios_todas)) { // si es de los "masters", se le muestra todititita... la lista...
$sql = "SELECT t.cliente, c.nombre_cliente, COUNT(DISTINCT t.referencia) ";
$sql .= "FROM trafico t, cliente c ";
$sql .= "WHERE t.cliente=c.id AND ";
$sql .= "fecha_liberacion_mercancia IS NULL AND t.status_trafico >= 100 AND ";
$sql .= "t.tipo_operacion IN ('I', 'E') AND ";
$sql .= "$virtual ";
$sql .= "t.referencia NOT IN (select referencia ";
$sql .= "FROM documentos_2 ";
$sql .= "WHERE fecha_modificacion::DATE = CURRENT_DATE) $and ";
$sql .= "GROUP BY 1, 2 ORDER BY 3 DESC ";
} else { // a los mortales cualesquiera se les muestra sólo los suyos
$sql = "SELECT t.cliente, c.nombre_cliente, COUNT(DISTINCT t.referencia) ";
$sql .= "FROM trafico t JOIN cliente c ON (t.cliente = c.id) ";
$sql .= "JOIN clientes_ejecutivos ce ON (ce.id_cliente = c.id) ";
$sql .= "JOIN usuario u ON (u.cveusuario = ce.id_ejecutivo) ";
$sql .= "WHERE u.cveusuario = {$_SESSION['usuario']} AND ";
$sql .= "fecha_liberacion_mercancia IS NULL AND t.status_trafico >= 100 AND ";
$sql .= "t.tipo_operacion = ce.tipo_ejecutivo AND ";
$sql .= "$virtual ";
$sql .= "t.referencia NOT IN (SELECT referencia FROM documentos_2 WHERE fecha_modificacion::date = CURRENT_DATE) $and ";
$sql .= "GROUP BY 1, 2 ORDER BY 3 DESC";
}
$rst = $db->getAll($sql);
if (DB::isError($rst)) {
trigger_error("Error al consultar referencias pendientes de tracking" , E_USER_WARNING);
echo $db->errorNative();
return false;
}
if (sizeOf($rst)>0) {
$refs_sin_tracking = "
Referencias sin tracking: ";
$tabla = "
";
foreach($rst as $indice => $arreglo) {
$tabla .= "