public function saveDocumento(\Core_Dto_Abstract $dto) { \Zend_Registry::get('doctrine')->getEntityManager()->clear(); $entityEndereco = $this->_getRepository()->findOneBy(array('sqEnderecoSgdoce' => $dto->getSqEnderecoSgdoce())); $result = !$entityEndereco ? $this->insertArquivo($dto) : $this->updateArquivo($dto, $entityEndereco); return array('entity' => $result, 'isUpdate' => !$entityEndereco ? false : true); }
public function saveDocumento(\Core_Dto_Abstract $dto) { \Zend_Registry::get('doctrine')->getEntityManager()->clear(); $entityAnexo = $this->_getRepository()->findOneBy(array('sqPessoaSgdoce' => $dto->getSqPessoaSgdoce(), 'sqTipoDocumento' => $dto->getSqTipoDocumento())); $result = $entityAnexo ? $this->updateArquivo($entityAnexo, $dto) : $this->insertArquivo($dto); return $entityAnexo ? 'update' : 'insert'; }
/** * Obtém os dados da unidade por tipo * @return Query */ public function searchUnidadeOrgPorTipo(\Core_Dto_Abstract $dto) { $queryBuilder = $this->_em->createQueryBuilder()->select('u.sqUnidadeOrg, u.noUnidadeOrg')->from('app:VwUnidadeOrg', 'u'); $queryBuilder->andWhere('u.sqTipoUnidade = :sqTipoUnidade')->setParameter('sqTipoUnidade', $dto->getSqTipoUnidadeOrg()); $res = $queryBuilder->getQuery()->execute(); return $res; }
/** * Realiza a pesquisa da grid * @param \Core_Dto_Abstract $dto */ public function listGrid(\Core_Dto_Abstract $dto) { return $this->_em->createQueryBuilder()->select(' d.sqDocumento, d.txValor, td.sqTipoDocumento, td.noTipoDocumento, atd.sqAtributoTipoDocumento, p.sqPessoa')->from('app:Documento', 'd')->innerJoin('d.sqAtributoTipoDocumento', 'atd')->innerJoin('atd.sqAtributoDocumento', 'ad')->innerJoin('atd.sqTipoDocumento', 'td')->innerJoin('d.sqPessoa', 'p')->where('p.sqPessoa = :sqPessoa')->setParameter('sqPessoa', $dto->getSqPessoa())->andWhere($this->_em->createQueryBuilder()->expr()->in('ad.sqAtributoDocumento', ':sqAtributoDocumento'))->setParameter('sqAtributoDocumento', array(\Core_Configuration::getCorpAtributoDocumentoNumero(), \Core_Configuration::getCorpAtributoDocumentoPisPasep())); }
/** * Realiza a pesquisa da grid * @param \Core_Dto_Abstract $dto */ public function listGrid(\Core_Dto_Abstract $dto) { return $this->_em->createQueryBuilder()->select('p.sqPessoa, e.sqEndereco, e.sqCep, te.noTipoEndereco, e.txEndereco, e.nuEndereco, e.noBairro, m.noMunicipio, es.noEstado')->from('app:Endereco', 'e')->innerJoin('e.sqPessoa', 'p')->innerJoin('e.sqTipoEndereco', 'te')->innerJoin('e.sqMunicipio', 'm')->innerJoin('m.sqEstado', 'es')->where('p.sqPessoa = :sqPessoa')->setParameter('sqPessoa', $dto->getSqPessoa()); }
public function updateEndereco(\Core_Dto_Abstract $dto, $params = null) { $return = null; try { $_qb = $this->_em->createQueryBuilder(); $_qb->update('app:EnderecoSgdoce', 'es')->set('es.sqTipoEndereco', $_qb->expr()->literal($dto->getSqTipoEndereco()))->set('es.sqMunicipio', $_qb->expr()->literal($dto->getSqMunicipio()))->set('es.coCep', $_qb->expr()->literal($dto->getCoCep()))->set('es.noBairro', $_qb->expr()->literal($dto->getNoBairro()))->set('es.txEndereco', $_qb->expr()->literal($dto->getTxEndereco()))->set('es.nuEndereco', $_qb->expr()->literal($dto->getNuEndereco()))->set('es.txComplemento', $_qb->expr()->literal($dto->getTxComplemento()))->set('es.noContato', $_qb->expr()->literal($params->getNoContato()))->where('es.sqEnderecoSgdoce = :sqEnderecoSgdoce')->setParameter('sqEnderecoSgdoce', $dto->getSqEnderecoSgdoce())->getQuery()->execute(); $return = true; } catch (Exception $e) { } return $return; }
/** * Realiza a pesquisa da grid * @param \Core_Dto_Abstract $dto */ public function listGrid(\Core_Dto_Abstract $dto) { return $this->_em->createQueryBuilder()->select(' c.sqDadoBancario, td.noTipoDadoBancario, b.noBanco, b.coBanco, a.noAgencia, a.coDigitoAgencia, a.coAgencia, c.nuConta, c.nuContaDv, p.sqPessoa ')->from('app:DadoBancario', 'c')->innerJoin('c.sqTipoDadoBancario', 'td')->innerJoin('c.sqAgencia', 'a')->innerJoin('a.sqBanco', 'b')->innerJoin('c.sqPessoa', 'p')->where('p.sqPessoa = :sqPessoa')->setParameter('sqPessoa', $dto->getSqPessoa()); }
public function listGrid(\Core_Dto_Abstract $dto) { $_qb = $this->_em->createQueryBuilder(); $query = $_qb->select(' d.sqDocumento, d.txValor, td.sqTipoDocumento, td.noTipoDocumento, atd.sqAtributoTipoDocumento, p.sqPessoa, ps.sqPessoaSgdoce, acd.sqAnexoComprovanteDocumento, acd.deCaminhoImagem ')->from($this->_entityName, 'd')->innerJoin('d.sqAtributoTipoDocumento', 'atd')->innerJoin('atd.sqAtributoDocumento', 'ad')->innerJoin('atd.sqTipoDocumento', 'td')->innerJoin('d.sqPessoa', 'p')->leftJoin('p.sqPessoaCorporativo', 'ps', 'WITH', $_qb->expr()->andX()->add($_qb->expr()->eq('ps.sqPessoaCorporativo', 'p.sqPessoa')))->leftJoin('ps.sqAnexoComprovanteDocumento', 'acd', 'WITH', $_qb->expr()->andX()->add($_qb->expr()->eq('acd.sqTipoDocumento', 'td.sqTipoDocumento'))->add($_qb->expr()->eq('acd.sqPessoaSgdoce', ':sqPessoaSgdoce')))->where('p.sqPessoa = :sqPessoa')->andWhere($_qb->expr()->in('ad.sqAtributoDocumento', ':sqAtributoDocumento'))->setParameter('sqPessoa', $dto->getSqPessoaFisica() ?: null)->setParameter('sqPessoaSgdoce', $dto->getSqPessoaSgdoce() ?: null)->setParameter('sqAtributoDocumento', array(\Core_Configuration::getCorpAtributoDocumentoNumero())); return $query; }
/** * Obtém os dados da pessoa * @return array */ public function searchPessoa(\Core_Dto_Abstract $dto) { $search = mb_strtolower($dto->getQuery(), 'UTF-8'); $queryBuilder = $this->_em->createQueryBuilder(); $field = $queryBuilder->expr()->lower($queryBuilder->expr()->trim('p.noPessoa')); $query = $queryBuilder->select('vprof, p')->from('app:VwVinculoFuncional', 'vprof')->innerJoin('vprof.sqPessoa', 'p')->andWhere($queryBuilder->expr()->like('clear_accentuation(' . $field . ')', $queryBuilder->expr()->literal($this->removeAccent('%' . $search . '%')))); if ($dto->hasExtraParam()) { $query->andWhere('vprof.sqUnidadeLotacao = :sqUnidadeLotacao')->setParameter('sqUnidadeLotacao', $dto->getExtraParam()); } $query->orderBy('p.noPessoa'); $res = $query->getQuery()->getArrayResult(); $out = array(); foreach ($res as $item) { $out[$item['sqPessoa']['sqPessoa']] = $item['sqPessoa']['noPessoa']; } return $out; }
public function recoverPass(\Core_Dto_Abstract $dto) { $queryBuilder = $this->_em->createQueryBuilder(); $query = $this->_em->createQueryBuilder()->select('u.sqUsuarioExterno, u.stRegistroAtivo' . ',u.txEmail, u.txSenha, u.noUsuarioExterno, u.stRegistroAtivo')->from('app:UsuarioExternoPerfil', 'up')->innerJoin('up.sqPerfil', 'per')->innerJoin('up.sqUsuarioExterno', 'u')->where($queryBuilder->expr()->eq('u.txEmail', ':txEmail'))->setParameter('txEmail', $dto->getTxEmail())->andWhere($queryBuilder->expr()->eq('per.inPerfilExterno', ':inPerfilExterno'))->setParameter(':inPerfilExterno', 'TRUE'); $param = \Zend_Filter::filterStatic($dto->getTxLogin(), 'digits'); $pessoa = 'sqUsuarioPessoaFisica'; switch ($dto->getTpValidacao()) { case 'passaporte': $field = 'nuPassaporte'; break; case 'cpf': $field = 'nuCpf'; break; default: $pessoa = 'sqUsuarioPessoaJuridica'; $field = 'nuCnpj'; break; } $query->innerJoin("u.{$pessoa}", 'upfj')->andWhere($queryBuilder->expr()->eq("upfj.{$field}", ':param'))->setParameter('param', $param); $result = $query->getQuery()->getResult(); return $result ? $result[0] : $result; }
/** * Obtém campos do modelo documento * @param \Core_Dto_Search $dtoSearch * @return array */ public function getCampoModeloDocumento(\Core_Dto_Abstract $dtoSearch) { $queryBuilder = $this->_em->createQueryBuilder(); $queryBuilder->select('pmd.sqPadraoModeloDocumento,pmd.noPadraoModeloDocumento', 'c.noCampo', 'c.noColunaTabela', 'gp.sqGrupoCampo', 'pmdc.inObrigatorio')->from('app:ModeloDocumentoCampo', 'mdc')->innerJoin('mdc.sqPadraoModeloDocumentoCam', 'pmdc')->innerJoin('pmdc.sqPadraoModeloDocumento', 'pmd')->innerJoin('pmdc.sqCampo', 'c')->innerJoin('c.sqGrupoCampo', 'gp')->innerJoin('mdc.sqModeloDocumento', 'md'); if ($dtoSearch->getSqModeloDocumento()) { $queryBuilder->andWhere('md.sqModeloDocumento = :sqModeloDocumento'); $queryBuilder->setParameter('sqModeloDocumento', $dtoSearch->getSqModeloDocumento()); } else { $queryBuilder->andWhere('md.inAtivo = :inAtivo')->setParameter('inAtivo', "TRUE"); } $out = $queryBuilder->getQuery()->execute(); $filter = new \Zend_Filter_Word_UnderscoreToCamelCase(); $arrayField = array(); foreach ($out as $key => $value) { $arrayField[$key]['sqPadraoModeloDocumento'] = $value['sqPadraoModeloDocumento']; $arrayField[$key]['noPadraoModeloDocumento'] = $value['noPadraoModeloDocumento']; $arrayField[$key]['noCampo'] = $value['noCampo']; $arrayField[$key]['noColunaTabela'] = lcfirst($filter->filter($value['noColunaTabela'])); $arrayField[$key]['sqGrupoCampo'] = $value['sqGrupoCampo']; $arrayField[$key]['inObrigatorio'] = $value['inObrigatorio']; } return $arrayField; }
/** * * @param \Core_Dto_Abstract $dto * @return \Doctrine\ORM\NativeQuery */ public function listTramiteExternoComRastreamento(\Core_Dto_Abstract $dto) { $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('no_pessoa_destino', 'noPessoaDestino', 'string'); $rsm->addScalarResult('no_tipo_rastreamento', 'noTipoRastreamento', 'string'); $rsm->addScalarResult('tx_codigo_rastreamento', 'txCodigoRastreamento', 'string'); $rsm->addScalarResult('dt_envio', 'dtEnvio', 'zenddate'); $rsm->addScalarResult('no_remetente', 'noRemetente', 'string'); $strQuery = sprintf('SELECT p.no_pessoa AS no_pessoa_destino ,trc.no_tipo_rastreamento_correio AS no_tipo_rastreamento ,ta.tx_codigo_rastreamento ,ta.dt_tramite AS dt_envio ,pes_origem.no_pessoa || \' [\' || uo_origem.no_pessoa || \']\' AS no_remetente FROM tramite_artefato ta LEFT JOIN vw_unidade_org uo ON ta.sq_pessoa_destino = uo.sq_pessoa LEFT JOIN vw_pessoa p ON ta.sq_pessoa_destino = p.sq_pessoa LEFT JOIN tipo_rastreamento_correio trc ON ta.sq_tipo_rastreamento = trc.sq_tipo_rastreamento_correio LEFT JOIN vw_unidade_org uo_origem ON ta.sq_unidade_org_tramite = uo_origem.sq_pessoa LEFT JOIN vw_pessoa pes_origem ON ta.sq_pessoa_tramite = pes_origem.sq_pessoa WHERE uo.sq_pessoa IS NULL AND ta.sq_artefato = %1$d AND ta.tx_codigo_rastreamento IS NOT NULL', $dto->getSqArtefato()); return $this->_em->createNativeQuery($strQuery, $rsm)->useResultCache(false); }
/** * Adiciona parametros para realizar o filtro da grid * @param \Doctrine\ORM\QueryBuilder $query * @param \Core_Dto_Abstract $dto */ public function addWhere(\Doctrine\ORM\QueryBuilder $query, \Core_Dto_Abstract $dto) { $inputs = array('tp.sqTipoPessoa' => $dto->getSqTipoPessoa(), 'pf.nuCpf' => $dto->getNuCpf(), 'pj.nuCnpj' => $dto->getNuCnpj(), 'p.stRegistroAtivo' => $dto->getStRegistroAtivo()); switch ($dto->getSqTipoPessoa()) { case srvPessoa::SQ_TIPO_PESSOA_FISICA: $inputs['p.noPessoa'] = $dto->getNoPessoaFisica(); break; case srvPessoa::SQ_TIPO_PESSOA_JURIDICA: $inputs['p.noPessoa'] = $dto->getNoPessoaJuridica(); $inputs['nj.sqNaturezaJuridicaPai'] = $dto->getSqNaturezaJuridicaPai(); $inputs['nj.sqNaturezaJuridica'] = $dto->getSqNaturezaJuridica(); break; default: $inputs['p.noPessoa'] = $dto->getNoPessoaSemClass(); break; } $countParams = 0; foreach ($inputs as $field => $value) { if ($value != '') { if (strstr($field, 'sq') || strstr($field, 'nu') || strstr($field, 'st')) { if ($field == 'tp.sqTipoPessoa' && $value == srvPessoa::SEM_CLASSIFICACAO) { $query->andWhere($this->_em->createQueryBuilder()->expr()->in('tp.sqTipoPessoa', ':expre'))->setParameter('expre', array(srvPessoa::SQ_TIPO_PESSOA_FISICA, srvPessoa::SQ_TIPO_PESSOA_JURIDICA)); } else { $query->andWhere($field . ' = ?' . $countParams)->setParameter($countParams, \Zend_Filter::filterStatic($value, 'Digits')); } } else { $expre = $query->expr()->lower($query->expr()->trim($field)); $value = "%" . mb_strtolower(trim($value), 'UTF-8') . "%"; $query->andWhere($query->expr()->like('clear_accentuation(' . $expre . ')', $query->expr()->literal($this->translate($value)))); if ($dto->getSqTipoPessoa() == srvPessoa::SEM_CLASSIFICACAO || $dto->getSqTipoPessoa() == srvPessoa::SQ_TIPO_PESSOA_JURIDICA) { $expre = $query->expr()->lower($query->expr()->trim('pj.noFantasia')); $query->orWhere($query->expr()->like('clear_accentuation(' . $expre . ')', $query->expr()->literal($this->translate($value)))); } } $countParams++; } } }
/** * Exclui o destinatario do artefato * @param \Core_Dto_Search $dtoSearch * @return boolean */ public function deleteDestinatario(\Core_Dto_Abstract $dtoSearch) { $repository = $this->_getRepository($this->_entityName); $criteria = array('sqArtefato' => $dtoSearch->getSqArtefato()->getSqArtefato(), 'sqPessoaSgdoce' => $dtoSearch->getSqPessoaSgdoce()->getSqPessoaSgdoce(), 'sqPessoaFuncao' => $dtoSearch->getSqPessoaFuncao()->getSqPessoaFuncao()); $destinario = $repository->findOneBy($criteria); $this->getEntityManager()->remove($destinario); $this->getEntityManager()->flush(); return TRUE; }
/** * Resgata um artefato recebido por um usuário para a area de trabalho da unidade; * * @param \Core_Dto_Abstract $dto * @return \Sgdoce\Model\Entity\TramiteArtefato */ public function rescue(\Core_Dto_Abstract $dto) { $sqArtefato = $dto->getSqArtefato(); $entityUTA = $this->_getRepository($this->_entityVwUltimoTramiteArtefato)->find($sqArtefato); $noPessoaRecebimento = 'Não identificado'; if ($entityUTA->getSqPessoaRecebimento()) { $noPessoaRecebimento = $entityUTA->getSqPessoaRecebimento()->getNoPessoa(); } $entityArtefato = $this->_getRepository($this->_entityArtefato)->find($sqArtefato); $noTipoArtefato = $entityArtefato->getSqTipoArtefatoAssunto()->getSqTipoArtefato()->getNoTipoArtefato(); $params = array('sqArtefato' => $sqArtefato, 'sqTipoRastreamento' => NULL, 'txCodigoRastreamento' => NULL, 'dtTramite' => \Zend_Date::now(), 'sqPessoaTramite' => \Core_Integration_Sica_User::getPersonId(), 'sqUnidadeOrgTramite' => \Core_Integration_Sica_User::getUserUnit(), 'sqStatusTramite' => \Core_Configuration::getSgdoceStatusTramiteTramitado(), 'sqPessoaDestino' => \Core_Integration_Sica_User::getUserUnit(), 'inImpresso' => TRUE, 'nuTramite' => $this->getNextTramiteNumber($dto)); $entityDto = $this->montaEntidateTramite($params); $entityTramiteArtefato = $this->save($entityDto); $serviceHA = $this->getServiceLocator()->getService('HistoricoArtefato'); sleep(1); //só pro historico ser a ultima movimentação $strMessage = $serviceHA->getMessage('MH017', $noTipoArtefato, \Zend_Date::now()->get(\Zend_Date::DATETIME_MEDIUM), $noPessoaRecebimento, \Core_Integration_Sica_User::getUserName()); $nuOcorrencia = \Core_Configuration::getSgdoceSqOcorrenciaResgateTramite(); $serviceHA->registrar($sqArtefato, $nuOcorrencia, $strMessage); $this->finish(); return $entityTramiteArtefato; }
/** * Obtém um modelo * @param \Core_Dto_Abstract $dto * @return array */ public function findModelo(\Core_Dto_Abstract $dto) { $queryBuilder = $this->_em->createQueryBuilder()->select(' DISTINCT md.sqModeloDocumento, pmd.sqPadraoModeloDocumento, pmd.noPadraoModeloDocumento, td.sqTipoDocumento, td.noTipoDocumento, a.sqAssunto, a.txAssunto, md.inAtivo, ptd.sqPosicaoTipoDocumento')->from('app:ModeloDocumento', 'md')->innerJoin('md.sqModeloDocumentoCampo', 'mdc')->innerJoin('md.sqTipoDocumento', 'td')->leftJoin('md.sqAssunto', 'a')->leftJoin('md.sqPosicaoTipoDocumento', 'ptd')->innerJoin('mdc.sqPadraoModeloDocumentoCam', 'pmdc')->innerJoin('pmdc.sqPadraoModeloDocumento', 'pmd')->andWhere('md.sqModeloDocumento = :sqModeloDocumento')->setParameter('sqModeloDocumento', $dto->getSqModeloDocumento())->orderBy('pmd.noPadraoModeloDocumento, td.noTipoDocumento, a.txAssunto', 'ASC'); return $queryBuilder->getQuery()->getSingleResult(); }
public function listaEnderecoTramite(\Core_Dto_Abstract $dto) { $sql = $this->_em->createQueryBuilder()->select('p.sqPessoa', 'e.sqEndereco', 'e.sqCep', 'te.noTipoEndereco', 'TRIM(e.txEndereco) AS txEndereco', 'e.nuEndereco', 'TRIM(e.noBairro) AS noBairro', 'm.noMunicipio', 'es.noEstado', 'TRIM(e.txComplemento) AS txComplemento')->from('app:VwEndereco', 'e')->innerJoin('e.sqPessoa', 'p')->innerJoin('e.sqTipoEndereco', 'te')->innerJoin('e.sqMunicipio', 'm')->innerJoin('m.sqEstado', 'es')->where('p.sqPessoa = ' . $dto->getSqPessoa())->orderBy('e.sqTipoEndereco'); return $sql->getQuery()->getResult(); }
/** * método que traz a lotacao atual do usuario * @param \Core_Dto_Abstract $dto */ public function unidadeOrigemPessoa(\Core_Dto_Abstract $dto) { return $this->getEntityManager()->getRepository('app:VwProfissional')->find($dto->getSqProfissional()); }
/** * Realiza a pesquisa da grid * @param \Core_Dto_Abstract $dto */ public function listGrid(\Core_Dto_Abstract $dto) { return $this->_em->createQueryBuilder()->select('p.sqPessoa, pf.nuCpf, pr.noPessoa, tv.noTipoVinculo, pv.sqPessoaVinculo, ' . 'pv.dtInicioVinculo, pv.dtFimVinculo, pv.stRegistroAtivo')->from('app:PessoaVinculo', 'pv')->innerJoin('pv.sqTipoVinculo', 'tv')->innerJoin('pv.sqPessoaRelacionamento', 'pr')->innerJoin('pv.sqPessoa', 'p')->innerJoin('pr.sqPessoaFisica', 'pf')->where('pv.sqPessoa = :sqPessoa')->setParameter('sqPessoa', $dto->getSqPessoa()); }
/** * Obtém os dados da pessoa para encaminhar minuta para analise ou assinatura * @return array $out */ public function searchPessoas(\Core_Dto_Abstract $dto) { $sqArtefato = $dto->getSqArtefato(); $inExistentAss = $this->verificaPessoaAssinatura($sqArtefato); $query = mb_strtolower($dto->getQuery(), 'UTF-8'); $queryBuilder = $this->getEntityManager()->createQueryBuilder()->select('DISTINCT p.sqPessoa, p.noPessoa'); if ($dto->getInAssinatura() && $inExistentAss) { $this->queryAssinatura($queryBuilder, $dto, $query); } else { $this->queryAnalise($queryBuilder, $dto, $query); } $queryBuilder->orderBy('p.noPessoa'); $res = $queryBuilder->getQuery()->execute(); $out = array(); foreach ($res as $key => $data) { $out[$data['sqPessoa']] = $data['noPessoa']; } return $out; }
/** * Verifica se uma caixa pode ser editada e/ou excluida * * @param \Core_Dto_Abstract $dto * @return boolean */ public function verificaArtefatoArquivadoCaixa(\Core_Dto_Abstract $dto) { $entityCaixa = $this->find($dto->getSqCaixa()); return $entityCaixa->getSqCaixaArtefato()->count() === 0; }
/** * Realiza a pesquisa da grid * @param \Core_Dto_Abstract $dto */ public function listGrid(\Core_Dto_Abstract $dto) { return $this->_em->createQueryBuilder()->select('p.sqPessoa, te.noTipoEmail, e.sqEmail, e.txEmail')->from('app:Email', 'e')->innerJoin('e.sqTipoEmail', 'te')->innerJoin('e.sqPessoa', 'p')->where('p.sqPessoa = :sqPessoa')->setParameter('sqPessoa', $dto->getSqPessoa()); }
public function vinculoListGrid(\Core_Dto_Abstract $dto) { if ($this->hasNoOrderVinculo($dto->getSqArtefatoParent())) { $this->setOrderIn($dto->getSqArtefatoParent()); } $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('total_record', 'totalRecord', 'integer'); $rsm->addScalarResult('nu_ordem', 'nuOrdem', 'integer'); $rsm->addScalarResult('sq_artefato_vinculo', 'sqArtefatoVinculo', 'integer'); $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer'); $rsm->addScalarResult('sq_artefato_pai', 'sqArtefatoPai', 'integer'); $rsm->addScalarResult('sq_tipo_artefato', 'sqTipoArtefato', 'integer'); $rsm->addScalarResult('sq_tipo_vinculo_artefato', 'sqTipoVinculoArtefato', 'integer'); $rsm->addScalarResult('nu_fvalue', 'nuFvalue', 'integer'); $rsm->addScalarResult('nu_lvalue', 'nuLvalue', 'integer'); $rsm->addScalarResult('nu_digital', 'nuDigital', 'string'); $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string'); $rsm->addScalarResult('dt_tramite', 'dtTramite', 'string'); $rsm->addScalarResult('no_tipo_documento', 'noTipoDocumento', 'string'); $rsm->addScalarResult('tx_assunto', 'txAssunto', 'string'); $rsm->addScalarResult('tx_movimentacao', 'txMovimentacao', 'string'); $rsm->addScalarResult('is_vinculo', 'isVinculo', 'boolean'); $rsm->addScalarResult('is_disponivel', 'isDisponivel', 'boolean'); $rsm->addScalarResult('is_anexado', 'isAnexado', 'boolean'); $rsm->addScalarResult('is_apensado', 'isApensado', 'boolean'); $rsm->addScalarResult('is_primeira_peca', 'isPrimeiraPeca', 'boolean'); $strQuery = sprintf(' WITH configs AS ( SELECT %5$s, %6$s, %7$s, %8$s, %9$s, %12$s, %13$s, %14$s, %15$s, %16$s FROM sicae.lista_constantes( \'%5$s\', \'%6$s\', \'%7$s\', \'%8$s\', \'%9$s\', \'%12$s\', \'%13$s\', \'%14$s\', \'%15$s\', \'%16$s\' ) as c( %5$s integer, %6$s integer, %7$s integer, %8$s integer, %9$s integer, %12$s integer, %13$s integer, %14$s integer, %15$s integer, %16$s integer ) ) SELECT COUNT(sq_artefato) OVER() as total_record, * FROM ( (SELECT vin.sq_artefato_vinculo , art.sq_artefato , art_art_ass.sq_tipo_artefato , vin.sq_artefato_pai , vin.sq_tipo_vinculo_artefato , formata_numero_digital(art.nu_digital) as nu_digital , sgdoce.formata_numero_artefato(art.nu_artefato, ap.co_ambito_processo) as nu_artefato , tip_doc.no_tipo_documento , ass.tx_assunto , sgdoce.ultima_movimentacao_artefato(art.sq_artefato) as tx_movimentacao , TRUE AS is_vinculo , (configs.%5$s = vin.sq_tipo_vinculo_artefato)::BOOLEAN AS is_anexado , (vin.sq_tipo_vinculo_artefato IN (configs.%6$s, configs.%9$s)) AS is_apensado , FALSE AS is_disponivel , (configs.%15$s = vin.sq_tipo_vinculo_artefato) as is_primeira_peca , vin.nu_ordem AS nu_ordem , (first_value(vin.nu_ordem) OVER(PARTITION BY vin.sq_artefato_pai ORDER BY vin.nu_ordem ASC)::INTEGER)::INTEGER AS nu_fvalue , (last_value(vin.nu_ordem) OVER(PARTITION BY vin.sq_artefato_pai)::INTEGER)::INTEGER AS nu_lvalue FROM sgdoce.artefato_vinculo AS vin INNER JOIN configs ON TRUE INNER JOIN sgdoce.artefato AS art ON (vin.sq_artefato_filho = art.sq_artefato) INNER JOIN sgdoce.tipo_artefato_assunto AS art_art_ass ON (art.sq_tipo_artefato_assunto = art_art_ass.sq_tipo_artefato_assunto) INNER JOIN sgdoce.assunto AS ass USING (sq_assunto) LEFT JOIN sgdoce.tipo_documento AS tip_doc USING (sq_tipo_documento) LEFT JOIN sgdoce.artefato_processo AS ap ON (art.sq_artefato = ap.sq_artefato) WHERE vin.sq_artefato_pai = %2$d AND vin.sq_tipo_vinculo_artefato NOT IN (configs.%12$s,configs.%13$s,configs.%14$s) AND ((art_art_ass.sq_tipo_artefato = %11$s) OR (%11$s IS NULL)) ) UNION (SELECT null as sq_artefato_vinculo ,art.sq_artefato ,art_art_ass.sq_tipo_artefato ,NULL AS sq_artefato_pai ,NULL AS sq_tipo_vinculo_artefato ,formata_numero_digital(art.nu_digital) as nu_digital ,sgdoce.formata_numero_artefato(art.nu_artefato, ap.co_ambito_processo) as nu_artefato ,tip_doc.no_tipo_documento ,ass.tx_assunto ,sgdoce.ultima_movimentacao_artefato(art.sq_artefato) as tx_movimentacao ,FALSE AS is_vinculo ,FALSE AS is_anexado ,FALSE AS is_apensado ,TRUE AS is_disponivel ,FALSE AS is_primeira_peca ,NULL AS nu_ordem ,0 AS nu_fvalue ,0 AS nu_lvalue FROM sgdoce.artefato AS art INNER JOIN configs ON TRUE INNER JOIN sgdoce.tramite_artefato uta ON uta.sq_artefato = art.sq_artefato AND uta.st_ultimo_tramite INNER JOIN sgdoce.tipo_artefato_assunto AS art_art_ass USING (sq_tipo_artefato_assunto) INNER JOIN sgdoce.assunto AS ass USING (sq_assunto) LEFT JOIN sgdoce.artefato_imagem uia ON art.sq_artefato = uia.sq_artefato AND uia.st_ativo JOIN configs const ON TRUE LEFT JOIN sgdoce.artefato_vinculo atv ON sq_tipo_vinculo_artefato = const.SGDOCE_TIPO_VINCULO_ARTEFATO_AUTUACAO AND art.sq_artefato = atv.sq_artefato_pai LEFT JOIN sgdoce.artefato_imagem uiaf ON uiaf.sq_artefato = atv.sq_artefato_filho LEFT JOIN sgdoce.tipo_documento AS tip_doc ON (tip_doc.sq_tipo_documento = art.sq_tipo_documento) LEFT JOIN sgdoce.caixa_artefato AS arq ON (arq.sq_artefato = art.sq_artefato) LEFT JOIN sgdoce.artefato_processo AS ap ON (art.sq_artefato = ap.sq_artefato) LEFT JOIN sgdoce.artefato_vinculo av ON (art.sq_artefato = av.sq_artefato_filho AND av.sq_tipo_vinculo_artefato NOT IN (configs.%12$s,configs.%13$s,configs.%14$s)) LEFT JOIN sgdoce.artefato_arquivo_setorial aas ON art.sq_artefato = aas.sq_artefato AND aas.dt_desarquivamento IS NULL LEFT JOIN ( SELECT s.sq_artefato, COUNT(CASE WHEN uss.sq_tipo_status_solicitacao = configs_1.%16$s THEN NULL::INTEGER ELSE 1 END) AS qtd_solicitacao_aberta FROM sgdoce.solicitacao s JOIN configs configs_1 ON true JOIN sgdoce.vw_ultimo_status_solicitacao uss USING (sq_solicitacao) WHERE s.sq_artefato IS NOT NULL GROUP BY s.sq_artefato ) sol ON sol.sq_artefato = art.sq_artefato WHERE av.sq_artefato_vinculo IS NULL AND (sol.qtd_solicitacao_aberta = 0 OR sol.qtd_solicitacao_aberta IS NULL) AND (sgdoce.formata_numero_digital(art.nu_digital) LIKE \'%4$s%%\' OR LOWER(translate(art.nu_artefato, \'./-\', \'\')) LIKE \'%4$s%%\' ) AND EXISTS ( SELECT * FROM sgdoce.artefato pai INNER JOIN sgdoce.tipo_artefato_assunto tp_art_pai ON tp_art_pai.sq_tipo_artefato_assunto = pai.sq_tipo_artefato_assunto INNER JOIN sgdoce.tipo_artefato tp_pai ON tp_art_pai.sq_tipo_artefato = tp_pai.sq_tipo_artefato WHERE pai.sq_artefato = %2$d AND (art_art_ass.sq_tipo_artefato IN (configs.SGDOCE_TIPO_ARTEFATO_PROCESSO, configs.SGDOCE_TIPO_ARTEFATO_DOCUMENTO) AND tp_pai.sq_tipo_artefato = configs.SGDOCE_TIPO_ARTEFATO_PROCESSO) OR (art_art_ass.sq_tipo_artefato = (configs.SGDOCE_TIPO_ARTEFATO_DOCUMENTO) AND tp_pai.sq_tipo_artefato = configs.SGDOCE_TIPO_ARTEFATO_DOCUMENTO)) AND art.sq_artefato != %2$d AND ((uta.sq_status_tramite > %19$d AND uta.sq_pessoa_recebimento = %1$d AND (uta.sq_unidade_org_tramite = %3$d OR uta.sq_pessoa_destino = %3$d))) AND arq.sq_artefato IS NULL -- artefatos arquivados não podem ser vinculados AND aas.sq_artefato IS NULL -- artefatps arqiovados no setor não podem ser vinculados AND art_art_ass.sq_tipo_artefato in (%10$s) AND (uia.sq_artefato_imagem IS NOT NULL OR (art_art_ass.sq_tipo_artefato = %18$d AND uiaf.sq_artefato_imagem IS NOT NULL)) AND ((art_art_ass.sq_tipo_artefato = %11$s) OR (%11$s IS NULL)) ) ) sub1', $dto->getSqPessoa(), $dto->getSqArtefatoParent(), $dto->getSqUnidadeOrg(), $dto->getNuArtefato(), self::T_SGDOCE_TIPO_VINCULO_ARTEFATO_ANEXACAO, self::T_SGDOCE_TIPO_VINCULO_ARTEFATO_APENSACAO, self::T_SGDOCE_TIPO_ARTEFATO_PROCESSO, self::T_SGDOCE_TIPO_ARTEFATO_DOCUMENTO, self::T_SGDOCE_TIPO_VINCULO_ARTEFATO_INSERCAO, implode(',', (array) $dto->getTipoArtefatoAceito()), $dto->getSqArtefatoTipo() ? (int) $dto->getSqArtefatoTipo() : 'NULL', self::T_SGDOCE_TIPO_VINCULO_ARTEFATO_REFERENCIA, self::T_SGDOCE_TIPO_VINCULO_ARTEFATO_APOIO, self::T_SGDOCE_TIPO_VINCULO_ARTEFATO_DESPACHO, self::T_SGDOCE_TIPO_VINCULO_ARTEFATO_AUTUACAO, self::T_SGDOCE_TIPO_STATUS_SOLICITACAO_FINALIZADA, \Core_Configuration::getSgdoceStatusTramiteCancelado(), \Core_Configuration::getSgdoceTipoArtefatoProcesso(), \Core_Configuration::getSgdoceStatusTramiteTramitado()); return $this->_em->createNativeQuery($strQuery, $rsm)->useResultCache(false); }
public function isResponsavelSetor(\Core_Dto_Abstract $dto) { $_qb = $this->getEntityManager()->createQueryBuilder(); $query = $_qb->select('c')->from($this->_entityName, 'c')->join('c.sqDestinacaoFgDas', 'dfd')->join('dfd.sqUnidadeOrgDestinada', 'uod')->join('c.sqProfissionalTitular', 'pt')->join('pt.sqProfissional', 'p')->join('c.sqProfissionalSubstituto', 'pt2')->join('pt2.sqProfissional', 'ps')->where($_qb->expr()->orX()->add($_qb->expr()->eq('p.sqPessoa', ':sqPessoa'))->add($_qb->expr()->eq('ps.sqPessoa', ':sqPessoa')))->andWhere('uod.sqPessoa = :sqUnidadeOrg')->setParameter('sqUnidadeOrg', $this->getSicaUnidadeOrg())->setParameter('sqPessoa', $dto->getSqResponsavel())->getQuery()->getResult(); return $query; }