Retorno do arquivo de pagamento eletrônico

Esse artigo descreve o processo de retorno do arquivo de pagamento eletrônico. Após esse processo o sistema irá gerar o extrato e enviá-lo automaticamente ao locador.

Regras de negócio

  1. O sistema não liquida duas vezes o mesmo documento a pagar;

  2. Não deve ser alterado o campo código de integração, pois é por ele que o sistema realizada a baixa.

 

Retornar arquivo de liquidação de Pagamento

Com o pagamento dos títulos no banco, é necessário retornar o arquivo de pagamento para o sistema realizar a liquidação dos documentos e, para isso, é necessário realizar o seguinte procedimento:

  1. Entre na guia "Documentos a pagar".

  2. Clique no botão "Enviar Retorno".

  3. Selecione a conta financeira que refere-se o arquivo .

  4. Clique em “Carregar Arquivos” e informe o arquivo que se deseja importar.

  5. Clique em enviar.

  6. Para baixar o arquivo de retorno bancário, se desejar, o sistema gravou uma cópia no no objeto “Contas Correntes”.

  7. Clique na conta financeira utilizada.

  8. Clique na guia “Retorno de Cobrança”.

 

Após o retorno o sistema realiza as seguintes alterações:

  1. No repasse:

    1. altera a situação do repasse para “Pago”;

    2. conta corrente: irá preencher com a conta corrente do pagamento;

    3. data do pagamento: irá preencher com a data do pagamento;

    4. valor total pago: irá preencher com o valor total pago;

  2. Na conta corrente:

    1. cria um lançamento do valor do crédito na conta corrente na data do pagamento;

  3. Na parcela do documento a pagar:

    1. altera a situação da integração para “efetuado”;

    2. altera a situação do pagamento para “Paga”;

    3. preenche o campo data de pagamento com a data do pagamento.

    4. preenche o campo Pagamento com o número do lançamento de gerado na conta corrente.

  4. No lançamento do contrato:

    1. altera a situação dos lançamentos do repasse para “Pago”;

    2. preenche o campo data de pagamento com a data do pagamento, que será utilizado para o informe de rendimento.

  5. No contábil:

    1. criar um lançamento contábil, nas contas contábeis pré-configuradas, na data do pagamento e com o valor pago.

Notas para o desenvolvedor:

  1. Usuário selecionar o componente aura “pesquisarContaPagar“ do SnapERP para pesquisar os registros de pagamento.

  2. Usuário clica no botão “Enviar retorno“ para processar o arquivo de retorno.

    1. Sistema abre o componente “enviarRetornoPagamento“.

  3. Usuário selecionar a conta corrente e anexa o arquivo de retorno do banco.

  4. Usuário clica no botão “Enviar”.

  5. Sistema executa o método “salvarRetornoPagamento“ da classe “PagamentoController“.

    1. Sistema executa o método “carregarArquivoRetorno“ da classe “RetornoPagamentoServico“.

      1. Recupera o arquivo de retorno salvo

      2. Cria registro no objeto “snap_finan__retorno_pagamento__c” com a situação igual a “Aguardando processamento“ e o arquivo anexado.

      3. Executa o método (future) “processarArquivoRetorno“ da classe “RetornoPagamentoItauServico“.

        1. Para cada parcela de pagamento do arquivo:

          1. Código da ocorrência = '00' (pagamento efetuado):

            parcela.situacao__c = 'Paga'; parcela.data_pagamento__c = Date.newInstance(Integer.valueOf(processamento.data_efetiva_pagamento.substring(4)), Integer.valueOf(processamento.data_efetiva_pagamento.substring(2,4)), Integer.valueOf(processamento.data_efetiva_pagamento.substring(0,2))); parcela.integracao_bancaria__c = 'Efetuado'; // situação da integração parcela.snap_finan__erro_pagamento_eletronico__c = false; item.snap_finan__operacao__c = 'Documento Pago'; //01012010 item.snap_finan__data_prevista_pagamento__c = Date.newInstance(Integer.valueOf(processamento.data_efetiva_pagamento.substring(4)), Integer.valueOf(processamento.data_efetiva_pagamento.substring(2,4)), Integer.valueOf(processamento.data_efetiva_pagamento.substring(0,2))); temPagamento = true;
          2. Código da ocorrência = ‘BD’(pagamento agendado):

            parcela.integracao_bancaria__c = 'Agendado'; // situação da integração parcela.snap_finan__erro_pagamento_eletronico__c = false; item.snap_finan__operacao__c = 'Entrada Confirmada';
          3. Código da ocorrência = ‘RJ’ (pagamento rejeitado):

            parcela.integracao_bancaria__c = 'Rejeitado'; // situação da integração String mensagemErro = ''; for (Integer i=0; i< processamento.codigo_ocorrencia.length()/2; i++){ system.debug(processamento.codigo_ocorrencia.mid(i*2, 2)); mensagemErro += mapa_ocorrencia.get(processamento.codigo_ocorrencia.mid(i*2, 2)) + '; '; } system.debug('mensagem de erro: ' + mensagemErro); parcela.mensagem_pagamento_eletronico__c = mensagemErro; parcela.snap_finan__erro_pagamento_eletronico__c = true; item.snap_finan__operacao__c = 'Erro';
        2. Cria os registros para novos itens do retorno de pagamento (snap_finan__item_retorno_pagamento__c)

        3. Atualiza o registro do retorno de pagamento com a situação igual a “Processado com sucesso“.

        4. Atualiza as parcelas de pagamento.

        5. Cria um evento de pagamento:

No SnapProperty (process builder “Pagamento”):

  1. Quando uma “Parcela a pagar” é atualizada e “Situação” for igual a “Paga” e o tipo de registro for igual a “Repasse”:

    1. Executa o método “parcelaPaga“ da classe “RepassePago“:

      1. Executa o método gerarLancamentoFinanceiro da classe “RepasseServico“:

        1. Para cada parcela:

          1. Cria um lançamento (snap_finan__Movimento__c)

        2. Cria os registros dos lançamentos.

        3. Atualiza as parcelas com o campo

      2. Executa o método atualizarRepassesPagos da classe “RepasseServico“:

        1. Recupera os repasses relacionados com as parcelas pagas.

        2. Para cada repasse:

        3. Atualiza os repasses pagos.

      3. Executa o método contabilizarRepassesPagos da classe “RepasseServico“:

        1. Recupera os repasses pagos na etapa anterior.

        2. Para cada repasse:

          1. Executa o método “contabilizarPagamentoRepasse” da classe “ContabilidadeServico“:

            1. Cria objeto para lançamento contábil (snap_finan__lancamento_contabil__c) do repasse:

            2. Cria um item para debitar cada item do repasse:

            3. Atualiza a situação do repasse para “Contabilizado”.

        3. Atualiza os registros dos repasses.

        4. Recupera os itens do repasse (Item_Repasse__c).

        5. Cria os registros dos lançamentos contábeis

        6. Cria os registros dos itens dos lançamentos contábeis.

Processo sistêmico após o pagamento de um repasse

Processo após pagamento do repasse