/** * * @param \Core_Dto_Search $dto * @return \Doctrine\DBAL\Query\QueryBuilder */ public function listGrid(\Core_Dto_Search $dto) { $rsm = new \Doctrine\ORM\Query\ResultSetMapping(); $rsm->addScalarResult('total_record', 'totalRecord', 'integer'); $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer'); $rsm->addScalarResult('digital_numero', 'digitalNumero', 'string'); $rsm->addScalarResult('dt_arquivamento', 'dtArquivamento', 'zenddate'); $rsm->addScalarResult('no_pessoa_arquivamento', 'noPessoaArquivamento', 'string'); $rsm->addScalarResult('tx_assunto', 'txAssunto', 'string'); $rsm->addScalarResult('no_tipo_documento', 'noTipoDocumento', 'string'); $rsm->addScalarResult('no_pessoa_origem', 'noPessoaOrigem', 'string'); $caseNuDigital = "sgdoce.formata_numero_digital(a.nu_digital)"; $sql = "\n SELECT DISTINCT\n COUNT(a.sq_artefato) OVER() AS total_record\n ,a.sq_artefato\n ,COALESCE({$caseNuDigital}, formata_numero_artefato(a.nu_artefato,ap.co_ambito_processo)) AS digital_numero\n ,dt_arquivamento\n ,p.no_pessoa as no_pessoa_arquivamento\n ,ass.tx_assunto\n ,td.no_tipo_documento\n ,ps.no_pessoa AS no_pessoa_origem\n FROM artefato_arquivo_setorial aas\n JOIN vw_pessoa p ON aas.sq_pessoa_arquivamento = p.sq_pessoa\n JOIN artefato a USING(sq_artefato)\n JOIN sgdoce.tipo_artefato_assunto taa USING(sq_tipo_artefato_assunto)\n JOIN sgdoce.assunto ass ON ass.sq_assunto = taa.sq_assunto\n JOIN sgdoce.pessoa_artefato pa ON pa.sq_artefato = a.sq_artefato and pa.sq_pessoa_funcao = %1\$d\n JOIN sgdoce.pessoa_sgdoce ps ON ps.sq_pessoa_sgdoce = pa.sq_pessoa_sgdoce\n LEFT JOIN artefato_processo ap ON a.sq_artefato = ap.sq_artefato\n LEFT JOIN tipo_documento td USING(sq_tipo_documento)\n WHERE dt_desarquivamento IS NULL\n AND sq_unidade_arquivamento = %2\$d\n AND sq_tipo_artefato = %3\$d\n %4\$s\n ORDER BY dt_arquivamento DESC"; $optionalCondition = ''; $search = mb_strtolower($dto->getSearch(), 'UTF-8'); if ($search) { $queryBuild = $this->_em->createQueryBuilder(); if ($dto->getSqTipoArtefato() == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) { $nuArtefato = $this->_em->createQueryBuilder()->expr()->lower("TRANSLATE(a.nu_artefato, './-', '')")->__toString(); $optionalCondition = " AND (" . $queryBuild->expr()->eq('a.nu_artefato', $queryBuild->expr()->literal($search))->__toString() . " OR " . $queryBuild->expr()->eq($nuArtefato, $queryBuild->expr()->literal(str_replace(array('.', '/', '-'), '', $search)))->__toString() . ")"; } else { $optionalCondition = " AND " . $queryBuild->expr()->eq('a.nu_digital', $search)->__toString(); } } $strSql = sprintf($sql, \Core_Configuration::getSgdocePessoaFuncaoOrigem(), \Core_Integration_Sica_User::getUserUnit(), $dto->getSqTipoArtefato(), $optionalCondition); return $this->_em->createNativeQuery($strSql, $rsm)->useResultCache(false); }
/** * Consulta de processos. * * @return QueryBuilder */ public function listGridProcesso($dto) { $listCondition = array('getInteressado' => array("ilike" => array("OR" => array("trim(pse.no_pessoa)", "trim(vue.sg_unidade_org || ' - ' || pse.no_pessoa)"), 'tlp' => array('trim(%s)', 'trim(%s)'))), 'getNuArtefato' => array("regex" => array("AND" => array('art.nu_artefato'), 'tlp' => array('%s'))), 'getSqAssunto' => array("=" => array("AND" => 'ass.sq_assunto')), 'getTxAssuntoComplementar' => array("ilike" => array("AND" => 'art.tx_assunto_complementar')), 'getOrigem' => array("ilike" => array('OR' => array('trim(pfo.no_pessoa)', "trim(pfo.no_pessoa)"), 'tlp' => array('trim(%s)', 'trim(%s)'))), 'getNuDigital' => array("ilike" => array("AND" => 'cast(ard.nu_digital as text)'))); $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->getEntityManager()->getRepository('app:Artefato')->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_artefato', 'nuArtefato', 'string'); $rsm->addScalarResult('tx_assunto', 'txAssunto', 'string'); $rsm->addScalarResult('origem', 'noPessoaOrigem', 'string'); $rsm->addScalarResult('interessados', 'noPessoaInteressados', 'string'); $rsm->addScalarResult('tx_movimentacao', 'txMovimentacao', 'string'); $sql = "SELECT\n COUNT(art.sq_artefato) OVER() AS total_record,\n art.sq_artefato,\n formata_numero_artefato(art.nu_artefato, atp.co_ambito_processo) AS nu_artefato,\n ass.sq_assunto,\n ass.tx_assunto,\n art.tx_assunto_complementar,\n string_agg(pse.no_pessoa, ', ') as interessados,\n pfo.sq_pessoa_corporativo as origem_id,\n pfo.no_pessoa as origem,\n art.dt_artefato,\n art.dt_prazo,\n art.dt_cadastro,\n ard.nu_digital,\n sgdoce.ultima_movimentacao_artefato(art.sq_artefato) as tx_movimentacao,\n vuo.sg_unidade_org\n FROM sgdoce.artefato art\n JOIN sgdoce.artefato_processo atp\n ON art.sq_artefato = atp.sq_artefato\n JOIN sgdoce.tipo_artefato_assunto taa\n ON art.sq_tipo_artefato_assunto = taa.sq_tipo_artefato_assunto\n JOIN sgdoce.assunto ass\n ON taa.sq_assunto = ass.sq_assunto\n JOIN sgdoce.pessoa_artefato pao\n ON art.sq_artefato = pao.sq_artefato AND pao.sq_pessoa_funcao = " . \Core_Configuration::getSgdocePessoaFuncaoOrigem() . "\n JOIN sgdoce.pessoa_sgdoce pfo\n ON pao.sq_pessoa_sgdoce = pfo.sq_pessoa_sgdoce\n LEFT JOIN corporativo.vw_unidade_org vuo\n ON pfo.sq_pessoa_corporativo = vuo.sq_pessoa\n LEFT JOIN sgdoce.pessoa_interessada_artefato pai\n ON art.sq_artefato = pai.sq_artefato\n LEFT JOIN sgdoce.pessoa_sgdoce pse\n ON pai.sq_pessoa_sgdoce = pse.sq_pessoa_sgdoce\n LEFT JOIN corporativo.vw_unidade_org vue\n ON pse.sq_pessoa_corporativo = vue.sq_pessoa\n LEFT JOIN sgdoce.artefato_vinculo arv\n ON art.sq_artefato = arv.sq_artefato_pai AND arv.sq_tipo_vinculo_artefato = " . \Core_Configuration::getSgdoceTipoVinculoArtefatoAutuacao() . "\n LEFT JOIN sgdoce.artefato ard\n ON ard.sq_artefato = arv.sq_artefato_filho\n %s\n GROUP BY art.sq_artefato,\n art.nu_artefato,\n atp.co_ambito_processo,\n ass.sq_assunto,\n ass.tx_assunto,\n art.tx_assunto_complementar,\n pfo.sq_pessoa_corporativo,\n pfo.no_pessoa,\n art.dt_artefato,\n art.dt_prazo,\n art.dt_cadastro,\n ard.nu_digital,\n tx_movimentacao,\n vuo.sg_unidade_org"; if ($where != "") { $where = "WHERE " . $where; } else { $where = "WHERE 1 <> 1"; } $sql = sprintf($sql, $where); return $this->_em->createNativeQuery($sql, $rsm); }
/** * * @param \Core_Dto_Search $dto * @return array */ public function listGrid(\Core_Dto_Search $dto) { $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('sq_caixa', 'sqCaixa', 'integer'); $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer'); $rsm->addScalarResult('sq_tipo_artefato', 'sqTipoArtefato', 'integer'); $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string'); $rsm->addScalarResult('no_tipo_documento', 'noTipoDocumento', 'string'); $rsm->addScalarResult('tx_classificacao', 'txClassificacao', 'string'); $rsm->addScalarResult('nu_classificacao', 'nuClassificacao', 'string'); $rsm->addScalarResult('no_pessoa_origem', 'noPessoaOrigem', 'string'); $rsm->addScalarResult('tx_assunto', 'txAssunto', 'string'); $strQuery = sprintf("SELECT ca.sq_caixa\n ,art.sq_artefato\n ,CASE WHEN (taa.sq_tipo_artefato = %d) THEN art.nu_artefato ELSE art.nu_digital::TEXT END AS nu_artefato\n ,td.no_tipo_documento\n ,taa.sq_tipo_artefato\n ,cl.nu_classificacao || ' - ' ||cl.tx_classificacao as tx_classificacao\n\n ,ps.no_pessoa AS no_pessoa_origem\n ,ass.tx_assunto\n FROM caixa_artefato ca\n INNER JOIN caixa cx using(sq_caixa)\n INNER JOIN artefato art using(sq_artefato)\n INNER JOIN tipo_documento td using(sq_tipo_documento)\n INNER JOIN tipo_artefato_assunto taa using(sq_tipo_artefato_assunto)\n INNER JOIN assunto ass using(sq_assunto)\n INNER JOIN artefato_classificacao ac using(sq_artefato)\n INNER JOIN classificacao cl ON ac.sq_classificacao = cl.sq_classificacao\n INNER JOIN pessoa_artefato pa using(sq_artefato)\n INNER JOIN pessoa_sgdoce ps using(sq_pessoa_sgdoce)\n WHERE ca.sq_caixa = %d\n AND pa.sq_pessoa_funcao = %d", \Core_Configuration::getSgdoceTipoArtefatoProcesso(), $dto->getSqCaixa(), \Core_Configuration::getSgdocePessoaFuncaoOrigem()); $nativeQuery = $this->_em->createNativeQuery($strQuery, $rsm); return $nativeQuery; }
public function searchPessoaOrigem($dto) { $queryBuilder = $this->_em->createQueryBuilder()->select('pf.sqPessoaFuncao', 'ps.noPessoa')->from('app:PessoaArtefato', 'pa')->innerJoin('pa.sqPessoaFuncao', 'pf')->innerJoin('pa.sqPessoaSgdoce', 'ps')->where('pf.sqPessoaFuncao in(' . \Core_Configuration::getSgdocePessoaFuncaoOrigem() . ')'); if (method_exists($dto, 'query')) { $query = mb_strtolower($dto->getQuery(), 'UTF-8'); $queryBuilder->andWhere('LOWER(ps.noPessoa) like :noPessoa')->setParameter('noPessoa', '%' . $query . '%'); } else { $queryBuilder->andWhere('pa.sqArtefato = :sqPessoaArtefato')->setParameter('sqPessoaArtefato', $dto->getSqPessoaArtefato()->getSqArtefato()->getSqArtefato()); } $queryBuilder->orderBy('ps.noPessoa'); $res = $queryBuilder->getQuery()->getArrayResult(); $out = array(); foreach ($res as $item) { $out[$item['sqPessoaFuncao']] = $item['noPessoa']; } return $out; }
public function getPessoaOrigemArtefato($dto) { $queryBuilder = $this->_em->createQueryBuilder()->select('ptd.sqPosicaoTipoDocumento, pd.sqPosicaoData, c.sqCabecalho, c.deArquivoImagem, c.txCabecalho, ens.txEndereco, ens.nuEndereco, m.noMunicipio, am.txEmenta, ens.coCep, ts.nuTelefone, ts.nuDdd, ems.txEmail, td.noTipoDocumento, a.nuArtefato, a.nuDigital, a.dtArtefato, a.noCargoInterno, ps.noPessoa, ass.txAssunto, am.txReferencia, am.txTextoArtefato, a.txDescricaoPrazo, a.inDiasCorridos, a.nuDiasPrazo, a.txAssuntoComplementar, f.noFecho, a.sqArtefato, a.dtPrazo')->from('app:ArtefatoMinuta', 'am')->innerJoin('am.sqArtefato', 'a')->innerJoin('a.sqPessoaArtefato', 'pa')->innerJoin('pa.sqPessoaFuncao', 'pf')->innerJoin('pa.sqPessoaSgdoce', 'ps')->leftJoin('pa.sqEnderecoSgdoce', 'ens')->leftJoin('pa.sqEmailSgdoce', 'ems')->leftJoin('pa.sqTelefoneSgdoce', 'ts')->leftJoin('am.sqMunicipio', 'm')->innerJoin('am.sqModeloDocumento', 'md')->innerJoin('md.sqPosicaoData', 'pd')->leftJoin('md.sqCabecalho', 'c')->leftJoin('md.sqPosicaoTipoDocumento', 'ptd')->leftJoin('md.sqPosicaoData', 'pdt')->innerJoin('md.sqTipoDocumento', 'td')->leftJoin('md.sqAssunto', 'ass')->leftJoin('a.sqFecho', 'f')->andWhere('a.sqArtefato = :sqArtefato')->setParameter('sqArtefato', $dto->getSqArtefato())->andWhere('pf.sqPessoaFuncao = :sqPessoaFuncao')->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoOrigem()); $resultQuery = $queryBuilder->getQuery()->execute(); if (count($resultQuery) > 0) { return $resultQuery[0]; } return FALSE; }
/** * Metódo que realiza a persistencia de ORIGEM * @param Object $entity * @param Object $dto * @return Object */ protected function _salvaOrigem($entity, $dto = NULL) { // colocando valores em variaves genericas // $cpfCnpjPassaport = $this->retornaRegistro($dto); switch ($dto->getProcedenciaInterno()) { case 'externo': $stProcedencia = FALSE; break; case 'interno': $stProcedencia = TRUE; break; default: $stProcedencia = NULL; break; } $filter = new \Zend_Filter_Digits(); if ($dto->getSqTipoPessoaOrigem() != '') { $sqTipoPessoa = $dto->getSqTipoPessoaOrigem(); } else { $sqTipoPessoa = $dto->getSqTipoPessoaOrigemIcmbio(); } if ($dto->getSqPessoaOrigem() != '') { $sqPessoaOrigem = $dto->getSqPessoaOrigem(); } else { $sqPessoaOrigem = $dto->getSqPessoaIcmbio(); } if ($dto->getSqPessoaOrigem_autocomplete()) { $noPessoaOrigem = $dto->getSqPessoaOrigem_autocomplete(); } else { $noPessoaOrigem = $dto->getSqPessoaIcmbio_autocomplete(); } if ($sqPessoaOrigem != 0) { $data['sqPessoaCorporativo'] = $sqPessoaOrigem; $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($sqPessoaOrigem); // 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($sqPessoaOrigem, $noPessoaOrigem, $cpfCnpjPassaport); $entPessoaSgdoce->setNuCpfCnpjPassaporte($cpfCnpjPassaport); // retorna o numero do registro $criteriaTpPessoa = array('sqTipoPessoa' => $sqTipoPessoa); $entPessoaSgdoce->setSqTipoPessoa($this->_getRepository('app:VwTipoPessoa')->findOneBy($criteriaTpPessoa)); } $this->getEntityManager()->persist($entPessoaSgdoce); $entPessoaSgdoce->setNuCpfCnpjPassaporte($cpfCnpjPassaport); $this->getEntityManager()->flush($entPessoaSgdoce); // cadastra e retorna PessoaArtefato $entityPessoaArtefato = $this->cadastrarPessoaArtefato($entity, $entPessoaSgdoce, \Core_Configuration::getSgdocePessoaFuncaoOrigem()); $entityPessoaArtefato->setStProcedencia($stProcedencia); $this->getEntityManager()->persist($entityPessoaArtefato); $this->getEntityManager()->flush($entityPessoaArtefato); return $entityPessoaArtefato; }
/** * Metódo que realiza o save da Origem e Autor da Minuta */ public function saveOrigemAutor($entity, $unidadeEntity, $pessoaEntity) { $criteria = array('sqPessoaCorporativo' => $pessoaEntity->getSqPessoa()); $entityAux1 = $this->_getRepository('app:PessoaSgdoce')->findOneBy($criteria); if (!$entityAux1) { $entityAux1 = $this->_newEntity('app:PessoaSgdoce'); } $entityAux1->setSqPessoaCorporativo($pessoaEntity); $entityTipoPessoa = $this->getEntityManager()->getPartialReference('app:VwTipoPessoa', \Core_Configuration::getSgdoceTipoPessoaPessoaFisica()); $entityAux1->setNoPessoa($pessoaEntity->getNoPessoa()); $entityAux1->setSqTipoPessoa($entityTipoPessoa); $this->getEntityManager()->persist($entityAux1); $this->getEntityManager()->flush($entityAux1); $entityPessoaArtefato = $this->_newEntity('app:PessoaArtefato'); $entityArtefato = $this->getEntityManager()->getPartialReference('app:Artefato', $entity->getSqArtefato()->getSqArtefato()); $entityPessoaFuncao = $this->getEntityManager()->getPartialReference('app:PessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoAutor()); $entityPessoaArtefato->setSqArtefato($entityArtefato); $entityPessoaArtefato->setSqPessoaSgdoce($entityAux1); $entityPessoaArtefato->setSqPessoaFuncao($entityPessoaFuncao); //grava demais dados,endereco,email,telefone $this->saveComplementoPessoa($entityPessoaArtefato, $pessoaEntity, $entityAux1); $this->getEntityManager()->persist($entityPessoaArtefato); $this->getEntityManager()->flush($entityPessoaArtefato); $vwPessoa = $this->getServiceLocator()->getService('VwPessoa')->find($unidadeEntity->getSqUnidadeOrg()); $criteria = array('sqPessoaCorporativo' => $vwPessoa->getSqPessoa()); $entityAux2 = $this->_getRepository('app:PessoaSgdoce')->findOneBy($criteria); if (!$entityAux2) { $entityAux2 = $this->_newEntity('app:PessoaSgdoce'); } $entityAux2->setSqPessoaCorporativo($vwPessoa); $entityTipoPessoa = $this->getEntityManager()->getPartialReference('app:VwTipoPessoa', \Core_Configuration::getSgdoceTipoPessoaMinisterioPublico()); $entityPessoaFuncao = $this->getEntityManager()->getPartialReference('app:PessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoOrigem()); $entityAux2->setNoPessoa($unidadeEntity->getNoUnidadeOrg()); $entityAux2->setSqTipoPessoa($entityTipoPessoa); $this->getEntityManager()->persist($entityAux2); $this->getEntityManager()->flush($entityPessoaArtefato); $entityPessoaArtefato = $this->_newEntity('app:PessoaArtefato'); $entityPessoaArtefato->setSqArtefato($entityArtefato); $entityPessoaArtefato->setSqPessoaFuncao($entityPessoaFuncao); $entityPessoaArtefato->setSqPessoaSgdoce($entityAux2); $this->saveComplementoPessoa($entityPessoaArtefato, $pessoaEntity, $entityAux2); $this->getEntityManager()->persist($entityPessoaArtefato); $this->getEntityManager()->flush($entityPessoaArtefato); }
/** * método que retorna dados para grid da área de trabalho * @param \Core_Dto_Abstract $dto * @return \Doctrine\ORM\QueryBuilder */ public function listGridAreaTrabalho(\Core_Dto_Search $dto) { $search = mb_strtolower($dto->getSearch(), 'UTF-8'); /* * se $search is numeric "is_numeric($search)" // procura nas colunas numericas (nuDigital, nuArtefato) * * caso contrario procura em todas as colunas com "OR" * */ $subQuery = $this->_em->createQueryBuilder()->select('max(hh.sqHistoricoArtefato)')->from('app:HistoricoArtefato', 'hh')->where('hh.sqArtefato = hia.sqArtefato'); $queryBuilder = $this->_em->createQueryBuilder(); $query = $queryBuilder->select('a.sqArtefato', 'IDENTITY(a.nuDigital) as nuDigital', 'a.nuArtefato', 'a.dtArtefato', 'td.noTipoDocumento as tipo', 'td.inAbreProcesso', 'ass.txAssunto as assunto', 'ps.noPessoa as origem')->distinct('a.sqArtefato')->from('app:Artefato', 'a')->innerJoin('a.sqHistoricoArtefato', 'hia')->leftJoin('a.sqTipoDocumento', 'td')->innerJoin('a.sqTipoArtefatoAssunto', 'tas')->innerJoin('tas.sqAssunto', 'ass')->innerJoin('a.sqPessoaArtefato', 'pa', 'WITH', 'pa.sqPessoaFuncao = :sqPessoaFuncao')->innerJoin('pa.sqPessoaSgdoce', 'ps', 'WITH')->andWhere('tas.sqTipoArtefato = :sqTipoArtefato')->andWhere('hia.sqPessoa = :sqPessoa')->andWhere('hia.sqHistoricoArtefato = (' . $subQuery->getDQL() . ')')->setParameter('sqPessoa', $dto->sqPessoa)->setParameter('sqTipoArtefato', $dto->sqTipoArtefato)->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoOrigem())->orderBy('a.sqArtefato'); // if($search){ // $nuArtefato = $queryBuilder->expr() // ->lower($queryBuilder->expr()->trim('a.nuArtefato')); // // if (is_numeric($search)) { // $query->orWhere('a.nuDigital = :search'); // // // $query->orWhere($queryBuilder->expr()->like( // 'clear_accentuation(' . $nuArtefato .')', // $queryBuilder->expr() // ->literal($this->removeAccent('%' . $search . '%')) // ) // ); // }else{ // // } // $query->setParameter('search', $search); // } return $query; }
/** * Metódo que realiza o save da pessoa interessa e assinante. */ public function saveExtraPessoa($entity, $entityArtefatoClone, $entityArtefato) { //grava pessoa interessada artefato $entityInteressadaArtefato = $this->_getRepository('app:PessoaInteressadaArtefato')->findBy(array('sqArtefato' => $entity->getSqArtefato()->getSqArtefato())); if (is_array($entityInteressadaArtefato)) { foreach ($entityInteressadaArtefato as $entityInteressada) { $entityInteressadaClone = clone $entityInteressada; $entityInteressadaClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityInteressadaClone); $this->getEntityManager()->flush($entityInteressadaClone); } } //grava pessoa interessada artefato $entityAssinanteArtefato = $this->_getRepository('app:PessoaAssinanteArtefato')->findBy(array('sqArtefato' => $entity->getSqArtefato()->getSqArtefato())); if (is_array($entityAssinanteArtefato)) { foreach ($entityAssinanteArtefato as $entityAssinante) { $entityAssinanteClone = clone $entityAssinante; $entityAssinanteClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityAssinanteClone); $this->getEntityManager()->flush($entityAssinanteClone); } } //grava pessoa motivacao artefato $entityMotivacaoArtefato = $this->_getRepository('app:Motivacao')->findBy(array('sqArtefato' => $entity->getSqArtefato()->getSqArtefato())); if (is_array($entityMotivacaoArtefato)) { foreach ($entityMotivacaoArtefato as $entityMotivacao) { $entityMotivacaoClone = clone $entityMotivacao; $entityMotivacaoClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityMotivacaoClone); $this->getEntityManager()->flush($entityMotivacaoClone); } } //grava rodape $criteria = array('sqArtefato' => $entityArtefato->getSqArtefato(), 'sqPessoaFuncao' => \Core_Configuration::getSgdocePessoaFuncaoDadosRodape()); $entityRodapeArtefato = $this->_getRepository('app:PessoaArtefato')->findOneBy($criteria); if ($entityRodapeArtefato) { $entityRodapeArtefatoClone = clone $entityRodapeArtefato; $entityRodapeArtefatoClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityRodapeArtefatoClone); $this->getEntityManager()->flush($entityRodapeArtefatoClone); } //grava o artefato minuta $entityArtefatoMinuta = $this->_getRepository()->find($entity->getSqArtefato()->getSqArtefato()); $entityArtefatoMinutaClone = clone $entityArtefatoMinuta; $entityArtefatoMinutaClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityArtefatoMinutaClone); $this->getEntityManager()->flush($entityArtefatoMinutaClone); //save historico $criteria = array('sqArtefato' => $entity->getSqArtefato()->getSqArtefato()); $entityHistorico = $this->_getRepository('app:HistoricoArtefato')->findBy($criteria); $entityHistoricoClone = clone $entityHistorico[0]; $entityHistoricoClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityHistoricoClone); $this->getEntityManager()->flush($entityHistoricoClone); //save origem $entityOrigemSgdoce = $this->getPessoaSgdoce($entity, \Core_Configuration::getSgdocePessoaFuncaoOrigem()); $entityOrigemSgdoceClone = clone $entityOrigemSgdoce[0]; $entityOrigemSgdoceClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityOrigemSgdoceClone); $this->getEntityManager()->flush($entityOrigemSgdoceClone); //save autor $entityAutorSgdoce = $this->getPessoaSgdoce($entity, \Core_Configuration::getSgdocePessoaFuncaoAutor()); $entityAutorSgdoceClone = clone $entityAutorSgdoce[0]; $entityAutorSgdoceClone->setSqArtefato($entityArtefatoClone); $this->getEntityManager()->persist($entityAutorSgdoceClone); $this->getEntityManager()->flush($entityAutorSgdoceClone); }
/** * Método que retorna os dados da Origem * @param unknown_type $dtoArtefato */ public function returnDadosOrigem($dtoArtefato) { return self::_dadosPessoaDocumento($dtoArtefato, \Core_Configuration::getSgdocePessoaFuncaoOrigem()); }
/** * (non-PHPdoc) * @see Core_Controller_Action_CrudDto::editAction() */ public function formDataAction() { parent::combos(); parent::editAction(); $params = $this->_getAllParams(); $params['sqArtefato'] = $params['id']; $this->view->redirect = $params['view']; $dtoSearch = Core_Dto::factoryFromData($params, 'search'); $artefatoPai = $this->_getParam('artefatopai'); $sqArtefatoPai = $this->getService()->findSqArtefatoPai($dtoSearch); $this->view->sqArtefatoPai = !empty($artefatoPai) ? $artefatoPai : $sqArtefatoPai[0]->getSqArtefatoFilho()->getSqArtefato(); $this->view->dataPost = $this->_helper->persist->get('dataPost'); $this->view->data = $this->getService()->find($this->_getParam('id')); $entityArtefatoProcesso = $this->getService('ArtefatoProcesso')->find($this->_getParam('id')); if ($entityArtefatoProcesso) { $this->view->sqEstado = $entityArtefatoProcesso->getSqEstado()->getSqEstado(); $this->view->sqMunicipio = $entityArtefatoProcesso->getSqMunicipio()->getSqMunicipio(); $this->view->coAmbitoProcesso = $entityArtefatoProcesso->getCoAmbitoProcesso(); $this->view->nuPaginaProcesso = $entityArtefatoProcesso->getNuPaginaProcesso(); } $this->view->dadosOrigem = self::_dadosPessoaDocumento($dtoSearch, \Core_Configuration::getSgdocePessoaFuncaoOrigem()); }
/** * * @param array $data * @param integer $sqArtefato */ private function _getProcessChildrenDocument(array &$data, $sqArtefato) { $dto = \Core_Dto::factoryFromData(array('sqArtefato' => $sqArtefato, 'sqTipoArtefato' => \Core_Configuration::getSgdoceTipoArtefatoDocumento(), 'sqPessoaFuncao' => \Core_Configuration::getSgdocePessoaFuncaoOrigem()), 'search'); $children = $this->getEntityManager()->getRepository('app:ArtefatoVinculo')->findProcessGuiaDocument($dto); $data = array_merge($data, $children); }
public function searchDocumentsFirstPiece(\Core_Dto_Search $dto) { $sqArtefato = $dto->getExtraParam(); $rsPesArtOrigem = $this->_getRepository('app:PessoaArtefato')->findBy(array('sqArtefato' => $sqArtefato, 'sqPessoaFuncao' => \Core_Configuration::getSgdocePessoaFuncaoOrigem())); $entPesArtOrigem = current($rsPesArtOrigem); $isExterno = !$entPesArtOrigem->getStProcedencia(); $configs = \Core_Registry::get('configs'); $dataEntradaProducao = $configs['dataEntradaProducao']; $entArtefato = $this->_getRepository('app:Artefato')->find($sqArtefato); $dtCadastro = $entArtefato->getDtCadastro(); $dtEntradaProducao = new \Zend_Date($dataEntradaProducao); $isLegado = false; if ($dtEntradaProducao->compare($dtCadastro)) { $isLegado = true; } $data = $this->_getRepository()->searchDocumentsToFirstPiece($dto, $isExterno, $isLegado); $sqTipoArtefato = $dto->getSqTipoArtefato(); $field = "nuDigital"; if ($sqTipoArtefato == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) { $field = "nuArtefato"; } $result = array(); foreach ($data as $value) { $result[$value['sqArtefato']] = $value[$field]; } return $result; }
/** * Obtén dados da pessoa de origem de uma minuta * @param $dto * @return array */ public function getPessoaArtefatoOrigem($dto) { $query = $this->_em->createQueryBuilder(); $query->select('p.sqPessoa, p.noPessoa, p.nuTelefone, p.coCep, p.txEndereco, p.nuNumeroEndereco, p.noBairro, p.txComplemento, p.txEnderecoEletronico, p.noProfissao, p.noUnidadeOrg, pf.noPessoaFuncao, m.noMunicipio, e.sgEstado, t.noTratamento, c.sqCabecalho, c.deArquivoImagem, c.txCabecalho, td.noTipoDocumento, a.deImagemRodape, a.nuArtefato, a.txEmenta, a.dtArtefato, a.deImagemRodape, a.txReferencia, ass.txAssunto, a.txTextoArtefato, a.dtPrazo, a.inDiasCorridos, a.txDescricaoPrazo, a.nuDiasPrazo, a.noCargoInterno, f.noFecho, md.sqModeloDocumento, ptd.sqPosicaoTipoDocumento, pdt.sqPosicaoData ')->from($this->_enName, 'p')->innerJoin('p.sqPessoaFuncao', 'pf')->leftJoin('p.sqTratamentoVocativo', 'tv')->leftJoin('tv.sqTratamento', 't')->innerJoin('p.sqArtefato', 'a')->leftJoin('a.sqMunicipio', 'm')->leftJoin('m.sqEstado', 'e')->leftJoin('a.sqFecho', 'f')->innerJoin('a.sqTipoArtefatoAssunto', 'taa')->innerJoin('taa.sqAssunto', 'ass')->innerJoin('a.sqModeloDocumento', 'md')->leftJoin('md.sqCabecalho', 'c')->leftJoin('md.sqPosicaoTipoDocumento', 'ptd')->leftJoin('md.sqPosicaoData', 'pdt')->innerJoin('md.sqTipoDocumento', 'td')->andWhere('pf.sqPessoaFuncao = :sqPessoaFuncao')->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoOrigem())->andWhere('p.sqArtefato = :sqArtefato')->setParameter('sqArtefato', $dto->getSqArtefato()->getSqArtefato()); if (empty($query)) { return NULL; } return $query->getQuery()->getSingleResult(); }
public function verificaDocumentoAction() { $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNoRender(TRUE); $params = $this->_getAllParams(); $data = array(); $data['nuArtefato'] = $params['nuArtefato']; $data['sqTipoDocumento'] = $params['sqTipoDocumento']; $params['sqPessoaCorporativo'] = null; if (isset($params['sqPessoaIcmbio']) && $params['sqPessoaIcmbio']) { $params['sqPessoaCorporativo'] = $params['sqPessoaIcmbio']; } else { if (isset($params['sqPessoaOrigem']) && $params['sqPessoaOrigem']) { $params['sqPessoaCorporativo'] = $params['sqPessoaOrigem']; } } $dto = Core_Dto::factoryFromData($params, 'search'); $listTipoDocumentoCVD = $this->getService()->getTipoDocumentoComValidacaoDuplicidade(); if ($dto->getStSemNumero() == 'true' && $dto->getStProcedencia() == 'true' && in_array($data['sqTipoDocumento'], $listTipoDocumentoCVD)) { $this->_helper->json(array('sucess' => 'false', 'msg' => 'MN159')); } $pessoaSgdoce = $this->getService('Pessoa')->findPessoaBySqCorporativo($dto); $resul = $this->getService('Artefato')->findBy($data); if ($params['divEdit'] == '0') { if (count($resul) > 0 && $dto->getStNumeroAutomatico() == 'false') { for ($i = 0; $i < count($resul); $i++) { $pessoaArtefato = $this->getService('PessoaArtefato')->findOneBy(array('sqArtefato' => $resul[$i]->getSqArtefato(), 'sqPessoaSgdoce' => $pessoaSgdoce, 'sqPessoaFuncao' => \Core_Configuration::getSgdocePessoaFuncaoOrigem())); if (count($pessoaArtefato) > 0) { $this->_helper->json(array('sucess' => 'false', 'msg' => 'MN158')); continue; } } $this->_helper->json(array('sucess' => 'true')); } else { $this->_helper->json(array('sucess' => 'true')); } } $this->_helper->json(array('sucess' => 'true')); }
/** * @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; } }
/** * Edit - Crud */ public function editAction() { parent::editAction(); $params = $this->_getAllParams(); /** * Artefato */ $dtoSearch = Core_Dto::factoryFromData(array('sqArtefato' => $params['id']), 'search'); $dtoArtefato = $this->getService('Artefato')->find($dtoSearch->getSqArtefato()); /** * PessoaSgdoce */ $dtoPessoaSgdoce = Core_Dto::factoryFromData(array('sqPessoaCorporativo' => $this->getPersonId()), 'search'); $sqPessoaSgdoce = $this->getService('PessoaSgdoce')->findPessoaBySqCorporativo($dtoPessoaSgdoce); /** * PessoaUnidadeOrg */ $pessoaUnidadeOrg = ''; if ($sqPessoaSgdoce) { $pessoaUnidadeOrg = $this->getService('PessoaUnidadeOrg')->findUnidSgdoce($sqPessoaSgdoce); if (!$pessoaUnidadeOrg) { $pessoaUnidadeOrg = $this->getServiceLocator()->getService('Documento')->hasPessoaUnidadeOrg($sqPessoaSgdoce); } } /** * PessoaAssinanteArtefato */ $this->view->pessoaAssinante = $this->getService('PessoaAssinanteArtefato')->getAssinanteArtefato($dtoSearch); $dadosOrigem = self::_dadosPessoaDocumento($dtoSearch, \Core_Configuration::getSgdocePessoaFuncaoOrigem()); $dtoOrigem = Core_Dto::factoryFromData(array('sqProfissional' => $this->getPersonId()), 'search'); $unidadeOrg = $this->getService()->unidadeOrigemPessoa($dtoOrigem); if (!count($dadosOrigem)) { $this->view->sqUnidadeOrg = $unidadeOrg->getSqUnidadeExercicio()->getSqUnidadeOrg(); $this->view->noUnidadeOrg = $unidadeOrg->getSqUnidadeExercicio()->getNoUnidadeOrg(); } else { $this->view->sqUnidadeOrg = $dadosOrigem[0]->getSqPessoaSgdoce()->getSqPessoaCorporativo()->getSqPessoa(); $this->view->noUnidadeOrg = $dadosOrigem[0]->getSqPessoaSgdoce()->getNoPessoa(); } $this->view->redirect = $params['view']; $this->view->data = $dtoArtefato; $this->view->pessoaUnidadeOrg = $pessoaUnidadeOrg; $this->view->usuario = $this->getPersonId(); $this->view->itensTipoDocumento = $this->getService('TipoDoc')->listItems(); $this->view->itensGrauAcesso = $this->getService('GrauAcesso')->listItensGrauAcesso(); $this->view->grauAcessoArtefato = $this->getService('GrauAcessoArtefato')->getGrauAcessoArtefato($dtoSearch); $this->view->itensAssunto = $this->getService('Assunto')->comboAssunto(); }
/** * Método para pesquisa de artefato por ID, * não é necessário o artefato estar na área do trabalho para retornar a pesquisa. * * @return */ public function findById($sqArtefato) { $rsm = new \Doctrine\ORM\Query\ResultSetMapping(); $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer'); $rsm->addScalarResult('nu_digital', 'nuDigital', 'string'); $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string'); $rsm->addScalarResult('sq_tipo_documento', 'sqTipoDocumento', 'integer'); $rsm->addScalarResult('no_tipo_documento', 'noTipoDocumento', 'string'); $rsm->addScalarResult('sq_tipo_artefato', 'sqTipoArtefato', 'integer'); $rsm->addScalarResult('dt_cadastro', 'dtCadastro', 'zenddate'); $rsm->addScalarResult('co_ambito_processo', 'coAmbitoProcessos', 'string'); $rsm->addScalarResult('no_pessoa_origem', 'noPessoaOrigem', 'string'); $sql = "SELECT\n art.sq_artefato,\n art.nu_digital,\n art.nu_artefato,\n art.dt_cadastro,\n art_ass.sq_tipo_artefato,\n art_pro.co_ambito_processo,\n tip_doc.sq_tipo_documento,\n tip_doc.no_tipo_documento,\n pes_sgd.no_pessoa as no_pessoa_origem\n FROM artefato art\n JOIN tipo_artefato_assunto art_ass ON art.sq_tipo_artefato_assunto = art_ass.sq_tipo_artefato_assunto\n JOIN tipo_documento tip_doc ON art.sq_tipo_documento = tip_doc.sq_tipo_documento\n -- ORIGEM\n JOIN pessoa_artefato pes_art ON art.sq_artefato = pes_art.sq_artefato\n JOIN pessoa_sgdoce pes_sgd ON pes_art.sq_pessoa_sgdoce = pes_sgd.sq_pessoa_sgdoce \n LEFT JOIN artefato_processo art_pro ON art.sq_artefato = art_pro.sq_artefato\n WHERE art.sq_artefato = :sqArtefato\n AND pes_art.sq_pessoa_funcao = :sqPessoaFuncao"; $query = $this->_em->createNativeQuery($sql, $rsm); $query->setParameter('sqArtefato', $sqArtefato)->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoOrigem())->useResultCache(false); return $query->getSingleResult(); }
/** * @return */ public function findArtefatoDuplicado($dto, $count = true) { $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('sq_artefato', 'sqArtefato', 'integer'); $rsm->addScalarResult('nu_digital', 'nuDigital', 'string'); $rsm->addScalarResult('nu_artefato', 'nuArtefato', 'string'); $sql = "SELECT art.sq_artefato,\n sgdoce.formata_numero_digital(art.nu_digital) AS nu_digital,\n art.nu_artefato\n FROM sgdoce.artefato art\n JOIN sgdoce.pessoa_artefato pes_art ON art.sq_artefato = pes_art.sq_artefato\n JOIN sgdoce.pessoa_sgdoce pes_sgd ON pes_art.sq_pessoa_sgdoce = pes_sgd.sq_pessoa_sgdoce\n WHERE art.sq_tipo_documento = :sqTipoDocumento\n AND art.nu_artefato = :nuArtefato\n AND pes_sgd.sq_pessoa_corporativo = :sqPessoaOrigem\n AND pes_art.sq_pessoa_funcao = :sqPessoaFuncao"; if ($dto->getSqArtefato()) { $sql .= " AND art.sq_artefato <> :sqArtefato"; } $nativeQuery = $this->_em->createNativeQuery($sql, $rsm)->setParameter('sqTipoDocumento', $dto->getSqTipoDocumento())->setParameter('nuArtefato', $dto->getNuArtefato())->setParameter('sqPessoaOrigem', $dto->getSqPessoaOrigem())->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoOrigem()); if ($dto->getSqArtefato()) { $nativeQuery->setParameter('sqArtefato', $dto->getSqArtefato()); } if ($count) { return count($nativeQuery->getArrayResult()) > 0; } return $nativeQuery->getArrayResult(); }