source: trunk/workflow/inc/local/classes/class.wf_orgchart.php @ 2042

Revision 2042, 42.7 KB checked in by pedroerp, 14 years ago (diff)

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

  • Property svn:executable set to *
Line 
1<?php
2/**
3 * Classe que permite aos processos workflow fazer consultas ao Organograma
4 *
5 * @author Sidnei Augusto Drovetto Junior - drovetto@gmail.com
6 * @version 1.2
7 * @license http://www.gnu.org/copyleft/gpl.html GPL
8 * @package Workflow
9 * @subpackage local
10 */
11class wf_orgchart
12{
13        /**
14         * @var object $db Link para o Banco de Dados do Workflow.
15         * @access private
16         */
17        var $db;
18
19        /**
20         * Construtor da classe wf_orgchart
21         * @return object
22         * @access public
23         */
24        function wf_orgchart()
25        {
26                $this->db = &$GLOBALS['workflow']['workflowObjects']->getDBWorkflow()->Link_ID;
27                $this->db->setFetchMode(ADODB_FETCH_ASSOC);
28        }
29
30        /**
31         * Busca uma organização pelo seu ID.
32         *
33         * Este método irá procurar uma organização na tabela de organizações, pelo seu ID, e retornará seu dados básicos.
34         * @param int $organizationID O ID da organização.
35         * @return array Uma array associativa contendo os atributos de uma organização:
36         * - organizacao_id
37         * - nome: o nome abreviado da organização
38         * - descrição: o nome completo da organização
39         * - url_imagem: a url onde se encontra o gráfico da organização
40         * - ativa: se a organização está ativa ou não
41         * - sitio: a url da página web da organização
42         * @access public
43         */
44        function getOrganization($organizationID)
45        {
46                $query = "SELECT organizacao_id, nome, descricao, url_imagem, ativa, sitio" .
47                                 "  FROM organizacao" .
48                                 " WHERE (organizacao_id = ?)";
49
50                $result = $this->db->query($query, array($organizationID));
51                if (!$result)
52                        return false;
53
54                $output = $result->fetchRow();
55
56                return $output;
57        }
58
59        /**
60         * Busca uma organização pelo seu nome.
61         *
62         * Este método irá buscar os dados básicos de uma organização, procurando pela sua sigla.
63         * @param string $name A sigla da organização.
64         * @return array Uma array associativa contendo os atributos de uma organização:
65         * - organizacao_id
66         * - nome: a sigla da organização
67         * - descricao: o nome completo
68         * - url_imagem: a url onde se encontra o gráfico da organização
69         * - ativa: se a organização está ativa ou não
70         * - sitio: a url da página web da organização
71         * @access public
72         */
73        function getOrganizationByName($name)
74        {
75                $query = "SELECT organizacao_id, nome, descricao, url_imagem, ativa, sitio" .
76                                 "  FROM organizacao" .
77                                 " WHERE (UPPER(nome) = UPPER(?))";
78
79                $result = $this->db->query($query, array($name));
80                if (!$result)
81                        return false;
82
83                $output = $result->fetchRow();
84
85                return $output;
86        }
87
88        /**
89         * Lista todos os telefones úteis de uma organização.
90         *
91         * Este método irá listar a tabela telefone.
92         * @param int $organizationID O ID da organização.
93         * @return array Uma array de arrays associativas contendo a lista dos telefones de uma organização:
94         * - telefone_id
95         * - descricao
96         * - organizacao_id
97         * @access public
98         */
99        function getOrganizationTelephones($organizationID)
100        {
101                $query = "SELECT telefone_id, descricao, organizacao_id" .
102                                 "  FROM telefone" .
103                                 "      WHERE organizacao_id = ?";
104
105                $result = $this->db->query($query, array((int) $organizationID));
106                if (!$result)
107                        return false;
108
109                $output = $result->GetArray(-1);
110
111                return $output;
112        }
113
114        /**
115         * Busca as áreas de uma organização
116         *
117         * Este método irá buscar na tabela de áreas, todas as áreas que pertencem à organização solicitada.
118         * @param int $organizationID O ID da organização.
119         * @return array Uma array seqüencial contendo as áreas de uma organização. Cada linha do array conterá:
120         * - organizacao_id
121         * - area_id
122         * - area_status_id: corresponde ao nível hierárquico da area
123         * - superior_area_id: o id da área acima da atual
124         * - centro_custo_id: o id do centro de custo da area
125         * - titular_funcionario_id: o id do funcionario titular da área. Corresponde ao uidNumber do funcionário no catálogo Ldap.
126         * - substituto_funcionario_id: o id do funcionario que está substituindo o titular temporariamente
127         * - sigla: sigla da area
128         * - descrição: nome completo da area
129         * - ativa: indicativo de situação da area, sendo 's' ativa, e 'n' inativa
130         * - auxiliar_funcionario_id: id da secretária da área
131         * @access public
132         */
133        function getOrganizationAreas($organizationID)
134        {
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";
149
150                $result = $this->db->query($query, array($organizationID));
151                if (!$result)
152                        return false;
153
154                $output = $result->GetArray(-1);
155
156                return $output;
157        }
158
159        /**
160         * Busca os status de área de uma organização.
161         *
162         * O status de área deve ser compreendido como um nível hirárquico das áreas da organização.
163         * Por exemplo: presidência, assessoria, diretoria, gerência, divisão, etc.
164         * @param int $organizationID O ID da organização.
165         * @return array Uma array de arrays associativas contendo os atributos dos status de área. Cada linha do array conterá:
166         * - area_status_id
167         * - organização_id
168         * - descrição
169         * - nível: a posição hierárquica do nível no organograma. Por exemplo: 1 - presidencia, 2 - assessoria, etc
170         * @access public
171         */
172        function getOrganizationAreaStatus($organizationID)
173        {
174                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
175                                 "  FROM area_status" .
176                                 " WHERE (organizacao_id = ?)";
177
178                $result = $this->db->query($query, array($organizationID));
179                if (!$result)
180                        return false;
181
182                $output = $result->GetArray(-1);
183
184                return $output;
185        }
186
187        /**
188         * Busca as localidades de uma organização.
189         *
190         * As localidades de uma organização representam o local físico de trabalho dos funcionários.
191         * @param int $organizationID O ID da organização.
192         * @return array Uma array de arrays associativas contendo os atributos das localidades. Cada linha do array conterá:
193         * - organizacao_id
194         * - localidade_id
195         * - centro_custo_id
196         * - descricao: o nome simplificado localidade
197         * - empresa: o nome completo da localidade
198         * - endereço: o logradouro da empresa, com o número
199         * - complemento: dado adicional do endereço
200         * - cep: código de endereçamento postal, máscara nnnnnn-nnn
201         * - bairro: nome do bairro
202         * - cidade: nome da cidade
203         * - uf: unidade da federação
204         * @access public
205         */
206        function getOrganizationLocals($organizationID)
207        {
208                $query = "SELECT organizacao_id, localidade_id, centro_custo_id, descricao, empresa,
209                                                        endereco, complemento, cep, bairro, cidade, uf" .
210                                 "  FROM localidade" .
211                                 " WHERE (organizacao_id = ?)";
212
213                $result = $this->db->query($query, array($organizationID));
214                if (!$result)
215                        return false;
216
217                $output = $result->GetArray(-1);
218
219                return $output;
220        }
221
222        /**
223         * Busca os centros de custo de uma organização.
224         *
225         * Este método retornará todos os centros de custo de uma organização.
226         * Centros de custo são como códigos contábeis para faturamento de serviços.
227         * @param int $organizationID O ID da organização.
228         * @return array Uma array de arrays associativas contendo os atributos dos centros de custo. Cada linha do array conterá:
229         * - organizacao_id
230         * - centro_custo_id
231         * - nm_centro_custo: número do centro de custo
232         * - grupo: estrutura numerica a qual o centro de custo pertence
233         * - descrição: nome do centro de custo
234         * @access public
235         */
236        function getOrganizationCostCenters($organizationID)
237        {
238                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
239                                 "  FROM centro_custo" .
240                                 " WHERE (organizacao_id = ?)" .
241                                 " ORDER BY descricao";
242
243                $result = $this->db->query($query, array($organizationID));
244                if (!$result)
245                        return false;
246
247                $output = $result->GetArray(-1);
248
249                return $output;
250        }
251
252        /**
253         * Lista todas as categorias possíveis para um funcionário em uma organização.
254         *
255         * Este método listará a tabela de categorias.
256         * Por exemplo: funcionário, estagiário, terceirizado, etc.
257         * @param int $organizationID O ID da organização.
258         * @return array Uma array de arrays associativas contendo os atributos das categorias. Cada linha do array conterá:
259         * - funcionario_categoria_id: o id da categoria
260         * - descricao
261         * - organizacao_id
262         * @access public
263         */
264        function getOrganizationEmployeeCategories($organizationID)
265        {
266                $query = "SELECT funcionario_categoria_id, descricao, organizacao_id" .
267                                 "  FROM funcionario_categoria" .
268                                 "      WHERE organizacao_id = ?" .
269                                 "  ORDER BY funcionario_categoria_id";
270
271                $result = $this->db->query($query, array((int) $organizationID));
272                if (!$result)
273                        return false;
274
275                $output = $result->GetArray(-1);
276
277                return $output;
278        }
279
280        /**
281         * Lista todas as organizações do Organograma.
282         *
283         * Este método irá listar a tabela de organizações
284         * O modelo de dados do organograma foi construído para abrigar mais de uma organização
285         * @return um array de arrays associativas contendo a lista de organizações. Cada linha do array conterá:
286         * - organizacao_id
287         * - nome: sigla da organizacao
288         * - descricao
289         * - url_imagem: a url onde se encontra o gráfico da organização
290         * - ativa: se a organização está ativa ou não
291         * - sitio: a url da página web da organização
292         * @access public
293         */
294        function getOrganizations()
295        {
296                $query = "SELECT organizacao_id, nome, descricao, url_imagem, ativa, sitio" .
297                                 "  FROM organizacao";
298
299                $result = $this->db->query($query);
300                if (!$result)
301                        return false;
302
303                $output = $result->GetArray(-1);
304
305                return $output;
306        }
307
308
309        /**
310         * Busca uma área pelo seu ID.
311         *
312         * Este método irá retornar os dados de uma área buscando pelo seu ID.
313         * @param int $areaID O ID da área.
314         * @return array Uma array associativa contendo os atributos de uma área:
315         * - organizacao_id
316         * - area_id
317         * - area_status: o nível hierárquico da área
318         * - superior_area_id: o id da área acima da atual
319         * - centro_custo_id: o centro de custo da área
320         * - titular_funcionario_id: o id do chefe da área
321         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
322         * - sigla
323         * - descicao
324         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
325         * - auxiliar_funcionario_id: o id da secretária da área
326         * @access public
327         */
328        function getArea($areaID)
329        {
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
345
346                $result = $this->db->query($query, array($areaID));
347                if (!$result)
348                        return false;
349
350                $output = $result->fetchRow();
351
352                return $output;
353        }
354
355        /**
356         * Busca uma área pela sua sigla.
357         *
358         * Este método retornará os atributos de uma área buscando pela sua sigla.
359         * @param string $acronym A sigla da área.
360         * @param int $organizationID O id da organização
361         * @return array Uma array associativa contendo os atributos de uma área:
362         * - organizacao_id
363         * - area_id
364         * - area_status: o nível hierárquico da área
365         * - superior_area_id: o id da área acima da atual
366         * - centro_custo_id: o centro de custo da área
367         * - titular_funcionario_id: o id do chefe da área
368         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
369         * - sigla
370         * - descicao
371         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
372         * - auxiliar_funcionario_id: o id da secretária da área
373         * @access public
374         */
375        function getAreaByName($acronym, $organizationID = 1)
376        {
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
394
395                $result = $this->db->query($query, array($acronym, (int) $organizationID));
396                if (!$result)
397                        return false;
398
399                $output = $result->fetchRow();
400
401                return $output;
402        }
403
404        /**
405         * Busca as áreas que possuem um determinado status de área.
406         *
407         * Este método irá retornar todas as áreas cujo status (nível hierárquico) seja o solicitado.
408         * @param int $areaStatusID O ID do status de área.
409         * @return array Uma array de arrays associativas contendo os atributos de uma área. Cada linha do array conterá:
410         * - organizacao_id
411         * - area_id
412         * - area_status: o nível hierárquico da área
413         * - superior_area_id: o id da área acima da atual
414         * - centro_custo_id: o centro de custo da área
415         * - titular_funcionario_id: o id do chefe da área
416         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
417         * - sigla
418         * - descicao
419         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
420         * - auxiliar_funcionario_id: o id da secretária da área
421         * @access public
422         */
423        function getAreaByStatus($areaStatusID)
424        {
425                $result = array();
426
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
443
444                $result = $this->db->query($query, array($areaStatusID));
445                if (!$result)
446                        return false;
447
448                $output = $result->GetArray(-1);
449
450                return $output;
451        }
452
453        /**
454         * Busca várias áreas através de uma array de IDs
455         *
456         * Este método irá buscar de uma vez só os dados de mais de uma área.
457         * @param array $areaIDs Array com os IDs das áreas
458         * @return array Um array de arrays associativos contendo os atributos de várias áreas. Cada linha do array conterá:
459         * - organizacao_id
460         * - area_id
461         * - area_status: o nível hierárquico da área
462         * - superior_area_id: o id da área acima da atual
463         * - centro_custo_id: o centro de custo da área
464         * - titular_funcionario_id: o id do chefe da área
465         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
466         * - sigla
467         * - descicao
468         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
469         * - auxiliar_funcionario_id: o id da secretária da área
470         * @access public
471         */
472        function getAreas($areaIDs)
473        {
474                if (!is_array($areaIDs))
475                        return false;
476
477                $areas = implode(', ', $areaIDs);
478
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";
493
494                // A execução é realizada sem o segundo parâmetro pois este não pode estar entre aspas
495                $result = $this->db->query($query);
496                if (!$result)
497                        return false;
498
499                $output = $result->GetArray(-1);
500                return $output;
501        }
502
503        /**
504         * Busca o ID da área superior a uma dada área.
505         *
506         * Este método irá buscar a área imediatamente superior à solicitada, ou então subirá na hierarquia até chegar no nível solicitado.
507         * @param int $areaID O ID da área da qual se quer saber a área superior.
508         * @param int $areaStatusID O ID do status de área (nível) da área pai. Utilizar -1 caso se queira a área imediatamente superior.
509         * - Por exemplo: área atual está no nível 5 (Divisão) e se quer buscar a área de nivel 3 (Diretoria).
510         * @return int O ID da área que é superior à área informada.
511         * @access public
512         */
513        function getParentAreaID($areaID, $areaStatusID = -1)
514        {
515                $query  = "SELECT area_id, area_status_id" .
516                                  "  FROM area" .
517                                  " WHERE area_id = (SELECT superior_area_id" .
518                                  "                    FROM area" .
519                                  "                   WHERE (area_id = ?))";
520
521                $result = $this->db->query($query, array($areaID));
522                if (!$result)
523                        return false;
524
525                $output = $result->fetchRow();
526                if (!$output)
527                        return false;
528
529                if (($areaStatusID == -1) || ($output['area_status_id'] == $areaStatusID))
530                        return $output['area_id'];
531                else
532                        return $this->getParentAreaID($output['area_id'], $areaStatusID);
533        }
534
535        /**
536         * Busca as áreas abaixo de uma determinada área.
537         *
538         * Este método irá buscar as áreas imediatamente inferiores à solicitada, não descendo nos próximos níveis da hierarquia.
539         * @param int $parentAreaID O ID da área da qual se quer saber as áreas imediatamente inferiores.
540         * @param boolean $onlyActiveAreas Valor lógico que, caso verdadeiro, faz com que o método retorne somente as áreas ativas
541         * @return array Um array de arrays associativos contendo os atributos de várias áreas. Cada linha do array conterá:
542         * - organizacao_id
543         * - area_id
544         * - area_status: o nível hierárquico da área
545         * - superior_area_id: o id da área acima da atual
546         * - centro_custo_id: o centro de custo da área
547         * - titular_funcionario_id: o id do chefe da área
548         * - substituto_funcionario_id: o id do funcionario que esta substituindo o titular temporariamente
549         * - sigla
550         * - descicao
551         * - ativa: indicativo de situação da área: 's' ativa, 'n' inativa
552         * - auxiliar_funcionario_id: o id da secretária da área
553         * @access public
554         */
555        function getSubAreasByParentAreaID($parentAreaID, $onlyActiveAreas = false)
556        {
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
571
572                if ($onlyActiveAreas){
573                        $query .= " AND ativa = 'S'";
574                }
575                $query .= " ORDER BY a.sigla, a.descricao";
576
577                $result = $this->db->query($query, array($parentAreaID));
578                if (!$result)
579                        return false;
580
581                $output = $result->GetArray(-1);
582                return $output;
583        }
584
585        /**
586         * Busca um status de área pelo seu ID.
587         *
588         * Procura na tabela de status de área (nível hierárquico de áreas) o registro que corresponde ao ID solicitado.
589         * @param int $areaStatusID O ID do status de área.
590         * @return array Uma array associativa contendo os atributos de um status de área:
591         * - area_status_id
592         * - organizacao_id
593         * - descricao: nome do nível hierárquivo. Por exemplo: presidência, assessoria, diretoria, gerência, etc.
594         * - nivel: valor numérico que identifica o nível: 1, 2, 3, ...
595         * @access public
596         */
597        function getAreaStatus($areaStatusID)
598        {
599                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
600                                 "  FROM area_status" .
601                                 " WHERE (area_status_id = ?)";
602
603                $result = $this->db->query($query, array($areaStatusID));
604                if (!$result)
605                        return false;
606
607                $output = $result->fetchRow();
608
609                return $output;
610        }
611
612        /**
613         * Busca um status de área pelo seu nome.
614         *
615         * Este método irá retornar os dados de um status, procurando o registro na tabela através do seu nome.
616         * @param string $description O nome do status de área.
617         * @param int $organizationID O id da organização.
618         * @return array Uma array associativa contendo os atributos de um status de área:
619         * - area_status_id
620         * - organizacao_id
621         * - descricao: nome do nível hierárquivo. Por exemplo: presidência, assessoria, diretoria, gerência, etc.
622         * - nivel: valor numérico que identifica o nível: 1, 2, 3, ...
623         * @access public
624         */
625        function getAreaStatusByName($description, $organizationID = 1)
626        {
627                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
628                                 "  FROM area_status" .
629                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
630
631                $result = $this->db->query($query, array($description, (int) $organizationID));
632                if (!$result)
633                        return false;
634
635                $output = $result->fetchRow();
636
637                return $output;
638        }
639
640        /**
641         * Busca um status de área pelo seu nível.
642         *
643         * Este método irá retornar os dados de um status, procurando o registro na tabela através do seu nível.
644         * @param int $level O nível do status de área.
645         * @param int $organizationID O id da organização.
646         * @return array Uma array associativa contendo os atributos de um status de área:
647         * - area_status_id
648         * - organizacao_id
649         * - descricao: nome do nível hierárquivo. Por exemplo: presidência, assessoria, diretoria, gerência, etc.
650         * - nivel: valor numérico que identifica o nível: 1, 2, 3, ...
651         * @access public
652         */
653        function getAreaStatusByLevel($level, $organizationID = 1)
654        {
655                $query = "SELECT area_status_id, organizacao_id, descricao, nivel" .
656                                 " FROM area_status" .
657                                 " WHERE (nivel = ?) AND (organizacao_id = ?)";
658
659                $result = $this->db->query($query, array((int) $level, (int) $organizationID));
660                if (!$result)
661                        return false;
662
663                $output = $result->fetchRow();
664
665                return $output;
666        }
667
668        /**
669         * Busca o ID do titular de uma área.
670         *
671         * Este método busca uma área e retorna o atributo titular_funcionario_id
672         * @param int $areaID O ID da área.
673         * @return int O ID do titular da área.
674         * @access public
675         */
676        function getAreaSupervisorID($areaID)
677        {
678                $area = $this->getArea($areaID);
679                if (!$area)
680                        return false;
681
682                return $area['titular_funcionario_id'];
683        }
684
685        /**
686         * Busca o ID do substituto de uma área.
687         *
688         * Este método irá buscar uma área e retornar o atributo substituto_funcionario_id.
689         * Note que o substituro é um campo opcional na área e poderá retornar vazio.
690         * @param int $areaID O ID da área.
691         * @return int O ID do substituto da área.
692         * @access public
693         */
694        function getAreaBackupSupervisorID($areaID)
695        {
696                $area = $this->getArea($areaID);
697                if (!$area)
698                        return false;
699
700                return $area['substituto_funcionario_id'];
701        }
702
703        /**
704         * Busca o ID do auxiliar administrativo de uma área.
705         *
706         * Este método busca uma área e retorna o atributo auxiliar_funcionario_id
707         * Nem todas as áreas possuem funcionários auxiliares (secretárias)
708         * @param int $areaID O ID da área.
709         * @return int O ID do auxiliar administrativo da área.
710         * @access public
711         */
712        function getAreaAssistantID($areaID)
713        {
714                $area = $this->getArea($areaID);
715                if (!$area)
716                        return false;
717
718                return $area['auxiliar_funcionario_id'];
719        }
720
721        /**
722         * Busca o ID do titular atual de uma área.
723         *
724         * Este método irá buscar uma área e caso haja um substituto, este será o titular atual; caso contrário, o titular atual é o próprio titular da área.
725         * @param int $areaID O ID da área.
726         * @return int O ID do titular atual da área, podendo ser um dos campos abaixo:
727         * - substituto_funcionario_id
728         * - titular_funcionario_id
729         * @access public
730         */
731        function getAreaCurrentSupervisorID($areaID)
732        {
733                $area = $this->getArea($areaID);
734                if (!$area)
735                        return false;
736
737                return is_null($area['substituto_funcionario_id']) ? $area['titular_funcionario_id'] : $area['substituto_funcionario_id'];
738        }
739
740        /**
741         * Busca o ID do responsável administrativo atual de uma área.
742         *
743         * A precedência para definir quem é o responsável administrativo é: auxiliar administrativo, substituto e titular.
744         * @param int $areaID O ID da área.
745         * @return int O ID do responsável administrativo da área, podendo ser um dos atributos abaixo:
746         * - auxiliar_funcionario_id
747         * - substituto_funcionario_id
748         * - titular_funcionario_id
749         * @access public
750         */
751        function getAreaCurrentAdministrativeResponsibleID($areaID)
752        {
753                $area = $this->getArea($areaID);
754                if (!$area)
755                        return false;
756
757                return !is_null($area['auxiliar_funcionario_id']) ? $area['auxiliar_funcionario_id'] : (!is_null($area['substituto_funcionario_id']) ? $area['substituto_funcionario_id'] : $area['titular_funcionario_id']);
758        }
759
760        /**
761         * Busca uma localidade pelo seu ID.
762         *
763         * Este método listará os atributos e uma localidade. Lembrando que localidade também pode ser entendida como o local físico de trabalho.
764         * @param int $localID O ID da localidade.
765         * @return array Uma array associativa contendo os atributos de uma localidade:
766         * - organizacao_id
767         * - localidade_id
768         * - centro_custo_id
769         * - descricao
770         * - empresa: o nome completo da localidade
771         * - endereço: o logradouro da empresa, com o número
772         * - complemento: dado adicional do endereço
773         * - cep: código de endereçamento postal, máscara nnnnnn-nnn
774         * - bairro: nome do bairro
775         * - cidade: nome da cidade
776         * - uf: unidade da federação
777         * @access public
778         */
779        function getLocal($localID)
780        {
781                $query = "SELECT organizacao_id, localidade_id, centro_custo_id, descricao,
782                                                        empresa, endereco, complemento, cep, bairro, cidade, uf" .
783                                 "  FROM localidade" .
784                                 " WHERE (localidade_id = ?)";
785
786                $result = $this->db->query($query, array($localID));
787                if (!$result)
788                        return false;
789
790                $output = $result->fetchRow();
791
792                return $output;
793        }
794
795        /**
796         * Busca uma localidade pelo seu nome.
797         *
798         *
799         * @param string $description O nome da localidade.
800         * @param int $organizationID O id da organização.
801         * @return array Uma array associativa contendo os atributos de uma localidade:
802         * - organizacao_id
803         * - localidade_id
804         * - centro_custo_id
805         * - descricao
806         * - empresa: o nome completo da localidade
807         * - endereço: o logradouro da empresa, com o número
808         * - complemento: dado adicional do endereço
809         * - cep: código de endereçamento postal, máscara nnnnnn-nnn
810         * - bairro: nome do bairro
811         * - cidade: nome da cidade
812         * - uf: unidade da federação
813         * @access public
814         */
815        function getLocalByName($description, $organizationID = 1)
816        {
817                $query = "SELECT organizacao_id, localidade_id, centro_custo_id, descricao,
818                                                        empresa, endereco, complemento, cep, bairro, cidade, uf" .
819                                 "  FROM localidade" .
820                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
821
822                $result = $this->db->query($query, array($description, (int) $organizationID));
823                if (!$result)
824                        return false;
825
826                $output = $result->fetchRow();
827
828                return $output;
829        }
830
831        /**
832         * Busca um centro de custo pelo seu ID.
833         *
834         * Este método irá mostrar os atributos de um centro de custo, buscando na tabela pelo seu id.
835         * @param int $costCenterID O ID do centro de custo.
836         * @return array Uma array associativa contendo os atributos de um centro de custo:
837         * - organizacao_id
838         * - centro_custo_id
839         * - nm_centro_custo: número do centro de custo
840         * - grupo: estrutura numerica a qual o centro de custo pertence
841         * - descrição: nome do centro de custo
842         * @access public
843         */
844        function getCostCenter($costCenterID)
845        {
846                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
847                                 "  FROM centro_custo" .
848                                 " WHERE (centro_custo_id  = ?)";
849
850                $result = $this->db->query($query, array($costCenterID));
851                if (!$result)
852                        return false;
853
854                $output = $result->fetchRow();
855
856                return $output;
857        }
858
859        /**
860         * Busca um centro de custo pelo seu número.
861         *
862         * Este método retornará os atributos de um centro de custo buscando pelo seu ID.
863         * @param int $number O número do centro de custo.
864         * @param ind $organizationID O id da organização
865         * @return array Uma array associativa contendo os atributos de um centro de custo:
866         * - organizacao_id
867         * - centro_custo_id
868         * - nm_centro_custo: número do centro de custo
869         * - grupo: estrutura numerica a qual o centro de custo pertence
870         * - descrição: nome do centro de custo
871         * @access public
872         */
873        function getCostCenterByNumber($number, $organizationID = 1)
874        {
875                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
876                                 "  FROM centro_custo" .
877                                 " WHERE ((nm_centro_custo = ?) and (organizacao_id = ?))";
878
879                $result = $this->db->query($query, array($number, (int) $organizationID));
880                if (!$result)
881                        return false;
882
883                $output = $result->fetchRow();
884
885                return $output;
886        }
887
888        /**
889         * Busca um centro de custo pelo seu nome.
890         *
891         * Este método irá retornar os atributos de um centro de custo buscando pelo seu nome.
892         * @param string $description O nome do centro de custo.
893         * @param int $organizationID O id da organização
894         * @return array Uma array associativa contendo os atributos de um centro de custo.
895         * - organizacao_id
896         * - centro_custo_id
897         * - nm_centro_custo: número do centro de custo
898         * - grupo: estrutura numerica a qual o centro de custo pertence
899         * - descrição: nome do centro de custo
900         *       * @access public
901         */
902        function getCostCenterByName($description, $organizationID = 1)
903        {
904                $query = "SELECT organizacao_id, centro_custo_id, nm_centro_custo, grupo, descricao" .
905                                 "  FROM centro_custo" .
906                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
907
908                $result = $this->db->query($query, array($description, (int) $organizationID));
909                if (!$result)
910                        return false;
911
912                $output = $result->fetchRow();
913
914                return $output;
915        }
916
917        /**
918         * Busca as informações de categoria a partir do ID.
919         *
920         * Este método irá retornar os atributos de uma linha da tabela de categorias de funcionários.
921         * @param int $categoryID O ID da categoria.
922         * @return array Uma array associativa contendo os atributos da categoria:
923         * - funcionario_categoria_id
924         * - descricao
925         * - organizacao_id
926         * @access public
927         */
928        function getEmployeeCategory($categoryID)
929        {
930                $query  = "SELECT funcionario_categoria_id, descricao, organizacao_id" .
931                                  "  FROM funcionario_categoria" .
932                                  " WHERE (funcionario_categoria_id = ?)";
933
934                $result = $this->db->query($query, array($categoryID));
935                if (!$result)
936                        return false;
937
938                $output = $result->fetchRow();
939
940                return $output;
941        }
942
943        /**
944         * Busca uma categoria a partir da sua descrição.
945         *
946         * Este método irá mostrar os atributos de uma categoria, buscando pela sua descrição.
947         * @param string $description O nome da categoria.
948         * @param int $organizationID O id da organização
949         * @return array Uma array associativa contendo os atributos de uma categoria:
950         * - funcionario_categoria_id
951         * - descricao
952         * - organizacao_id
953         * @access public
954         */
955        function getEmployeeCategoryByName($description, $organizationID = 1)
956        {
957                $query = "SELECT funcionario_categoria_id, descricao, organizacao_id" .
958                                 "  FROM funcionario_categoria" .
959                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
960
961                $result = $this->db->query($query, array($description, (int) $organizationID));
962                if (!$result)
963                        return false;
964
965                $output = $result->fetchRow();
966
967                return $output;
968        }
969
970        /**
971         * Lista todos os cargos de uma organização.
972         *
973         * Este método irá listar a tabela localidade.
974         * @param int $organizationID O ID da organização.
975         * @return array Uma array de arrays associativas contendo a lista dos cargos de uma organização:
976         * - cargo_id
977         * - descricao
978         * - organizacao_id
979         * @access public
980         */
981        function getJobTitles($organizationID)
982        {
983                $query = "SELECT cargo_id, descricao, organizacao_id" .
984                                 "  FROM cargo" .
985                                 "      WHERE organizacao_id = ?" .
986                                 "  ORDER BY cargo_id";
987
988                $result = $this->db->query($query, array((int) $organizationID));
989                if (!$result)
990                        return false;
991
992                $output = $result->GetArray(-1);
993
994                return $output;
995        }
996
997        /**
998         * Busca as informações de cargo a partir do ID.
999         *
1000         * Este método irá listar os atributos de um cargo, buscando na tabela a partir do seu ID.
1001         * @param int $jobTitleID O ID do cargo.
1002         * @return array Uma array associativa contendo os atributos do cargo.
1003         * - cargo_id
1004         * - descricao
1005         * - organizacao_id
1006         * @access public
1007         */
1008        function getJobTitle($jobTitleID)
1009        {
1010                $query  = "SELECT cargo_id, descricao, organizacao_id" .
1011                                  "  FROM cargo" .
1012                                  " WHERE (cargo_id = ?)";
1013
1014                $result = $this->db->query($query, array($jobTitleID));
1015                if (!$result)
1016                        return false;
1017
1018                $output = $result->fetchRow();
1019
1020                return $output;
1021        }
1022
1023        /**
1024         * Busca um cargo a partir da sua descrição.
1025         *
1026         * Este método irá mostrar os atributos de um cargo, buscando pela sua descrição.
1027         * @param string $description O nome do cargo.
1028         * @param int $organizationID O id da organização.
1029         * @return array Uma array associativa contendo os atributos de um cargo:
1030         * - cargo_id
1031         * - descricao
1032         * - organizacao_id
1033         * @access public
1034         */
1035        function getJobTitleByName($description, $organizationID = 1)
1036        {
1037                $query = "SELECT cargo_id, descricao, organizacao_id" .
1038                                 "  FROM cargo" .
1039                                 " WHERE (UPPER(descricao) = UPPER(?) and (organizacao_id = ?))";
1040
1041                $result = $this->db->query($query, array($description, (int) $organizationID));
1042                if (!$result)
1043                        return false;
1044
1045                $output = $result->fetchRow();
1046
1047                return $output;
1048        }
1049
1050        /**
1051         * Busca um funcionário pelo seu ID.
1052         *
1053         * Este método retorna os atributos de um funcionário buscando pelo se id.
1054         * O ID corresponde ao uidNumber do funcionário no catálogo LDAP.
1055         * Se necessitar de outros atributos como o nome, cpf, email, matrícula, é necessário fazer uma consulta ao Ldap.
1056         * @param int $employeeID O ID do funcionário.
1057         * @return array Uma array associativa contendo os atributos de um funcionário:
1058         * - funcionario_id
1059         * - area_id
1060         * - localidade_id
1061         * - centro_custo_id
1062         * - organizacao_id
1063         * - funcionario_status_id
1064         * - cargo_id
1065         * - nivel: o nível numérico dentro do cargo
1066         * - funcionario_categoria_id
1067         * - titulo: nome pelo qual o funcionário e reconhecido na organização, por exemplo: gerente comercial
1068         * @access public
1069         */
1070        function getEmployee($employeeID)
1071        {
1072                if (!is_numeric($employeeID))
1073                        return false;
1074
1075                $query  = "SELECT funcionario_id, area_id, localidade_id, centro_custo_id, organizacao_id,
1076                                                        funcionario_status_id, cargo_id, nivel, funcionario_categoria_id, titulo" .
1077                                  "  FROM funcionario" .
1078                                  " WHERE (funcionario_id = ?)";
1079
1080                $result = $this->db->query($query, array($employeeID));
1081                if (!$result)
1082                        return false;
1083
1084                $output = $result->fetchRow();
1085
1086                return $output;
1087        }
1088
1089        /**
1090         * Busca lista de funcionários de uma área pelo ID da área.
1091         *
1092         * Este método retornará todos os funcionários de uma área.
1093         * @param int $areaID O ID da área.
1094         * @param boolean $onlyActiveUsers true para retornar somente usuários ativos e false caso contrário
1095         * @return array Uma array sequencial de arrays associativos contendo contendo o ID dos funcionários de uma área:
1096         * - funcionario_id
1097         * @access public
1098         */
1099        function getEmployeesAreaID($areaID, $onlyActiveUsers = false)
1100        {
1101                if($onlyActiveUsers){
1102                        $query = "SELECT funcionario_id " .
1103                                         "FROM funcionario " .
1104                                         "INNER JOIN funcionario_status " .
1105                                         "ON (funcionario.funcionario_status_id = funcionario_status.funcionario_status_id) " .
1106                                         "WHERE (area_id = ?) AND (funcionario_status.exibir = 'S')";
1107                } else {
1108                        $query = "SELECT funcionario_id " .
1109                                     "FROM funcionario " .
1110                                         "WHERE (area_id = ?)";
1111                }
1112
1113                $result = $this->db->query($query, array($areaID));
1114                if (!$result)
1115                        return false;
1116
1117                $output = $result->GetArray(-1);
1118
1119                return $output;
1120        }
1121
1122        /**
1123         * Busca um status de funcionário pelo seu ID.
1124         *
1125         * Este método irá retornar os dados de um status de funcionário, buscando pelo ID solicitado.
1126         * @param int $employeeStatusID O ID do status.
1127         * @return array Uma array associativa contendo os atributos de um status de funcionário:
1128         * - funcionario_status_id
1129         * - descricao
1130         * - exibir: indicativo booleado 'S' funcionário será listado no organograma, 'N' funcionário ficará oculto na aba organograma.
1131         * @access public
1132         */
1133        function getEmployeeStatus($employeeStatusID)
1134        {
1135                $query = "SELECT funcionario_status_id, descricao, exibir " .
1136                                 "  FROM funcionario_status" .
1137                                 " WHERE (funcionario_status_id = ?)";
1138
1139                $result = $this->db->query($query, array($employeeStatusID));
1140                if (!$result)
1141                        return false;
1142
1143                $output = $result->fetchRow();
1144
1145                return $output;
1146        }
1147
1148        /**
1149         * Busca o ID da área (podendo ser de outros níveis) de um funcionário.
1150         *
1151         * Este método irá retornar o ID da área do funcionário. Fará uma busca para cima na hierarquia se for solicitado.
1152         * @param int $employeeID O ID do funcionário do qual se quer saber a área.
1153         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer. Utilizar -1 caso se queira a área imediata do funcionário.
1154         * - Por exemplo: o funcionário está em uma área de status 5 (Divisão) e se quer a área superior de nível 3 (Diretoria).
1155         * @return int O ID da área do funcionário.
1156         * @access public
1157         */
1158        function getEmployeeAreaID($employeeID, $areaStatusID = -1)
1159        {
1160                $employee = $this->getEmployee($employeeID);
1161                if (!$employee)
1162                        return false;
1163
1164                /* requer a área do funcionário */
1165                if ($areaStatusID == -1)
1166                        return $employee['area_id'];
1167                else
1168                {
1169                        /* verifica se a área do funcionário já está no nível solicitado */
1170                        $currentArea = $this->getArea($employee['area_id']);
1171                        if ($currentArea['area_status_id'] == $areaStatusID)
1172                                return $currentArea['area_id'];
1173                        else
1174                                return $this->getParentAreaID($currentArea['area_id'], $areaStatusID);
1175                }
1176        }
1177
1178        /**
1179         * Busca o ID da localidade de um funcionário.
1180         *
1181         * Este método buscará o funcionário pelo seu ID e retornará o ID da sua localidade.
1182         * @param int $employeeID O ID do funcionário.
1183         * @return int O ID da localidade do funcionário.
1184         * @access public
1185         */
1186        function getEmployeeLocalID($employeeID)
1187        {
1188                $employee = $this->getEmployee($employeeID);
1189                if (!$employee)
1190                        return false;
1191
1192                return $employee['localidade_id'];
1193        }
1194
1195        /**
1196         * Busca o ID do status de um funcionário.
1197         *
1198         * Este método buscará um funcionário pelo seu ID e retornará o ID de status do funcionário.
1199         * Status de funcionário corresponde à sua situação: ativo, desligado, etc.
1200         * @param int $employeeID O ID do funcionário.
1201         * @return int O ID do status do funcionário.
1202         * @access public
1203         */
1204        function getEmployeeStatusID($employeeID)
1205        {
1206                $employee = $this->getEmployee($employeeID);
1207                if (!$employee)
1208                        return false;
1209
1210                return $employee['funcionario_status_id'];
1211        }
1212
1213        /**
1214         * Busca o ID do centro de custo de um funcionário.
1215         *
1216         * Este método irá buscar um funcionário pelo seu ID e retornará o ID do centro de custo do funcionário.
1217         * O centro de custo não é obrigatório por funcionário. Neste caso, se necessário, busque o centro de custo da área ou da localidade.
1218         * @param int $employeeID O ID do funcionário.
1219         * @return int O ID do centro de custo do funcionário.
1220         * @access public
1221         */
1222        function getEmployeeCostCenterID($employeeID)
1223        {
1224                $employee = $this->getEmployee($employeeID);
1225                if (!$employee)
1226                        return false;
1227
1228                return $employee['centro_custo_id'];
1229        }
1230
1231        /**
1232         * Busca o ID do cargo de um funcionário.
1233         *
1234         * Este método buscará um funcionário pelo seu ID e retornará o ID do cargo do funcionário.
1235         * @param int $employeeID O ID do funcionário.
1236         * @return int O ID do cargo do funcionário.
1237         * @access public
1238         */
1239        function getEmployeeJobTitleID($employeeID)
1240        {
1241                $employee = $this->getEmployee($employeeID);
1242                if (!$employee)
1243                        return false;
1244
1245                return $employee['cargo_id'];
1246        }
1247
1248        /**
1249         * Busca o ID da categoria de um funcionário.
1250         *
1251         * Este método buscará um funcionário pelo seu ID e retornará o ID da categoria do funcionário.
1252         * A categoria corresponde ao tipo de vínculo do funcionário com a organizacao. Por exemplo:
1253         * - funcionário
1254         * - estagiário
1255         * - terceirizado, etc
1256         * @param int $employeeID O ID do funcionário.
1257         * @return int O ID do categoria do funcionário.
1258         * @access public
1259         */
1260        function getEmployeeCategoryID($employeeID)
1261        {
1262                $employee = $this->getEmployee($employeeID);
1263                if (!$employee)
1264                        return false;
1265
1266                return $employee['funcionario_categoria_id'];
1267        }
1268
1269        /**
1270         * Busca o nível de um funcionário.
1271         *
1272         * Este método buscará o funcionário pelo seu ID e retornará o nível do funcionário dentro do cargo.
1273         * Geralmente um cargo (por exemplo: auxiliar tecnico) é composto por níveis de evolução na carreira: 1,2,3,...
1274         * @param int $employeeID O ID do funcionário.
1275         * @return int A quantidade de níveis do funcionário.
1276         * @access public
1277         */
1278        function getEmployeeLevel($employeeID)
1279        {
1280                $employee = $this->getEmployee($employeeID);
1281                if (!$employee)
1282                        return false;
1283
1284                if ($employee['nivel'] === null)
1285                        return false;
1286
1287                return $employee['nivel'];
1288        }
1289
1290        /**
1291         * Busca o ID do titular da área de um funcionário.
1292         *
1293         * Este método buscará o titular da área do funcionário, e poderá subir na hierarquia, buscando o titular de áreas superiores à área do funcionário.
1294         * @param int $employeeID O ID do funcionário.
1295         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer o titular. Utilizar -1 caso se queira o titular da área imediata do funcionário.
1296         * @return int O ID do titular da área do funcionário:
1297         * - titular_funcionario_id
1298         * @access public
1299         */
1300        function getEmployeeSupervisorID($employeeID, $areaStatusID = -1)
1301        {
1302                return $this->getAreaSupervisorID($this->getEmployeeAreaID($employeeID, $areaStatusID));
1303        }
1304
1305        /**
1306         * Busca o ID do titular atual da área do funcionário.
1307         *
1308         * Caso haja um substituto, este será o titular atual; caso contrário, o titular atual é o próprio titular da área.
1309         * @param int $employeeID O ID do funcionário.
1310         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer o titular atual. Utilizar -1 caso se queira o titular atual da área imediata do funcionário.
1311         * @return int O ID do titular atual da área do funcionário:
1312         * - titular_funcionário_id ou
1313         * - substituto_funcionario_id
1314         * @access public
1315         */
1316        function getEmployeeCurrentSupervisorID($employeeID, $areaStatusID = -1)
1317        {
1318                return $this->getAreaCurrentSupervisorID($this->getEmployeeAreaID($employeeID, $areaStatusID));
1319        }
1320
1321        /**
1322         * Busca o ID do responsável administrativo atual de uma área.
1323         *
1324         * A precedência para definir quem é o responsável administrativo é: auxiliar administrativo, substituto e titular.
1325         * @param int $employeeID O ID do funcionário.
1326         * @param int $areaStatusID O ID do status de área (nível) da área do funcionário que se quer o responsável administrativo. Utilizar -1 caso se queira o responsável administrativo da área imediata do funcionário.
1327         * @return int O ID do responsável administrativo atual da área do funcionário:
1328         * - titular_funcionário_id ou
1329         * - substituto_funcionario_id ou
1330         * - auxiliar_funcionario_id
1331         * @access public
1332         */
1333        function getEmployeeCurrentAdministrativeResponsibleID($employeeID, $areaStatusID = -1)
1334        {
1335                return $this->getAreaCurrentAdministrativeResponsibleID($this->getEmployeeAreaID($employeeID, $areaStatusID));
1336        }
1337}
1338?>
Note: See TracBrowser for help on using the repository browser.