Árvore de páginas


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:

Relatórios Imposto de Renda Informe Rendimentos (FP4510)

País:Brasil
Ticket:DRHROTDTS-10577
Requisito/Story/Issue (informe o requisito relacionado) :

DRHROTDTS-10577 - Obtendo detalhes do item... STATUS


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".

    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.

    pi_compacta_anexo
    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.

    pi_busca_email_usuario
    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.

    pi_busca_email_pessoa
    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       */
    ).
    pi_busca_email_funcionario
    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.

    pi_envia_email
    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.

    pi_imprime_log
    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