~~ODT~~ echo "
"; echo "Última atualização: "; ver('', false); echo "
";
====== Timer Notifica Requisições Contidas ====== Este caso de uso envia uma mensagem para o usuário que cadastrou a requisição que se encontra contida e ainda não está associada a um empenho, e informa que o orçamento está contigenciada e que caso a requisição não for encaminhada deve ser estornada para liberar o orçamento. ===== Descrição do Caso de Uso ===== * **Email Fornecedor** O timer verifica as requisições contida a "x" meses e enviam notificações aos os usuários que cadastraram a requisição([[#principais_regras_de_negócio|RN01 RN02 ]]). O modelo do email enviado segue abaixo: A requisição abaixo cadastrada em ##DATA_CADASTRO##(Data de cadastro da Requisição) encontra-se contingenciada a ##MESES##(quantidade meses que a requisição encontra-se contingenciada) meses. Caso a mesma não tinha sido encaminhada para atendimento, é importante que seja encaminhada ou estornada para que haja a liberação do orçamento.A situação atual desta requisição faz com que um valor orçamentário de R$ ##VALOR_CONTINGENCIADO## fique contingenciado impedido de ser reutilizado em outras demandas. **DADOS DA REQUISIÇÃO:** \\ **Tipo:** ##TIPO_REQUISICAO## Denominação da Requisição \\ **Número:** ##REQ_NUMERO## Número da Requisição\\ **Valor:** R$##REQ_VALOR## Valor da Requisição\\ **Data de Cadastro:** ##DATA_CADASTRO## Data de Cadastro\\ **Unidade Requisitante:** ##UNIDADE_REQUISITANTE## Código-Nome da Unidade Requisitante \\ **Unidade de Custo:** ##UNIDADE_DE_CUSTO## Código-Nome da Unidade de Custo\\ **DADOS DO CONTINGENCIAMENTO:**\\ **Valor Contingenciado**: ##VALOR_CONTINGENCIADO## Valor Contingenciado \\ **DADOS DA CÉLULA ORÇAMENTÁRIA:**\\ **Unidade:** ##CODIGO_NOME_UND## Código-Nome da Unidade \\ **Programa de Trabalho:** ##CODIGO_NOME_PT## Código-Nome do Plano de Trabalho\\ **Natureza de Despesa** : ##CODIGO_NOME_EL## Código-Nome do Elemento-Despesa\\ **Fonte de Recurso**: ##CODIGO_NOME_FON## Código-Nome da Fonte Orçamentário\\ **Esfera :** ##CODIGO_NOME_EF## Código-Nome da Esfera\\ **Plano Interno :** ##CODIGO_NOME_PI## Código-Nome do Plano Interno\\ Para consultar a requisição, acesse o SIPAC -> Portal Admin. -> Requisições -> Buscar Requisições ===== Principais Regras de Negócio ===== * **RN01** - O timer será executado todos os dias(13h), uma vez por dia, pegando as requisições contidas. * **RN02** - O usuário que cadastrou a requisição receberá um email com algumas informações da requisição. ===== Classes Persistentes e Tabelas Envolvidas ===== ^ Classe ^ Tabela | | br.ufrn.sipac.arq.timers.liquidacao.TimerNotificacaoFornecedor | sistemas_comum.infra.registro_timer | | br.ufrn.sipac.orcamento.movimentacoes.dominio.Empenho | administrativo.sco.empenho | | br.ufrn.sipac.cadastro.dominio.Pessoa | administrativo.comum.pessoa | |br.ufrn.sipac.requisicoes.comuns.AbstractRequisicao | administrativo.requisicoes.todas as tabelas que representem uma requisição | |br.ufrn.sipac.orcamento.dominio.CelulaOrcamentaria | administrativo.sco.celula_orcamentaria| |br.ufrn.sipac.orcamento.dominio.ProgramaTrabalhoResumido | administrativo.sco.programa_trabalho_resumido| |br.ufrn.sipac.orcamento.dominio.UnidadeGeral | comum.unidade| |br.ufrn.sipac.orcamento.dominio.FonteRecurso | administrativo.sco.fonte_recurso| |br.ufrn.sipac.orcamento.dominio.ElementoDespesa | administrativo.sco.elemento_despesa| |br.ufrn.sipac.orcamento.dominio.Esfera | administrativo.sco.esfera| |br.ufrn.sipac.orcamento.dominio.PlanoInterno | administrativo.sco.plano_interno| ====== Plano de Teste ====== Sistema: SIPAC Módulo: NÃO SE APLICA Link(s): NÃO SE APLICA Usuário: NÃO SE APLICA Papel que usuário deve ter: NÃO SE APLICA ===== Cenários de Teste ===== Verificar se o email está sendo enviado corretamente para o usuário que cadastrou a requisição. ===== Dados para o Teste ===== * O envio do email para o usuário que cadastrou a requisição pode ser testado da seguinte forma: 1º - Logar no sistema com qualquer usuário e acessar o timer através da url: http://sistemas/sipac/test.do?acao=timerNotificaRequisicoesContidas 2º - Acessar o webmail e visualizar o(s) email(s) enviado(s) para o fornecedor. 3º - Verificar se todas as requisições contigenciadas a x meses(atualmente x está igual a 3 no banco) de sua data de cadastro, tiveram um email enviado. Link para consulta de Requisições no Sistema. SIPAC → Portal Admin. → Requisições → Buscar Requisições Select para consultar requisições: ''SELECT R.DATA AS DATA_REQ ,R.ID_USUARIO AS USUARIO_REQ, R.ID as ID, R.NUMERO, R.ANO, R.VALOR , UN_CUSTO.NOME AS NOME_UNI_CUSTO, UN_CUSTO.CODIGO_UNIDADE AS COD_UNI_CUSTO, UN_CUSTO.ID_UNIDADE AS ID_UNI_CUSTO , SUM(CONT.VALOR) AS VALOR_CONT,R.ID_TIPO as TIPO , PT.ID_PROGRAMA_TRABALHO AS PROGRAMA_TRABALHO_ID ,PT.CODIGO AS PROGRAMA_TRABALHO_CODIGO, PT.NOME AS PROGRAMA_TRABALHO_NOME , PI.ID_PLANO_INTERNO AS PLANO_INTERNO_ID , PI.CODIGO AS PLANO_INTERNO_CODIGO , PI.NOME AS PLANO_INTERNO_NOME , EL.ID_ELEMENTO_DESPESA AS ELEMENTO_DESPESAL_ID ,EL.NOME AS ELEMENTO_NOME , EL.CODIGO AS ELEMENTO_CODIGO , ES.ID_ESFERA AS ESFERA_ID , ES.CODIGO AS ESFERA_CODIGO , ES.NOME AS ESFERA_NOME , UND.ID_UNIDADE AS UNIDADE_ID , UND.CODIGO_UNIDADE AS UNIDADE_CODIGO , UND.NOME AS NOME_UNIDADE , UND_REQ.NOME AS UND_REQ_NOME , UND_REQ.ID_UNIDADE AS UND_REQ_ID , UND_REQ.CODIGO_UNIDADE AS REQ_CODIGO_UNIDADE , UND_REQ.SIGLA AS UND_REQ_SIGLA , FON.ID_FONTE_RECURSO AS FONTE_RECURSO_ID ,FON.CODIGO AS FONTE_CODIGO , FON.NOME AS NOME_FONTE , CEL.ID_CELULA AS CELULA_ID FROM REQUISICOES.REQUISICAO_DIARIA R LEFT JOIN COMUM.UNIDADE UND_REQ ON UND_REQ.ID_UNIDADE = R.ID_UNIDADE_REQ, SCO.CONTINGENCIAMENTO CONT, COMUM.UNIDADE UN_CUSTO, SCO.CELULA_ORCAMENTARIA CEL LEFT JOIN SCO.PROGRAMA_TRABALHO_RESUMIDO PT ON CEL.ID_PROGRAMA_TRABALHO = PT.ID_PTRES LEFT JOIN SCO.ELEMENTO_DESPESA EL ON CEL.ID_ELEMENTO_DESPESA = EL.ID_ELEMENTO_DESPESA LEFT JOIN SCO.ESFERA ES ON CEL.ID_ESFERA = ES.ID_ESFERA LEFT JOIN SCO.FONTE_RECURSO FON ON CEL.ID_FONTE_RECURSO = FON.ID_FONTE_RECURSO LEFT JOIN COMUM.UNIDADE UND ON CEL.ID_UNIDADE = UND.ID_UNIDADE LEFT JOIN SCO.PLANO_INTERNO PI ON CEL.ID_PLANO_INTERNO = PI.ID_PLANO_INTERNO WHERE R.ID_TIPO = 3 AND CONT.TIPO_REQUISICAO = 3 AND R.ID NOT IN (SELECT ID_REQUISICAO FROM SCO.SUB_EMPENHO_REQUISICAO WHERE TIPO_REQUISICAO = 3 ) AND CONT.DATA_CADASTRO >= '2010-09-09' AND R.ID = CONT.ID_REQUISICAO AND CEL.ID_CELULA = CONT.ID_CELULA_ORCAMENTARIA AND R.ID_UNIDADE_CUSTO = UN_CUSTO.ID_UNIDADE GROUP BY R.ID_USUARIO ,R.DATA, R.ID, R.NUMERO, R.ANO, R.VALOR, PT.ID_PROGRAMA_TRABALHO , PT.CODIGO, PT.NOME ,PI.ID_PLANO_INTERNO ,PI.CODIGO, PI.NOME , EL.ID_ELEMENTO_DESPESA ,EL.NOME , EL.CODIGO, ES.ID_ESFERA ,ES.CODIGO , ES.NOME , UND.ID_UNIDADE ,UND.CODIGO_UNIDADE , UND.NOME , FON.ID_FONTE_RECURSO ,FON.CODIGO , FON.NOME ,UND_REQ.NOME, UND_REQ.ID_UNIDADE, UND_REQ.CODIGO_UNIDADE , UND_REQ.SIGLA, CEL.ID_CELULA , UN_CUSTO.NOME, UN_CUSTO.CODIGO_UNIDADE, UN_CUSTO.ID_UNIDADE,R.ID_TIPO HAVING SUM(CONT.VALOR) > 0 ORDER BY UN_CUSTO.NOME''