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

Revision 2466, 42.5 KB checked in by pedroerp, 14 years ago (diff)

Ticket #609 - Merged 2356:2442 /sandbox/workflow/branches/609 em /sandbox/workflow/trunk.

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