01. DADOS GERAIS
02. SITUAÇÃO/REQUISITO
Gerar o Relatório de Informe de Rendimentos de forma individual por funcionário, ou autônomo, e enviá-lo ao seu correspondente por e-mail, em formato PDF, compactado e com senha.
Adicionar um parâmetro na tela do "Relatório de Informe de Rendimentos" (FP4510), para controlar a funcionalidade de envio por e-mail.
Quando o parâmetro para envio for marcado, a classificação do relatório deve assumir, exclusivamente, a primeira opção, "Por Estabelecimento/Matrícula".
O destinatário deve ser definido com o dado presente no campo "E-mail", na página "Endereço" da "Manutenção de Pessoa Física" (FP1440).
Por sua vez, o remetente da mensagem, deve ser relacionado ao usuário que realiza a execução do relatório, presente no campo "E-Mail Local" da "Manutenção de Usuário" (SEC000AA).
O assunto do e-mail deve ser: "Informe de Rendimentos referente ao ano 2023". Sendo que, o ano deve estar de acordo com o campo "Ano Base" informado na execução do relatório.
Além do assunto, o corpo da mensagem deve seguir o mesmo padrão: "Você está recebendo o Informe de Rendimentos referente ao ano 2023.",
Informações sobre a compactação e senha devem ser apresentadas: "Para descompactar o arquivo informe.zip" em anexo, será necessário informar o número de seu CPF, sem pontos e traços.".
Ao fim do corpo da mensagem, algumas informações básicas: "Não responder este e-mail, ele foi gerado automaticamente. Este e-mail é intransferível, somente você deve ter acesso a ele.".
Todos os textos da mensagem, assunto e corpo, devem ser traduzidos conforme o idioma do usuário. |
Além do envio, existe um erro no parâmetro "Opção" que deve ser corrigido. Quando este parâmetro assume o valor "Digitação", o campo "Tipo Emissão" assume, exclusivamente, o valor "Funcionários".
Entretanto, quando o campo assume, ou retorna para, o valor "Seleção", o campo "Tipo Emissão" permanece exclusivamente com o valor "Funcionários". Este comportamento deve ser corrigido.
Apenas quando o valor for "Digitação", o campo "Tipo Emissão" deve assumir exclusivamente o valor "Funcionários".
03. SOLUÇÃO
Buscando padronizar o envio de relatórios por e-mail, visando a reutilização de código, o que infere diretamente na agilidade no desenvolvimento desta funcionalidade em outros relatórios, manutenibilidade facilitada e a centralização de lógicas de envio, as quais não são pertinentes às lógicas de negócio, desenvolvemos o utilitário FPAPI805. Este contempla uma série de procedures, dispostas nos cards abaixo, que foram facilmente aplicadas à lógica do "Relatório de Informe de Rendimentos" (FP4510), permitindo que o mesmo seja enviado por e-mail aos funcionários, ou autônomos, relacionados.
Todo o código do utilitário FPAPI805 está disposto em dois arquivos, "prghur/fpp/fpapi805.i", responsável pela definição de todas as variáveis e tabelas temporárias necessárias para o envio da mensagem, e "prghur/fpp/fpapi805.p", que contempla diretamente as lógicas de envio, estas referências devem ser aplicadas às lógicas de negócio que realizam a definição da impressão do relatório, "i-rpout.i". Após verificar se o relatório será impresso é necessário criar um identificador para o envio do mesmo, utilizando a procedure "pi_cria_tt_envios". run pi_cria_tt_envios in h_fpapi805 (
input c_cdn_empresa, /* código da empresa, chave de "funcionário" */
input c_cdn_estab, /* código do estabelecimento, chave de "funcionário" */
input c_cdn_funcionario, /* código do funcionário, chave de "funcionário" */
input c_cod_cpf /* CPF da pessoa, chave de "autônomos" */
). |
|
Após o sucesso na impressão do relatório, existe a possibilidade de compactar o mesmo, utilizando a procedure "pi_compacta_anexo". Esta procedure utiliza a API "ut-zip" do Framework. |
run pi_compacta_anexo in h_fpapi805 (
input c_email_anexo, /* caminho completo ao arquivo gerado */
input c_email_anexo_comp, /* caminho completo ao arquivo compactado */
input yes, /* deleta arquivo origem */
input c_cod_cpf /* senha */
). |
|
O e-mail do usuário que realiza a execução, que eventualmente será o remetente da mensagem, pode ser identificado através da procedure "pi_busca_email_usuario". As tabelas "usuar_aplicat_rh" e "usuar_mestre" são utilizadas neste processo. run pi_busca_email_usuario in h_fpapi805 (
input tt-param.usuario, /* código do usuário */
input no, /* prioriza "Email Contato" do FP1440 */
input no, /* prioriza tabela "usuar_mestre" */
output c_email_remetente /* e-mail cadastrado no sistema */
). |
|
O e-mail da pessoa, que eventualmente representará o destinatário da mensagem, pode ser identificado através das procedures "pi_busca_email_pessoa", que recebe um CPF, ou "pi_busca_email_funcionário", que recebe a chave de um funcionário (empresa, estabelecimento e matrícula) . As tabelas "rh_pessoa_fisic" e "funcionario" são utilizadas nestes processos. run pi_busca_email_pessoa in h_fpapi805 (
input c_cod_cpf_cgc, /* cpf da pessoa */
input no, /* prioriza "Email Contato" do FP1440 */
output c_email_destinatario /* e-mail cadastrado no sistema */
). |
run pi_busca_email_funcionario in h_fpapi805 (
input c_cdn_empresa, /* código da empresa, chave de "Funcionários" */
input c_cdn_estab, /* código do estabelecimento, chave de "Funcionários" */
input c_cdn_funcionario, /* código do funcionário, chave de "Funcionários" */
input no, /* prioriza "Email Contato" do FP1440 */
output c_email_destinatario /* e-mail cadastrado no sistema */
). |
|
Para realizar o envio de mensagem, com este utilitário, é necessário utilizar a procedure "pi_envia_email". O corpo da mensagem, no formato da tabela temporária "tt-mensagem", presente na include "utapi019.i", pode ser definido em um arquivo externo, facilitando a manutenção. Esta procedure utiliza a API "ut-api019" do Framework. |
run pi_envia_email in h_fpapi805 (
input c_email_remetente, /* remetente da mensagem */
input c_email_destinatario, /* destinatário da mensagem */
input c_email_assunto, /* assunto da mensagem */
input c_email_anexo_comp, /* anexo da mensagem */
input yes, /* deleta arquivo anexo */
input table tt-mensagem /* corpo da mensagem, conforme utapi019 */
). |
|
Ao fim das execuções, é possível apresentar ao usuário um Log completo. Para tal fim, basta utilizar a procedure "pi_imprime_log", onde os parâmetros de impressão são configurados. run pi_imprime_log in h_fpapi805. |
|
|
04. DEMAIS INFORMAÇÕES
A técnica abaixo garante a impressão de relatórios em formato PDF.
/* definir a nomenclatura do arquivo */
assign c_email_anexo = "informe.pdf|FP4510|0". /* "arquivo.pdf|programa|0" */
/* executar de forma persistente o controller relacionado */
if not valid-handle(h_pdf_controller) then do:
run btb/btb920aa.p persistent set h_pdf_controller.
end.
/* configurar a impressão do relatório */
{include/i-rpout.i &tofile=c_email_anexo} |
05. ASSUNTOS RELACIONADOS