/** * Operacao Vincular documentos a documentos * @return Output * @param string $pai * @param string $filho * @param integer $vinculacao */ public function vincularDocumento($pai, $filho, $vinculacao) { try { /* Validar se os documentos pai e filho ainda estao na area de trabalho do usuario */ /* Inicar transacao */ Controlador::getInstance()->getConnection()->connection->beginTransaction(); $dt_ativacao = date('Y-m-d'); //$operacao = ($vinculacao == 1) ? 'anexado' : 'apensado'; switch ($vinculacao) { case 1: $operacao = 'anexado'; break; case 2: $operacao = 'apensado'; break; case 3: $operacao = 'associado'; break; default: $operacao = 'erro'; break; } if ($operacao != 'erro') { $informacoes = array('USUARIO' => Zend_Auth::getInstance()->getIdentity()->ID, 'NOME_USUARIO' => Zend_Auth::getInstance()->getIdentity()->NOME, 'ID_UNIDADE_HISTORICO' => Zend_Auth::getInstance()->getIdentity()->ID_UNIDADE, 'DIRETORIA' => current(CFModelUnidade::factory()->find(Zend_Auth::getInstance()->getIdentity()->ID_UNIDADE))->NOME, 'ID_DOCUMENTO' => 0, 'TIPO_DOCUMENTO' => '', 'ID_PAI' => 0, 'OPERACAO' => $operacao, 'ACAO' => ''); //var_dump($informacoes,1); $acao0 = "Este documento foi {$operacao} ao documento {$pai}"; $acao1 = "O documento {$filho} foi {$operacao}."; $acao2 = "Este documento foi {$operacao} ao documento {$pai}."; /* Historico - Documento Pai */ $informacoes['ID_DOCUMENTO'] = $pai; $informacoes['ACAO'] = $acao1; $this->historicoDocumento($informacoes); /* Limpa o aray informacao para o próximo registro com id_pai */ $informacoes['ID_PAI'] = Controlador::getInstance()->getConnection()->connection->lastInsertId('TB_HISTORICO_TRAMITE_DOCUMENTOS_ID_SEQ'); $informacoes['ID_DOCUMENTO'] = $filho; $informacoes['ACAO'] = $acao0; $this->historicoDocumento($informacoes); /**/ $id_filho = Controlador::getInstance()->getConnection()->connection->lastInsertId('TB_HISTORICO_TRAMITE_DOCUMENTOS_ID_SEQ'); /* Ultimo tramite - Documento Filho */ $stmt = Controlador::getInstance()->getConnection()->connection->prepare("UPDATE TB_DOCUMENTOS_CADASTRO SET ULTIMO_TRAMITE = ? WHERE DIGITAL = ?"); $stmt->bindParam(1, $acao2, PDO::PARAM_STR); $stmt->bindParam(2, $filho, PDO::PARAM_STR); $stmt->execute(); $id_unidade = Controlador::getInstance()->usuario->ID_UNIDADE; /* Vincular */ $sttm = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_DOCUMENTOS_VINCULACAO (ID_DOCUMENTO_PAI,ID_DOCUMENTO_FILHO,ID_USUARIO,ID_HISTORICO_TRAMITE_PAI,ID_HISTORICO_TRAMITE_FILHO,ID_VINCULACAO,DT_ATIVACAO,ID_UNIDADE) VALUES (?,?,?,?,?,?,?,?)"); $sttm->bindParam(1, DaoDocumento::getDocumento($pai, 'id'), PDO::PARAM_INT); $sttm->bindParam(2, DaoDocumento::getDocumento($filho, 'id'), PDO::PARAM_INT); $sttm->bindParam(3, $informacoes['USUARIO'], PDO::PARAM_INT); $sttm->bindParam(4, $informacoes['ID_PAI'], PDO::PARAM_INT); $sttm->bindParam(5, $id_filho, PDO::PARAM_INT); $sttm->bindParam(6, $vinculacao, PDO::PARAM_INT); $sttm->bindParam(7, $dt_ativacao, PDO::PARAM_INT); $sttm->bindParam(8, $id_unidade, PDO::PARAM_INT); $sttm->execute(); /* Comitar */ Controlador::getInstance()->getConnection()->connection->commit(); return new Output(array('success' => 'true', 'message' => "Documento {$operacao} com sucesso!")); } else { throw new PDOException(); } } catch (PDOException $e) { Controlador::getInstance()->getConnection()->connection->rollback(); return new Output(array('success' => 'false', 'error' => $e->getMessage())); } }
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */ $controller = Controlador::getInstance(); $auth = Zend_Auth::getInstance()->getStorage()->read(); if (isset($_POST['DIRETORIA'])) { if ($auth->ID_UNIDADE != $_POST['DIRETORIA']) { // Diretoria selecionada é diferente da original do usuário, houve troca $auth->ID_UNIDADE_ORIGINAL = $auth->ID_UNIDADE; $auth->TROCOU = true; } else { $auth->ID_UNIDADE_ORIGINAL = $auth->ID_UNIDADE; unset($auth->TROCOU); } $auth->ID_UNIDADE = $_POST['DIRETORIA']; $auth->DIRETORIA = current(CFModelUnidade::factory()->find($_POST['DIRETORIA']))->NOME; Zend_Auth::getInstance()->getStorage()->write($auth); $controller->cache->remove('acl_' . $auth->ID); $controller->cache->clean('matchingAnyTag', array('acl_usuario_' . $auth->ID)); header('Location: sistemas.php'); } else { include "function/auto_load_statics.php"; ?> <!--Dialogo com a listagem de unidades do ICMBio--> <html> <head> <script type="text/javascript"> $(document).ready(function() { /*Listeners*/ /*Bind Dialog Close*/
<?php /* * Copyright 2008 ICMBio * Este arquivo é parte do programa SISICMBio * O SISICMBio é um software livre; você pode redistribuíção e/ou modifição dentro dos termos * da Licença Pública Geral GNU como publicada pela Fundação do Software Livre (FSF); na versão * 2 da Licença. * * Este programa é distribuíção na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem * uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a * Licença Pública Geral GNU/GPL em português para maiores detalhes. * Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", * junto com este programa, se não, acesse o Portal do Software Público Brasileiro no endereço * www.softwarepublico.gov.br ou escreva para a Fundação do Software Livre(FSF) * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * */ $retrive = CFModelUnidade::factory()->retriveUnidadeOrgaoPrincipal(); $out[] = array('0' => 'Selecione'); foreach ($retrive as $key => $value) { $out[] = array($value['ID'] => Util::fixErrorString("{$value['NOME']} - {$value['SIGLA']}")); } print json_encode($out);
/** * @return string * 'legenda dos status' => * 1 -> disponivel, * 2 -> processando, * 3 -> indisponivel, * 4 -> sincronizacao concluida, * 5 -> falha na sincronizacao' */ public function startRemoteSync() { if ($this->_readStatusInFile() != 1) { return $this->status(); } $countChanged = 0; $countAdd = 0; $countInactivated = 0; $countPending = 0; $error = ''; $model = CFModelUnidade::factory(); try { //sincronizacao iniciada... $this->_writeStatusInFile(2); $externals = $this->_sync->load(); $model->beginTransaction(); foreach ($externals as $external) { if (!Unit::factory()->isValid($external)) { $error .= "A unidade [{$external->ID}][{$external->SIGLA}][{$external->NOME}] nao e uma unidade valida!<br>"; $countPending++; continue; } $local = $model->find($external->ID); //verificar se a unidade externa jah esta cadastrada na base local... if (empty($local)) { $model->insert((array) $external, false); $countAdd++; continue; } $inactive = false; //verificar se a registro externo deve ser desativado... if ($external->ST_ATIVO == 0) { //verificar se existe algum processo ou documento associado a unidade... if ($this->_existsProcessesOrDocumentsInUnitById($external->ID)) { $error .= "A unidade {$external->NOME} ainda possui documento(s) e/ou processo(s) associado(s) \r\n"; $countPending++; continue; } $inactive = true; } //atualizar unidade externa com a base local... if ($model->update((array) $external) == 1) { $countChanged++; if ($inactive) { $countInactivated++; } } } //sincronizacao finalizada... $status = 1; $model->commit(); $this->_writeStatusInFile(1); } catch (Exception $e) { $this->_writeStatusInFile(5); $this->_writeLogInFile($e->getMessage()); $model->rollback(); } $response = array('status' => $status == 1 ? 4 : $status, 'message' => $status == 1 ? sprintf($this->_messages[4], $countAdd, $countChanged, $countInactivated, $countPending) : $this->_messages[$status], 'error' => $error); return json_encode($response); }
/** * */ public function salvarAutuacao() { $unidade = current(CFModelUnidade::factory()->find($this->_usuario->id_unidade)); //verificar se a unidade autuadora é uma unidade protocolizadora... if (!$unidade->UP || !$unidade->CODIGO) { throw new Exception('Este processo não pode ser autuado porque você não está em uma unidade protocolizadora válida!'); } if (!Documento::validarDocumentoPecaProcesso($this->digital)) { if (Documento::validarDocumentoAreaDeTrabalho($this->digital)) { if (Documento::getQuantidadeImagemDocumento($this->digital) > 0) { try { Controlador::getInstance()->getConnection()->connection->beginTransaction(); $id_unidade_usuario = (int) Controlador::getInstance()->usuario->ID_UNIDADE; $numero_processo = $this->gerarNumeroProcesso(); /* Adicionar o novo Processo */ $stmt = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_PROCESSOS_CADASTRO(\n NUMERO_PROCESSO,ORIGEM,ASSUNTO,ASSUNTO_COMPLEMENTAR,DT_AUTUACAO,DT_PRAZO,\n DT_CADASTRO,USUARIO,INTERESSADO,ID_UNID_AREA_TRABALHO,ULTIMO_TRAMITE,PROCEDENCIA,ID_UNIDADE_USUARIO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)"); $stmt->bindParam(1, $numero_processo, PDO::PARAM_STR); $stmt->bindParam(2, $this->origem, PDO::PARAM_INT); $stmt->bindParam(3, $this->assunto, PDO::PARAM_INT); $stmt->bindParam(4, $this->assunto_complementar, PDO::PARAM_STR); $stmt->bindParam(5, $this->dt_autuacao, PDO::PARAM_STR); $stmt->bindParam(6, $this->dt_prazo, PDO::PARAM_STR); $stmt->bindParam(7, $this->dt_autuacao, PDO::PARAM_STR); $stmt->bindParam(8, $this->_usuario->id, PDO::PARAM_INT); $stmt->bindParam(9, $this->interessado, PDO::PARAM_INT); $stmt->bindParam(10, $this->area_trabalho, PDO::PARAM_INT); $stmt->bindParam(11, $this->ultimo_tramite, PDO::PARAM_STR); $stmt->bindParam(12, $this->procedencia, PDO::PARAM_STR); $stmt->bindParam(13, $id_unidade_usuario, PDO::PARAM_STR); $stmt->execute(); /* Armazenar o id do processo */ $id_processo = Controlador::getInstance()->getConnection()->connection->lastInsertId('TB_PROCESSOS_CADASTRO_ID_SEQ'); /* Registrar o primeiro volume do processo */ $volume = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_PROCESSOS_VOLUME (ID_PROCESSO_CADASTRO, NU_VOLUME, FL_INICIAL, DT_ABERTURA,ID_USUARIO,ID_UNIDADE) VALUES (?, 1, 1,?,?,?)"); $volume->bindParam(1, $id_processo, PDO::PARAM_INT); //id do processo $volume->bindParam(2, $this->dt_autuacao, PDO::PARAM_STR); //usar a data da autuacao para informar a data de inicio do primeiro volume. $volume->bindParam(3, $this->_usuario->id, PDO::PARAM_INT); $volume->bindParam(4, $id_unidade_usuario, PDO::PARAM_INT); $volume->execute(); /* Adicionar a documento no processo */ $peca = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_PROCESSOS_DOCUMENTOS(ID_PROCESSOS_CADASTRO,ID_DOCUMENTOS_CADASTRO,ID_USUARIOS,ID_UNIDADE_USUARIO)VALUES(?,?,?,?)"); $peca->bindParam(1, $id_processo, PDO::PARAM_INT); //id_processo $peca->bindParam(2, DaoDocumento::getDocumento($this->digital, 'id'), PDO::PARAM_INT); //id_documento $peca->bindParam(3, $this->_usuario->id, PDO::PARAM_INT); $peca->bindParam(4, $id_unidade_usuario, PDO::PARAM_INT); $peca->execute(); /* Inserir o historico de tramite do processo */ /* Complemento do Historico do Processo */ $acao = "Processo Autuado a partir do documento {$this->digital}"; $destino = "XXXXX"; $id_usuario = $this->_usuario->id; $nome_usuario = $this->_usuario->nome; $id_unidade = Zend_Auth::getInstance()->getIdentity()->ID_UNIDADE; $objOrigem = DaoUnidade::getUnidade($id_unidade); $diretoria = $objOrigem['nome']; $tx_origem = $objOrigem['nome'] . ' - ' . $objOrigem['sigla']; $historico_processo = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_PROCESSOS" . " (NUMERO_PROCESSO,ID_USUARIO,USUARIO,ID_UNIDADE,DIRETORIA,ACAO,ORIGEM,DESTINO,DT_TRAMITE)" . " VALUES(?,?,?,?,?,?,?,?,CLOCK_TIMESTAMP())"); $historico_processo->bindParam(1, $this->numero_processo, PDO::PARAM_STR); $historico_processo->bindParam(2, $id_usuario, PDO::PARAM_INT); $historico_processo->bindParam(3, $nome_usuario, PDO::PARAM_STR); $historico_processo->bindParam(4, $id_unidade, PDO::PARAM_INT); $historico_processo->bindParam(5, $diretoria, PDO::PARAM_STR); $historico_processo->bindParam(6, $acao, PDO::PARAM_STR); $historico_processo->bindParam(7, $tx_origem, PDO::PARAM_STR); $historico_processo->bindParam(8, $destino, PDO::PARAM_STR); $historico_processo->execute(); /* Complemento do Historico do Documento */ $acao = "O processo {$this->numero_processo} foi autuado a partir deste documento."; $destino = "XXXXX"; $historico_documento = Controlador::getInstance()->getConnection()->connection->prepare("INSERT INTO TB_HISTORICO_TRAMITE_DOCUMENTOS" . " (DIGITAL,ID_USUARIO,USUARIO,ID_UNIDADE,DIRETORIA,ACAO,ORIGEM,DESTINO,DT_TRAMITE)" . " VALUES (?,?,?,?,?,?,?,?,CLOCK_TIMESTAMP())"); $historico_documento->bindParam(1, $this->digital, PDO::PARAM_STR); $historico_documento->bindParam(2, $id_usuario, PDO::PARAM_INT); $historico_documento->bindParam(3, $nome_usuario, PDO::PARAM_STR); $historico_documento->bindParam(4, $id_unidade, PDO::PARAM_INT); $historico_documento->bindParam(5, $diretoria, PDO::PARAM_STR); $historico_documento->bindParam(6, $acao, PDO::PARAM_STR); $historico_documento->bindParam(7, $tx_origem, PDO::PARAM_STR); $historico_documento->bindParam(8, $destino, PDO::PARAM_STR); $historico_documento->execute(); DaoDocumento::updateGenerico($this->digital, array('ultimo_tramite' => $acao)); Controlador::getInstance()->getConnection()->connection->commit(); $this->out = array('success' => 'true', 'numero_processo' => $this->numero_processo); return true; } catch (PDOException $e) { Controlador::getInstance()->getConnection()->connection->rollback(); echo $e->getMessage(); return false; throw new Exception($e); } } else { $this->out = array('success' => 'false', 'error' => 'Este documento não possui imagem!'); } } else { $this->out = array('success' => 'false', 'error' => 'Este documento não está na Área de Trabalho!'); } } else { $this->out = array('success' => 'false', 'error' => 'Este documento já é peça de outro processo!'); } }