Fornecedores Em Atraso
Este caso de uso envia uma mensagem para as unidades gestora que possuem os e-mails no parâmetro ParametrosGestoraLiquidcaoDespesas.EMAILS_PARA_ALERTAS_DO_SISTEMA informando os fornecedores que entraram em atraso na entrega de materiais de empenhos em um determinado dia.
Descrição do Caso de Uso
O timer verifica, uma vez, diariamente os fornecedores cujos empenhos apresentam a data de limite da entrega dos materiais pendentes no dia anterior e envia as informações desses fornecedores e seus empenhos ao responsável da DIVISÃO DE MATERIAL do DMP. As informações são:
- Nome e CPF/CNPJ do fornecedor;
- Empenhos em atraso do fornecedor:
- Número;
- Ano;
- Unidade gestora;
- Data de recebimento do empenho pelo fornecedor;
- Processo de Compra:
- Número e Ano do processo;
- Licitação.
Modelo:
Caro(a) chefe do DMP - DIVISÃO DE MATERIAL, Abaixo encontram-se as informações dos fornecedores que entraram em atraso hoje, data de <Data Atual>. _________________________________________________________________________________ Fornecedor: <Nome(CPF/CNPJ)> EMPENHO(S): <Número/Ano - Gestora> recebido em <data de recebimento> PROCESSO DE COMPRA: Processo: <Número/Ano> Licitação: <Modalidade - Número/Ano> Esta mensagem é automática e não deve ser respondida.
Principais Regras de Negócio
- RN01 - O timer será executado no início de todos os dias, uma vez por dia, pegando os fornecedores com empenhos com data limite de entrega no dia anterior.
- RN02 - A data limite da entrega dos materiais do empenho é a data de recebimento do empenho pelo fornecedor mais os dias do prazo de entrega.
- RN03 - Todo dia é verificado todos os fornecedores que estão em atraso e essas serão agrupadas por unidade gestora dos empenhos que as mesmas estão associadas. Para cada gestora vai existir um email cadastrados no sistema e será para esse grupo que será enviado o email com todas os fornecedores em atraso para aquela gestora. Esse grupo de mails será indicado pelo parâmetro EMAILS_PARA_ALERTAS_DO_SISTEMA.
Classes Persistentes e Tabelas Envolvidas
Classe | Tabela |
---|---|
br.ufrn.sipac.liquidacao.timers.TimerLiquidacaoFornecedorEmAtraso | comum.infra.registro_timer |
br.ufrn.sipac.liquidacao.pagamento.dominio.RecebimentoEmpenho | administrativo.liquidacao.recebimento_empenho |
br.ufrn.sipac.orcamento.movimentacoes.dominio.Empenho | administrativo.sco.empenho |
br.ufrn.sipac.compras.dominio.ProcessoCompra | administrativo.compras.processo_compra |
br.ufrn.sipac.compras.licitacao.dominio.Proposta | administrativo.compras.proposta |
br.ufrn.sipac.cadastro.dominio.Pessoa (Fornecedor) | administrativo.public.pessoa |
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
Para o timer definir um tempo curto (sugiro 2 ou 3 minutos) para o timer e o servidor de testes como servidor de restrição de execução. O tempo é definido diretamento no banco. Monitorar o e-mail de desenvolvimento (desenv@info.ufrn.br).
Também verificar se o email está sendo enviado corretamente ao responsável. (O testador pode modificar o email de recebimento através do caso de uso SIGPRH → Menu Servidor → Serviços → Atualizar Dados Pessoais. Lembrar de depois modificar o email novamente para desenv@info.ufrn.br para não afetar outros testes com esse usuário.)
Dados para o Teste
O Responsável da unidade DMP - DIVISÃO DE MATERIAL (11.02.03.03) é quem recebe o email com os fornecedores em atraso.
Para deixar empenhos em atraso no dia, obtenha o RELATÓRIO DE FORNECEDORES EM ATRASO pelo caminho:
- Módulos → Liquidação de Despesas → Relatórios → Fornecedor → Fornecedores em Atraso
Escolha um empenho e execute o sql:
UPDATE compras.proposta SET prazo_entrega = ( SELECT ((CURRENT_DATE - receb.data_recebimento) - 1 ) AS data_limite FROM compras.proposta p JOIN compras.processo_compra pc ON p.id_processo_compra = pc.id_proc_compra JOIN sco.empenho e ON e.id_processo_compra = pc.id_proc_compra JOIN liquidacao.recebimento_empenho receb ON receb.id_empenho = e.id_empenho WHERE e.cod_empenho = <NÚMERO DO EMPENHO> AND e.ano = **<ANO DO EMPENHO> AND e.id_unidade_gestora = <ID UNIDADE GESTORA DO EMPENHO> AND e.id_credor = p.id_fornecedor ) WHERE id_proposta = ( SELECT p.id_proposta FROM compras.proposta p JOIN compras.processo_compra pc ON p.id_processo_compra = pc.id_proc_compra JOIN sco.empenho e ON e.id_processo_compra = pc.id_proc_compra JOIN liquidacao.recebimento_empenho receb ON receb.id_empenho = e.id_empenho WHERE e.cod_empenho = <NÚMERO DO EMPENHO> AND e.ano = <ANO DO EMPENHO> AND e.id_unidade_gestora = <ID UNIDADE GESTORA DO EMPENHO> AND e.id_credor = p.id_fornecedor );
Assim, um novo prazo de entrega será informado deixando o empenho com 1 dia de atraso, ou seja, deixando o primeiro dia de atraso como a data atual. Isso pode ser verificado ao atualizar o relatório.
- Para executar o timer via navegador, é só logar no sistema e informar a URL: