01. DADOS GERAIS
Produto: |
TOTVS RH
|
---|---|
Linha de Produto: | Linha Datasul |
Segmento: | RH |
Módulo: |
TOTVS RH (Linha Datasul) - Folha de Pagamento (MFP)
|
Função: | |
País: | Brasil |
Ticket: | DRHROTDTS-10577 |
Requisito/Story/Issue (informe o requisito relacionado) : |
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.".
Internacionalização
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}