- Timestamp:
- 08/17/10 16:17:12 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2/workflow/inc/local/classes/class.wf_orgchart.php
r1320 r3167 24 24 function wf_orgchart() 25 25 { 26 $this->db = & $GLOBALS['workflow']['workflowObjects']->getDBWorkflow()->Link_ID;26 $this->db = &Factory::getInstance('WorkflowObjects')->getDBWorkflow()->Link_ID; 27 27 $this->db->setFetchMode(ADODB_FETCH_ASSOC); 28 28 } … … 117 117 * Este método irá buscar na tabela de áreas, todas as áreas que pertencem à organização solicitada. 118 118 * @param int $organizationID O ID da organização. 119 * @param int $onlyActiveAreas false= recupera todas as áreas; true= recupera somente as áreas ativas. 119 120 * @return array Uma array seqüencial contendo as áreas de uma organização. Cada linha do array conterá: 120 121 * - organizacao_id … … 131 132 * @access public 132 133 */ 133 function getOrganizationAreas($organizationID) 134 { 135 $query = "SELECT organizacao_id, area_id, area_status_id, " . 136 " superior_area_id, centro_custo_id, titular_funcionario_id," . 137 " substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 138 " FROM area" . 139 " WHERE (organizacao_id = ?)" . 140 " ORDER BY sigla, descricao"; 134 function getOrganizationAreas($organizationID, $onlyActiveAreas = false) 135 { 136 $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 137 " a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 138 " a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 139 " s.funcionario_id as substituto_funcionario_id " . 140 " FROM area a " . 141 " LEFT OUTER JOIN substituicao s " . 142 " ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 143 " WHERE " . 144 " (a.organizacao_id = ?) "; 145 // Se desejar somente retornar as áreas que estão ativas 146 if($onlyActiveAreas) 147 $query .=" AND a.ativa = 'S' "; 148 149 $query .= " ORDER BY a.sigla, a.descricao"; 141 150 142 151 $result = $this->db->query($query, array($organizationID)); … … 320 329 function getArea($areaID) 321 330 { 322 $query = "SELECT organizacao_id, area_id, area_status_id, " . 323 " superior_area_id, centro_custo_id, titular_funcionario_id," . 324 " substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 325 " FROM area" . 326 " WHERE (area_id = ?)"; 331 $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 332 " a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 333 " a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 334 " s.funcionario_id as substituto_funcionario_id " . 335 " FROM area a " . 336 " LEFT OUTER JOIN substituicao s " . 337 " ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 338 " WHERE " . 339 " (a.area_id = ?) " . 340 " ORDER BY a.sigla, a.descricao"; 341 327 342 328 343 $result = $this->db->query($query, array($areaID)); … … 357 372 function getAreaByName($acronym, $organizationID = 1) 358 373 { 359 $query = "SELECT organizacao_id, area_id, area_status_id, " . 360 " superior_area_id, centro_custo_id, titular_funcionario_id," . 361 " substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 362 " FROM area" . 363 " WHERE (UPPER(sigla) = UPPER(?) and (organizacao_id = ?))"; 374 $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 375 " a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 376 " a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 377 " s.funcionario_id as substituto_funcionario_id " . 378 " FROM area a " . 379 " LEFT OUTER JOIN substituicao s " . 380 " ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 381 " WHERE " . 382 " (UPPER(a.sigla) = UPPER(?)) " . 383 " AND " . 384 " (a.organizacao_id = ?) " . 385 " ORDER BY a.sigla, a.descricao"; 386 364 387 365 388 $result = $this->db->query($query, array($acronym, (int) $organizationID)); … … 395 418 $result = array(); 396 419 397 $query = "SELECT organizacao_id, area_id, area_status_id, " . 398 " superior_area_id, centro_custo_id, titular_funcionario_id," . 399 " substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 400 " FROM area" . 401 " WHERE (area_status_id = ?)"; 420 $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 421 " a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 422 " a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 423 " s.funcionario_id as substituto_funcionario_id " . 424 " FROM area a " . 425 " LEFT OUTER JOIN substituicao s " . 426 " ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 427 " WHERE " . 428 " (a.area_status_id = ?) " . 429 " ORDER BY a.sigla, a.descricao"; 430 431 402 432 403 433 $result = $this->db->query($query, array($areaStatusID)); … … 436 466 $areas = implode(', ', $areaIDs); 437 467 438 $query = "SELECT organizacao_id, area_id, area_status_id, " . 439 " superior_area_id, centro_custo_id, titular_funcionario_id," . 440 " substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 441 " FROM area" . 442 " WHERE area_id IN ($areas)" . 443 " ORDER BY sigla, descricao"; 468 $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 469 " a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 470 " a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 471 " s.funcionario_id as substituto_funcionario_id " . 472 " FROM area a " . 473 " LEFT OUTER JOIN substituicao s " . 474 " ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 475 " WHERE " . 476 " (a.area_id IN ($areas)) " . 477 " ORDER BY a.sigla, a.descricao"; 444 478 445 479 // A execução é realizada sem o segundo parâmetro pois este não pode estar entre aspas … … 448 482 return false; 449 483 484 $output = $result->GetArray(-1); 485 return $output; 486 } 487 488 /** 489 * Return all areas that the employee is a supervisor. 490 * 491 * Search in the organization for all areas that the employee is a supervisor. 492 * @param int $employeeID The ID of employee 493 * @return array Array containing all the areas that the employeee is a supervisor. 494 * @access public 495 */ 496 function getSupervisorAreas($employeeID) { 497 498 if (!$employeeID) { 499 return false; 500 } 501 502 $query = "SELECT 503 a.area_id 504 FROM 505 area a 506 LEFT OUTER JOIN substituicao s ON ((a.area_id = s.area_id) 507 AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) 508 WHERE 509 a.titular_funcionario_id = ? OR 510 s.funcionario_id = ? 511 GROUP BY 512 a.area_id"; 513 514 $result = $this->db->query($query, array($employeeID,$employeeID)); 515 if (!$result) 516 return false; 517 450 518 $output = $result->GetArray(-1); 451 519 return $output; … … 506 574 function getSubAreasByParentAreaID($parentAreaID, $onlyActiveAreas = false) 507 575 { 508 $query = "SELECT organizacao_id, area_id, area_status_id, " . 509 " superior_area_id, centro_custo_id, titular_funcionario_id," . 510 " substituto_funcionario_id, sigla, descricao, ativa, auxiliar_funcionario_id" . 511 " FROM area" . 512 " WHERE superior_area_id = ?"; 576 $query = "SELECT a.organizacao_id, a.area_id, a.area_status_id, " . 577 " a.superior_area_id, a.centro_custo_id, a.titular_funcionario_id, " . 578 " a.sigla, a.descricao, a.ativa, a.auxiliar_funcionario_id, " . 579 " s.funcionario_id as substituto_funcionario_id " . 580 " FROM area a " . 581 " LEFT OUTER JOIN substituicao s " . 582 " ON ((a.area_id = s.area_id) AND (CURRENT_DATE BETWEEN s.data_inicio AND s.data_fim)) " . 583 " WHERE " . 584 " (a.superior_area_id = ?) "; 585 513 586 514 587 if ($onlyActiveAreas){ 515 588 $query .= " AND ativa = 'S'"; 516 589 } 517 $query .= " ORDER BY sigla,descricao";590 $query .= " ORDER BY a.sigla, a.descricao"; 518 591 519 592 $result = $this->db->query($query, array($parentAreaID)); … … 1168 1241 return false; 1169 1242 1170 return $employee['centro_custo_id']; 1243 $costCenterID = $employee['centro_custo_id']; 1244 if(!empty($costCenterID)){ 1245 return $costCenterID; 1246 } else { 1247 $employeeArea = $this->getArea($employee['area_id']); 1248 return $employeeArea['centro_custo_id']; 1249 } 1171 1250 } 1172 1251
Note: See TracChangeset
for help on using the changeset viewer.