Ignore:
Timestamp:
02/22/10 16:23:36 (14 years ago)
Author:
pedroerp
Message:

Ticket #441 - Suporte a cadastro de substituições de chefia por períodos determinados.

File:
1 edited

Legend:

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

    r1320 r2042  
    133133        function getOrganizationAreas($organizationID) 
    134134        { 
    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"; 
     135                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     136                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     137                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     138                                 "               s.funcionario_id as substituto_funcionario_id " . 
     139                                 " FROM area a " . 
     140                                 "  LEFT OUTER JOIN substituicao s " . 
     141                                 "  USING(area_id) " . 
     142                                 " WHERE " .  
     143                                 "      (a.organizacao_id = ?) " . 
     144                                 " AND " .  
     145                                 "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
     146                                 "      OR " .  
     147                                 "      (s.substituicao_id is null)) " . 
     148                                 " ORDER BY a.sigla, a.descricao"; 
    141149 
    142150                $result = $this->db->query($query, array($organizationID)); 
     
    320328        function getArea($areaID) 
    321329        { 
    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 = ?)"; 
     330                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     331                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     332                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     333                                 "               s.funcionario_id as substituto_funcionario_id " . 
     334                                 " FROM area a " . 
     335                                 "  LEFT OUTER JOIN substituicao s " . 
     336                                 "  USING(area_id) " . 
     337                                 " WHERE " .  
     338                                 "      (a.area_id = ?) " . 
     339                                 " AND " .  
     340                                 "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
     341                                 "      OR " .  
     342                                 "      (s.substituicao_id is null)) " . 
     343                                 " ORDER BY a.sigla, a.descricao"; 
     344 
    327345 
    328346                $result = $this->db->query($query, array($areaID)); 
     
    357375        function getAreaByName($acronym, $organizationID = 1) 
    358376        { 
    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 = ?))"; 
     377                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     378                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     379                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     380                                 "               s.funcionario_id as substituto_funcionario_id " . 
     381                                 " FROM area a " . 
     382                                 "  LEFT OUTER JOIN substituicao s " . 
     383                                 "  USING(area_id) " . 
     384                                 " WHERE " .  
     385                                 "      (UPPER(a.sigla) = UPPER(?)) " . 
     386                                 " AND " .  
     387                                 "      (a.organizacao_id = ?) " . 
     388                                 " AND " .  
     389                                 "      ((CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim) " . 
     390                                 "      OR " .  
     391                                 "      (s.substituicao_id is null)) " . 
     392                                 " ORDER BY a.sigla, a.descricao"; 
     393 
    364394 
    365395                $result = $this->db->query($query, array($acronym, (int) $organizationID)); 
     
    395425                $result = array(); 
    396426 
    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 = ?)"; 
     427                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     428                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     429                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     430                                 "               s.funcionario_id as substituto_funcionario_id " . 
     431                                 " FROM area a " . 
     432                                 "  LEFT OUTER JOIN substituicao s " . 
     433                                 "  USING(area_id) " . 
     434                                 " WHERE " .  
     435                                 "      (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)) " . 
     440                                 " ORDER BY a.sigla, a.descricao"; 
     441 
     442 
    402443 
    403444                $result = $this->db->query($query, array($areaStatusID)); 
     
    436477                $areas = implode(', ', $areaIDs); 
    437478 
    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"; 
     479                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     480                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     481                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     482                                 "               s.funcionario_id as substituto_funcionario_id " . 
     483                                 " FROM area a " . 
     484                                 "  LEFT OUTER JOIN substituicao s " . 
     485                                 "  USING(area_id) " . 
     486                                 " WHERE " .  
     487                                 "      (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)) " . 
     492                                 " ORDER BY a.sigla, a.descricao"; 
    444493 
    445494                // A execução é realizada sem o segundo parâmetro pois este não pode estar entre aspas 
     
    506555        function getSubAreasByParentAreaID($parentAreaID, $onlyActiveAreas = false) 
    507556        { 
    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 = ?"; 
     557                $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 
     558                                 "       a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 
     559                                 "       a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 
     560                                 "               s.funcionario_id as substituto_funcionario_id " . 
     561                                 " FROM area a " . 
     562                                 "  LEFT OUTER JOIN substituicao s " . 
     563                                 "  USING(area_id) " . 
     564                                 " 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)) "; 
     570 
    513571 
    514572                if ($onlyActiveAreas){ 
    515573                        $query .= " AND ativa = 'S'"; 
    516574                } 
    517                 $query .= " ORDER BY sigla, descricao"; 
     575                $query .= " ORDER BY a.sigla, a.descricao"; 
    518576 
    519577                $result = $this->db->query($query, array($parentAreaID)); 
Note: See TracChangeset for help on using the changeset viewer.