/** * * @param \Core_Dto_Search $dto * @return boolean */ public function isFirstTramite(\Core_Dto_Search $dto) { $entityTramite = $this->find($dto->getSqArtefato()); if ($entityTramite->getNuTramite() == 2 && $entityTramite->getSqStatusTramite()->getSqStatusTramite() == \Core_Configuration::getSgdoceStatusTramiteCancelado()) { return true; } if ($entityTramite->getNuTramite() > 1) { return false; } return true; }
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 isCanceled() { return $this->getSqStatusTramite()->getSqStatusTramite() == \Core_Configuration::getSgdoceStatusTramiteCancelado(); }
public function hasTramiteEfetivo(\Core_Dto_Search $dto) { $sql = "SELECT (count(sq_tramite_artefato) > 1) has_tramite_efetivo\n FROM tramite_artefato\n WHERE nu_tramite <> :nuTramite\n AND sq_status_tramite < :sqStatusTramite\n AND NOT st_ultimo_tramite\n AND sq_artefato = :sqArtefato"; $rsm = new \Doctrine\ORM\Query\ResultSetMapping($this->_em); $rsm->addScalarResult('has_tramite_efetivo', 'hasTramiteEfetivo', 'boolean'); $nq = $this->_em->createNativeQuery($sql, $rsm)->useResultCache(false); $nq->setParameters(array('nuTramite' => TramiteArtefatoService::FIRST_TRAMITE_NUMBER, 'sqStatusTramite' => \Core_Configuration::getSgdoceStatusTramiteCancelado(), 'sqArtefato' => $dto->getSqArtefato())); return $nq->getSingleScalarResult(); }
/** * @param integer $sqArtefato * @return mixed */ public function cancel($sqArtefato) { $objUltTramiteArtefato = $this->getLastTramite($sqArtefato); if (!$objUltTramiteArtefato instanceof \Sgdoce\Model\Entity\VwUltimoTramiteArtefato) { throw new Exception("Artefato não encontrado."); } $objArtefato = $this->_getRepository('app:Artefato')->find($objUltTramiteArtefato->getSqArtefato()); // VERIFICA SE O ARTEFATO JÁ FOI RECEBIDO $isReceived = false; if ($objUltTramiteArtefato->getSqStatusTramite()->getSqStatusTramite() != \Core_Configuration::getSgdoceStatusTramiteTramitado()) { $isReceived = true; } if ($objUltTramiteArtefato->getSqPessoaRecebimento() != '' || $objUltTramiteArtefato->getDtRecebimento() != '') { $isReceived = true; } /* INIT recupera informações para usar em caso de exception */ $sqTipoArtefato = $objArtefato->getSqTipoArtefatoAssunto()->getSqTipoArtefato(); $noTipoArtefato = $sqTipoArtefato->getNoTipoArtefato(); if ($sqTipoArtefato->getSqTipoArtefato() == \Core_Configuration::getSgdoceTipoArtefatoProcesso()) { $artefatoErro = $this->_formatProcessNumber($objArtefato); } else { $artefatoErro = $objArtefato->getNuDigital()->getNuEtiqueta(); } /* END */ if ($isReceived) { throw new \Exception(sprintf(\Core_Registry::getMessage()->translate('MN161'), $noTipoArtefato, $artefatoErro)); } // VERIFICA SE ARTEFATO PODE SER CANCELADO PELO USUÁRIO LOGADO. if ($objUltTramiteArtefato->getDtCancelamento() != '' || ($objUltTramiteArtefato->getSqPessoaTramite()->getSqPessoa() != \Core_Integration_Sica_User::getPersonId() || $objUltTramiteArtefato->getSqUnidadeOrgTramite()->getSqUnidadeOrg() != \Core_Integration_Sica_User::getUserUnit())) { throw new \Exception(sprintf(\Core_Registry::getMessage()->translate('MN162'), $noTipoArtefato, $artefatoErro)); } // RECEBE ARTEFATO. $entStatusTramite = $this->_getRepository('app:StatusTramite')->find(\Core_Configuration::getSgdoceStatusTramiteCancelado()); $entPessoa = $this->_getRepository('app:VwPessoa')->find(\Core_Integration_Sica_User::getPersonId()); $objTramiteArtefato = $this->_getRepository('app:TramiteArtefato')->find($objUltTramiteArtefato->getSqTramiteArtefato()); $objTramiteArtefato->setDtCancelamento(\Zend_Date::now()); $objTramiteArtefato->setSqPessoaRecebimento($entPessoa); $objTramiteArtefato->setSqStatusTramite($entStatusTramite); $this->getEntityManager()->persist($objTramiteArtefato); $this->getEntityManager()->flush($objTramiteArtefato); return $objTramiteArtefato; }