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
O sistema não liquida duas vezes o mesmo documento a pagar;
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:
Entre na guia "Documentos a pagar".
Clique no botão "Enviar Retorno".
Selecione a conta financeira que refere-se o arquivo .
Clique em “Carregar Arquivos” e informe o arquivo que se deseja importar.
Clique em enviar.
Para baixar o arquivo de retorno bancário, se desejar, o sistema gravou uma cópia no no objeto “Contas Correntes”.
Clique na conta financeira utilizada.
Clique na guia “Retorno de Cobrança”.
Após o retorno o sistema realiza as seguintes alterações:
No repasse:
altera a situação do repasse para “Pago”;
conta corrente: irá preencher com a conta corrente do pagamento;
data do pagamento: irá preencher com a data do pagamento;
valor total pago: irá preencher com o valor total pago;
Na conta corrente:
cria um lançamento do valor do crédito na conta corrente na data do pagamento;
Na parcela do documento a pagar:
altera a situação da integração para “efetuado”;
altera a situação do pagamento para “Paga”;
preenche o campo data de pagamento com a data do pagamento.
preenche o campo Pagamento com o número do lançamento de gerado na conta corrente.
No lançamento do contrato:
altera a situação dos lançamentos do repasse para “Pago”;
preenche o campo data de pagamento com a data do pagamento, que será utilizado para o informe de rendimento.
No contábil:
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:
Usuário selecionar o componente aura “pesquisarContaPagar“ do SnapERP para pesquisar os registros de pagamento.
Usuário clica no botão “Enviar retorno“ para processar o arquivo de retorno.
Sistema abre o componente “enviarRetornoPagamento“.
Usuário selecionar a conta corrente e anexa o arquivo de retorno do banco.
Usuário clica no botão “Enviar”.
Sistema executa o método “salvarRetornoPagamento“ da classe “PagamentoController“.
Sistema executa o método “carregarArquivoRetorno“ da classe “RetornoPagamentoServico“.
Recupera o arquivo de retorno salvo
Cria registro no objeto “snap_finan__retorno_pagamento__c” com a situação igual a “Aguardando processamento“ e o arquivo anexado.
Executa o método (future) “processarArquivoRetorno“ da classe “RetornoPagamentoItauServico“.
Para cada parcela de pagamento do arquivo:
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;
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';
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';
Cria os registros para novos itens do retorno de pagamento (
snap_finan__item_retorno_pagamento__c
)Atualiza o registro do retorno de pagamento com a situação igual a “Processado com sucesso“.
Atualiza as parcelas de pagamento.
Cria um evento de pagamento:
Pagamento__e pagamento = new Pagamento__e(); pagamento.id_registro__c = idRetorno; pagamento.origem_pagamento__c = PagamentoServico.origem_retorno; EventBus.publish(pagamento);