Changeset 2056


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

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

Location:
trunk/workflow
Files:
4 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); 
  • trunk/workflow/inc/class.so_userinterface.inc.php

    r2048 r2056  
    234234 
    235235                /* gather some info from the area */ 
    236                 $areaInfo = $this->db->query('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 USING(area_id) WHERE (a.organizacao_id = ?) AND (a.area_id = ?) AND ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) OR (s.substituicao_id IS NULL))', array($organizationID, $areaID))->GetArray(-1); 
     236                $areaInfo = $this->db->query('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 (a.organizacao_id = ?) AND (a.area_id = ?)', array($organizationID, $areaID))->GetArray(-1); 
    237237                if (empty($areaInfo)) 
    238238                        return false; 
     
    509509        function getAreaWithSubtituteBoss( $organizationID ) 
    510510        { 
    511                 $result = $this -> db -> query( "SELECT a.sigla as area, a.titular_funcionario_id as titular, s.funcionario_id as substituto, s.data_inicio, s.data_fim FROM area a INNER JOIN substituicao s USING (area_id) WHERE (organizacao_id = ?) and CURRENT_DATE BETWEEN data_inicio AND data_fim ORDER BY area", array( $organizationID ) ); 
     511                $result = $this -> db -> query( "SELECT a.sigla as area, a.titular_funcionario_id as titular, s.funcionario_id as substituto, s.data_inicio, s.data_fim FROM area a INNER JOIN substituicao s ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) WHERE (organizacao_id = ?) ORDER BY area", array( $organizationID ) ); 
    512512 
    513513                $cachedLDAP = $GLOBALS[ 'workflow' ][ 'factory' ] -> newInstance( 'CachedLDAP' ); 
  • trunk/workflow/inc/local/classes/class.wf_orgchart.php

    r2042 r2056  
    139139                                 " FROM area a " . 
    140140                                 "  LEFT OUTER JOIN substituicao s " . 
    141                                  "  USING(area_id) " . 
     141                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
    142142                                 " WHERE " .  
    143143                                 "      (a.organizacao_id = ?) " . 
    144                                  " AND " .  
    145                                  "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
    146                                  "      OR " .  
    147                                  "      (s.substituicao_id is null)) " . 
    148144                                 " ORDER BY a.sigla, a.descricao"; 
    149145 
     
    334330                                 " FROM area a " . 
    335331                                 "  LEFT OUTER JOIN substituicao s " . 
    336                                  "  USING(area_id) " . 
     332                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
    337333                                 " WHERE " .  
    338334                                 "      (a.area_id = ?) " . 
    339                                  " AND " .  
    340                                  "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
    341                                  "      OR " .  
    342                                  "      (s.substituicao_id is null)) " . 
    343335                                 " ORDER BY a.sigla, a.descricao"; 
    344336 
     
    381373                                 " FROM area a " . 
    382374                                 "  LEFT OUTER JOIN substituicao s " . 
    383                                  "  USING(area_id) " . 
     375                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
    384376                                 " WHERE " .  
    385377                                 "      (UPPER(a.sigla) = UPPER(?)) " . 
    386378                                 " AND " .  
    387379                                 "      (a.organizacao_id = ?) " . 
    388                                  " AND " .  
    389                                  "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
    390                                  "      OR " .  
    391                                  "      (s.substituicao_id is null)) " . 
    392380                                 " ORDER BY a.sigla, a.descricao"; 
    393381 
     
    431419                                 " FROM area a " . 
    432420                                 "  LEFT OUTER JOIN substituicao s " . 
    433                                  "  USING(area_id) " . 
     421                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
    434422                                 " WHERE " .  
    435423                                 "      (a.area_status_id = ?) " . 
    436                                  " AND " .  
    437                                  "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
    438                                  "      OR " .  
    439                                  "      (s.substituicao_id is null)) " . 
    440424                                 " ORDER BY a.sigla, a.descricao"; 
    441425 
     
    483467                                 " FROM area a " . 
    484468                                 "  LEFT OUTER JOIN substituicao s " . 
    485                                  "  USING(area_id) " . 
     469                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
    486470                                 " WHERE " .  
    487471                                 "      (a.area_id IN ($areas)) " . 
    488                                  " AND " .  
    489                                  "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
    490                                  "      OR " .  
    491                                  "      (s.substituicao_id is null)) " . 
    492472                                 " ORDER BY a.sigla, a.descricao"; 
    493473 
     
    561541                                 " FROM area a " . 
    562542                                 "  LEFT OUTER JOIN substituicao s " . 
    563                                  "  USING(area_id) " . 
     543                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
    564544                                 " WHERE " .  
    565                                  "      (a.superior_area_id = ?) " . 
    566                                  " AND " .  
    567                                  "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
    568                                  "      OR " .  
    569                                  "      (s.substituicao_id is null)) "; 
     545                                 "      (a.superior_area_id = ?) "; 
    570546 
    571547 
  • trunk/workflow/js/orgchart/organization.js

    r2042 r2056  
    884884 
    885885                                // get the list of substitutions 
    886                                 objSubstitution.generateUpdateTable({'organization_id': organizationID, 'area_id': $(area_id).value}, divLB); 
     886                                objSubstitution.generateUpdateTable({'organizacao_id': organizationID, 'area_id': $(area_id).value}, divLB); 
    887887                        } 
    888888                        objArea.list(info_callback, {'organizacao_id': organizationID, 'area_id': $(area_id).value}); 
Note: See TracChangeset for help on using the changeset viewer.