Beispiel #1
0
 public function getPessoaDestinatarioArtefato($dto)
 {
     $queryBuilder = $this->_em->createQueryBuilder()->select('t.noTratamento,
                 pa.txPosTratamento,
                 puo.noUnidadeOrg,
                 ps.noPessoa,
                 vtuo.noTipoUnidadeOrg,
                 vtuo2.noTipoUnidadeOrg noTipoUnidadeOrg2,
                 puo.noCargo,
                 m.noMunicipio,
                 vest.noEstado,
                 es.coCep,
                 pa.txPosVocativo,
                 pc.sqTipoPessoa,
                 voc.noVocativo')->from('app:ArtefatoMinuta', 'am')->innerJoin('am.sqArtefato', 'a')->innerJoin('a.sqPessoaArtefato', 'pa')->innerJoin('pa.sqPessoaFuncao', 'pf')->innerJoin('pa.sqPessoaSgdoce', 'ps')->leftJoin('ps.sqPessoaCorporativo', 'pc')->leftJoin('pa.sqPessoaUnidadeOrg', 'puo')->leftJoin('ps.sqVwPessoaUnidadeOrg', 'vuo')->leftJoin('vuo.sqTipoUnidade', 'vtuo2')->leftJoin('puo.sqPessoaUnidadeOrgCorp', 'vpuo')->leftJoin('vpuo.sqTipoUnidade', 'vtuo')->leftJoin('pa.sqEnderecoSgdoce', 'es')->leftJoin('es.sqMunicipio', 'm')->leftJoin('m.sqEstado', 'vest')->leftJoin('pa.sqTratamentoVocativo', 'tv')->leftJoin('tv.sqTratamento', 't')->leftJoin('tv.sqVocativo', 'voc')->andWhere('a.sqArtefato = :sqArtefato')->setParameter('sqArtefato', $dto->getSqArtefato())->andWhere('pf.sqPessoaFuncao = :sqPessoaFuncao')->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoDestinatario());
     $res = $queryBuilder->getQuery()->getScalarResult();
     $res['qtdDestinatario'] = count($res);
     return $res;
 }
 /**
  * Metodo resposavel por retornar a pessoa vinculada ao artefato e verifica se essa pessoa eh interna ou externa
  *
  * return array object
  */
 protected function _dadosPessoaDocumento($dto, $tipoPessoa)
 {
     $result = $this->getService('PessoaArtefato')->getPessoaArtefato($dto, $tipoPessoa);
     if ($result) {
         $arrCheck = array(\Core_Configuration::getSgdocePessoaFuncaoOrigem(), \Core_Configuration::getSgdocePessoaFuncaoDestinatario());
         if (in_array($tipoPessoa, $arrCheck)) {
             $procedencia = $result[0]->getStProcedencia();
             if ($procedencia) {
                 $result[1] = \Sgdoce_Constants::PROCEDENCIA_INTERNA;
             }
             if (FALSE === $procedencia) {
                 $result[1] = \Sgdoce_Constants::PROCEDENCIA_EXTERNA;
             }
             if (is_null($procedencia)) {
                 $result[1] = NULL;
             }
         } else {
             trigger_error('Método usado apenas para dados de Pessoa ORIGEM/DESTINO', E_USER_ERROR);
         }
     }
     return $result;
 }
 /**
  * Metódo para salvar o artefato parcialmente
  * @return TRUE
  */
 public function saveArtefatoAction()
 {
     $sqTipoDocumento = $this->_getParam('sqTipoDocumento');
     $sqAssunto = $this->_getParam('sqAssunto');
     $params['sqPessoaFuncao'] = \Core_Configuration::getSgdocePessoaFuncaoDestinatario();
     $dtoSearch = Core_Dto::factoryFromData(array('sqTipoDocumento' => $sqTipoDocumento, 'sqAssunto' => $sqAssunto), 'search');
     $res = $this->getService()->saveArtefato($dtoSearch);
     $this->_redirect('/artefato/minuta-eletronica/create/id/' . $res->getSqArtefato() . '/sqTipoDocumento/' . $sqTipoDocumento . '/sqAssunto/' . $sqAssunto);
     return TRUE;
 }
 public function addDestinatarioInternoAction()
 {
     $params = $this->_getAllParams();
     $result = 'true';
     $params['sqPessoaFuncao'] = \Core_Configuration::getSgdocePessoaFuncaoDestinatario();
     if ($params['sqTipoUnidadeOrg'] != '' && $params['sqUnidadeOrg'] == '' && $params['sqPessoaCorporativo'] == '') {
         $params['sqTipoEndereco'] = \Core_Configuration::getSgdoceTipoEnderecoResidencial();
         $dtoSearch = Core_Dto::factoryFromData($params, 'search');
         $service = $this->getService('TipoUnidadeOrg')->searchUnidadeOrgPorTipo($dtoSearch);
         $params['sqTipoPessoa'] = \Core_Configuration::getSgdoceTipoPessoaPessoaFisica();
         foreach ($service as $key => $value) {
             $params['sqPessoaCorporativo'] = $value['sqUnidadeOrg'];
             $params['noPessoa'] = $value['noUnidadeOrg'];
             $result = $this->searchUnidade($params);
         }
         //se preencher o tipo e a unidade
     } else {
         if ($params['sqTipoUnidadeOrg'] != '' && $params['sqUnidadeOrg'] != '' && $params['sqPessoaCorporativo'] == '') {
             $params['sqTipoPessoa'] = \Core_Configuration::getSgdoceTipoPessoaPessoaFisica();
             $params['sqTipoEndereco'] = \Core_Configuration::getSgdoceTipoEnderecoResidencial();
             $params['sqPessoaCorporativo'] = $params['sqUnidadeOrg'];
             $params['noPessoa'] = $params['noUnidadeOrg'];
             $result = $this->searchUnidade($params);
         } else {
             $result = $this->searchUnidade($params);
         }
     }
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender(TRUE);
     $this->_response->setBody($result);
 }
 /**
  * Metódo que retorna a lista com os temas tratados.
  * @return array
  */
 public function listTemaTratadoAction()
 {
     $params = $this->_getAllParams();
     $this->_helper->layout->disableLayout();
     $params['sqPessoaFuncao'] = \Core_Configuration::getSgdocePessoaFuncaoDestinatario();
     $params['sqTipoPessoa'] = \Core_Configuration::getSgdoceTipoPessoaPessoaFisica();
     $configArray = array('columns' => array(array('alias' => 'vi.nome'), array('alias' => 'vi.tipo')));
     $this->view->grid = new Core_Grid($configArray);
     $params = $this->view->grid->mapper($params);
     $this->view->dto = Core_Dto::factoryFromData($params, 'search');
     $this->view->result = $this->getResultListTemaTratado($this->view->dto);
 }
 /**
  * @return void
  */
 protected function editActionExtension()
 {
     $params = $this->_getAllParams();
     $dtoCheckEdit = Core_Dto::factoryFromData(array('sqArtefato' => $params['id'], 'sqPessoa' => \Core_Integration_Sica_User::getPersonId()), 'search');
     //verifica se o artefato pode ser editado
     //        if (!$this->getService('AreaTrabalho')->canEditArtefact($dtoCheckEdit)) {
     //            $this->getMessaging()->addErrorMessage(
     //                    sprintf(\Core_Registry::getMessage()->translate('MN154'),
     //                            $this->view->data->getNuDigital()->getNuEtiqueta()));
     //            $this->_redirect('/artefato/area-trabalho');
     //        }
     $params['sqArtefato'] = $params['id'];
     $dtoSearch = Core_Dto::factoryFromData($params, 'search');
     $this->view->redirect = $params['view'];
     $this->view->user = $this->getUser();
     $this->getCombo();
     $this->view->isLoteEletronico = false;
     $this->view->eDigital = $this->view->data->getNuDigital();
     if ($this->view->data->getSqTipoDocumento()) {
         $this->view->isSIC = $this->view->data->getSqTipoDocumento()->getSqTipoDocumento() == \Core_Configuration::getSgdoceTipoDocumentoSic();
     } else {
         $this->view->isSIC = false;
     }
     $this->view->docSIC = $this->view->data->getSqTipoDocumento();
     $dtoSgdoceFisico = \Core_Dto::factoryFromData(array('nuDigital' => $this->view->data->getNuDigital()->getNuEtiqueta(), 'sqArtefato' => $this->view->data->getSqArtefato()), 'search');
     $this->view->dataSgdocFisico = $this->getService()->getDataSgdocFisico($dtoSgdoceFisico);
     $this->view->dataSgdocFisico = current($this->view->dataSgdocFisico);
     $this->view->listProcedenciaFisico = array('I' => 'Interno', 'E' => 'Externo');
     $this->view->nuInteressados = $this->getService('PessoaInterassadaArtefato')->countInteressadosArtefatoValido($dtoSgdoceFisico);
     $dto = Core_Dto::factoryFromData(array('sqPessoaCorporativo' => \Core_Configuration::getSgdoceUnidadeCgu(), 'sqTipoPessoa' => \Core_Configuration::getCorpTipoPessoaUnidadeExt()), 'search');
     $this->view->CGU = !$this->view->isSIC ? null : $this->getService('Pessoa')->getPessoa($dto);
     // retorno de valor para a view
     $this->view->tipoNavegacao = $dtoSearch->getA();
     $this->view->dataGrauAcesso = $this->getService('GrauAcessoArtefato')->getGrauAcessoArtefato($dtoSearch);
     $criteria = array('sqArtefato' => $params['sqArtefato'], 'sqPessoaFuncao' => \Core_Configuration::getSgdocePessoaFuncaoAssinatura());
     $this->view->assinanteArtefatoExterno = $this->getService('PessoaArtefato')->findOneBy($criteria);
     $this->view->assinanteArtefatoInterno = $this->getService('PessoaAssinanteArtefato')->getAssinanteArtefato($dtoSearch);
     $this->view->dadosOrigem = self::_dadosPessoaDocumento($dtoSearch, \Core_Configuration::getSgdocePessoaFuncaoOrigem());
     $this->view->dadosDestino = self::_dadosPessoaDocumento($dtoSearch, \Core_Configuration::getSgdocePessoaFuncaoDestinatario());
     $this->view->result = $this->getService('AnexoArtefato')->listGridAnexos($dtoSearch);
     if ($this->view->dadosDestino) {
         $sqTipoPessoa = $this->view->dadosDestino[0]->getSqPessoaSgdoce()->getSqTipoPessoa()->getSqTipoPessoa();
         if ($sqTipoPessoa == \Core_Configuration::getCorpTipoPessoaFisica()) {
             $this->view->nacionalidadeDestino = $this->returnNacionalidade($this->view->dadosDestino);
         }
     }
     if ($this->view->dadosOrigem) {
         $sqTipoPessoa = $this->view->dadosOrigem[0]->getSqPessoaSgdoce()->getSqTipoPessoa()->getSqTipoPessoa();
         if ($sqTipoPessoa == \Core_Configuration::getCorpTipoPessoaFisica()) {
             $this->view->nacionalidadeOrigem = $this->returnNacionalidade($this->view->dadosOrigem);
         }
     }
     if ($this->view->data->getSqTipoArtefatoAssunto()->getSqTipoArtefatoAssunto()) {
         $this->_messageEdit = 'MN043';
         #mensagem de alteracao
     }
     if (!$this->view->isSIC) {
         $procedenciaInterno = isset($this->view->dadosOrigem[1]) ? $this->view->dadosOrigem[1] : NULL;
         //1 = interno  -- 3 = externo
         if ($procedenciaInterno == 1) {
             $disabledProcedencia = 'chekProcedenciaExterno';
         } else {
             $disabledProcedencia = 'chekProcedenciaInterno';
         }
         $this->view->disabledProcedencia = $disabledProcedencia;
     }
 }
 public function findPessoaDestinatarioArtefato($dto)
 {
     $query = $this->_em->createQueryBuilder()->select('p.sqPessoaSgdoce,
               p.noPessoa,
               e.sqEnderecoSgdoce,
               te.sqTipoEndereco,
               te.noTipoEndereco,
               e.coCep,
               e.txEndereco,
               e.nuEndereco,
               es.sqEstado,
               es.noEstado,
               m.sqMunicipio,
               m.noMunicipio')->from('app:Artefato', 'a')->leftJoin('a.sqPessoaArtefato', 'pa')->leftJoin('pa.sqPessoaSgdoce', 'p')->leftJoin('p.sqPessoaCorporativo', 'pc')->leftJoin('p.sqPessoaEndereco', 'e')->leftJoin('e.sqTipoEndereco', 'te')->leftJoin('e.sqMunicipio', 'm')->leftJoin('m.sqEstado', 'es');
     if ($dto->getNuCPFDestinatario()) {
         $nuCpfCnpjPassaporte = str_replace('-', '', $dto->getNuCPFDestinatario());
         $nuCpfCnpjPassaporte = str_replace('/', '', $nuCpfCnpjPassaporte);
         $nuCpfCnpjPassaporte = str_replace('.', '', $nuCpfCnpjPassaporte);
         $query->andWhere('p.nuCpfCnpjPassaporte = :nuCpfCnpjPassaporte')->setParameter('nuCpfCnpjPassaporte', $nuCpfCnpjPassaporte);
     }
     $query->andWhere('pa.sqPessoaFuncao = :sqPessoaFuncao')->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoDestinatario());
     //         ->orWhere('e.sqEnderecoSgdoce IS NULL');
     if ($dto->hasSqEnderecoSgdoce()) {
         $query->andWhere('e.sqEnderecoSgdoce = :sqEnderecoSgdoce')->setParameter('sqEnderecoSgdoce', $dto->getSqEnderecoSgdoce());
     }
     if ($dto->getSqPessoa()) {
         $query->andWhere('p.sqPessoaCorporativo = :sqPessoaCorporativo')->setParameter('sqPessoaCorporativo', $dto->getSqPessoa());
     }
     if ($dto->getSqPessoaCorporativo()) {
         $query->andWhere('p.sqPessoaCorporativo = :sqPessoaCorporativo')->setParameter('sqPessoaCorporativo', $dto->getSqPessoaCorporativo());
     }
     $query->groupBy('p.sqPessoaSgdoce,
               p.noPessoa,
               e.sqEnderecoSgdoce,
               te.sqTipoEndereco,
               te.noTipoEndereco,
               e.coCep,
               e.txEndereco,
               es.sqEstado,
               es.noEstado,
               m.sqMunicipio,
               m.noMunicipio');
     $query->orderBy('e.dtCadastro', 'asc');
     return $query->getQuery()->execute();
 }
 /**
  * Metódo que realiza a persistencia de DESTINO
  * @param Object $entity
  * @param Object $dto
  * @return Object
  */
 protected function _salvaDestino($entity, $dto)
 {
     $filter = new \Zend_Filter_Digits();
     switch ($dto->getDestinoInterno()) {
         case 'externo':
             $stProcedencia = FALSE;
             break;
         case 'interno':
             $stProcedencia = TRUE;
             break;
         default:
             $stProcedencia = NULL;
             break;
     }
     $sqPessoaDestino = $this->recuperaSqPessoaDto($dto);
     //         $cpfCnpjPassaport = $this->retornaRegistro($dto);
     if ($dto->getSqTipoPessoaDestino()) {
         $sqTipoPessoa = $dto->getSqTipoPessoaDestino();
     } else {
         $sqTipoPessoa = $dto->getSqTipoPessoaDestinoIcmbio();
     }
     if ($dto->getSqPessoa_autocomplete()) {
         $noPessoaDestino = $dto->getSqPessoa_autocomplete();
     } else {
         $noPessoaDestino = $dto->getSqPessoaIcmbioDestino_autocomplete();
     }
     $sqPessoaEncaminhado = null;
     if ($dto->getSqPessoaEncaminhado()) {
         $sqPessoaEncaminhado = $dto->getSqPessoaEncaminhado();
         $noPessoaEncaminhado = $dto->getSqPessoaEncaminhado_autocomplete();
     } else {
         if ($dto->getSqPessoaEncaminhadoExterno()) {
             $sqPessoaEncaminhado = $dto->getSqPessoaEncaminhadoExterno();
             $noPessoaEncaminhado = $dto->getSqPessoaEncaminhadoExterno_autocomplete();
         }
     }
     if ($sqPessoaDestino != 0) {
         $data['sqPessoaCorporativo'] = $sqPessoaDestino;
         $dtoPessoaSearch = \Core_Dto::factoryFromData($data, 'search');
         $cpfCnpjPassaport = $this->getServiceLocator()->getService('VwPessoa')->returnCpfCnpjPassaporte($dtoPessoaSearch);
         $cpfCnpjPassaport = $filter->filter($cpfCnpjPassaport);
     }
     // verificando se existe Pessoa cadastrada no PessoaSgdoce
     $entPessoaSgdoce = $this->searchPessoaSgdoce($sqPessoaDestino);
     // Se nao existir registro na base de PessoaSgdoce, verifica se é PF ou PJ e recupera as informacoes
     // na base Corporativo e realiza o cadastro na base de PessoaSgdoce
     if (!count($entPessoaSgdoce)) {
         // Não existindo registro em PessoaSgdoce, faz cadastro na mesma
         $entPessoaSgdoce = $this->addPessoaSgdoce($sqPessoaDestino, $noPessoaDestino, $cpfCnpjPassaport);
         $entPessoaSgdoce->setNuCpfCnpjPassaporte($cpfCnpjPassaport);
         // retorna o numero do registro
         $criteriaTipoPessoa = array('sqTipoPessoa' => $sqTipoPessoa);
         $entPessoaSgdoce->setSqTipoPessoa($this->_getRepository('app:VwTipoPessoa')->findOneBy($criteriaTipoPessoa));
         $this->getEntityManager()->persist($entPessoaSgdoce);
         $this->getEntityManager()->flush($entPessoaSgdoce);
     }
     // cadastrando PessoaArtefato
     $entityPessoaArtefato = $this->cadastrarPessoaArtefato($entity, $entPessoaSgdoce, \Core_Configuration::getSgdocePessoaFuncaoDestinatario());
     if ($sqPessoaEncaminhado) {
         // verificando se existe PessoaEncaminhado cadastrada no PessoaSgdoce
         $entPessoaEncaminhado = $this->searchPessoaSgdoce($sqPessoaEncaminhado);
         if (!count($entPessoaEncaminhado)) {
             $data['sqPessoaCorporativo'] = $sqPessoaEncaminhado;
             $dtoPessoaSearch = \Core_Dto::factoryFromData($data, 'search');
             $cpfCnpjPassaport = $this->getServiceLocator()->getService('VwPessoa')->returnCpfCnpjPassaporte($dtoPessoaSearch);
             $cpfCnpjPassaport = $filter->filter($cpfCnpjPassaport);
             // Não existindo registro em PessoaSgdoce, faz cadastro na mesma
             $entPessoaEncaminhado = $this->addPessoaSgdoce($sqPessoaEncaminhado, $noPessoaEncaminhado, $cpfCnpjPassaport);
             // retorna o numero do registro
             $criteriaTipoPessoa = array('sqTipoPessoa' => $sqTipoPessoa);
             $entPessoaEncaminhado->setSqTipoPessoa($this->_getRepository('app:VwTipoPessoa')->findOneBy($criteriaTipoPessoa));
             $this->getEntityManager()->persist($entPessoaEncaminhado);
             $this->getEntityManager()->flush($entPessoaEncaminhado);
         }
         // setando valores
         $entityPessoaArtefato->setSqPessoaEncaminhado($entPessoaEncaminhado);
     } else {
         $entityPessoaArtefato->setSqPessoaEncaminhado(NULL);
     }
     $entityPessoaArtefato->setNoCargoEncaminhado($dto->getNoCargoEncaminhado());
     $entityPessoaArtefato->setStProcedencia($stProcedencia);
     // persistindo informacoes
     $this->getEntityManager()->persist($entityPessoaArtefato);
     $this->getEntityManager()->flush($entityPessoaArtefato);
 }
 /**
  * Metódo que realiza o postUpdate.
  */
 public function postUpdate($entity, $dto = NULL, $dtoPessoa = NULL)
 {
     $resultHistorico = $this->getEntityManager()->getRepository('app:HistoricoArtefato')->findBy(array('sqArtefato' => $entity->getSqArtefato()));
     if (count($resultHistorico) == 0) {
         // #HistoricoArtefato::save();
         $strMessage = $this->getServiceLocator()->getService('HistoricoArtefato')->getMessage('MH009');
         $this->getServiceLocator()->getService('HistoricoArtefato')->registrar($sqArtefato, \Core_Configuration::getSqOcorrenciaSalvarMinuta(), $strMessage);
         $this->getServiceLocator()->getService('PessoaArtefato')->saveOrigemAutor($entity, $dtoPessoa['unidade'], $dtoPessoa['pessoa']);
     }
     if ($dto->hasSqGrauAcesso() && $dto->getSqGrauAcesso() != '') {
         $sqGrauAcesso = $this->getEntityManager()->getRepository('app:GrauAcesso')->findBy(array('sqGrauAcesso' => $dto->getSqGrauAcesso()));
         $this->getServiceLocator()->getService('GrauAcessoArtefato')->saveGrauAcessoArtefato($entity->getSqArtefato(), $sqGrauAcesso[0]);
     }
     if ($dtoPessoa['assinatura']) {
         $res = $this->getServiceLocator()->getService('PessoaAssinanteArtefato')->saveAssinatura($dtoPessoa['assinatura'], $dto);
     }
     $entitySgdoce = $this->getPessoaSgdoce($entity, \Core_Configuration::getSgdocePessoaFuncaoDestinatario());
     $externo = FALSE;
     foreach ($dtoPessoa['externo'] as $campo) {
         if ($campo['noCampo'] == 'Destino Externo') {
             $externo = TRUE;
         }
     }
     if ($externo) {
         foreach ($entitySgdoce as $key => $entityPessoaArtefato) {
             if ($key == 0) {
                 continue;
             }
             //grava o artefato
             $entityArtefato = $this->_getRepository('app:Artefato')->find($entity->getSqArtefato()->getSqArtefato());
             $entityArtefatoClone = clone $entityArtefato;
             $entityArtefatoClone->setSqArtefato(NULL);
             $this->getEntityManager()->persist($entityArtefatoClone);
             $this->getEntityManager()->flush($entityArtefatoClone);
             //grava pessoa artefato
             $entityPessoaArtefato->setSqArtefato($entityArtefatoClone);
             $this->getEntityManager()->persist($entityPessoaArtefato);
             $this->getEntityManager()->flush($entityPessoaArtefato);
             $this->saveExtraPessoa($entity, $entityArtefatoClone, $entityArtefato);
         }
     }
 }
Beispiel #10
0
 /**
  * @return
  */
 public function listPesquisaDocumento($dto)
 {
     $listCondition = array('getNuArtefato' => array("ilike" => array("AND" => 'art.nu_artefato')), 'getSqAssunto' => array("=" => array("AND" => 'ass.sq_assunto')), 'getTxAssuntoComplementar' => array("ilike" => array("AND" => 'art.tx_assunto_complementar')), 'getInteressado' => array("ilike" => array("OR" => array("trim(pse.no_pessoa)", "trim(vue.sg_unidade_org || ' - ' || pse.no_pessoa)"), 'tlp' => array('trim(%s)', 'trim(%s)'))), 'getOrigem' => array("ilike" => array("OR" => array("trim(pfo.no_pessoa)", "trim(vuo.sg_unidade_org || ' - ' || pfo.no_pessoa)"), 'tlp' => array('trim(%s)', 'trim(%s)'))), 'getNuDigital' => array("ilike" => array("AND" => 'formata_numero_digital(art.nu_digital)')), 'getDestino' => array("ilike" => array("OR" => array("trim(pfd.no_pessoa)", "trim(vud.sg_unidade_org || ' - ' || pfd.no_pessoa)"), 'tlp' => array('trim(%s)', 'trim(%s)'))), 'getAssinatura' => array("ilike" => array("OR" => array("trim(pfa.no_pessoa)", "trim(vua.sg_unidade_org || ' - ' || pfa.no_pessoa)"), 'tlp' => array('trim(%s)', 'trim(%s)'))), 'getNoTipoDocumento' => array("ilike" => array("AND" => 'tad.no_tipo_documento')));
     // criteria
     $listPeriodo = array('dtCadastro' => 'art.dt_cadastro', 'dtAutuacao' => 'art.dt_artefato', 'dtPrazo' => 'art.dt_prazo');
     $sqPeriodo = $dto->getSqPeriodo();
     $periodoColumn = null;
     if (isset($listPeriodo[$sqPeriodo])) {
         $periodoColumn = $listPeriodo[$sqPeriodo];
     }
     $where = $this->getCriteriaText($listCondition, $dto, $periodoColumn);
     $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em);
     $rsm->addScalarResult('total_record', 'totalRecord', 'integer');
     $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer');
     $rsm->addScalarResult('nu_digital', 'nuDigital', 'string');
     $rsm->addScalarResult('tx_assunto', 'txAssunto', 'string');
     $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string');
     $rsm->addScalarResult('no_tipo_documento', 'noTipoDocumento', 'string');
     $rsm->addScalarResult('origem', 'noPessoaOrigem', 'string');
     $rsm->addScalarResult('dt_artefato', 'dtArtefato', 'string');
     $rsm->addScalarResult('interessados', 'noPessoaInteressados', 'string');
     $rsm->addScalarResult('tx_movimentacao', 'txMovimentacao', 'string');
     $sql = "SELECT  COUNT(art.sq_artefato) OVER() AS total_record,\n                         art.sq_artefato,\n                         formata_numero_digital(art.nu_digital) AS nu_digital,\n                         ass.tx_assunto,\n                         art.nu_artefato,\n                         tad.no_tipo_documento,\n                         pfo.no_pessoa as origem,\n                         art.dt_artefato,\n                         string_agg(pse.no_pessoa, ', ') AS interessados,\n                         pfd.no_pessoa as destino,\n                         pfa.no_pessoa as assinatura,\n                         sgdoce.ultima_movimentacao_artefato(art.sq_artefato) as tx_movimentacao\n                    FROM sgdoce.artefato art\n                    JOIN sgdoce.tipo_artefato_assunto taa ON art.sq_tipo_artefato_assunto = taa.sq_tipo_artefato_assunto\n                    JOIN sgdoce.assunto ass ON taa.sq_assunto = ass.sq_assunto\n                    JOIN sgdoce.tipo_documento tad ON art.sq_tipo_documento = tad.sq_tipo_documento\n                    JOIN sgdoce.pessoa_artefato pao ON art.sq_artefato = pao.sq_artefato AND pao.sq_pessoa_funcao  = " . \Core_Configuration::getSgdocePessoaFuncaoOrigem() . "\n                    JOIN sgdoce.pessoa_sgdoce pfo ON pao.sq_pessoa_sgdoce = pfo.sq_pessoa_sgdoce\n               LEFT JOIN corporativo.vw_unidade_org vuo ON pfo.sq_pessoa_corporativo = vuo.sq_pessoa\n               LEFT JOIN sgdoce.pessoa_interessada_artefato pai ON art.sq_artefato = pai.sq_artefato\n               LEFT JOIN sgdoce.pessoa_sgdoce pse ON pai.sq_pessoa_sgdoce = pse.sq_pessoa_sgdoce\n               LEFT JOIN corporativo.vw_unidade_org vue ON pse.sq_pessoa_corporativo = vue.sq_pessoa\n               LEFT JOIN sgdoce.pessoa_artefato pad ON art.sq_artefato = pad.sq_artefato AND pad.sq_pessoa_funcao = " . \Core_Configuration::getSgdocePessoaFuncaoDestinatario() . "\n               LEFT JOIN sgdoce.pessoa_sgdoce pfd ON pad.sq_pessoa_sgdoce = pfd.sq_pessoa_sgdoce\n               LEFT JOIN corporativo.vw_unidade_org vud ON pfd.sq_pessoa_corporativo = vud.sq_pessoa\n               LEFT JOIN sgdoce.pessoa_artefato paa ON art.sq_artefato = paa.sq_artefato AND paa.sq_pessoa_funcao = " . \Core_Configuration::getSgdocePessoaFuncaoAssinatura() . "\n               LEFT JOIN sgdoce.pessoa_sgdoce pfa ON paa.sq_pessoa_sgdoce = pfa.sq_pessoa_sgdoce\n               LEFT JOIN corporativo.vw_unidade_org vua ON pfa.sq_pessoa_corporativo = vua.sq_pessoa\n                    %s\n                GROUP BY art.sq_artefato,\n                         art.nu_digital,\n                         ass.tx_assunto,\n                         art.nu_artefato,\n                         tad.no_tipo_documento,\n                         pfo.no_pessoa,\n                         art.dt_artefato,\n                         pfd.no_pessoa,\n                         pfa.no_pessoa,\n                         tx_movimentacao";
     if ($where != "") {
         $where = "WHERE " . $where;
     } else {
         $where = "WHERE 1 <> 1";
     }
     $where .= " AND taa.sq_tipo_artefato = " . \Core_Configuration::getSgdoceTipoArtefatoDocumento();
     $sql = sprintf($sql, $where);
     return $this->_em->createNativeQuery($sql, $rsm);
 }
 /**
  * Action que realiza a exclusão da assinatura
  * @return array
  */
 public function deleteDestinatarioAction()
 {
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender(TRUE);
     $params = $this->_getAllParams();
     $params['sqPessoaFuncao'] = \Core_Configuration::getSgdocePessoaFuncaoDestinatario();
     $dtoPessoaArtefato = Core_Dto::factoryFromData($params, 'entity', array('entity' => 'Sgdoce\\Model\\Entity\\PessoaArtefato', 'mapping' => array('sqArtefato' => 'Sgdoce\\Model\\Entity\\Artefato', 'sqPessoaFuncao' => 'Sgdoce\\Model\\Entity\\PessoaFuncao', 'sqPessoaSgdoce' => 'Sgdoce\\Model\\Entity\\PessoaSgdoce')));
     $this->getService()->deleteDestinatario($dtoPessoaArtefato);
 }