====== 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 . _________________________________________________________________________________ Fornecedor: EMPENHO(S): recebido em PROCESSO DE COMPRA: Processo: Licitação: 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: Link(s): Usuário: Papel que usuário deve ter: ===== 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 [[desenvolvimento:arquitetura:documentacao_desenvolvimento#criando_uma_classe_timer|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 = AND e.ano = ** AND e.id_unidade_gestora = 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 = AND e.ano = AND e.id_unidade_gestora = 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: http://host/sipac/test.do?acao=timerFornecedorEmAtraso