Ignore:
Timestamp:
02/23/10 15:28:20 (14 years ago)
Author:
pedroerp
Message:

Ticket #441 - Corrigindo erro de lógica em algumas consultas.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/workflow/inc/class.so_orgchart.inc.php

    r2042 r2056  
    699699                $this->_checkAccess($organizationID); 
    700700 
    701                 $supervisors = '{' . implode(', ', $this->db->GetRow('SELECT COALESCE(titular_funcionario_id, -1) AS titular_funcionario_id, COALESCE(substituto_funcionario_id, -1) AS substituto_funcionario_id FROM area WHERE (area_id = ?) AND (organizacao_id = ?)', array($areaID, $organizationID))) . '}'; 
     701                $supervisors = '{' . implode(', ', $this->db->GetRow('SELECT COALESCE(a.titular_funcionario_id, -1) AS titular_funcionario_id, COALESCE(s.funcionario_id, -1) AS substituto_funcionario_id FROM area a LEFT OUTER JOIN substituicao s ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) WHERE (area_id = ?) AND (organizacao_id = ?)', array($areaID, $organizationID))) . '}'; 
    702702                $query = "SELECT funcionario_id, funcionario_status_id, centro_custo_id, localidade_id, organizacao_id, area_id, cargo_id, nivel, funcionario_categoria_id, titulo FROM funcionario WHERE ((area_id = ?) AND (organizacao_id = ?)) OR (funcionario_id = ANY (?))"; 
    703703                $result = $this->db->query($query, array($areaID, $organizationID, $supervisors)); 
     
    863863                $this->_checkAccess($organizationID); 
    864864 
    865                 $query = 'SELECT sigla FROM area WHERE (? IN (titular_funcionario_id, substituto_funcionario_id, auxiliar_funcionario_id))'; 
     865                $query = 'SELECT DISTINCT(a.sigla) FROM area a LEFT OUTER JOIN substituicao s USING (area_id) WHERE (? IN (a.titular_funcionario_id, s.funcionario_id, a.auxiliar_funcionario_id))'; 
    866866                $areas = array(); 
    867867                $resultSet = $this->db->query($query, $employeeID); 
     
    871871                { 
    872872                        $errors = array( 
    873                                 "O funcionário \"" . $GLOBALS['workflow']['factory']->getInstance('WorkflowLDAP')->getName($employeeID) . "\" é titular, substituto ou auxiliar administrativo das seguintes áreas: " . implode(", ", $areas), 
     873                                "O funcionário \"" . $GLOBALS['workflow']['factory']->getInstance('WorkflowLDAP')->getName($employeeID) . "\" é titular, substituto, já participou de substituição ou é auxiliar administrativo das seguintes áreas: " . implode(", ", $areas), 
    874874                                '-----------------', 
    875875                                'Se você quiser excluir este funcionário, precisa removê-lo dos "cargos" que ele possui nas áreas citadas.' 
     
    901901                $area_condition = ""; 
    902902                if (($areaID != -1) && !empty($areaID)) { 
    903                         $area_condition = " AND area_id = ? "; 
     903                        $area_condition = " AND a.area_id = ? "; 
    904904                        $values[]= $areaID; 
    905905                } 
    906906 
    907                 $query = "SELECT area_id, centro_custo_id, organizacao_id, area_status_id, titular_funcionario_id, superior_area_id, sigla, descricao, ativa, auxiliar_funcionario_id FROM area WHERE organizacao_id = ? " . $area_condition . " ORDER BY sigla"; 
     907                $query = "SELECT a.area_id, a.centro_custo_id, a.organizacao_id, a.area_status_id, a.titular_funcionario_id, a.superior_area_id, a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, s.funcionario_id as substituto_funcionario_id FROM area a LEFT OUTER JOIN substituicao s ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) WHERE organizacao_id = ? " . $area_condition . " ORDER BY sigla"; 
    908908                $result = $this->db->query($query, $values); 
    909909                $this->_checkError($result); 
Note: See TracChangeset for help on using the changeset viewer.