Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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):

            Code Block
            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):

            Code Block
            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):

            Code Block
            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:

          Code Block
          Pagamento__e pagamento = new Pagamento__e();
          pagamento.id_registro__c = idRetorno;
          pagamento.origem_pagamento__c = PagamentoServico.origem_retorno;
          EventBus.publish(pagamento);

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

...