/** * Obtém pessoa artefato assinatura * @param $dto * @return array */ public function getPessoaArtefatoAssinatura($dto) { $query = $this->_em->createQueryBuilder()->select('p.noPessoa, p.noProfissao, p.noUnidadeOrg, tm.noTipoMotivacao, tm.sqTipoMotivacao, m.deMotivacao')->from('app:Motivacao', 'm')->innerJoin('m.sqTipoMotivacao', 'tm')->innerJoin('m.sqPessoa', 'p')->innerJoin('p.sqPessoaFuncao', 'pf')->leftJoin('p.sqTratamentoVocativo', 'tv')->leftJoin('tv.sqTratamento', 't')->leftJoin('tv.sqVocativo', 'v')->leftJoin('p.sqPessoaCorporativo', 'pc')->leftJoin('p.sqMunicipioEndereco', 'cid')->leftJoin('cid.sqEstado', 'est')->andWhere('p.sqArtefato = :sqArtefato')->setParameter('sqArtefato', $dto->getSqArtefato())->andWhere('p.sqPessoaFuncao = :sqPessoaFuncao')->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoAssinatura())->getQuery()->execute(); if (empty($query)) { return NULL; } return $query; }
/** * Metódo que recupera o Dto da Assinatura */ public function getDtoAssinatura($data) { $data['sqPessoaCorporativo'] = $data['sqResponsavel']; $data['sqTipoPessoa'] = \Core_Configuration::getSgdoceTipoPessoaPessoaFisica(); $data['sqPessoaFuncao'] = \Core_Configuration::getSgdocePessoaFuncaoAssinatura(); $data['sqPessoa'] = $data['sqPessoaAssinante']; $data['noPessoa'] = $data['sqResponsavel_autocomplete']; $dtoAssinatura['PessoaSgdoce'] = \Core_Dto::factoryFromData($data, 'entity', array('entity' => 'Sgdoce\\Model\\Entity\\PessoaSgdoce', 'mapping' => array('sqTipoPessoa' => 'Sgdoce\\Model\\Entity\\VWTipoPessoa', 'sqPessoaCorporativo' => array('sqPessoa' => 'Sgdoce\\Model\\Entity\\VwPessoa')))); $dtoAssinatura['PessoaAssinante'] = \Core_Dto::factoryFromData($data, 'entity', array('entity' => 'Sgdoce\\Model\\Entity\\PessoaAssinanteArtefato', 'mapping' => array('sqArtefato' => 'Sgdoce\\Model\\Entity\\Artefato', 'sqPessoaSgdoce' => 'Sgdoce\\Model\\Entity\\PessoaSgdoce', 'sqTipoAssinante' => 'Sgdoce\\Model\\Entity\\TipoAssinante'))); return $dtoAssinatura; }
/** * método que obtén informarções da pessoa 'assinatura' relacionada ao artefato * @param integer * @return array */ public function getPessoaArtefatoAssinatura($dto) { $query = $this->_em->createQueryBuilder()->select('p.noPessoa, p.noProfissao, p.noUnidadeOrg')->from($this->_enName, 'p')->innerJoin('p.sqPessoaFuncao', 'pf')->andWhere('p.sqArtefato = :sqArtefato')->setParameter('sqArtefato', $dto->getSqArtefato())->andWhere('p.sqPessoaFuncao = :sqPessoaFuncao')->setParameter('sqPessoaFuncao', \Core_Configuration::getSgdocePessoaFuncaoAssinatura())->getQuery()->execute(); if (empty($query)) { return NULL; } return $query; }
/** * @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; } }
private function _checkExcluirAssinante($entity, $dto) { if ($entity->getSqArtefato() && !$dto->getNoResponsavelAssinatura() && ($dto->getProcedenciaInterno() == 'externo' || in_array($dto->getSqTipoDocumento(), $this->getTipoDocumentoSemAssinatura()))) { //só insere em pessoa_assinante_artefato se procedencia for interna if ($dto->getProcedenciaInterno() != 'externo') { $criteria = array('sqArtefato' => $entity->getSqArtefato()); $entPessoaAssinante = $this->_getRepository('app:PessoaAssinanteArtefato')->findOneBy($criteria); if ($entPessoaAssinante) { $this->_getRepository('app:PessoaAssinanteArtefato')->deleteByArtefato($entity->getSqArtefato()); } } $criteriaPessoaArtefatoAssinante = array('sqArtefato' => $entity->getSqArtefato(), 'sqPessoaFuncao' => \Core_Configuration::getSgdocePessoaFuncaoAssinatura()); $entPessoaArtefatoAssinante = $this->_getRepository('app:PessoaArtefato')->findOneBy($criteriaPessoaArtefatoAssinante); if ($entPessoaArtefatoAssinante) { $this->getEntityManager()->remove($entPessoaArtefatoAssinante); } } return $this; }
/** * Retorna subquery que verifica se a pessoa que esta logada está na assinatura da minuta ou não * @param integer $sqUsuario * @return \Doctrine\ORM\QueryBuilder */ public function subQueryAssinaturaArtefato($sqUsuario) { $subQueryInAss = $this->_em->createQueryBuilder()->select('svwps.sqPessoa')->from('app:Pessoa', 'sps')->leftJoin('sps.sqPessoaCorporativo', 'svwps')->innerJoin('sps.sqPessoaFuncao', 'svwpf')->andWhere('sps.sqArtefato = vcm.sqArtefato')->andWhere('svwps.sqPessoa = :sqPessoa')->setParameter('sqPessoa', $sqUsuario)->andWhere('sps.sqPessoaFuncao = ' . \Core_Configuration::getSgdocePessoaFuncaoAssinatura())->getQuery()->getDQL(); return $subQueryInAss; }
/** * @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); }