Ignore:
Timestamp:
08/17/10 16:17:12 (14 years ago)
Author:
viani
Message:

Ticket #1135 - Merged r1990:3166 from /trunk/workflow into /branches/2.2/workflow

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2/workflow/inc/local/classes/class.wf_orgchart.php

    r1320 r3167  
    2424        function wf_orgchart() 
    2525        { 
    26                 $this->db = &$GLOBALS['workflow']['workflowObjects']->getDBWorkflow()->Link_ID; 
     26                $this->db = &Factory::getInstance('WorkflowObjects')->getDBWorkflow()->Link_ID; 
    2727                $this->db->setFetchMode(ADODB_FETCH_ASSOC); 
    2828        } 
     
    117117         * Este método irá buscar na tabela de áreas, todas as áreas que pertencem à organização solicitada. 
    118118         * @param int $organizationID O ID da organização. 
     119         * @param int $onlyActiveAreas false= recupera todas as áreas; true= recupera somente as áreas ativas. 
    119120         * @return array Uma array seqüencial contendo as áreas de uma organização. Cada linha do array conterá: 
    120121         * - organizacao_id 
     
    131132         * @access public 
    132133         */ 
    133         function getOrganizationAreas($organizationID) 
    134         { 
    135                 $query = "SELECT organizacao_id, area_id, area_status_id, " . 
    136                                  "       superior_area_id, centro_custo_id, titular_funcionario_id," . 
    137                                  "       substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 
    138                                  "  FROM area" . 
    139                                  " WHERE (organizacao_id = ?)" . 
    140                                  " ORDER BY sigla, descricao"; 
     134        function getOrganizationAreas($organizationID, $onlyActiveAreas = false) 
     135        { 
     136                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     137                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     138                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     139                                 "               s.funcionario_id as substituto_funcionario_id " . 
     140                                 " FROM area a " . 
     141                                 "  LEFT OUTER JOIN substituicao s " . 
     142                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
     143                                 " WHERE " . 
     144                                 "      (a.organizacao_id = ?) "; 
     145                // Se desejar somente retornar as áreas que estão ativas 
     146                if($onlyActiveAreas) 
     147                        $query .=" AND a.ativa = 'S' "; 
     148 
     149                $query .= " ORDER BY a.sigla, a.descricao"; 
    141150 
    142151                $result = $this->db->query($query, array($organizationID)); 
     
    320329        function getArea($areaID) 
    321330        { 
    322                 $query = "SELECT organizacao_id, area_id, area_status_id, " . 
    323                                  "       superior_area_id, centro_custo_id, titular_funcionario_id," . 
    324                                  "       substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 
    325                                  "  FROM area" . 
    326                                  " WHERE (area_id = ?)"; 
     331                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     332                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     333                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     334                                 "               s.funcionario_id as substituto_funcionario_id " . 
     335                                 " FROM area a " . 
     336                                 "  LEFT OUTER JOIN substituicao s " . 
     337                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
     338                                 " WHERE " . 
     339                                 "      (a.area_id = ?) " . 
     340                                 " ORDER BY a.sigla, a.descricao"; 
     341 
    327342 
    328343                $result = $this->db->query($query, array($areaID)); 
     
    357372        function getAreaByName($acronym, $organizationID = 1) 
    358373        { 
    359                 $query = "SELECT organizacao_id, area_id, area_status_id, " . 
    360                                  "       superior_area_id, centro_custo_id, titular_funcionario_id," . 
    361                                  "       substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 
    362                                  "  FROM area" . 
    363                                  " WHERE (UPPER(sigla) = UPPER(?) and (organizacao_id = ?))"; 
     374                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     375                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     376                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     377                                 "               s.funcionario_id as substituto_funcionario_id " . 
     378                                 " FROM area a " . 
     379                                 "  LEFT OUTER JOIN substituicao s " . 
     380                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
     381                                 " WHERE " . 
     382                                 "      (UPPER(a.sigla) = UPPER(?)) " . 
     383                                 " AND " . 
     384                                 "      (a.organizacao_id = ?) " . 
     385                                 " ORDER BY a.sigla, a.descricao"; 
     386 
    364387 
    365388                $result = $this->db->query($query, array($acronym, (int) $organizationID)); 
     
    395418                $result = array(); 
    396419 
    397                 $query = "SELECT organizacao_id, area_id, area_status_id, " . 
    398                                  "       superior_area_id, centro_custo_id, titular_funcionario_id," . 
    399                                  "       substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 
    400                                  "  FROM area" . 
    401                                  " WHERE (area_status_id = ?)"; 
     420                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     421                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     422                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     423                                 "               s.funcionario_id as substituto_funcionario_id " . 
     424                                 " FROM area a " . 
     425                                 "  LEFT OUTER JOIN substituicao s " . 
     426                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
     427                                 " WHERE " . 
     428                                 "      (a.area_status_id = ?) " . 
     429                                 " ORDER BY a.sigla, a.descricao"; 
     430 
     431 
    402432 
    403433                $result = $this->db->query($query, array($areaStatusID)); 
     
    436466                $areas = implode(', ', $areaIDs); 
    437467 
    438                 $query = "SELECT organizacao_id, area_id, area_status_id, " . 
    439                                  "       superior_area_id, centro_custo_id, titular_funcionario_id," . 
    440                                  "       substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 
    441                                  "  FROM area" . 
    442                                  " WHERE area_id IN ($areas)" . 
    443                                  " ORDER BY sigla, descricao"; 
     468                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     469                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     470                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     471                                 "               s.funcionario_id as substituto_funcionario_id " . 
     472                                 " FROM area a " . 
     473                                 "  LEFT OUTER JOIN substituicao s " . 
     474                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
     475                                 " WHERE " . 
     476                                 "      (a.area_id IN ($areas)) " . 
     477                                 " ORDER BY a.sigla, a.descricao"; 
    444478 
    445479                // A execução é realizada sem o segundo parâmetro pois este não pode estar entre aspas 
     
    448482                        return false; 
    449483 
     484                $output = $result->GetArray(-1); 
     485                return $output; 
     486        } 
     487         
     488        /** 
     489         * Return all areas that the employee is a supervisor. 
     490         *  
     491         * Search in the organization for all areas that the employee is a supervisor. 
     492         * @param int $employeeID The ID of employee 
     493         * @return array Array containing all the areas that the employeee is a supervisor. 
     494         * @access public 
     495         */ 
     496        function getSupervisorAreas($employeeID) { 
     497 
     498                if (!$employeeID) { 
     499                        return false; 
     500                } 
     501 
     502                $query = "SELECT  
     503                                                a.area_id 
     504                                        FROM  
     505                                                area a  
     506                                                LEFT OUTER JOIN substituicao s ON ((a.area_id = s.area_id)  
     507                                                AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim))  
     508                                        WHERE  
     509                                                a.titular_funcionario_id = ? OR  
     510                                                s.funcionario_id = ? 
     511                                        GROUP BY 
     512                                                a.area_id"; 
     513                 
     514                $result = $this->db->query($query, array($employeeID,$employeeID)); 
     515                if (!$result) 
     516                        return false; 
     517                 
    450518                $output = $result->GetArray(-1); 
    451519                return $output; 
     
    506574        function getSubAreasByParentAreaID($parentAreaID, $onlyActiveAreas = false) 
    507575        { 
    508                 $query = "SELECT organizacao_id, area_id, area_status_id, " . 
    509                                  "       superior_area_id, centro_custo_id, titular_funcionario_id," . 
    510                                  "       substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 
    511                                  "  FROM area" . 
    512                                  " WHERE superior_area_id = ?"; 
     576                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     577                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     578                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     579                                 "               s.funcionario_id as substituto_funcionario_id " . 
     580                                 " FROM area a " . 
     581                                 "  LEFT OUTER JOIN substituicao s " . 
     582                                 "  ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 
     583                                 " WHERE " . 
     584                                 "      (a.superior_area_id = ?) "; 
     585 
    513586 
    514587                if ($onlyActiveAreas){ 
    515588                        $query .= " AND ativa = 'S'"; 
    516589                } 
    517                 $query .= " ORDER BY sigla, descricao"; 
     590                $query .= " ORDER BY a.sigla, a.descricao"; 
    518591 
    519592                $result = $this->db->query($query, array($parentAreaID)); 
     
    11681241                        return false; 
    11691242 
    1170                 return $employee['centro_custo_id']; 
     1243                $costCenterID = $employee['centro_custo_id']; 
     1244                if(!empty($costCenterID)){ 
     1245                        return $costCenterID; 
     1246                } else { 
     1247                        $employeeArea = $this->getArea($employee['area_id']); 
     1248                        return $employeeArea['centro_custo_id']; 
     1249                } 
    11711250        } 
    11721251 
Note: See TracChangeset for help on using the changeset viewer.