Tarea #647 -> Nueva entrada de menú para ver la lista de ofertas

Tarea #646 -> Crear la acción "Creación de oferta" que cree una oferta relacionada con la solicitud de oferta que se está mostrando.
Tarea #607 -> Nueva entidad 'Oferta' con estados nuevos
Tarea #606 -> Nuevos estados y transiciones para una solicitud de oferta
Tarea #601 -> Nuevos estados y transiciones para un candidato
Tarea #599 -> Repasar los registros que se meten en el historial de cambios
Tarea #586 -> Cuando una solicitud tiene varios perfiles, hay que visualizarlos ocupando las menos filas posibles
Tarea #585 -> Cuando un candidato tiene varios perfiles, hay que visualizarlos ocupando las menos filas posibles

git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_Intranet/trunk/src@65 e2b1556b-49f8-d141-9351-52d6861a72d9
This commit is contained in:
David Arranz 2011-05-19 08:46:58 +00:00
parent ec58065e0c
commit 9e87e5eb38
30 changed files with 3693 additions and 3025 deletions

View File

@ -17,10 +17,12 @@ include_once("Conexion.php");
function execQuery($query){
$res = mysql_query($query);
//$mensaje = $query." - ".$res."\r\n";
//$fichero = fopen("querys.log","a");
//fputs($fichero,$mensaje);
//fclose($fichero);
/*$mensaje = $query." - ".$res."\r\n";
$fichero = fopen("querys.log","a");
fputs($fichero,$mensaje);
fclose($fichero);*/
return $res;
}

View File

@ -1,4 +1,5 @@
<?php
/*
* Clase Candidato
*
@ -9,6 +10,8 @@
*/
include_once("BD.php");
include_once("Persona.php");
include_once("Automata.php");
class Candidato extends Persona {
private $usuario;
@ -91,6 +94,7 @@
@param $estado - Estado del pedido.
@return array codPedido => nombre o vacío.
*/
function getPedidosByEstado($estado) {
/* SELECT P.oid,P.nombre
FROM pedidos P,candidato_pedido CP
@ -151,6 +155,7 @@
$idioma = $this->usuario->getValor("idioma");
$rol = $this->usuario->getValor("rol");
$a = new Automata("candidatos", $idioma, $rol);
$transita = $a->getTransicion($origen, $destino);
if (($transita == "") || !($transita >= 0)) {
@ -172,7 +177,8 @@
private function ejecutaTransicion($codigo, $argumentos) {
//Si no hace nada al transitar salimos sin más.
if($codigo == 0) return true;
if ($codigo == 0)
return true;
$funcion = "ejecutar$codigo";
$res = call_user_func(array("Candidato", $funcion), $argumentos);
@ -371,6 +377,7 @@
return false;
}
/**
* Entrevistado a En proceso(entrevistado).
* Admin, RRHH
@ -380,7 +387,6 @@
EFECTOS:
- Se cambia el estado del candidato de en proceso(entrevistado)
*/
private function ejecutar5070() {
$this->setCampos(array("estado" => "70"));
$this->campos["estado_usuario"] = "70";
@ -388,4 +394,5 @@
}
}
?>

View File

@ -81,6 +81,32 @@
echo '<a href="pedido.php?idPedido='.$_GET['idPedido'].'" class="menuOption" style="color:#000000">'.$this->locale['1077'].'</a>';
}
}
if(in_array("nueva_oferta",$opcionesThis)){
echo '<a href="addOferta.php" class="menuOption" style="color:#000000">'.'Nueva oferta'.'</a>';
}
}
function menuOfertas($usuario, $opciones){
if(!is_array($opciones)){
$opcionesThis = array();
} else {
$opcionesThis = $opciones;
}
echo '<a href="lista_ofertas.php" class="menuOption" style="color:#000000">'.$this->locale['5100'].'</a>';
if($usuario->tieneRol("3") ||$usuario->tieneRol("1")){
echo '<a href="addOferta.php" class="menuOption" style="color:#000000">'.$this->locale['5101'].'</a>';
}
/*echo '<a href="buscar_oferta.php" class="menuOption" style="color:#000000">'.$this->locale['5102'].'</a>';*/
if(!in_array("gestionar", $opcionesThis)){
if(substr_count($_SERVER['REQUEST_URI'],"/oferta.php?idOferta")==1){
echo '<a href="gestion_oferta.php?idOferta='.$_GET['idOferta'].'" class="menuOption" style="color:#000000">'.$this->locale['284'].'</a>';
}
if(substr_count($_SERVER['REQUEST_URI'],"/gestion_oferta.php?idOferta")==1){
echo '<a href="oferta.php?idOferta='.$_GET['idOferta'].'" class="menuOption" style="color:#000000">'.$this->locale['5103'].'</a>';
}
}
}
function menuCandidatos(){
@ -211,10 +237,15 @@
if (!strcmp($opcion, "Gestión de candidatos")) {
echo '<li><a title="'.$opcion.'" href="lista_candidatos.php">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Mis datos")) {
$PonerAlFinal = '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>';
$PonerAlFinal .= '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Mantenimiento del sistema")) {
$PonerAlFinal .= '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Solicitudes de oferta")) {
// Ticket 640 -> Entrada automatica a la lista de solicitudes de oferta.
echo '<li><a title="'.$opcion.'" href="lista_pedidos.php">'.$opcion.'</a></li>';
} elseif (!strcmp($opcion, "Ofertas")) {
// Ticket 647 -> Nueva entrada de menú para ver la lista de ofertas
echo '<li><a title="'.$opcion.'" href="lista_ofertas.php">'.$opcion.'</a></li>';
} else {
echo '<li><a title="'.$opcion.'" href="administracion_principal.php?rol='.$opcion.'">'.$opcion.'</a></li>';
}

View File

@ -1,4 +1,5 @@
<?php
/*
* Clase ListaCandidatos
*
@ -9,11 +10,8 @@
include_once("ListaPersonas.php");
class ListaCandidatos extends ListaPersonas {
//Atributos:
//Constructor:
//Funciones:
/**
@ -58,5 +56,51 @@
$candidato->actualizarHistorial($mensaje);
return $id;
}
/**
* Devuelve los candidatos
*/
function getCandidatos() {
$candidatos = array();
if ($this->sql != "") {
// metemos el estado si es > 0
if ($this->estado > 0) {
if (stripos($this->sql, "WHERE") > 0) {
$sqlAntesWhere = substr($this->sql, 0, stripos($this->sql, "WHERE"));
$sqlDespuesWhere = substr($this->sql, stripos($this->sql, "WHERE") + 5, strlen($this->sql));
$sqlConEstado = "WHERE usuarios.estado='" . $this->estado . "' and ";
$sqlNueva = $sqlAntesWhere . $sqlConEstado . $sqlDespuesWhere;
} else {
$sqlConEstado = "WHERE usuarios.estado='" . $this->estado . "' ";
$sqlNueva = $this->sql . $sqlConEstado;
}
} else {
$sqlNueva = $this->sql;
}
$consulta = $sqlNueva . " " . $this->order_by;
} else {
if ($this->estado > 0) {
$consulta = "SELECT oid from usuarios WHERE tipo='" . $this->tipo . "' and estado='" . $this->estado . "'" . $this->orden;
} else {
$consulta = "SELECT oid from usuarios WHERE tipo='" . $this->tipo . "'" . $this->orden . "";
}
}
$bd = new BD();
$resultado = $bd->execQuery($consulta);
//Procesamos los candidatos.
if (mysql_num_rows($resultado) != 0) {
while ($rows = mysql_fetch_array($resultado)) {
$p = new Candidato($this->usuario, $rows["oid"]);
$candidatos[] = $p;
}
}
return $candidatos;
}
}
?>

150
Objects/ListaOfertas.php Normal file
View File

@ -0,0 +1,150 @@
<?php
/*
* Clase ListaOfertas
*/
include_once("Objects/Oferta.php");
class ListaOfertas {
// Atributos:
/* Una lista de pedidos. */
private $ofertas = array();
/* Gestor dueño de la lista. */
private $gestor;
/* Campos por los que ordenar la lista. */
private $orden;
/* Condiciones para búsquedas. */
private $condiciones;
// Constructor:
/**
* Crea una lista de ofertas.
*
* @param usuario $ - gestor dueño de la lista.
* @param orden $ - parámetros por los que ordenar la lista.
* @param sql $ - consulta de búsqueda.
*/
function ListaOfertas($usuario, $condiciones=array(), $orden=array()) {
$this->gestor = $usuario;
$this->orden = $orden;
$this->condiciones = $condiciones;
}
/**
* Busca y devuelve todos los pedidos del usuario.
*/
function getOfertas() {
// sacado de http://patrickallaert.blogspot.com/2007/09/building-dynamic-sql-queries-elegant.html
$consulta = "SELECT * FROM candidato_pedido";
if (count($this->condiciones)) {
$consulta .= ' WHERE ' . implode(' AND ', $this->condiciones);
}
if (count($this->orden)) {
$consulta .= ' ORDER BY ' . implode(' , ', $this->orden);
}
$bd = new BD();
$resultado = $bd->execQuery($consulta);
// Procesamos las ofertas.
if (mysql_num_rows($resultado) == 0) {
$this->ofertas = array();
} else {
while ($rows = mysql_fetch_array($resultado)) {
$p = new Oferta($rows["oid"], $this->gestor);
$this->ofertas[] = $p;
}
}
return $this->ofertas;
}
/**
* Devuelve una lista de los posibles estados en los que se puede encontrar un pedido
* como Key => value, donde key es el cod del estado y value es el nombre del estado.
*/
function getEstadosOfertas() {
$consulta = "SELECT cod, nombre FROM candidaturas_estados";
$bd = new BD();
return $bd->keyValueQuery($consulta, "cod", "nombre");
}
/**
* Busca una oferta en función de su identificador.
*
* @return el pedido, en caso de encontrarlo y null en
* caso contrario.
*/
function buscarOferta($id) {
$lista = $this->getOfertas();
if ($lista) {
foreach ($lista as $elem) {
if ($elem->getValor("oid") == $id) {
return $elem;
}
}
}
return null;
}
function addOferta($campos) {
if (!$this->gestor->tieneRol(1) && !$this->gestor->tieneRol(3)) {
$error = "El usuario no tiene permisos para crear ofertas.";
throw new Exception($error);
}
// Calculamos el id
$referencia = $this->calculaReferencia($campos["pedido"]);
$inserto = "fecha, referencia";
$fecha = "'" . date("Y-m-d") . "'";
$valores = "$fecha, $referencia";
// Procesamos los datos
foreach ($campos as $key => $value) {
$inserto .= ", $key";
$valores .= ", '$value'";
}
// Insertamos en la BD
$consulta = "INSERT INTO candidato_pedido ($inserto) VALUES ($valores)";
$bd = new BD();
if (!$bd->execQuery($consulta)) {
return "-1";
} else {
$id = mysql_insert_id();
$p = new Oferta($id, $this->gestor);
$mensaje = "Nueva oferta";
$p->actualizarHistorial($mensaje);
}
return $id;
}
function calculaReferencia($solicitud) {
$bd = new BD();
$consulta = "select referencia from candidato_pedido where pedido = '$solicitud' order by oid desc limit 1";
if ($resultado = $bd->execQuery($consulta)) {
$rows = mysql_fetch_array($resultado);
echo "########################<br/>";
print_r($rows);
echo "########################<br/>";
$num = 1;
if (!empty($rows[0])) {
$num = substr($rows[0], strpos($rows[0], '/') + 1, strlen($rows[0]));
$num += 1;
}
return sprintf('\'%s/%s\'', $solicitud, $num);
} else {
return sprintf('\'%s/%s\'', $solicitud, 1);
}
}
}
?>

View File

@ -96,7 +96,7 @@ include_once("Objects/Pedido.php");
if($estado > 0){
$consulta = "SELECT * from pedidos WHERE estado='".$estado."'".$this->orden ;
}else{
$consulta = "SELECT * from pedidos WHERE estado IN (10, 20, 30) ".$this->orden."";
$consulta = "SELECT * from pedidos ".$this->orden."";
}
}
}else if($this->gestor->tieneRol(3)){
@ -123,7 +123,7 @@ include_once("Objects/Pedido.php");
if($estado > 0){
$consulta = "SELECT * FROM pedidos WHERE gerente = '$id' AND estado='$estado'".$this->orden;
}else{
$consulta = "SELECT * FROM pedidos WHERE estado IN (10, 20, 30) AND gerente = '$id'".$this->orden;
$consulta = "SELECT * FROM pedidos WHERE gerente = '$id'".$this->orden;
}
}
}else{
@ -188,6 +188,7 @@ include_once("Objects/Pedido.php");
//Insertamos en la BD
$consulta = "INSERT INTO pedidos ($inserto) VALUES ($valores)";
$bd = new BD();
if(!$bd->execQuery($consulta)){
return -1;

View File

@ -154,7 +154,7 @@ include_once("Empleado.php");
//Insertamos en la BD
$consulta = "INSERT INTO usuarios ($inserto) VALUES ($valores)";
echo $consulta;
$bd = new BD();
if(!$bd->execQuery($consulta)){
$error = "Campos del candidato incorrectos. Por favor, avise al webmaster de este error.";

298
Objects/Oferta.php Normal file
View File

@ -0,0 +1,298 @@
<?php
/*
* Clase Oferta
*/
include_once("BD.php");
include_once("Automata.php");
include_once("ListaCandidatos.php");
include_once("Candidato.php");
class Oferta {
// Atributos:
/* Usuario que tiene activa la sesión. */
private $usuario;
protected $campos = array();
// Constructores:
function Oferta($oid, $usuario) {
$this->usuario = $usuario;
$consulta = "SELECT oid FROM candidato_pedido WHERE oid = '$oid'";
$bd = new BD();
$num = $bd->numFilas($consulta);
if ($num > 0) {
$this->campos['oid'] = $oid;
} else {
$error = "Oferta no encontrada.";
throw new Exception($error);
}
}
function actualizarHistorial($mensaje) {
$oid = $this->getValor("oid");
$usuario = $this->usuario->getValor("nombre");
$consulta = "INSERT INTO historial_oferta (oid_h, fecha_h, persona_h, texto_h) VALUES('$oid', now(), '$usuario', '$mensaje')";
$bd = new BD();
return $bd->execQuery($consulta);
}
function getValor($nombre) {
if (array_key_exists($nombre, $this->campos)) {
// El campo ya lo habíamos recuperamos, lo mostramos
return $this->campos[$nombre];
} else {
switch ($nombre) {
case "nombre_estado":
$idEstado = $this->getValor("estado");
$idioma = $this->usuario->getValor("idioma");
$consulta = "SELECT nombre FROM candidaturas_estados WHERE cod=\"" . $idEstado . "\" AND idioma=\"" . $idioma . "\"";
break;
case "nombre_solicitud":
$oidPedido = $this->getValor("pedido");
$consulta = "SELECT nombre FROM pedidos WHERE oid=\"" . $oidPedido . "\"";
break;
case "nombre_candidato":
$oidCandidato = $this->getValor("candidato");
$consulta = "SELECT concat(nombre, ' ', apellidos) FROM usuarios WHERE oid=\"" . $oidCandidato . "\"";
break;
default: $consulta = "SELECT " . $nombre . " FROM candidato_pedido WHERE oid=\"" . $this->campos['oid'] . "\"";
break;
}
// Lo insertamos para nosotros
$bd = new BD();
$valor = $bd->getCampo($consulta);
// Lo insertamos para nosotros
$arrayAct = array($nombre => $valor);
$this->campos = $this->campos + $arrayAct;
return $valor;
}
}
/**
* Acceso a los campos del pedido.
*
* @return los campos del pedido.
*/
function getCampos() {
return $this->campos;
}
function getSiguientes() {
$estado = $this->getValor("estado");
$idioma = $this->usuario->getValor("idioma");
$rol = $this->usuario->getValor("rol");
$a = new Automata("candidaturas", $idioma, $rol);
$siguientes = $a->getSiguientes($estado);
return $siguientes;
}
function transita($destino, $argumentos) {
$origen = $this->getValor("estado");
$idioma = $this->usuario->getValor("idioma");
$rol = $this->usuario->getValor("rol");
$a = new Automata("candidaturas", $idioma, $rol);
$transita = $a->getTransicion($origen, $destino);
if (($transita == "") || !($transita >= 0)) {
return false;
} else {
$res = $this->ejecutaTransicion($transita, $argumentos);
if ($res) {
$this->setAutomatico = true;
$this->setCampo("msgEstado", $argumentos);
$this->setCampo("estado", $destino);
$this->setAutomatico = false;
}
return $res;
}
}
private function ejecutaTransicion($codigo, $argumentos) {
// Si no hace nada al transitar salimos sin más.
if ($codigo == 0)
return true;
$funcion = "ejecutar$codigo";
$res = call_user_func(array("Oferta", $funcion), $argumentos);
return $res;
}
/**
* En configuración -> Configurada
*/
private function ejecutar110120() {
// Comprobamos que haya un candidato asignado.
$candidato = $this->getValor("candidato");
if (!empty($candidato)) {
return true;
} else {
$error = "No se puede cambiar de estado porque no hay ningún candidato asignado a esta oferta";
throw new Exception($error);
return false;
exit;
}
}
function setCampo($nombre, $valor) {
// PERMISOS:
/*
* Admin (1) - Todos
* Gestor (3) - Los suyos
* Otro - Excepción
*/
$gerente = $this->getValor("gerente");
$sesion = $this->usuario->getValor("oid");
if ($this->usuario->tieneRol(1) || ($this->usuario->tieneRol(3) && $sesion == $gerente) || $this->setAutomatico) {
$viejo = $this->getValor($nombre);
if ($viejo != $valor) {
// Comprobamos multivaluado y casos especiales antes del cambio:
$viejo = $this->getValorMulti($nombre, $viejo);
$this->campos[$nombre] = $valor;
$oid = $this->getValor("oid");
$consulta = "UPDATE candidato_pedido SET $nombre = '$valor' WHERE oid='$oid'";
$bd = new BD();
if ($bd->execQuery($consulta)) {
// Guardar en el historial
$valor = $this->getValorMulti($nombre, $valor);
if ($viejo == "" && $valor != "") {
$historial = "$nombre (de - a $valor)";
} else {
$historial = "$nombre (de $viejo a $valor)";
}
if ($nombre = "estado") {
$this->actualizarHistorial($historial);
}
}
}
} else {
$error = "El usuario no tiene permisos para editar la solicitud de oferta.";
throw new Exception($error);
}
}
private function getValorMulti($nombre, $antiguo) {
switch ($nombre) {
/* case "procedencia":
$valor = nombre_procedencia($antiguo);
break;
case "estado":
$valor = nombre_estado_pedido($antiguo);
break;
case "localidad":
$valor = nombre_localidad($antiguo);
break;
case "perfil":
$valor = nombre_perfil($antiguo);
break;
case "cliente":
$valor = nombre_cliente($antiguo);
break; */
default:
$valor = $antiguo;
break;
}
return $valor;
}
/**
* Devuelve una lista de candidatos disponibles para una oferta
*/
function getCandidatosDisponibles() {
return $this->getCandidatos("540");
}
/**
* Devuelve una lista de candidatos de un estado dado
*/
private function getCandidatos($estado) {
$lista = new ListaCandidatos($this->usuario, "", "", $estado);
return $lista;
}
function getHistorial() {
$historial = "";
$oid = $this->getValor("oid");
$consulta = "SELECT * FROM historial_oferta WHERE oid_h='$oid' ORDER BY fecha_h DESC";
$bd = new BD();
$resultado = $bd->execQuery($consulta);
while ($rows = mysql_fetch_array($resultado)) {
$fecha = $rows["fecha_h"];
$persona = $rows["persona_h"];
$texto = $rows["texto_h"];
$historial .= "[$fecha] $persona - $texto\n";
}
return $historial;
}
function quitarCandidato() {
$idCand = $this->getValor("candidato");
if (!empty($idCand)) {
$candidato = new Candidato($this->usuario, $idCand);
$estadoCand = $candidato->getValor("estado");
switch ($estadoCand) {
case "560":
$candidato->transita("540", "");
$nombre_candidato = $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos");
$mensaje = "Eliminado el candidato ".$nombre_candidato;
$this->actualizarHistorial($mensaje);
return true;
break;
default:
$error = "[quitarCandidato]. El candidato tiene un estado no permitido ('" . $estadoCand . "')";
throw new Exception($error);
}
}
}
function colocarCandidato($idCandidato) {
$idCand = $this->getValor("candidato");
if (!empty($idCand)) {
if (!$this->quitarCandidato()) {
return false;
}
}
$candidato = new Candidato($this->usuario, $idCandidato);
$estadoCand = $candidato->getValor("estado");
switch ($estadoCand) {
case "540":
if ($candidato->transita("560", "")) {
$this->setCampo("candidato", $idCandidato);
$nombre_candidato = $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos");
$mensaje = "Asignado el candidato ".$nombre_candidato;
$this->actualizarHistorial($mensaje);
return true;
}
else {
dbug("error");
}
break;
default:
$error = "El candidato tiene un estado no permitido ('" . $candidato->getValor("estado") . "')";
throw new Exception($error);
}
echo dbug('print');
}
}
?>

View File

@ -1,37 +1,27 @@
<?php
/*
* Clase Pedido
*/
include_once("BD.php");
include_once("CandidatoPedido.php");
include_once("Candidato.php");
include_once("Empleado.php");
include_once("Afinidad.php");
include_once("Automata.php");
include_once("Objects/BD.php");
include_once("Objects/CandidatoPedido.php");
include_once("Objects/Candidato.php");
include_once("Objects/Empleado.php");
include_once("Objects/Afinidad.php");
include_once("Objects/Automata.php");
include_once("Objects/Oferta.php");
class Pedido {
// Atributos:
/* Usuario que tiene activa la sesión. */
private $usuario;
/* Contiene una lista con todos los atributos y su valor */
private $campos = array();
private $listaOfertas = null;
/* Lista de candidatos propuestos*/
private $listaPropuestos = null;
/* Lista de candidatos propuestos por RRHH*/
private $listaPropuestosRRHH = null;
/* Lista de candidatos aceptados*/
private $listaAceptados = null;
/* Lista de candidatos rechazados*/
private $listaRechazados = null;
/* Lista de perfiles */
private $listaPerfiles = null;
@ -46,17 +36,17 @@ include_once("Automata.php");
private $listaProvincias = null;
/* Parámetros que si se cambian recalculan la afinidad */
private $listaAfinidad = array("nombre", "perfil", "pesoTecno", "pesoIdioma", "pesoPerfil");
private $listaAfinidad = array("nombre", "perfil", "pesoTecno", "pesoIdioma", "pesoPerfil", "estado");
/* Booleano que indica si el cambio de un campo lo hace por razones automáticas y dejar realizar
* el camio */
* el cambio */
private $setAutomatico = false;
// Constructor:
/**
* Recupera un pedido a partir de su identificador.
* @param id - datos necesarios para crear un pedido.
*
* @param id $ - datos necesarios para crear un pedido.
*/
function Pedido($id, $usuario) {
$this->usuario = $usuario;
@ -73,10 +63,10 @@ include_once("Automata.php");
}
// Funciones:
/**
* Calcula el número de candidatos asociados al pedido.
* @param tipo - estado del candidato en el pedido.
*
* @param tipo $ - estado del candidato en el pedido.
* @return número de candidatos asociados a ese pedido.
*/
function dameNumCand($tipo) {
@ -99,12 +89,12 @@ include_once("Automata.php");
throw new Exception($error);
}
return $numero;
}
/**
* Procesa un array para añadir campos al pedido.
* @param array - datos a añadir al pedido.
*
* @param array $ - datos a añadir al pedido.
*/
private function parseaArray($array) {
foreach ($array as $campo) {
@ -114,7 +104,8 @@ include_once("Automata.php");
/**
* Procesa el resultado de una query para añadir campos al pedido.
* @param resource - el resultado de la query.
*
* @param resource $ - el resultado de la query.
*/
private function parseaResource($resource) {
$fila = mysql_fetch_array($resource);
@ -128,14 +119,15 @@ include_once("Automata.php");
/**
* Devuelve el valor de un campo.
* @param nombre - nombre del campo por el que buscar.
*
* @param nombre $ - nombre del campo por el que buscar.
* @return valor del campo buscado.
*/
function getValor($nombre) {
// No se controlan permisos porque se tienen que recuperar datos como el oid del gerente
// para verificar el resto de permisos.
if (array_key_exists($nombre, $this->campos)) {
// El campo ya lo habíamos recuperamos, lo mostramos
// El campo ya lo habíamos recuperamos, lo mostramos
return $this->campos[$nombre];
} else {
switch ($nombre) {
@ -160,7 +152,6 @@ include_once("Automata.php");
break;
default: $consulta = "SELECT " . $nombre . " FROM pedidos WHERE oid=\"" . $this->campos['oid'] . "\"";
break;
}
// Lo insertamos para nosotros
$bd = new BD();
@ -174,6 +165,7 @@ include_once("Automata.php");
/**
* Acceso a los campos del pedido.
*
* @return los campos del pedido.
*/
function getCampos() {
@ -182,8 +174,9 @@ include_once("Automata.php");
/**
* Asigna un nuevo campo al pedido.
* @param nombre - nombre del campo a asignar.
* @param valor - valor del campo.
*
* @param nombre $ - nombre del campo a asignar.
* @param valor $ - valor del campo.
*/
function setCampo($nombre, $valor) {
// PERMISOS:
@ -212,35 +205,6 @@ include_once("Automata.php");
$historial = "$nombre (de $viejo a $valor)";
}
//$this->actualizarHistorial($historial);
//Si hago un update del perfil tengo que actualizar la afinidad:
if(in_array($nombre, $this->listaAfinidad)){
$this->calculaAfinidad();
//En este caso tengo que comprobar si cambio de estado
}else if($nombre == "empleados"){
$necesarios = $valor;
$actuales = count($this->getCandidatosAceptados());
$estado = $this->getValor("estado");
//Actualizo automáticamente el estado del pedido
switch($estado){
case 10:
if($actuales >= $necesarios){
$this->transita("20", "");
}
break;
case 20:
if($actuales < $necesarios){
$this->transita("10", "");
}
break;
case 30:
if($actuales < $necesarios){
$this->transita("10", "");
}
break;
default:
}
}
}
}
} else {
@ -275,7 +239,8 @@ include_once("Automata.php");
/**
* Asigna nuevos campos al pedido.
* @param array - lista de campos a asignar de la forma campo => valor.
*
* @param array $ - lista de campos a asignar de la forma campo => valor.
*/
function setCampos($array) {
foreach ($array as $key => $value) {
@ -322,47 +287,6 @@ include_once("Automata.php");
return $lista;
}
/**
* Devuelve una lista de candidatos propuestos para el pedido.
*/
function getCandidatosPropuestos(){
if($this->listaPropuestos == null){
$this->listaPropuestos = $this->getCandidatos("30");
}
return $this->listaPropuestos;
}
/**
* Devuelve una lista de candidatos aceptados para el pedido.
*/
function getCandidatosAceptados(){
if($this->listaAceptados == null){
$this->listaAceptados = $this->getCandidatos("20");
}
return $this->listaAceptados;
}
/**
* Devuelve una lista de candidatos rechazados para el pedido.
*/
function getCandidatosRechazados(){
if($this->listaRechazados == null){
$this->listaRechazados = $this->getCandidatos("10");
}
return $this->listaRechazados;
}
/**
* Devuelve una lista de candidatos propuestos por RRHH.
*/
function getCandidatosPropuestosRRHH(){
if($this->listaPropuestosRRHH == null){
$this->listaPropuestosRRHH = $this->getCandidatos("40");
}
return $this->listaPropuestosRRHH;
}
function proponerCandidato($id, $observacion) {
$estadoP = $this->getValor("estado");
if ($estadoP == 40) {
@ -393,13 +317,12 @@ include_once("Automata.php");
$candidato = new Empleado($this->usuario, $id);
}
}
// Actualizamos la BD y las listas;
$nombre_candidato = $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos");
$nombre_usuario = $this->usuario->getValor("nombre");
$mensaje = "El candidato $nombre_candidato ha sido propuesto por RRHH ($nombre_usuario)";
$this->actualizarHistorial($mensaje);
$mensaje = "Propuesto en el pedido $oid por RRHH ($nombre_usuario)";
$mensaje = "Propuesto en la solicitud $oid por RRHH ($nombre_usuario)";
try {
$usuario = new Candidato($this->usuario, $id);
} catch (Exception $e) {
@ -420,25 +343,29 @@ include_once("Automata.php");
*/
function aceptarCandidato($id) {
$estadoP = $this->getValor("estado");
if($estadoP == 40 || $estadoP == 50){
if ($estadoP != 130) {
return false;
}
$this->getCandidatosAceptados();
// Podemos aceptar a candidatos propuestos por el sistema...
$candidato = $this->buscarCandidatoLista($id, $this->getCandidatosPropuestos());
// a candidatos propuestos por RRHH...
$rrhh = false;
/* $rrhh = false;
$rechazado = false;
if ($candidato == null) {
$candidato = $this->buscarCandidatoLista($id, $this->getCandidatosPropuestosRRHH());
$rrhh = true;
}
} */
// Y a candidatos rechazados.
if ($candidato == null) {
$rrhh = false;
$candidato = $this->buscarCandidatoLista($id, $this->getCandidatosRechazados());
$rechazado = true;
}
$oid = $this->getValor("oid");
if ($candidato != null) {
$nombre_candidato = $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos");
@ -453,7 +380,7 @@ include_once("Automata.php");
}
$usuario->actualizarHistorial($mensaje);
$candidato->modFechaCandidatura();
$consulta = "UPDATE candidato_pedido SET estado = '20', fecha = curdate() WHERE candidato = '$id' AND pedido = '$oid'";
$consulta = "UPDATE candidato_pedido SET estado = '120', fecha = curdate() WHERE candidato = '$id' AND pedido = '$oid'";
$bd = new BD();
$bd->execQuery($consulta);
$lista_antigua = array();
@ -482,11 +409,11 @@ include_once("Automata.php");
$this->listaPropuestos = $lista_final;
}
$this->listaAceptados[] = $candidato;
// Compruebo el número de empleados:
$necesarios = $this->getValor("empleados");
/* $necesarios = $this->getValor("empleados");
$actuales = count($this->listaAceptados);
$estado = $this->getValor("estado");
//Actualizo automáticamente el estado del pedido
switch ($estado) {
case 10:
@ -496,18 +423,14 @@ include_once("Automata.php");
break;
default:
break;
}
} */
$estadoC = $usuario->getValor("estado");
// Actualizo automáticamente el estado del candidato
// Cambiar el estado del candidato.
switch ($estadoC) {
case 10:
$usuario->transita(30, "");
break;
case 50:
$usuario->transita(70, "");
case 540:
$usuario->transita(560, "");
break;
default:
break;
@ -523,9 +446,10 @@ include_once("Automata.php");
*/
function rechazarCandidato($id) {
$estadoP = $this->getValor("estado");
if($estadoP == 40 || $estadoP == 50){
if ($estadoP != 130) {
return false;
}
$this->getCandidatosRechazados();
$oid = $this->getValor("oid");
$antiguo = 0;
@ -556,7 +480,7 @@ include_once("Automata.php");
$consulta = "UPDATE candidato_pedido SET estado = '10', fecha = curdate() where candidato = '$id' AND pedido = '$oid'";
$bd = new BD();
$bd->execQuery($consulta);
//Si estaba en la lista de propuestos lo sacamos de ahí
// Si estaba en la lista de propuestos lo sacamos de ahí
if ($antiguo == 0) {
$lista = $this->listaPropuestos;
$this->listaPropuestos = null;
@ -565,7 +489,7 @@ include_once("Automata.php");
$this->listaPropuestos[] = $elem;
}
}
//Si no, si estaba en la lista de aceptados lo sacamos de ahí
// Si no, si estaba en la lista de aceptados lo sacamos de ahí
} else if ($antiguo == 1) {
$lista = $this->listaAceptados;
$this->listaAceptados = null;
@ -584,7 +508,6 @@ include_once("Automata.php");
}
}
$this->listaRechazados[] = $candidato;
// Compruebo el número de empleados:
$necesarios = $this->getValor("empleados");
$actuales = count($this->listaAceptados);
@ -623,8 +546,9 @@ include_once("Automata.php");
/**
* Busca un candidato en una lista.
* @param id - identificador del candidato a buscar.
* @param lista - lista en la que buscar al candidato.
*
* @param id $ - identificador del candidato a buscar.
* @param lista $ - lista en la que buscar al candidato.
*/
function buscarCandidatoLista($id, $lista) {
if ($lista) {
@ -638,7 +562,7 @@ include_once("Automata.php");
}
/**
* Devuelve una lista de tecnologías asociadas al pedido.
* Devuelve una lista de tecnologías asociadas al pedido.
*/
function getTecnologias() {
if ($this->listaTecnologias == null) {
@ -697,22 +621,18 @@ include_once("Automata.php");
foreach ($array as $elem) {
$this->addTecnologia($elem);
}
$this->calculaAfinidad();
}
function addIdiomas($array) {
foreach ($array as $elem) {
$this->addIdioma($elem);
}
$this->calculaAfinidad();
}
function addProvincias($array) {
foreach ($array as $elem) {
$this->addProvincia($elem);
}
$this->calculaAfinidad();
}
function addPerfiles($array) {
@ -720,12 +640,11 @@ include_once("Automata.php");
foreach ($array as $elem) {
$this->addPerfil($elem);
}
$this->calculaAfinidad();
}
}
/**
* Asocia una nueva tecnología en la base de datos.
* Asocia una nueva tecnología en la base de datos.
*/
private function addTecnologia($id) {
$oid = $this->getValor("oid");
@ -808,7 +727,7 @@ include_once("Automata.php");
private function addProvincia($id) {
$oid = $this->getValor("oid");
$this->getProvincias();
if(!in_array($id, $this->listasProvincias)){
if (!in_array($id, $this->listaProvincias)) {
$consulta = "SELECT id FROM provincias WHERE oid='$id'";
$bd = new BD();
$nombre_provincia = $bd->getCampo($consulta);
@ -817,7 +736,7 @@ include_once("Automata.php");
if ($bd->execQuery($consulta)) {
$mensaje = "Nueva provincia: $nombre_provincia";
//$this->actualizarHistorial($mensaje);
$this->listasProvincias[$nombre_provincia] = $id;
$this->listaProvincias[$nombre_provincia] = $id;
} else {
return false;
}
@ -856,8 +775,6 @@ include_once("Automata.php");
} else {
return false;
}
$this->calculaAfinidad();
return true;
}
@ -889,8 +806,6 @@ include_once("Automata.php");
} else {
return false;
}
$this->calculaAfinidad();
return true;
}
@ -900,7 +815,7 @@ include_once("Automata.php");
function removeProvincia($id) {
$oid = $this->getValor("oid");
$this->getProvincias();
if(in_array($id, $this->listasProvincias)){
if (in_array($id, $this->listaProvincias)) {
$consulta = "SELECT id FROM provincias WHERE oid='$id'";
$bd = new BD();
$nombre_provincia = $bd->getCampo($consulta);
@ -909,11 +824,11 @@ include_once("Automata.php");
if ($bd->execQuery($consulta)) {
$mensaje = "Eliminada provicia: $nombre_provincia";
//$this->actualizarHistorial($mensaje);
$lista = $this->listasProvincias;
$this->listasProvincias = null;
$lista = $this->listaProvincias;
$this->listaProvincias = null;
foreach ($lista as $key => $value) {
if ($value != $id) {
$this->listasProvincias[$key] = $value;
$this->listaProvincias[$key] = $value;
}
}
} else {
@ -922,8 +837,6 @@ include_once("Automata.php");
} else {
return false;
}
$this->calculaAfinidad();
return true;
}
@ -955,15 +868,13 @@ include_once("Automata.php");
} else {
return false;
}
$this->calculaAfinidad();
return true;
}
/**
* Calcula la afinidad del pedido con todos los candidatos del sistema.
* @param id - identificador del usuario.
*
* @param id $ - identificador del usuario.
*/
function calculaAfinidad() {
// Recuperamos al pedido:
@ -973,14 +884,15 @@ include_once("Automata.php");
$pesoPerfil = $this->getValor("pesoPerfil");
// Eliminamos a los usuario de la tabla de candidatos en pedido que se encuentren
// en proceso para este pedido.
$consulta = "DELETE FROM candidato_pedido WHERE pedido='$id' AND estado='30'";
$consulta = "DELETE FROM candidato_pedido WHERE pedido='$id' AND estado='110'";
$bd = new BD();
$bd->execQuery($consulta);
// Si el pedido no está cerrado calculamos su afinidad para los usuarios:
$estado = $this->getValor("estado");
//Estados válidos: Todos menos cerrado (Pendiente).
if($estado == 10){
$consulta = "SELECT email FROM usuarios WHERE tipo='candidato' AND estado IN ('10', '30', '50', '70')";
// Estados válidos: En configuración
if ($estado == "130") {
$consulta = "SELECT email FROM usuarios WHERE tipo='candidato' AND estado IN ('540', '560')";
$bd = new BD();
$listaUsuarios = $bd->arrayQuery($consulta, "email");
// Calculamos la afinidad de cada usuario.
@ -996,16 +908,19 @@ include_once("Automata.php");
$perfilesUsuario = $usuario->getPerfiles();
$provinciasPedido = $this->getProvincias();
$provinciasDeseadas = $usuario->getProvinciasDeseadas();
$provinciasNoDeseadas = $usuario->getProvinciasNoDeseadas();
$afinidad = new Afinidad($idiomasPedido, $idiomasUsuario, $tecnologiasPedido,
$tecnologiasUsuario, $perfilesPedido, $perfilesUsuario, $provinciasPedido, $provinciasDeseadas);
$tecnologiasUsuario, $perfilesPedido, $perfilesUsuario, $provinciasPedido, $provinciasDeseadas, $provinciasNoDeseadas);
$afi = $afinidad->calculaAfinidad($pesoIdioma, $pesoPerfil, $pesoTecno);
echo $afi . "<br/>";
if ($afi > 0) {
$consulta = "INSERT INTO candidato_pedido (candidato, pedido, afinidad, estado, fecha) VALUES('$idUsuario', '$id', '$afi', '30', curdate())";
$consulta = "INSERT INTO candidato_pedido (candidato, pedido, afinidad, estado, fecha) VALUES('$idUsuario', '$id', '$afi', '110', curdate())";
$bd = new BD();
$bd->execQuery($consulta);
}
} catch (Exception $e) {
//Nunca debería entrar aquí.
// Nunca debería entrar aquí.
}
}
}
@ -1069,7 +984,8 @@ include_once("Automata.php");
private function ejecutaTransicion($codigo, $argumentos) {
// Si no hace nada al transitar salimos sin más.
if($codigo == 0) return true;
if ($codigo == 0)
return true;
$funcion = "ejecutar$codigo";
$res = call_user_func(array("Pedido", $funcion), $argumentos);
@ -1077,229 +993,32 @@ include_once("Automata.php");
}
/**
* Pendiente a asignado
* Admin, Gestor
SE LLEGA DESDE:
- Al aceptar al candidato (pedido.aceptar).
- Editar el número de empleados del pedido.
PRECONDICIONES:
- Comprobar que el número de candidatos aceptados es mayor o igual que el de candidatos necesarios.
POSTCONDICIONES:
- Ninguna.
* Sin calificar -> En configuración
*/
private function ejecutar1020(){
$necesarios = $this->getValor("empleados");
$actuales = count($this->listaAceptados);
//PRECONDICIONES:
//- Comprobar que el número de candidatos aceptados es mayor o igual que el de candidatos necesarios.
if($actuales >= $necesarios){
private function ejecutar110130() {
return true;
}else{
return false;
}
}
/**
* Asignado a Pendiente
* Admin, Gestor
SE LLEGA DESDE:
- Al rechazar al candidato (pedido.rechazar).
- Editar el número de empleados del pedido.
PRECONDICIONES:
- Comprobar que el número de candidatos aceptados es menor que el de candidatos necesarios.
POSTCONDICIONES:
- Ninguna.
* En configuración ->Sin calificar
*/
private function ejecutar2010(){
$necesarios = $this->getValor("empleados");
$actuales = count($this->listaAceptados);
//Comprobamos que se dan las condiciones para transitar.
if($actuales < $necesarios){
return true;
}else{
return false;
}
}
/**
* Asignado a No contratado
* Pendiente a No contratado
* Tramitando contratación a No contratado
* Admin, Gestor
SE LLEGA DESDE:
- La vista del pedido al pulsar el botón de “Cambiar a No contratado”.
PRECONDICIONES:
- Mensaje indicando el motivo del cambio a No contratado.
POSTCONDICIONES:
- Se borra la lista de usuarios aceptados, rechazados y en proceso para este pedido y
para cada candidato cambia a su estado previo de disponible o entrevistado.
*/
private function ejecutar2050($mensaje){
if($mensaje == ""){
$error = "Debe introducir un motivo para pasar el pedido a Desactivado";
throw new Exception($error);
return false;
exit;
}
private function ejecutar130110() { // De *En configuración* a *Sin calificar*
$id = $this->getValor("oid");
$bd = new BD();
//Borro la tabla de candidaturas para este pedido.
// Borro la tabla de ofertas de este pedido
$consulta = "DELETE FROM candidato_pedido WHERE pedido='$id'";
$bd->execQuery($consulta);
//Cojo los candidatos y limpio las listas del pedido.
$candidatos = $this->getCandidatosAceptados();
if(count($candidatos) > 0){
//Voy empleado por empleado comprobando su estado y transitando.
foreach($candidatos as $c){
$candidato = new Candidato($this->usuario, $c->getValor("oid"));
$estado = $candidato->getValor("estado");
switch ($estado) {
case 30:
$candidato->transita(10, "");
break;
case 70:
$candidato->transita(50, "");
break;
default:
break;
}
}
}
$this->listaPropuestos = null;
$this->listaPropuestosRRHH = null;
$this->listaAceptados = null;
$this->listaRechazados = null;
return true;
}
/**
* Tramitando contratación a Contratado.
* Admin, Gestor
SE LLEGA DESDE:
- La vista del pedido, al pulsar el botón de “Cambiar a cerrado”.
PRECONDICIONES:
- Todos los candidatos aceptados están incorporados a la empresa.
POSTCONDICIONES:
- Se eliminan todos los candidatos propuestos por el sistema y por RRHH y rechazados
ESCENARIO ALTERNATIVO:
- Por cada candidato aceptado no incorporado a la empresa se generará
una alarma en forma de correo electrónico al personal de recursos humanos para que le incorpore.
*/
private function ejecutar3040(){
$lista = $this->getCandidatosAceptados();
$ok = true;
//Si encontramos algún aceptado que sea candidato tenemos error.
if(count($lista) <= 0){
$error = "No hay candidados aceptados para esta solicitud de oferta";
throw new Exception($error);
return false;
exit;
}
foreach($lista as $candidato){
$tipo = $candidato->getValor("tipo");
//Escenario alternativo
if($tipo != "usuario"){
$nombre = $candidato->getValor("nombre");
$oid = $candidato->getValor("oid");
//Enviar un mail a RRHH con los datos pidiendo incorporación.
$asunto = "Solicitud de contratación";
$direccion = constante("email");
$path = "http://portal.selforsistemas.net";
$link = "<a href='".$path."/detalle_candidato.php?oid=".$oid."'>".$nombre."</a>";
$email = "Se solicita la contratación para el candidato ".$link;
envia_correo($direccion, $asunto, $email);
$ok = false;
}
}
if($ok){
$bd = new BD();
//Borro la tabla de candidaturas para este pedido.
$consulta = "DELETE FROM candidato_pedido WHERE pedido='$id' AND estado IN ('10', '30', '40')";
$bd->execQuery($consulta);
$this->listaPropuestos = null;
$this->listaPropuestosRRHH = null;
}else{
$error = "No se puede contratar aprobar la oferta hasta que todos los candidatos hayan sido contratados.";
throw new Exception($error);
return false;
exit;
}
return $ok;
}
/**
* No contratado a Pendiente
* Admin, Gestor
SE LLEGA DESDE:
- La vista del pedido, al pulsar el botón de “Cambiar a pendiente”.
POSTCONDICIONES:
- Crea un nuevo pedido con los mismos datos cambiando el código y lo pone en “Pendiente”.
- Calcula las afinidades para ese nuevo pedido que está en "Pendiente".
*/
private function ejecutar5010(){
$l = new ListaPedido($this->usuario, "", "", "");
$this->getValor("procedencia");
$this->getValor("cliente");
$bd = new BD();
$miId = $this->getValor("oid");
$consulta = "SELECT * FROM pedidos WHERE oid='$miId'";
$res = $bd->execQuery($consulta);
$this->parseaResource($res);
$campos = array();
foreach($this->campos as $campo => $valor){
if($campo != "oid" && $campo != "fecha")
$campos[$campo] = $valor;
}
$campos["estado"] = 10;
$campos["msgEstado"] = "";
$id = $l->addPedido($campos);
$p = new Pedido($id, $this->usuario);
$p->addTecnologias($this->getTecnologias());
$p->addIdiomas($this->getIdiomas());
$p->addProvincias($this->getProvincias());
// echo '<script type="text/javascript">
// <!--
// if (confirm("Se acaba de crear un nuevo pedido con el codigo:'.$id.'. ¿Desea visualizar el nuevo pedido?")) {
// // Respuesta afirmativa...
// document.location="pedido.php?idPedido='.$id.'";
// }
// -->
// </script>';
$this->calculaAfinidad();
return false;
}
/**
* Añade un comentario por parte de un gerente hacia un candidato
* @param idCandidato: oid del candidato
* @param observacion: observacion a proponer
*
* @param idCandidato $ : oid del candidato
* @param observacion $ : observacion a proponer
*/
function addComentarioPropuesta($idCandidato, $observacion) {
// Sólo lo puede hacer los gerentes
@ -1324,7 +1043,6 @@ include_once("Automata.php");
$candidato = $this->buscarCandidatoLista($idCandidato, $this->getCandidatosAceptados());
}
$candidato->modObsGerente($observacion);
} else {
$error = "No se ha podido actualiar la observaci&oacute;n";
throw new Exception($error);
@ -1335,8 +1053,9 @@ include_once("Automata.php");
/**
* Añade un comentario por parte de un RRHH hacia un candidato
* @param idCandidato: oid del candidato
* @param observacion: observacion a proponer
*
* @param idCandidato $ : oid del candidato
* @param observacion $ : observacion a proponer
*/
function addComentarioPropuestaRRHH($idCandidato, $observacion) {
// Sólo lo puede hacer los RRHH
@ -1361,7 +1080,6 @@ include_once("Automata.php");
$candidato = $this->buscarCandidatoLista($idCandidato, $this->getCandidatosAceptados());
}
$candidato->modObsRRHH($observacion);
} else {
$error = "No se ha podido actualiar la observaci&oacute;n";
throw new Exception($error);

133
addOferta.php Normal file
View File

@ -0,0 +1,133 @@
<?php
include("seguridad.php");
include("functions.php");
include_once("Objects/ListaOfertas.php");
include_once("Objects/Oferta.php");
include_once("Objects/HTML.php");
$html = new HTML($locale);
$errores = array();
// Todas las variables
if (!empty($_POST)) {
print_r($_POST);
$solicitud = "";
if (!empty($_POST['solicitud'])) {
$solicitud = $_POST['solicitud'][0];
}
/*
$nombre=$_POST['nombre'];
$prioridad=$_POST['prioridad'];
$empleados=$_POST['empleados'];
$duracion=$_POST['duracion'];
$clientes=$_POST['clientes'];
$perfiles=$_POST['perfil'];
$salario_min=$_POST['salario_min'];
$salario_max=$_POST['salario_max'];
$procedencia=$_POST['procedencia'];
$tecnologias=$_POST['tecnologia'];
$idiomas=$_POST['idiomas'];
$provincias=$_POST['provincias']; */
$observaciones = $_POST['observaciones'];
/* $pesoTec=$_POST['pesoTec'];
$pesoIdi=$_POST['pesoIdi'];
$pesoPer=$_POST['pesoPer'];
if($usuario->tieneRol("1")){
$gerente=$_POST['gerente'];
} else {
$gerente=$usuario->getValor("oid");
}
*/
if ($_POST['action'] == "add") {
// Comprobamos campos obligatorios
if (empty($solicitud)) {
$errores[] = "1";
}
// Si no hay errores insertamos el pedido
if (count($errores) == 0) {
$listaOfertas = new ListaOfertas($usuario, "", "", "0");
$arrayInsert = array();
$arrayInsert["pedido"] = $solicitud;
$arrayInsert["obsGerente"] = $observaciones;
$arrayInsert["estado"] = "110";
/* $arrayInsert["prioridad"]= $prioridad;
$arrayInsert["empleados"]=$empleados;
$arrayInsert["duracion"]=$duracion;
$arrayInsert["gerente"]=$gerente;
$arrayInsert["cliente"]=$clientes;
$arrayInsert["salario_min"]=$salario_min;
$arrayInsert["salario_max"]=$salario_max;
$arrayInsert["procedencia"]=$procedencia;
$arrayInsert["estado"]="110";
$arrayInsert["pesoIdioma"]=$pesoIdi;
$arrayInsert["pesoPerfil"]=$pesoPer;
$arrayInsert["pesoTecno"]=$pesoTec; */
$idOferta = $listaOfertas->addOferta($arrayInsert);
if ($idOferta == "-1") {
// Se he producido un fallo al insertar
$errores[] = "0";
$msg = "No se ha podido agregar la oferta";
$tipo = "error";
} else {
$oferta = $listaOfertas->buscarOferta($idOferta);
header("Location: oferta.php?idOferta=" . $idOferta . "&msg=1");
}
}
}
} else {
$referencia = "";
$solicitud = "";
$observaciones = "";
}
include("html/cabecera.php");
echo $html->menuOfertas($usuario, "");
echo "<h2>" . $locale['5105'] . "</h2>";
if (isset($msg) && ($msg != "")) {
echo "<div class=\"aviso " . $tipo . "\">" . $msg . "</div>";
}
echo '<form method="POST" action="addOferta.php" name="form_registro" enctype="multipart/form-data">';
echo "<input type=\"hidden\" name=\"action\" value=\"add\" />";
echo "<table id=\"addOferta\">" .
"<tr>" .
" <td";
if (in_array("1", $errores))
echo " class=\"errorcampo\"";
echo ">" . $locale['1025'] . ":<br/>";
rellena_desplegable_pedidos_estado("solicitud", "130", array($solicitud));
echo " </td>";
echo "</td></tr>";
echo "<tr>";
echo "</tr>";
echo '<tr>' .
'<td colspan="3" align="center">' . $locale['135'] .
'<br><textarea name="observaciones" rows="10" cols="120" style="overflow: auto; width:100%;">' . nl2br($observaciones) . '</textarea></td>' .
'</tr>';
// Botones de guardar y restablecer
echo "<tr><td colspan=\"3\" align=\"center\">";
echo '<input type="submit" value="' . $locale['gu'] . '" onclick="return comprobar_registro(this)" class="button">';
echo '<input type="reset" value="' . $locale['res'] . '" class="button"></td>';
echo "</tr></table>";
echo "</form>";
include_once("html/pie.php");
?>

View File

@ -84,7 +84,7 @@ if(!empty($_POST)) {
$arrayInsert["salario_max"]=$salario_max;
$arrayInsert["procedencia"]=$procedencia;
$arrayInsert["observaciones"]=$observaciones;
$arrayInsert["estado"]="10";
$arrayInsert["estado"]="110";
$arrayInsert["pesoIdioma"]=$pesoIdi;
$arrayInsert["pesoPerfil"]=$pesoPer;
$arrayInsert["pesoTecno"]=$pesoTec;
@ -96,7 +96,6 @@ if(!empty($_POST)) {
$tipo="error";
} else {
$pedido=$listaPedidos->buscarPedido($idPedido);
print_r($perfiles);
$pedido->addPerfiles($perfiles);
$pedido->addTecnologias($tecnologias);
$pedido->addIdiomas($idiomas);
@ -172,7 +171,7 @@ echo "</td><td";
if(in_array("5",$errores)) echo " class=\"errorcampo\"";
echo ">".$locale['121']."<br/>";
// Ticket #565 -> En una solicitud de oferta, se deben poder indicar varios perfiles técnicos
echo $html->listaSelect("perfil","oid","id","perfil",array("",$locale['ns']),$tecnologias,true,true,"15");
echo $html->listaSelect("perfil","oid","id","perfil",array("",$locale['ns']),$perfiles,true,true,"15");
echo "</td><td>".$locale['132'].": ".$locale['2100'];
echo "</td></tr>";

View File

@ -8,7 +8,7 @@ if(!$_SESSION["oid"]){
//$consulta = "select usuarios.nombre as nombre,usuarios.apellidos as apellidos, pedidos.nombre as pedido, estado_candidatura.id as estado from usuarios,candidato_pedido,pedidos,estado_candidatura where usuarios.oid='".$persona->getValor("oid")."' and candidato_pedido.candidato='".$persona->getValor("oid")."' and candidato_pedido.pedido = pedidos.oid and candidato_pedido.estado <> 6 ";
$consulta = "SELECT U.oid as idCandidato,P.oid as idPedido, U.nombre,U.apellidos,P.nombre AS pedido, CE.nombre AS estado, P.oid,CP.obsRRHH,CP.obsGerente
FROM usuarios U,pedidos P,candidato_pedido CP,candidaturas_estado CE
FROM usuarios U,pedidos P,candidato_pedido CP,candidaturas_estados CE
WHERE U.oid='".$persona->getValor("oid")."'
AND CP.candidato=U.oid
AND P.oid=CP.pedido

View File

@ -75,6 +75,6 @@ if ($link=conectar()){
}
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
// header("Location: index.php?errorusuario=si");
}
?>

View File

@ -102,15 +102,30 @@ INSERT INTO `candidatos_estados` (`cod`, `idioma`, `nombre`, `tipo`) VALUES
(523, 'sp', 'Rechazado 3', 'candidato'),
(530, 'sp', 'No disponible', 'candidato'),
(540, 'sp', 'Disponible sin asignar', 'candidato'),
(550, 'sp', 'Disponible asignado a solicitud histórica', 'candidato'),
(550, 'sp', 'Disponible asignado a solicitud cerrada', 'candidato'),
(560, 'sp', 'Disponible asignado a solicitud abierta', 'candidato');
-- --------------------------------------------------------
CREATE TABLE IF NOT EXISTS `candidaturas_transiciones` (
`inicial` int(10) unsigned NOT NULL,
`final` int(10) unsigned NOT NULL,
`transicion` bigint(20) unsigned NOT NULL,
`rol` text NOT NULL,
PRIMARY KEY (`inicial`,`final`),
KEY `final` (`final`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `candidaturas_transiciones`
ADD CONSTRAINT `candidaturas_transiciones_ibfk_1` FOREIGN KEY (`inicial`) REFERENCES `candidaturas_estado` (`cod`),
ADD CONSTRAINT `candidaturas_transiciones_ibfk_2` FOREIGN KEY (`final`) REFERENCES `candidaturas_estado` (`cod`);
--
-- Estructura de tabla para la tabla `candidatos_transiciones`
--
CREATE TABLE IF NOT EXISTS `candidatos_transiciones` (
`inicial` int(10) NOT NULL,
`final` int(10) NOT NULL,
@ -167,7 +182,8 @@ INSERT INTO `candidatos_transiciones` (`inicial`, `final`, `transicion`, `rol`)
CREATE TABLE IF NOT EXISTS `candidato_pedido` (
`oid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`candidato` bigint(20) unsigned NOT NULL,
`referencia` varchar(12) COLLATE latin1_spanish_ci NOT NULL,
`candidato` bigint(20) unsigned,
`pedido` varchar(8) COLLATE latin1_spanish_ci NOT NULL,
`afinidad` float NOT NULL,
`estado` int(10) unsigned NOT NULL,
@ -190,10 +206,10 @@ CREATE TABLE IF NOT EXISTS `candidato_pedido` (
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `candidaturas_estado`
-- Estructura de tabla para la tabla `candidaturas_estados`
--
CREATE TABLE IF NOT EXISTS `candidaturas_estado` (
CREATE TABLE IF NOT EXISTS `candidaturas_estados` (
`cod` int(10) unsigned NOT NULL,
`idioma` varchar(3) COLLATE latin1_spanish_ci NOT NULL,
`nombre` varchar(50) COLLATE latin1_spanish_ci NOT NULL,
@ -201,10 +217,10 @@ CREATE TABLE IF NOT EXISTS `candidaturas_estado` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
--
-- Volcar la base de datos para la tabla `candidaturas_estado`
-- Volcar la base de datos para la tabla `candidaturas_estados`
--
INSERT INTO `candidaturas_estado` (`cod`, `idioma`, `nombre`) VALUES
INSERT INTO `candidaturas_estados` (`cod`, `idioma`, `nombre`) VALUES
(10, 'sp', 'Descartado'),
(20, 'sp', 'Aceptado'),
(30, 'sp', 'En proceso'),
@ -359,10 +375,6 @@ CREATE TABLE IF NOT EXISTS `historial_pedido` (
KEY `oid_h` (`oid_h`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci;
--
-- Volcar la base de datos para la tabla `historial_pedido`
--
-- --------------------------------------------------------
@ -378,10 +390,22 @@ CREATE TABLE IF NOT EXISTS `historial_usuario` (
KEY `oid_h` (`oid_h`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Volcar la base de datos para la tabla `historial_usuario`
-- Estructura de tabla para la tabla `historial_oferta`
--
CREATE TABLE IF NOT EXISTS `historial_oferta` (
`oid_h` bigint(20) unsigned NOT NULL,
`fecha_h` varchar(20) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
`persona_h` varchar(20) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
`texto_h` text CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
KEY `oid_h` (`oid_h`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
@ -759,9 +783,9 @@ INSERT INTO `pedidos_transiciones` (`inicial`, `final`, `transicion`, `rol`) VAL
(110, 120, 0, '1.3'),
(110, 130, 110130, '1.3'),
(120, 110, 0, '1.3'),
(130, 110, 0, '1.3'),
(130, 140, 0, ''),
(140, 130, 0, '');
(130, 110, 130110, '1.3'),
(130, 140, 130140, ''),
(140, 130, 140130, '');
-- --------------------------------------------------------
@ -1469,7 +1493,7 @@ ALTER TABLE `candidatos_estados`
ALTER TABLE `candidato_pedido`
ADD CONSTRAINT `candidato_pedido_ibfk_1` FOREIGN KEY (`candidato`) REFERENCES `usuarios` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `candidato_pedido_ibfk_2` FOREIGN KEY (`pedido`) REFERENCES `pedidos` (`oid`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `candidato_pedido_ibfk_3` FOREIGN KEY (`estado`) REFERENCES `candidaturas_estado` (`cod`) ON UPDATE CASCADE;
ADD CONSTRAINT `candidato_pedido_ibfk_3` FOREIGN KEY (`estado`) REFERENCES `candidaturas_estados` (`cod`) ON UPDATE CASCADE;
--
-- Filtros para la tabla `clientes`

View File

@ -1,7 +1,8 @@
<?php
/* Devuelve el nombre de un estado */
function nombre_estado($oid){
function nombre_estado($oid)
{
$consulta = "select nombre from candidatos_estados where cod='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -9,7 +10,8 @@ function nombre_estado($oid){
}
/* Devuelve el nombre de un estado de candidatura */
function nombre_estado_candidatura($orden){
function nombre_estado_candidatura($orden)
{
$consulta = "select id from estado_candidatura where oid='$orden'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -17,15 +19,25 @@ function nombre_estado_candidatura($orden){
}
/* Devuelve el nombre de un estado de pedido */
function nombre_estado_pedido($oid){
function nombre_estado_pedido($oid)
{
$consulta = "select nombre from pedidos_estados where cod='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
return $rows["nombre"];
}
function nombre_estado_oferta($oid)
{
$consulta = "select nombre from candidaturas_estados where cod='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
return $rows["nombre"];
}
/* Devuelve el nombre de una procedencia */
function nombre_procedencia($id){
function nombre_procedencia($id)
{
$consulta = "select id from procedencia where num='$id'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -33,7 +45,8 @@ function nombre_procedencia($id){
}
/* Devuelve el nombre de una procedencia */
function nombre_procedencia_cv($id){
function nombre_procedencia_cv($id)
{
$consulta = "select nombre from procedencia_cv where id='$id'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -41,7 +54,8 @@ function nombre_procedencia_cv($id){
}
/* Devuelve el nombre de una localidad */
function nombre_localidad($oid){
function nombre_localidad($oid)
{
$consulta = "select id from localidades where oid='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -49,7 +63,8 @@ function nombre_localidad($oid){
}
/* Devuelve el nombre de una provincia */
function nombre_provincia($oid){
function nombre_provincia($oid)
{
$consulta = "select id from provincias where oid='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -57,7 +72,8 @@ function nombre_provincia($oid){
}
/* Devuelve el nombre de un perfil */
function nombre_perfil($oid){
function nombre_perfil($oid)
{
$consulta = "select id from perfil where oid='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -65,7 +81,8 @@ function nombre_perfil($oid){
}
/* Devuelve el nombre de un rol */
function nombre_rol($oid){
function nombre_rol($oid)
{
$consulta = "select id from rol where oid='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -73,7 +90,8 @@ function nombre_rol($oid){
}
/* Devuelve el nombre de un cliente */
function nombre_cliente($oid){
function nombre_cliente($oid)
{
$consulta = "select id from clientes where oid='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -81,7 +99,8 @@ function nombre_cliente($oid){
}
/* Devuelve el perfil de un pedido */
function perfil_pedido($oid){
function perfil_pedido($oid)
{
$consulta = "select perfil from pedidos where oid='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -89,7 +108,8 @@ function perfil_pedido($oid){
}
/* Devuelve el nombre de un pedido */
function nombre_pedido($oid){
function nombre_pedido($oid)
{
$consulta = "select nombre from pedidos where oid='$oid'";
$resultado = mysql_query($consulta);
$rows = mysql_fetch_array($resultado);
@ -97,7 +117,8 @@ function nombre_pedido($oid){
}
/* Devuelve el nombre de un salario */
function nombre_salario($id){
function nombre_salario($id)
{
$consulta = "SELECT nombre FROM salario WHERE id='$id'";
if ($resultado = mysql_query($consulta)) {
$rows = mysql_fetch_array($resultado);

View File

@ -201,7 +201,7 @@ carpeta antiword en el ra
/* Devuelve la lista de currículums */
function menu_curriculums($oid, $tipo){
include LOCALE.LOCALESET."lenguaje.php";
include_once LOCALE.LOCALESET."lenguaje.php";
$consulta = "select * from curriculum_usuario where oid='$oid' order by fecha";
$resultado = mysql_query($consulta);
$num = @mysql_num_rows($resultado);
@ -224,7 +224,7 @@ function menu_curriculums($oid, $tipo){
/* Muestra la lista de currículums */
function ver_curriculums($oid, $tipo){
include LOCALE.LOCALESET."lenguaje.php";
include_once LOCALE.LOCALESET."lenguaje.php";
$consulta = "select * from curriculum_usuario where oid='$oid' order by fecha";
$resultado = mysql_query($consulta);
$num = @mysql_num_rows($resultado);

View File

@ -3,10 +3,45 @@
ini_set("memory_limit", "32M");
//require_once ('Excel/reader.php');
// Función para imprimir cosas
// Sacado de http://php.net/manual/de/debugger.php
// USO:
// > dbug(<loquesea>);
// > " "
// > echo dbug('print');
function dbug() {
static $output = '', $doc_root;
$args = func_get_args();
if (!empty($args) && $args[0] === 'print') {
$_output = $output;
$output = '';
return $_output;
}
// do not repeat the obvious (matter of taste)
if (!isset($doc_root)) {
$doc_root = str_replace('\\', '/', $_SERVER['DOCUMENT_ROOT']);
}
$backtrace = debug_backtrace();
// you may want not to htmlspecialchars here
$line = htmlspecialchars($backtrace[0]['line']);
$file = htmlspecialchars(str_replace(array('\\', $doc_root), array('/', ''), $backtrace[0]['file']));
$class = !empty($backtrace[1]['class']) ? htmlspecialchars($backtrace[1]['class']) . '::' : '';
$function = !empty($backtrace[1]['function']) ? htmlspecialchars($backtrace[1]['function']) . '() ' : '';
$output .= "<b style='color: red;'>$class$function =&gt;$file #$line</b><pre style='color: red;'>";
ob_start();
foreach ($args as $arg) {
var_dump($arg);
}
$output .= htmlspecialchars(ob_get_contents(), ENT_COMPAT, 'UTF-8');
ob_end_clean();
$output .= '</pre>';
}
/* Conexión a la base de datos */
function conectar()
{
include LOCALE.LOCALESET."lenguaje.php";
include_once LOCALE.LOCALESET."lenguaje.php";
if (!($puntero=mysql_connect("localhost","root","password")))
{
echo $locale['bd'];
@ -24,8 +59,8 @@ function conectar()
/* Conexión a la base de datos de tablas */
function conectar_info()
{
include LOCALE.LOCALESET."lenguaje.php";
if (!($puntero=mysql_connect("localhost","root","0selfor0")))
include_once LOCALE.LOCALESET."lenguaje.php";
if (!($puntero=mysql_connect("localhost","root","password")))
{
echo $locale['bd'];
return false;

View File

@ -1,33 +1,31 @@
<?php
/* extrae el nombre de fichero de una ruta */
function nombre_fichero ($cadena)
{
function nombre_fichero($cadena) {
$salida = split("/", $cadena);
$i = count($salida);
return $salida[$i - 1];
}
/* extrae el nombre de fichero de una ruta */
function nombre_directorio ($cadena)
{
function nombre_directorio($cadena) {
$salida = split("/", $cadena);
$i = count($salida);
return $salida[$i - 2];
}
/* extrae la extensión del archivo */
function nombre_extension ($cadena)
{
function nombre_extension($cadena) {
$posicion = strrpos($cadena, ".") + 1;
$extension = substr($cadena, $posicion);
return $extension;
}
/* Elimina los espacios en blanco de una cadena */
function elimina_blancos($cadena) {
$salida = split(" ", $cadena);
$cadena_limpia = "";
@ -37,6 +35,7 @@ function elimina_blancos ($cadena){
}
/* Devuelve la provincia a la que pertenece una localidad */
function provincia($localidad) {
if ($link = conectar()) {
if ($resultado = consultar("select * from localidades where oid = '$localidad'", $link)) {
@ -47,6 +46,7 @@ function provincia($localidad){
}
/* Rellena una lista desplegable de colores */
function rellena_desplegable_color($name) {
echo '<select name="' . $name . '">';
@ -60,8 +60,8 @@ function rellena_desplegable_color($name){
echo '</select>';
}
/* Rellena una lista desplegable con los empleados con un permiso concreto */
function rellena_personal_permiso($nombre, $permiso, $auxiliar, $empleado) {
include LOCALE . LOCALESET . "lenguaje.php";
$consulta = "select usuarios.oid as oid,nombre from usuarios,rol where usuarios.tipo='usuario' and usuarios.rol = rol.oid and (usuarios.permisos like '%.$permiso%' or usuarios.permisos like '%$permiso.%' or usuarios.permisos = '$permiso' or rol.permisos like '%.$permiso%' or rol.permisos like '%$permiso.%' or rol.permisos = '$permiso')";
@ -82,6 +82,7 @@ function rellena_personal_permiso($nombre, $permiso, $auxiliar, $empleado){
}
/* Rellena una lista desplegable con los pedidos que puede ver el usuario */
function rellena_desplegable_pedidos($nombre) {
include LOCALE . LOCALESET . "lenguaje.php";
echo '<select multiple name="' . $nombre . '[]">';
@ -103,6 +104,7 @@ function rellena_desplegable_pedidos($nombre){
}
/* Rellena una lista desplegable con los pedidos que puede ver el usuario */
function rellena_desplegable_pedidos_ConParametros($nombre, $seleccionadas) {
include LOCALE . LOCALESET . "lenguaje.php";
echo '<select multiple name="' . $nombre . '[]">';
@ -130,7 +132,33 @@ function rellena_desplegable_pedidos_ConParametros($nombre,$seleccionadas){
echo '</select>';
}
/* Rellena una lista desplegable con los pedidos con un estado */
function rellena_desplegable_pedidos_estado($nombre, $estado, $seleccionadas) {
include LOCALE . LOCALESET . "lenguaje.php";
echo '<select multiple name="' . $nombre . '[]">';
if ($link = conectar()) {
$consulta = "select * from pedidos where estado = '$estado' order by prioridad DESC";
if ($resultado = consultar($consulta, $link)) {
if ($seleccionadas[0] == "")
echo '<option value="" selected>' . $locale['ns'] . '</option>';
else
echo '<option value="">' . $locale['ns'] . '</option>';
while ($row = mysql_fetch_array($resultado)) {
if (in_array($row["oid"], $seleccionadas)) {
echo '<option value="' . $row["oid"] . '" selected>' . $row["nombre"] . '</option>';
} else {
echo '<option value="' . $row["oid"] . '">' . $row["nombre"] . '</option>';
}
}
}
}
echo '</select>';
}
/* Rellena una lista desplegable con las localidades de una provincia seleccionando una provincia concreta */
function rellena_desplegable_localidad($localidad, $nombre) {
include LOCALE . LOCALESET . "lenguaje.php";
echo '<select name="' . $nombre . '" >';
@ -141,7 +169,8 @@ function rellena_desplegable_localidad($localidad, $nombre){
echo '<option value="" selected>' . $locale['ns'] . '</option>';
while ($row = mysql_fetch_array($resultado)) {
if ($provincia != $row["provincia"]) {
if($provincia != "") echo '</optgroup>';
if ($provincia != "")
echo '</optgroup>';
$provincia = $row["provincia"];
echo '<optgroup label="' . nombre_provincia($provincia) . '">';
}
@ -166,7 +195,8 @@ function rellena_desplegable_localidad_mult($localidad, $nombre){
//echo '<option value="" selected>'.$locale['ns'].'</option>';
while ($row = mysql_fetch_array($resultado)) {
if ($provincia != $row["provincia"]) {
if($provincia != "") echo '</optgroup>';
if ($provincia != "")
echo '</optgroup>';
$provincia = $row["provincia"];
echo '<optgroup label="' . nombre_provincia($provincia) . '">';
}
@ -190,7 +220,8 @@ function rellena_desplegable_localidad_multSel($localidad, $nombre){
//echo '<option value="" selected>'.$locale['ns'].'</option>';
while ($row = mysql_fetch_array($resultado)) {
if ($provincia != $row["provincia"]) {
if($provincia != "") echo '</optgroup>';
if ($provincia != "")
echo '</optgroup>';
$provincia = $row["provincia"];
echo '<optgroup label="' . nombre_provincia($provincia) . '">';
}
@ -203,10 +234,10 @@ function rellena_desplegable_localidad_multSel($localidad, $nombre){
}
echo '</select>';
}
}
/* Rellena una lista desplegable */
function rellena_desplegable($tabla, $name, $auxiliar) {
echo '<select name="' . $name . '">';
@ -221,6 +252,7 @@ function rellena_desplegable($tabla,$name,$auxiliar){
}
/* Rellena una lista desplegable con oid e id */
function rellena_desplegable_oid($tabla, $name, $auxiliar) {
echo '<select name="' . $name . '">';
@ -235,6 +267,7 @@ function rellena_desplegable_oid($tabla,$name,$auxiliar){
}
/* Rellena una lista desplegable de perfiles */
function rellena_perfiles($tabla, $name, $auxiliar) {
echo '<select name="' . $name . '">';
echo $auxiliar;
@ -247,8 +280,8 @@ function rellena_perfiles($tabla,$name,$auxiliar){
echo '</select>';
}
/* Rellena una lista desplegable tipo orden-id */
function rellena_desplegable_orden($tabla, $name, $auxiliar) {
echo '<select name="' . $name . '">';
@ -263,6 +296,7 @@ function rellena_desplegable_orden($tabla,$name,$auxiliar){
}
/* Rellena una lista desplegable tipo orden-id */
function rellena_desplegable_select_orden($tabla, $name, $auxiliar, $opcion) {
echo '<select name="' . $name . '">';
if ($link = conectar()) {
@ -279,8 +313,8 @@ function rellena_desplegable_select_orden($tabla,$name,$auxiliar,$opcion){
echo '</select>';
}
/* Rellena una lista desplegable */
function rellena_desplegable_multi($tabla, $name, $auxiliar) {
echo '<select multiple name="' . $name . '[]">';
@ -369,8 +403,8 @@ function expande($array, $separador){
$valores = substr($valores, 0, strlen($valores) - 2);
}
/* Rellena una lista desplegable seleccionando una opción */
function rellena_desplegable_select($tabla, $name, $auxiliar, $opcion) {
echo '<select name="' . $name . '">';
echo $auxiliar;
@ -388,6 +422,7 @@ function rellena_desplegable_select($tabla,$name,$auxiliar,$opcion){
}
/* Rellena una lista desplegable tipo oid id seleccionando una opción */
function rellena_desplegable_select_oid($tabla, $name, $auxiliar, $opcion) {
$consulta = "select * from " . $tabla;
echo '<select name="' . $name . '">';
@ -404,6 +439,7 @@ function rellena_desplegable_select_oid($tabla,$name,$auxiliar,$opcion){
}
echo '</select>';
}
// Rellena una lista desplegable dando una tabla, el id que quieres sacar, el valor por defecto
// y la opción que hay ahora seleccionada
function rellena_desplegable_select_oidCol($tabla, $Ccod, $Cnombre, $name, $auxiliar, $opcion) {
@ -424,6 +460,7 @@ function rellena_desplegable_select_oidCol($tabla,$Ccod,$Cnombre,$name,$auxiliar
}
/* Rellena una lista desplegable de procedencias */
function rellena_procedencias($name, $auxiliar, $opcion) {
echo '<select name="' . $name . '">';
@ -442,8 +479,8 @@ function rellena_procedencias($name, $auxiliar, $opcion){
echo '</select>';
}
/* Rellena una lista desplegable con más datos */
function rellena_desplegable_datos($tabla, $name, $aux1, $aux2) {
echo '<select name="' . $name . '">';
@ -461,6 +498,7 @@ function rellena_desplegable_datos($tabla,$name,$aux1, $aux2){
}
/* Rellena una lista numérica desplegable */
function rellena_numerico($name, $menor, $num) {
echo '<select name="' . $name . '">';
for ($i = 0; $i < $num; $i++) {
@ -470,40 +508,46 @@ function rellena_numerico($name, $menor, $num){
}
/* Rellena una lista numérica desplegable seleccionando opción */
function rellena_prioridad_select($name, $op) {
echo '<select name="' . $name . '">';
for ($i = 0; $i < 3; $i++) {
echo '<option value="' . ($i + 1) . '"';
if($op == ($i+1)) echo "selected";
if ($op == ($i + 1))
echo "selected";
echo '>' . ($i + 1) . ' (' . discretiza_prioridad($i + 1) . ')</option>';
}
echo '</select>';
}
/* Rellena una lista numérica desplegable seleccionando opción */
function rellena_numerico_select($name, $menor, $num, $op) {
echo '<select name="' . $name . '">';
for ($i = 0; $i < $num; $i++) {
echo '<option value="' . ($menor + $i + 1) . '"';
if($op == ($menor+$i+1)) echo "selected";
if ($op == ($menor + $i + 1))
echo "selected";
echo '>' . ($menor + $i + 1) . '</option>';
}
echo '</select>';
}
/* Rellena una lista desplegable con los días de la semana seleccionando */
function rellena_semana_select($name, $activacion) {
echo '<select name="' . $name . '">';
for ($i = 0; $i < 7; $i++) {
echo '<option value="' . ($i + 1) . '"';
if($activacion == ($i+1)) echo "selected";
if ($activacion == ($i + 1))
echo "selected";
echo '>' . nombre_dia($i + 1) . '</option>';
}
echo '</select>';
}
/* Rellena un desplegable para elegir fecha */
function rellena_fecha() {
$dia = date("j");
$mes = date("n");
@ -519,18 +563,21 @@ function rellena_fecha(){
}
/* Rellena un desplegable para elegir fecha seleccionando la fecha parámetro */
function rellena_fecha_nombre_select($fecha) {
rellena_fecha_select($fecha, "");
}
/* Rellena un desplegable para elegir fecha seleccionando la fecha parámetro y nombre del select */
function rellena_fecha_select($fecha, $nombre) {
include LOCALE . LOCALESET . "lenguaje.php";
$tiempo = explode("-", $fecha);
$dia = $tiempo[2];
$mes = $tiempo[1];
$anyo = $tiempo[0];
if($anyo <= 0) $anyo = date('Y');
if ($anyo <= 0)
$anyo = date('Y');
echo $locale['318'];
rellena_numerico_select("dia" . $nombre, 0, 31, $dia);
echo $locale['328'];
@ -540,6 +587,7 @@ function rellena_fecha_select($fecha, $nombre){
}
/* Rellena una lista a borrar */
//function rellena_borrable($tabla, $tabla2, $nombre, $oid){
// if ($link = conectar()){
// $consulta = "select * from ".$tabla.",".$tabla2." where $tabla.$nombre = $tabla2.oid and oid_i = ".$oid."";
@ -565,7 +613,9 @@ function rellena_borrable_ConDestino($tabla, $tabla2, $nombre, $oid,$destino){
}
/* Rellena una lista */
function rellena_lista($tabla, $nombre, $oid) {
$res = array();
if ($link = conectar()) {
$consulta = "select * from " . $tabla . " where oid_i = " . $oid . "";
if ($resultado = consultar($consulta, $link)) {
@ -579,9 +629,12 @@ function rellena_lista($tabla, $nombre, $oid){
}
/* Rellena una lista */
function rellena_lista_oid($tabla, $tabla2, $nombre, $oid) {
$res = array();
if ($link = conectar()) {
$consulta = "select * from " . $tabla . "," . $tabla2 . " where $tabla.$nombre = $tabla2.oid and oid_i = " . $oid . "";
if ($resultado = consultar($consulta, $link)) {
while ($row = mysql_fetch_array($resultado)) {
$res[] = $row["id"];
@ -593,6 +646,7 @@ function rellena_lista_oid($tabla, $tabla2, $nombre, $oid){
}
/* Muestra los resultados */
function mostrar_resultados($errores, $aciertos) {
$oid = $_SESSION["oid"];
$errores = explode(".", $errores);
@ -630,6 +684,7 @@ function mostrar_resultados($errores, $aciertos){
}
/* Muestra los errores */
function mostrar_errores($errores) {
$errores = explode(".", $errores);
foreach ($errores as $error) {
@ -638,6 +693,7 @@ function mostrar_errores($errores){
}
/* Muestra los aciertos */
function mostrar_aciertos($aciertos) {
$aciertos = explode(".", $aciertos);
foreach ($aciertos as $acierto) {
@ -646,6 +702,7 @@ function mostrar_aciertos($aciertos){
}
/* Devuelve un array con los valores de un campo de una tabla */
function input_array_tabla($nombre, $tabla, $campo, $oid) {
$consulta = "select " . $campo . " from " . $tabla . " where oid_i=" . $oid . "";
//echo ($consulta);
@ -656,6 +713,7 @@ function input_array_tabla($nombre, $tabla, $campo, $oid){
}
/* Devuelve el color de una procedencia */
function color_procedencia($procedencia) {
if ($link = conectar()) {
@ -664,7 +722,6 @@ function color_procedencia($procedencia){
return $row["color"];
}
}
}
// Strip Input Function, prevents HTML in unwanted places

View File

@ -294,7 +294,7 @@ $locale['283'] = "Selecci&oacute;n solicitudes de oferta";
$locale['284'] = "Editar";
$locale['285'] = "Mostrar";
$locale['286'] = "Nota: los campos marcados con * son obligatorios.";
$locale['287'] = "Candidatos <br> asignados";
$locale['287'] = "N&uacute;mero<br/>de ofertas";
$locale['288'] = "Actualizar parte";
$locale['289'] = "Solicitar vacaciones";
$locale['290'] = "Se ha solicitado correctamente los d&iacute;as ";
@ -1013,4 +1013,14 @@ $locale['4048'] = "Cualquier perfil t&eacute;cnico";
$locale['5001'] = "Provincia no deseada:";
$locale['5002'] = "Se ha eliminado la provincia no deseada correctamente";
$locale['5003'] = "Estado";
$locale['5100'] = "Lista de ofertas";
$locale['5101'] = "Nueva oferta";
$locale['5102'] = "Buscar oferta";
$locale['5103'] = "Ver oferta";
$locale['5104'] = "Afinidad";
$locale['5105'] = "A&ntilde;adir nueva oferta";
$locale['5106'] = "Referencia";
$locale['5107'] = "Candidato";
?>

View File

@ -139,6 +139,15 @@ function eliminaCapa(idCapa) {
function mostrarCapa(idCapa){
document.getElementById(idCapa).style.visibility="visible";
}
function ocultarCapa(idCapa){
document.getElementById(idCapa).style.visibility="hidden";
}
function cambiarCandidato(lugar) {
var mensaje="Esta oferta ya tiene asignada un candidato. \xbfEst\xe1 seguro que desea sustituirlo?";
if(confirm(mensaje)){
document.location=lugar;
}
}

41
lista_ofertas.php Normal file
View File

@ -0,0 +1,41 @@
<?php
include("seguridad.php");
include("functions.php");
if (!$usuario->tieneRol("4") && !$usuario->tieneRol("1") && !$usuario->tieneRol("3")) {
header("Location: aplicacion.php?e=permiso&rol=" . $usuario->getValor("rol"));
exit;
}
include_once("html/cabecera.php");
/* LISTA_PROYECTOS.PHP */
$consulta = "";
include_once("Objects/ListaOfertas.php");
include_once("Objects/HTML.php");
$html = new HTML($locale);
echo $html->menuOfertas($usuario, "");
echo "<h2>" . "Lista de ofertas" . "</h2>";
$tipoOfertas = (!empty($_GET["byEstado"])) ? $_GET['byEstado'] : "";
$order_by = (!empty($_GET['order'])) ? $_GET['order'] : "";
$modo = (!empty($_GET['modo'])) ? $_GET["modo"] : "";
// sacado de http://patrickallaert.blogspot.com/2007/09/building-dynamic-sql-queries-elegant.html
$cond = array();
if ($tipoOfertas != "") {
$cond[] = "estado = '$tipoOfertas'";
}
$orden = array();
if ($order_by != "") {
$orden[] = $order_by.' '.$modo;
}
$listaOfertas = new ListaOfertas($usuario, $cond, $orden);
include_once("ver_lista_ofertas.php");
include_once("html/pie.php");
?>

View File

@ -30,7 +30,7 @@ if (isset($_GET["order"]) && ($_GET["order"]!="")) {
$modo = (isset($_GET["modo"])) ? stripinput($_GET["modo"]) : "";
$tipoPedidos = (isset($_GET["byEstado"]) && ($_GET['byEstado'] != "")) ? $_GET['byEstado'] : "10";
$tipoPedidos = (isset($_GET["byEstado"]) && ($_GET['byEstado'] != "")) ? $_GET['byEstado'] : "0";
$listaPedidos=new ListaPedido($usuario,$order_by,"",$tipoPedidos);

15
oferta.php Normal file
View File

@ -0,0 +1,15 @@
<?php
include_once("seguridad.php");
include("functions.php");
$idOferta = isset($_GET["idOferta"]) ? stripinput($_GET["idOferta"]) : "";
$tabla = isset($_POST["tabla"]) ? stripinput($_POST["tabla"]) : "";
$where = isset($_POST["where"]) ? stripinput($_POST["where"]) : "";
$condicion = isset($_POST["condicion"]) ? stripinput($_POST["condicion"]) : "";
include_once("ver_oferta.php");
include_once("html/pie.php");
?>

View File

@ -4,9 +4,9 @@ include("seguridad.php");
include("functions.php");
$idPedido = isset($_GET["idPedido"]) ? stripinput($_GET["idPedido"]) : "";
if(!isset($tabla)) $tabla = stripinput($_POST["tabla"]);
if(!isset($where)) $where = stripinput($_POST["where"]);
if(!isset($condicion)) $condicion = stripinput($_POST["condicion"]);
$tabla = isset($_POST["tabla"]) ? stripinput($_POST["tabla"]) : "";
$where = isset($_POST["where"]) ? stripinput($_POST["where"]) : "";
$condicion = isset($_POST["condicion"]) ? stripinput($_POST["condicion"]) : "";
include_once("ver_pedido.php");

View File

@ -6,7 +6,6 @@ ini_set("session.use_trans_sid","0");
//iniciamos la sesión
session_name("loginUsuario");
include_once("Objects/Usuario.php");
include_once("Objects/ListaPedido.php");
include_once("Objects/Semaforo.php");
session_start();
//FICHERO DE IDIOMAS

155
ver_lista_ofertas.php Normal file
View File

@ -0,0 +1,155 @@
<?php
include_once("seguridad.php");
/**
* Muestra toda la lista de ofertas de $listaOfertas
*/
include("functions.php");
$destinoURL = substr($_SERVER['REQUEST_URI'], strripos($_SERVER['REQUEST_URI'], "/") + 1);
if (stripos($destinoURL, "?") > 0) {
$destinoURL = substr($destinoURL, 0, stripos($destinoURL, "?"));
}
// Comprobamos mensajes que pueden llegar hasta aqui
if (isset($_GET['msg'])) {
switch ($_GET['msg']) {
case "1":$mensaje = "<div class=\"aviso ok\">" . $locale['1059'] . "</div>";
break;
case "2":$mensaje = "<div class=\"aviso error\">" . $locale['1060'] . "</div>";
break;
default:
break;
}
}
if (isset($mensaje)) echo $mensaje;
if (!isset($variablesExtra)) $variablesExtra = "";
?>
<div style="float:left; padding-top:10px; border-top:1px solid #CCC; border-left:1px solid #CCC; border-right:1px solid #CCC;background-color:#F0F0F0">
<ul id="tabnav">
<li class="<?php if ($tipoOfertas == "") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=0" . $variablesExtra; ?>"><?php echo $locale['1067']; ?></a></li>
<li class="<?php if ($tipoOfertas == "110") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=110" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("110"); ?></a></li>
<li class="<?php if ($tipoOfertas == "120") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=120" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("120"); ?></a></li>
<li class="<?php if ($tipoOfertas == "130") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=130" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("130"); ?></a></li>
<li class="<?php if ($tipoOfertas == "140") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=140" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("140"); ?></a></li>
<li class="<?php if ($tipoOfertas == "150") echo "activo";
else echo "inactivo";
?>"><a href="<?php echo $destinoURL . "?byEstado=150" . $variablesExtra; ?>"><?php echo nombre_estado_oferta("150"); ?></a></li>
</ul>
</div>
<div style="height: 35px; border-bottom:1px solid #CCC"></div>
<div style="clear:both;"></div>
<?php
echo '<div id="ContTabul">';
// CABECERAS
echo "<table width=\"100%\"> ";
// Acciones
echo "<tr class=\"encabezado\">";
echo " <td align=\"center\" colspan=\"3\">" . $locale['2014'] . "</td>";
// denominacion
$orderView = "denominacion";
echo " <td align=\"center\">" . $locale['1042'].":" . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// Fecha
$orderView = "fecha";
echo " <td align=\"center\">" . $locale['1021'] . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>" ;
// estado
$orderView = "estado";
echo " <td align=\"center\">" . $locale['1102'] . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// solicitud
$orderView = "solicitud";
echo " <td align=\"center\">" . $locale['278'].":" . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// Cliente
$orderView = "candidato";
echo " <td align=\"center\">" . $locale['704'].":" . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
// Afinidad
/*$orderView = "afinidad";
echo " <td align=\"center\">" . $locale['5104'] . "<br />" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=asc" . $variablesExtra . "\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"" . $destinoURL . "?byEstado=" . $tipoOfertas . "&order=" . $orderView . "&modo=desc" . $variablesExtra . "\" ><img src=\"css/desc.png\" /></a></td>";
*/
echo "</tr>";
// Vamos mostrando ofertas
$listadeOfertas = $listaOfertas->getOfertas();
$pagLista = "1";
if (!empty($_GET['pagLista']) && ($_GET['pagLista'] > 0)) {
$pagLista = $_GET['pagLista'];
}
// Vemos si tiene ofertas
if (count($listadeOfertas) == 0) {
echo "<tr><td colspan=\"11\" align=\"center\">no hay ofertas</td></tr></table>";
} else {
$inicio = ($pagLista - 1) * constante("lista");
if (count($listadeOfertas) > ($inicio + constante("lista"))) {
$final = $inicio + constante("lista");
} else {
$final = count($listadeOfertas);
}
for ($i = $inicio;$i < $final;$i++) {
// foreach($listadeOfertas as $ofertaAct){
$ofertaAct = $listadeOfertas[$i];
echo "<tr>";
if (($ofertaAct->getValor("gerente") == $usuario->getValor("oid")) || $usuario->tieneRol("1")) {
// Es el gerente de ese pedido, puede editarlo y eliminarlo
echo '<td align="center"><a href="gestion_pedido.php?idPedido=' . $ofertaAct->getValor("oid") . '"><img src="css/edit.png" title="' . $locale['2017'] . '"/></a></td>';
echo "<td align=\"center\"><a href=\"#\" onclick=eliminarPedido('" . $ofertaAct->getValor("oid") . "') ><img src=\"css/eliminar.png\" title=\"" . $locale['2016'] . "\"/></a></td>";
} else {
// No es el gerente no puede ni editarlo ni eliminarlo
echo '<td></td><td></td>';
}
echo '<td align="center"><a href="oferta.php?idOferta=' . $ofertaAct->getValor("oid") . '"><img src="css/brick_go.png" title="' . $locale['2015'] . '" /></a></td>';
echo '<td align="center">' . $ofertaAct->getValor("referencia") . '</td>';
echo '<td align="center">' . $ofertaAct->getValor("fecha") . '</td>';
echo '<td align="center">' . $ofertaAct->getValor("nombre_estado") . '</td>';
echo '<td align="center"><a href="/pedido.php?idPedido=' . $ofertaAct->getValor("pedido") . '">' . $ofertaAct->getValor("nombre_solicitud") . '</a></td>';
echo '<td align="center"><a href="/detalle_candidato.php?oid=' . $ofertaAct->getValor("candidato") . '">' . $ofertaAct->getValor("nombre_candidato") . '</td>';
//echo '<td align="center">' . $ofertaAct->getValor("afinidad") . '</td>';
echo "</tr>";
}
// Comprobamos si tenemos que mostar una paginación
$numPaginas = ceil(count($listadeOfertas) / constante("lista"));
echo "<td colspan=\"11\"><div id=\"cronopaginacion\">";
if (isset($_GET["order"]) && ($_GET["order"] != "")) {
if ($variablesExtra != "") {
$variablesExtra = "&" . $variablesExtra;
}
$variables = "byEstado=" . $tipoOfertas . "order=" . $_GET["order"] . "&modo=" . $_GET["modo"] . $variablesExtra;
echo $html->paginacion($numPaginas, $pagLista, $destinoURL, $variables, "pagLista");
} else {
$variables = "byEstado=" . $tipoOfertas . $variablesExtra;
echo $html->paginacion($numPaginas, $pagLista, $destinoURL, $variables, "pagLista");
}
echo "</div></td></tr>";
echo " </table> ";
}
echo '</div>';
?>

View File

@ -33,9 +33,10 @@ if (!isset($variablesExtra)) $variablesExtra = "";
<div style="float:left; padding-top:10px; border-top:1px solid #CCC; border-left:1px solid #CCC; border-right:1px solid #CCC;background-color:#F0F0F0">
<ul id="tabnav">
<li class="<?php if ($tipoPedidos=="0") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=0".$variablesExtra; ?>"><?php echo $locale['1067']; ?></a></li>
<li class="<?php if ($tipoPedidos=="10") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=10".$variablesExtra; ?>"><?php echo nombre_estado_pedido("10"); ?></a></li>
<li class="<?php if ($tipoPedidos=="20") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=20".$variablesExtra; ?>"><?php echo nombre_estado_pedido("20"); ?></a></li>
<li class="<?php if ($tipoPedidos=="30") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=30".$variablesExtra; ?>"><?php echo nombre_estado_pedido("30"); ?></a></li>
<li class="<?php if ($tipoPedidos=="110") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=110".$variablesExtra; ?>"><?php echo nombre_estado_pedido("110"); ?></a></li>
<li class="<?php if ($tipoPedidos=="120") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=120".$variablesExtra; ?>"><?php echo nombre_estado_pedido("120"); ?></a></li>
<li class="<?php if ($tipoPedidos=="130") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=130".$variablesExtra; ?>"><?php echo nombre_estado_pedido("130"); ?></a></li>
<li class="<?php if ($tipoPedidos=="140") echo "activo"; else echo "inactivo";?>"><a href="<?php echo $destinoURL."?byEstado=140".$variablesExtra; ?>"><?php echo nombre_estado_pedido("140"); ?></a></li>
</ul>
</div>
<div style="float:left;padding-top:11px;">
@ -113,24 +114,22 @@ echo " <td align=\"center\">".$locale['1524']."<br />" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=asc".$variablesExtra."\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=desc".$variablesExtra."\" ><img src=\"css/desc.png\" /></a></td>";
// Número de personas
// Número de ofertas
$orderView="empleados";
echo " <td align=\"center\">".$locale['1024']."<br />" .
echo " <td align=\"center\">".$locale['287']."<br />" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=asc".$variablesExtra."\" ><img src=\"css/asc.png\" /></a>" .
" <a href=\"".$destinoURL."?byEstado=".$tipoPedidos."&order=".$orderView."&modo=desc".$variablesExtra."\" ><img src=\"css/desc.png\" /></a></td>";
// Candidatos asignados
echo " <td align=\"center\">".$locale['287']."</td>";
echo "</tr>";
// Vamos mostrando petición por petición
$listadePedidos=$listaPedidos->getPedidos();
if($_GET['pagLista']>0){
$pagLista=$_GET['pagLista'];
}else{
$pagLista = "1";
if (!empty($_GET['pagLista']) && ($_GET['pagLista'] > 0)) {
$pagLista = $_GET['pagLista'];
}
// Vemos si tiene pedidos
if(count($listadePedidos)==0){
echo "<tr><td colspan=\"11\" align=\"center\">no tiene solicitudes de oferta</td></tr></table>";
@ -172,7 +171,6 @@ if(count($listadePedidos)==0){
echo '</td>';
echo '<td align="center">'.$pedidoAct->getValor("empleados").'</td>';
echo '<td align="center">'.$pedidoAct->dameNumCand("Aceptado").'</td>';
echo "</tr>";
}
// Comprobamos si tenemos que mostar una paginación

271
ver_oferta.php Normal file
View File

@ -0,0 +1,271 @@
<?php
include_once("Objects/Oferta.php");
include_once("seguridad.php");
$usuario = $_SESSION['usuario'];
$oferta = new Oferta($idOferta, $usuario);
include_once("html/cabecera.php");
include_once("Objects/Administracion.php");
$administracion = new Administracion($usuario, $locale);
$constantes = $administracion->getItem("constantes");
$mostrarTabla = $constantes['candPagina'];
$altoScroll = 83 / 2 * $mostrarTabla;
?>
<?php
include_once("Objects/HTML.php");
$html = new HTML($locale);
// Comprogamos si hay error de semaforo activo
if (isset($_GET["msgSem"]) && ($_GET["msgSem"] != "")) {
$mensajeSemaforo = $semaforo->getMensaje($_GET["msgSem"]);
echo "<div class=\"aviso semaforo\">" . $mensajeSemaforo . "</div>";
}
$action = (isset($_GET['action']) && ($_GET['action'] != "")) ? $_GET['action'] : "";
if (!empty($action)) {
$error = false;
$mensaje = "";
switch ($action) {
case "aceptar":
if (!empty($_GET['idCand'])) {
try {
$idCand = $_GET['idCand'];
$estado = $oferta->colocarCandidato($idCand);
if ($estado) {
$tipo = "ok";
$mensaje = "El candidato se ha asignado a la oferta";
} else {
$tipo = "error";
$mensaje = "No se ha podido asignar el candidato a la oferta";
}
} catch (Exception $e) {
$mensaje = $e->getMessage();
$tipo = "error";
}
} else {
$tipo = "error";
$mensaje = $locale['1053'];
}
break;
case "cambEst": if (!empty($_GET['idEst'])) {
$idEstado = $_GET['idEst'];
try {
$camb = $oferta->transita($idEstado, "");
if ($camb) {
$tipo = "ok";
$mensaje = $locale['1072'];
} else {
$tipo = "error";
$mensaje = $locale['1073'];
}
} catch (Exception $e) {
$mensaje = $e->getMessage();
$tipo = "error";
}
}
break;
default: $error = true;
$mensaje = $locale['1057'];
break;
}
if ($mensaje != "") {
// Mostramos el mensaje
echo "<div class=\"aviso " . $tipo . "\">" . $mensaje . "</div>";
}
}
if (($oferta->getValor("estado") == 110) || ($oferta->getValor("estado") == 120)) {
echo $html->menuOfertas($usuario, array(""));
} else
echo $html->menuOfertas($usuario, "gestionar");
?>
<h2><?php echo $oferta->getValor("nombre"); ?></h2>
<?php
// Comprobamos mensajes que pueden llegar hasta aqui
if (isset($_GET["msg"])) {
switch ($_GET['msg']) {
case "1": $mensaje = "<div class=\"aviso ok\">" . $locale['1061'] . "</div>";
break;
default:
break;
}
} else {
$mensaje = "";
}
echo $mensaje;
?>
<table width="100%">
<tr><td>
<table width="100%">
<tr>
<td class="nombre"><?php echo $locale['5106']; ?></td>
<td><?php echo $oferta->getValor("referencia"); ?></td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['1025']; ?></td>
<td><?php echo $oferta->getValor("nombre_solicitud"); ?></td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['132']; ?></td>
<td><?php echo $oferta->getValor("nombre_estado"); ?>
<div id="obsCambioEst" class="obsCambioEst">
<form id="formCambEst" action="oferta.php?idOferta=<?php echo $oferta->getValor("oid"); ?>&action=cambEstObs" method="post" >
<input type="hidden" name="action" value="cambEstObs" />
<input type="hidden" name="idEstado" id="idEstado" />
</form>
</div>
<?php
if ($oferta->getValor("msgEstado") != "") {
echo " -> " . $oferta->getValor("msgEstado");
}
echo "<br />";
$estadosSiguientes = $oferta->getSiguientes();
foreach ($estadosSiguientes as $codEstado => $nombreEstado) {
?>
<input class="button" name="cambEstado" type="button" value="<?php echo $locale['2104'] . $nombreEstado; ?>"
onClick="javascript:document.location='oferta.php?idOferta=<?php echo $oferta->getValor("oid"); ?>&action=cambEst&idEst=<?php echo $codEstado; ?>'"
style="width:200px; margin-bottom:5px"><br />
<?php
}
?>
</td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['5107']; ?></td>
<td><?php echo nl2br($oferta->getValor("nombre_candidato")); ?></td>
</tr>
<tr>
<td class="nombre"><?php echo $locale['135']; ?></td>
<td><?php echo nl2br($oferta->getValor("observaciones")); ?></td>
</tr>
</table>
</td></tr>
</table>
<br/>
<?php
if (($oferta->getValor("estado") == 110)) {
?>
<table width="100%">
<?php
$listaCandidatos = $oferta->getCandidatosDisponibles()->getCandidatos();
if (!empty($listaCandidatos)) {
?>
<tr> <!-- Tabla de candidatos -->
<td>
<h3><span class="nombre">Candidatos disponibles</span></h3>
<table width="100%" class="listaPropuestos">
<thead>
<tr class="nombre">
<th><?php echo $locale['2014']; ?></th>
<th><?php echo $locale['704']; ?></th>
<th><?php echo $locale['202']; ?></th>
<th><?php echo $locale['1052']; ?></th>
<th><?php echo $locale['203']; ?></th>
<th><?php echo $locale['206']; ?></th>
</tr>
</thead>
<?php
echo "<tbody>";
$final = count($listaCandidatos);
for ($i = 0; $i < $final; $i++) {
$candidato = $listaCandidatos[$i];
?>
<tr>
<td class="centrado">
<?php
$candActual = $oferta->getValor("candidato");
if (!empty($candActual)) {
echo "<a href=\"#\" onclick=\"cambiarCandidato('oferta.php?idOferta=".$oferta->getValor("oid")."&action=aceptar&idCand=".$candidato->getValor("oid")."')\">";
}
else {
echo "<a href='oferta.php?idOferta=".$oferta->getValor("oid")."&action=aceptar&idCand=".$candidato->getValor("oid")."'>";
}
?>
<img src='css/accept.png' title="<?php echo $locale['1047']; ?>" />
</a>
</td>
<td>
<a href="detalle_persona.php?oid=<?php echo $candidato->getValor("oid"); ?>" target=popup onclick=window.open('', 'popup', ',',',',',',',','width = 600, height = 800')><?php echo $candidato->getValor("nombre") . " " . $candidato->getValor("apellidos"); ?></a>
</td>
<td>
<?php
$perfiles = $candidato->getPerfiles();
$keylocalidades = array_values($perfiles);
// Mostramos la lista para borrar
foreach ($perfiles as $nombre => $valor) {
echo "- " . $nombre . "<br />";
}
?>
</td>
<td><?php echo $candidato->getValor("nombre_estado"); ?></td>
<td><?php
$tecnologias = rellena_lista_oid("tecnologia_usuario", "tecnologia", "tecnologia", $candidato->getValor("oid"));
if (gettype($tecnologias) != "NULL") {
foreach ($tecnologias as $tecno) {
echo $tecno . ",";
}
}
?></td>
<td>&nbsp;<?php
$idiomas = rellena_lista_oid("idioma_usuario", "idiomas", "idioma", $candidato->getValor("oid"));
if (gettype($idiomas) != "NULL") {
foreach ($idiomas as $tecno) {
echo $tecno . ",";
}
}
?></td>
</tr>
<?php
} // for
?>
</tbody>
</table>
<div id="cronopaginacion"><?php echo $html->paginacion($numPaginas, $pagAcept, "pedido.php", "idPedido=" . $oferta->getValor("oid"), "pagAcept"); ?></div>
</td>
</tr>
<?php
} // if
?>
<?php
}
?>
<tr align="center"> <!-- HISTORIAL -->
<td ><a name="historial"><?php echo $locale['127']; ?></a><br />
<textarea name="historial" readonly rows="8" cols="90" maxlength="300" style="overflow: auto;width:100%"><?php echo $oferta->getHistorial(); ?></textarea>
</td>
</tr>
</table>
<?php include_once("html/pie.php"); ?>

View File

@ -1,5 +1,6 @@
<?php
include_once("Objects/Pedido.php");
include_once("Objects/ListaOfertas.php");
include_once("seguridad.php");
$usuario = $_SESSION['usuario'];
//$pedido=new Pedido($idPedido,$usuario);
@ -18,6 +19,7 @@ $constantes=$administracion->getItem("constantes");
$mostrarTabla = $constantes['candPagina'];
$altoScroll = 83 / 2 * $mostrarTabla;
?>
<style type="text/css">
.listaPropuestos{
border-collapse:separate;
@ -27,11 +29,13 @@ $altoScroll=83/2 * $mostrarTabla;
overflow-x:hidden;
}
</style>
<?php
include_once("Objects/HTML.php");
$html = new HTML($locale);
// Constantes para la p<>gina
$pagAcept = isset($_GET["pagAcept"]) && ($_GET["pagAcept"] != "") ? $_GET["pagAcept"] : "1";
$pagProp = isset($_GET["pagProp"]) && ($_GET["pagProp"] != "") ? $_GET["pagProp"] : "1";
@ -42,39 +46,14 @@ if (isset($_GET["msgSem"]) && ($_GET["msgSem"]!="")) {
$mensajeSemaforo = $semaforo->getMensaje($_GET["msgSem"]);
echo "<div class=\"aviso semaforo\">" . $mensajeSemaforo . "</div>";
}
/* PROYECTOS.PHP */
//menu_pedidos("");
// MEN<45>
if($pedido->getValor("estado")==40){
echo $html->menuPedidos($usuario,array("gestionar"));
} elseif (!$usuario->tieneRol("3")) {
echo $html->menuPedidos($usuario,array("gestionar"));
}else
echo $html->menuPedidos($usuario,"");
// Comprobamos mensajes que pueden llegar hasta aqui
if (isset($_GET["msg"])) {
switch ($_GET['msg']) {
case "1": $mensaje="<div class=\"aviso ok\">".$locale['1061']."</div>";
break;
default:
break;
}
} else {
$mensaje = "";
}
?>
<link href="css/tablas.css" rel="stylesheet" type="text/css">
<h2><?php echo $pedido->getValor("nombre"); ?></h2>
<?php echo $mensaje;
<?php
// Comprobamos si tenemos que aceptar o rechazar un candidato
$action = (isset($_GET['action']) && ($_GET['action'] != "")) ? $_GET['action'] : "";
$action = (isset($_POST['action']) && ($_POST['action']!="")) ? $_POST['action'] : "";
//$action = (isset($_POST['action']) && ($_POST['action']!="")) ? $_POST['action'] : "";
if ($action != "") {
$error = false;
@ -174,7 +153,39 @@ if($mensaje!=""){
}
}
?>
<table width="100%"><tr><td>
<?php
//menu_pedidos("");
// MEN<45>
if ($pedido->getValor("estado") == 130) {
echo $html->menuPedidos($usuario, array("gestionar", "nueva_oferta"));
} elseif (!$usuario->tieneRol("3")) {
echo $html->menuPedidos($usuario, array("gestionar"));
} else
echo $html->menuPedidos($usuario, "");
?>
<h2><?php echo $pedido->getValor("nombre"); ?></h2>
<?php
// Comprobamos mensajes que pueden llegar hasta aqui
if (isset($_GET["msg"])) {
switch ($_GET['msg']) {
case "1": $mensaje = "<div class=\"aviso ok\">" . $locale['1061'] . "</div>";
break;
default:
break;
}
} else {
$mensaje = "";
}
echo $mensaje;
?>
<table width="100%">
<tr><td>
<table width="100%">
<tr>
<td class="nombre"><?php echo $locale['1010']; ?></td>
@ -250,7 +261,8 @@ if($mensaje!=""){
}
} else {
?>
<span class="errorcampo"><?php if($pedido->getValor("pesoIdioma") > 0) echo $locale['1097'];?></span><br />
<span class="errorcampo"><?php if ($pedido->getValor("pesoIdioma") > 0)
echo $locale['1097']; ?></span><br />
<?php
}
?></td>
@ -263,7 +275,8 @@ if($mensaje!=""){
}
} else {
?>
<span class="errorcampo"><?php if($pedido->getValor("pesoTecno") > 0) echo $locale['1097'];?></span><br />
<span class="errorcampo"><?php if ($pedido->getValor("pesoTecno") > 0)
echo $locale['1097']; ?></span><br />
<?php
}
?></td>
@ -288,7 +301,6 @@ if($mensaje!=""){
echo $locale['1078'] . "( " . $pedido->getValor("pesoTecno") . "% ) - ";
echo $locale['1079'] . "( " . $pedido->getValor("pesoIdioma") . "% ) - ";
echo $locale['1080'] . "( " . $pedido->getValor("pesoPerfil") . "% )";
?></td>
</tr>
<tr>
@ -297,430 +309,68 @@ if($mensaje!=""){
</tr>
</table>
</td></tr>
<tr><td>
<!-- Tabla de candidatos aceptados -->
<h3><span class="nombre"><?php echo $locale['1046']; ?></span></h3>
<table width="100%" class="listaPropuestos">
</table>
<br/>
<h3><span class="nombre"><?php echo $locale['5100']; ?></span></h3>
<table width="100%">
<thead>
<tr class="nombre">
<th><?php echo $locale['704']; ?></th>
<th><?php echo $locale['202']; ?></th>
<th><?php echo $locale['1052']; ?></th>
<th><?php echo $locale['2105']; ?></th>
<th><?php echo $locale['203']; ?></th>
<th><?php echo $locale['206']; ?></th>
<th><?php echo $locale['1015']; ?></th>
<th><?php echo $locale['2014']; ?></th>
<th><?php echo $locale['5106']; ?></th>
<th><?php echo $locale['1021']; ?></th>
<th><?php echo $locale['1102']; ?></th>
<th><?php echo $locale['5107']; ?></th>
</tr>
</thead>
<?php
$listaCandidatos = $pedido->getCandidatosAceptados();
if(gettype($listaCandidatos)=="NULL"){
?>
<tbody>
<tr>
<td colspan="8"><?php echo $locale['1049']; ?></td>
</tr>
<?php
$oidPedido = $pedido->getValor("oid");
// sacado de http://patrickallaert.blogspot.com/2007/09/building-dynamic-sql-queries-elegant.html
$cond = array();
$cond[] = "pedido = '$oidPedido'";
$orden = array();
$orden[] = "referencia";
$listaOfertas = new ListaOfertas($usuario, $cond, $orden);
$ofertas = $listaOfertas->getOfertas();
// Vemos si tiene ofertas
$totalOfertas = count($ofertas);
if ($totalOfertas == 0) {
echo "<tr><td colspan=\"11\" align=\"center\">Esta solicitud no tiene ofertas</td></tr>";
} else {
echo "<tbody>";
/*if(count($listaCandidatos)<$mostrarTabla)
echo "<tbody>";
else
echo "<tbody style=\"height: ".$altoScroll."px;\">";
*/
$final=count($listaCandidatos);
for($i=0;$i<$final;$i++){
$candidato=$listaCandidatos[$i];
?>
<tr>
<td>
<a onclick="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" ondblclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="<?php echo (($candidato->getValor("obsGerente")!="") || ($candidato->getValor("obsRRHH")!=""))? "css/coment.png" : "css/add_coment.png"; ?>" /></a>
<div id="obs-<?php echo $candidato->getValor("oid"); ?>" class="capaObs" onmouseover="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="css/dell.png" onclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" style="padding:2px 10px 2px 0px ">
<table width="550" bgcolor="#999999" style="border-collapse:separate ">
<tr>
<td width="50%"><b>Comentario de RRHH</b></td>
<td width="50%"><b>Comentario del Gerente</b></td>
</tr>
<tr>
<td width="50%"><textarea name="obs" readonly class="obsPropuesta" ><?php echo $candidato->getValor("obsRRHH"); ?></textarea></td>
<td width="50%">
<form action="pedido.php?idPedido=<?php echo $idPedido; ?>" method="post">
<input type="hidden" name="action" value="addComent">
<input type="hidden" name="idCandidato" value="<?php echo $candidato->getValor("oid"); ?>">
<textarea name="obs" class="obsPropuesta" ><?php echo $candidato->getValor("obsGerente"); ?></textarea>
<input class="button" style="border-color:#000000; " type="submit" value="comentar" >
</form>
</td>
</tr>
</table>
</div>
<a href="detalle_persona.php?oid=<?php echo $candidato->getValor("oid"); ?>" target=popup onclick=window.open('', 'popup', ',',',',',',',','width = 600, height = 800')><?php echo $candidato->getValor("nombre")." ".$candidato->getValor("apellidos"); ?></a></td>
<td>&nbsp;
<?php
$perfiles=$candidato->getPerfiles();
$keylocalidades=array_values($perfiles);
// Mostramos la lista para borrar
foreach ($perfiles as $nombre =>$valor) {
echo "- ".$nombre."<br />";
}
?>
</td>
<td>&nbsp;<?php echo $candidato->getValor("estado_usuario"); ?></td>
<td>&nbsp;<?php echo $candidato->getValor("fecha"); ?></td>
<td>&nbsp;<?php
$tecnologias=rellena_lista_oid("tecnologia_usuario", "tecnologia", "tecnologia", $candidato->getValor("oid"));
if(gettype($tecnologias)!="NULL"){
foreach($tecnologias as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php
$idiomas=rellena_lista_oid("idioma_usuario", "idiomas", "idioma", $candidato->getValor("oid"));
if(gettype($idiomas)!="NULL"){
foreach($idiomas as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php echo $candidato->getValor("afinidad"); ?></td>
<td class="centrado"><a href="pedido.php?idPedido=<?php echo $pedido->getValor("oid"); ?>&action=dell&idCand=<?php echo $candidato->getValor("oid"); ?>" ><img src="css/dell.png" title="<?php echo $locale['1048'];?>" /></a>
</td>
</tr>
for ($i = 0; $i < $totalOfertas; $i++) {
$ofertaAct = $ofertas[$i];
<?php
} // for
} // if
?>
</tbody>
</table>
<div id="cronopaginacion"><?php echo $html->paginacion($numPaginas, $pagAcept,"pedido.php","idPedido=".$pedido->getValor("oid"),"pagAcept"); ?></div>
</td>
</tr>
<tr>
<td>
<!-- Lista de candidatos propuestos por RRHH -->
<h3><span class="nombre"><?php echo $locale['1071']; ?></span></h3>
<table width="100%" class="listaPropuestos">
<thead>
<tr class="nombre">
<th><?php echo $locale['704']; ?></th>
<th><?php echo $locale['202']; ?></th>
<th><?php echo $locale['1052']; ?></th>
<th><?php echo $locale['2106']; ?></th>
<th><?php echo $locale['203']; ?></th>
<th><?php echo $locale['206']; ?></th>
<th><?php echo $locale['1015']; ?></th>
<th><?php echo $locale['2014']; ?></th>
</tr>
</thead>
<?php
$listaCandidatos = $pedido->getCandidatosPropuestosRRHH();
if(gettype($listaCandidatos)=="NULL"){
?>
<tbody>
<tr>
<td colspan="8"><?php echo $locale['1050']; ?></td>
</tr>
<?php
echo "<tr>";
/*if (($ofertaAct->getValor("gerente") == $usuario->getValor("oid")) || $usuario->tieneRol("1")) {
// Es el gerente de ese pedido, puede editarlo y eliminarlo
echo '<td align="center"><a href="gestion_pedido.php?idPedido=' . $ofertaAct->getValor("oid") . '"><img src="css/edit.png" title="' . $locale['2017'] . '"/></a></td>';
echo "<td align=\"center\"><a href=\"#\" onclick=eliminarPedido('" . $ofertaAct->getValor("oid") . "') ><img src=\"css/eliminar.png\" title=\"" . $locale['2016'] . "\"/></a></td>";
} else {
echo "<tbody>";
/*if(count($listaCandidatos)<$mostrarTabla)
echo "<tbody>";
else
echo "<tbody style=\"height: ".$altoScroll."px;\">";
*/
$final=count($listaCandidatos);
for($i=0;$i<$final;$i++){
$candidato=$listaCandidatos[$i];
?>
<tr>
<?php
// No es el gerente no puede ni editarlo ni eliminarlo
echo '<td></td><td></td>';
}*/
echo '<td align="center"><a href="oferta.php?idOferta=' . $ofertaAct->getValor("oid") . '"><img src="css/brick_go.png" title="' . $locale['2015'] . '" /></a></td>';
echo '<td align="center"><a href="oferta.php?idOferta=' . $ofertaAct->getValor("referencia") . '">'.$ofertaAct->getValor("referencia").'</a></td>';
echo '<td align="center">' . $ofertaAct->getValor("fecha") . '</td>';
echo '<td align="center">' . $ofertaAct->getValor("nombre_estado") . '</td>';
echo '<td align="center"><a href="/detalle_candidato.php?oid=' . $ofertaAct->getValor("candidato") . '">' . $ofertaAct->getValor("nombre_candidato") . '</td>';
echo "</tr>";
}
}
?>
<td>&nbsp;
<a onclick="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" ondblclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="<?php echo (($candidato->getValor("obsGerente")!="") || ($candidato->getValor("obsRRHH")!=""))? "css/coment.png" : "css/add_coment.png"; ?>" /></a>
<div id="obs-<?php echo $candidato->getValor("oid"); ?>" class="capaObs" onmouseover="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="css/dell.png" onclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" style="padding:2px 10px 2px 0px ">
<table width="550" bgcolor="#999999" style="border-collapse:separate ">
<tr>
<td width="50%"><b>Comentario de RRHH</b></td>
<td width="50%"><b>Comentario del Gerente</b></td>
</tr>
<tr>
<td width="50%"><textarea name="obs" readonly class="obsPropuesta" ><?php echo $candidato->getValor("obsRRHH"); ?></textarea></td>
<td width="50%">
<form action="pedido.php?idPedido=<?php echo $idPedido; ?>" method="post">
<input type="hidden" name="action" value="addComent">
<input type="hidden" name="idCandidato" value="<?php echo $candidato->getValor("oid"); ?>">
<textarea name="obs" class="obsPropuesta" ><?php echo $candidato->getValor("obsGerente"); ?></textarea>
<input class="button" style="border-color:#000000; " type="submit" value="comentar" >
</form>
</td>
</tr>
</table>
</div>
<a href="detalle_persona.php?oid=<?php echo $candidato->getValor("oid"); ?>" target=popup onclick=window.open('', 'popup', ',',',',',',',','width = 600, height = 800')><?php echo $candidato->getValor("nombre")." ".$candidato->getValor("apellidos"); ?></a></td>
<td>&nbsp;
<?php
$perfiles=$candidato->getPerfiles();
$keylocalidades=array_values($perfiles);
// Mostramos la lista para borrar
foreach ($perfiles as $nombre =>$valor) {
echo "- ".$nombre."<br />";
}
?>
</td>
<td>&nbsp;<?php echo $candidato->getValor("estado_usuario"); ?></td>
<td>&nbsp;<?php echo $candidato->getValor("fecha"); ?></td>
<td>&nbsp;<?php
$tecnologias=rellena_lista_oid("tecnologia_usuario", "tecnologia", "tecnologia", $candidato->getValor("oid"));
if(gettype($tecnologias)!="NULL"){
foreach($tecnologias as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php
$idiomas=rellena_lista_oid("idioma_usuario", "idiomas", "idioma", $candidato->getValor("oid"));
if(gettype($idiomas)!="NULL"){
foreach($idiomas as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php echo $candidato->getValor("afinidad"); ?></td>
<td class="centrado">
<a href="pedido.php?idPedido=<?php echo $pedido->getValor("oid"); ?>&action=aceptar&idCand=<?php echo $candidato->getValor("oid"); ?>" ><img src="css/accept.png" title="<?php echo $locale['1047']; ?>" /></a>
<a href="pedido.php?idPedido=<?php echo $pedido->getValor("oid"); ?>&action=dell&idCand=<?php echo $candidato->getValor("oid"); ?>" ><img src="css/dell.png" title="<?php echo $locale['1048'];?>" /></a>
</td>
</tr>
<?php
} // for
} // if
?>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<!-- Lista de candidatos propuestos por el sistema -->
<h3><span class="nombre"><?php echo $locale['1044']; ?></span></h3>
<table width="100%" class="listaPropuestos">
<thead>
<tr class="nombre">
<th><?php echo $locale['704']; ?></th>
<th><?php echo $locale['202']; ?></th>
<th><?php echo $locale['1052']; ?></th>
<th><?php echo $locale['2107']; ?></th>
<th><?php echo $locale['203']; ?></th>
<th><?php echo $locale['206']; ?></th>
<th><?php echo $locale['1015']; ?></th>
<th><?php echo $locale['2014']; ?></th>
</tr>
</thead>
<?php
$listaCandidatos = $pedido->getCandidatosPropuestos();
if(gettype($listaCandidatos)=="NULL"){
?>
<tbody>
<tr>
<td colspan="8"><?php echo $locale['1050']; ?></td>
</tr>
<?php
}else{
echo "<tbody>";
/*if(count($listaCandidatos)<$mostrarTabla)
echo "<tbody>";
else
echo "<tbody style=\"height: ".$altoScroll."px;\">";
*/
$final=count($listaCandidatos);
for($i=0;$i<$final;$i++){
$candidato=$listaCandidatos[$i];
?>
<tr>
<td>&nbsp;
<a onclick="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" ondblclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="<?php echo (($candidato->getValor("obsGerente")!="") || ($candidato->getValor("obsRRHH")!=""))? "css/coment.png" : "css/add_coment.png"; ?>" /></a>
<div id="obs-<?php echo $candidato->getValor("oid"); ?>" class="capaObs" onmouseover="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="css/dell.png" onclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" style="padding:2px 10px 2px 0px ">
<table width="550" bgcolor="#999999" style="border-collapse:separate ">
<tr>
<td width="50%"><b>Comentario de RRHH</b></td>
<td width="50%"><b>Comentario del Gerente</b></td>
</tr>
<tr>
<td width="50%"><textarea name="obs" readonly class="obsPropuesta" ><?php echo $candidato->getValor("obsRRHH"); ?></textarea></td>
<td width="50%">
<form action="pedido.php?idPedido=<?php echo $idPedido; ?>" method="post">
<input type="hidden" name="action" value="addComent">
<input type="hidden" name="idCandidato" value="<?php echo $candidato->getValor("oid"); ?>">
<textarea name="obs" class="obsPropuesta" ><?php echo $candidato->getValor("obsGerente"); ?></textarea>
<input class="button" style="border-color:#000000; " type="submit" value="comentar" >
</form>
</td>
</tr>
</table>
</div>
<a href="detalle_persona.php?oid=<?php echo $candidato->getValor("oid"); ?>" target=popup onclick=window.open('', 'popup', ',',',',',',',','width = 600, height = 800')><?php echo $candidato->getValor("nombre")." ".$candidato->getValor("apellidos"); ?></a></td>
<td>
<?php
$perfiles=$candidato->getPerfiles();
$keylocalidades=array_values($perfiles);
// Mostramos la lista para borrar
foreach ($perfiles as $nombre =>$valor) {
echo "- ".$nombre."<br />";
}
?>
</td>
<td>&nbsp;<?php echo $candidato->getValor("estado_usuario"); ?></td>
<td>&nbsp;<?php echo $candidato->getValor("fecha"); ?></td>
<td>&nbsp;<?php
$tecnologias=rellena_lista_oid("tecnologia_usuario", "tecnologia", "tecnologia", $candidato->getValor("oid"));
if(gettype($tecnologias)!="NULL"){
foreach($tecnologias as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php
$idiomas=rellena_lista_oid("idioma_usuario", "idiomas", "idioma", $candidato->getValor("oid"));
if(gettype($idiomas)!="NULL"){
foreach($idiomas as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php echo $candidato->getValor("afinidad"); ?></td>
<td class="centrado">
<a href="pedido.php?idPedido=<?php echo $pedido->getValor("oid"); ?>&action=aceptar&idCand=<?php echo $candidato->getValor("oid"); ?>" ><img src="css/accept.png" title="<?php echo $locale['1047']; ?>" /></a>
<a href="pedido.php?idPedido=<?php echo $pedido->getValor("oid"); ?>&action=dell&idCand=<?php echo $candidato->getValor("oid"); ?>" ><img src="css/dell.png" title="<?php echo $locale['1048'];?>" /></a>
</td>
</tr>
<?php
} // for
} // if
?>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
<!-- Lista de candidatos rechazados -->
<h3><span class="nombre"><?php echo $locale['1045']; ?></span></h3>
<table width="100%" class="listaPropuestos">
<thead>
<tr class="nombre">
<th><?php echo $locale['704']; ?></th>
<th><?php echo $locale['202']; ?></th>
<th><?php echo $locale['1052']; ?></th>
<th><?php echo $locale['2108']; ?></th>
<th><?php echo $locale['203']; ?></th>
<th><?php echo $locale['206']; ?></th>
<th><?php echo $locale['1015']; ?></th>
<th><?php echo $locale['2014']; ?></th>
</tr>
</thead>
<?php
$listaCandidatos = $pedido->getCandidatosRechazados();
if(gettype($listaCandidatos)=="NULL"){
?>
<tbody>
<tr>
<td colspan="8"><?php echo $locale['1051']; ?></td>
</tr>
<?php
}else{
echo "<tbody>";
/*if(count($listaCandidatos)<$mostrarTabla)
echo "<tbody>";
else
echo "<tbody style=\"height: ".$altoScroll."px;\">";
*/
$final=count($listaCandidatos);
for($i=0;$i<$final;$i++){
$candidato=$listaCandidatos[$i];
?>
<tr>
<td>&nbsp;
<a onclick="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" ondblclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="<?php echo (($candidato->getValor("obsGerente")!="") || ($candidato->getValor("obsRRHH")!=""))? "css/coment.png" : "css/add_coment.png"; ?>" /></a>
<div id="obs-<?php echo $candidato->getValor("oid"); ?>" class="capaObs" onmouseover="mostrarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')">
<img src="css/dell.png" onclick="ocultarCapa('obs-<?php echo $candidato->getValor("oid"); ?>')" style="padding:2px 10px 2px 0px ">
<table width="550" bgcolor="#999999" style="border-collapse:separate ">
<tr>
<td width="50%"><b>Comentario de RRHH</b></td>
<td width="50%"><b>Comentario del Gerente</b></td>
</tr>
<tr>
<td width="50%"><textarea name="obs" readonly class="obsPropuesta" ><?php echo $candidato->getValor("obsRRHH"); ?></textarea></td>
<td width="50%">
<form action="pedido.php?idPedido=<?php echo $idPedido; ?>" method="post">
<input type="hidden" name="action" value="addComent">
<input type="hidden" name="idCandidato" value="<?php echo $candidato->getValor("oid"); ?>">
<textarea name="obs" class="obsPropuesta" ><?php echo $candidato->getValor("obsGerente"); ?></textarea>
<input class="button" style="border-color:#000000; " type="submit" value="comentar" >
</form>
</td>
</tr>
</table>
</div>
<a href="detalle_persona.php?oid=<?php echo $candidato->getValor("oid"); ?>" target=popup onclick=window.open('', 'popup', ',',',',',',',','width = 600, height = 800')><?php echo $candidato->getValor("nombre")." ".$candidato->getValor("apellidos"); ?></a></td>
<td>&nbsp;
<?php
$perfiles=$candidato->getPerfiles();
$keylocalidades=array_values($perfiles);
// Mostramos la lista para borrar
foreach ($perfiles as $nombre =>$valor) {
echo "- ".$nombre."<br />";
}
?>
</td>
<td>&nbsp;<?php echo $candidato->getValor("estado_usuario"); ?></td>
<td>&nbsp;<?php echo $candidato->getValor("fecha"); ?></td>
<td>&nbsp;<?php
$tecnologias=rellena_lista_oid("tecnologia_usuario", "tecnologia", "tecnologia", $candidato->getValor("oid"));
if(gettype($tecnologias)!="NULL"){
foreach($tecnologias as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php
$idiomas=rellena_lista_oid("idioma_usuario", "idiomas", "idioma", $candidato->getValor("oid"));
if(gettype($idiomas)!="NULL"){
foreach($idiomas as $tecno){
echo $tecno.",";
}
}
?></td>
<td>&nbsp;<?php echo $candidato->getValor("afinidad"); ?></td>
<td class="centrado">
<a href="pedido.php?idPedido=<?php echo $pedido->getValor("oid"); ?>&action=aceptar&idCand=<?php echo $candidato->getValor("oid"); ?>" ><img src="css/accept.png" title="<?php echo $locale['1047']; ?>" /></a>
</td>
</tr>
<?php
} // for
} // if
?>
</tbody>
</table>
</td>
</tr>
<tr align="center">
<br/>
<table>
<tr align="center"> <!-- HISTORIAL -->
<td ><a name="historial"><?php echo $locale['127']; ?></a><br />
<textarea name="historial" readonly rows="8" cols="90" maxlength="300" style="overflow: auto;width:100%"><?php echo $pedido->getHistorial(); ?></textarea>
</td>