-
Total de ítens
14 -
Registro em
-
Última visita
Wagner Freitas's Achievements
-
cnab240 Boleto CEF - Código Remessa/Retorno não tratados
Wagner Freitas replied to Wagner Freitas's tópico in ACBrBoleto
Vou fazer a alteração necessária e posto aqui meu código fonte para análise. Obrigado pelo retorno. -
cnab240 Boleto CEF - Código Remessa/Retorno não tratados
um tópico no fórum postou Wagner Freitas ACBrBoleto
Bom dia! Estou implementando o boleto da CEF e percebi que no arquivo ACBrBoleto, o método LeRetorno contém um teste que lança uma exceção se o código remessa/retorno for diferente de '2'. procedure TACBrBoleto.LerRetorno(AStream: TStream); ... case Length(SlRetorno.Strings[0]) of 240 : begin if (Copy(SlRetorno.Strings[0],143,1) <> '2') then Raise Exception.Create( ACBrStr( NomeArq + sLineBreak + 'Não é um arquivo de Retorno de cobrança com layout CNAB240') ); ... Porém existem outros casos que podem ser tratados e por conta desse teste eu não consigo tratá-los na unit ACBrBancoCaixa. Não seria melhor transferir esse teste para dentro das units de cada banco? Pois dessa forma cada banco poderia implementar o tratamento para estes outros casos. Att. -
Método CodigoLiquidacao_Descricao não está tratando as descrições de baixa
um tópico no fórum postou Wagner Freitas ACBrBoleto
Ao ler retorno CNAB_240, o método "CodigoLiquidacao_Descricao" não está tratando os codLiquidacao (09, 10,11,12,13,14) que são os códigos de baixa. Segue em anexo um print da parte da documentação onde são informados os códigos. Att. Segue também o arquivo ACBrBancoCaixa-15399.pas com as alteração necessária. -
Olá sorrilha! De acordo com o Manual_Leiaute_CNAB240_SIGCB temos: G079 - Número Remessa / Retorno Número adotado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo para identificar a sequência de envio ou devolução do arquivo entre o Beneficiário e o Banco Beneficiário. Obs.: o número informado deve ser sequencial crescente (anterior + 1). Ou seja, este número é gerado pela sua aplicação. Se você envia uma remessa com numero N, o banco só aceita que a próxima remessa seja maior do que N.
-
ACBrBoleto - Remessa CNAB 240 - TipoOcorrencia
Wagner Freitas replied to Wagner Freitas's tópico in ACBrBoleto
Bom dia! No arquivo ACBrBoleto.pas, o método fBancoClass.CodOcorrenciaToTipo(CodOcorrencia) deveria se chamar fBancoClass.CodOcorrenciaToTipoRetorno(CodOcorrencia), pois não retorna os tipos de ocorrência de remessa. Como não existe nenhum método que retorne o tipo de remessa criei este outro método fBancoClass.CodOcorrenciaToTipoRemessa(CodOcorrencia) para suprir a necessidade que tenho na minha aplicação de saber o TipoRemessa a partir do CodOcorrencia. Já que eu criei o método fBancoClass.CodOcorrenciaToTipoRemessa(CodOcorrencia) no arquivo ACBRBoleto.pas, o adicionei no lugar do case do arquivo ACBrBancoCaixa.pas, pois o método criado retorna o mesmo resultado do case. Espero ter respondido sua pergunta. Att. -
Gostaria de saber se as alterações do herculanojs já foram ou estão sendo analisadas.
-
Wagner Freitas changed their profile photo
-
Rodrigo Sidney started following Wagner Freitas
-
ACBrBoleto - Remessa CNAB 240 - TipoOcorrencia
Wagner Freitas replied to Wagner Freitas's tópico in ACBrBoleto
Segue abaixo as alterações realizadas nos arquivos ACBrBoleto.pas e ACBrBancoCaixa.pas citadas no primeiro post. Atualizei os arquivos e descrevi abaixo minhas alterações. {Arquivo ACBrBoleto.pas} ========================================================================================== {Metodo Antigo - No arquivo ACBrBancoCaixa.pas o metodo "CodOcorrenciaToTipo" retorna apenas "TipoRetorno" e não "TipoRemessa"} function TACBrBanco.CodOcorrenciaToTipoRemessa(const CodOcorrencia: Integer ) : TACBrTipoOcorrencia; begin Result:= fBancoClass.CodOcorrenciaToTipo(CodOcorrencia); <<<< antigo end; {Metodo Alterado - Criei um metodo que retorna apenas os "TipoRemessa"} function TACBrBanco.CodOcorrenciaToTipoRemessa(const CodOcorrencia: Integer ) : TACBrTipoOcorrencia; begin Result:= fBancoClass.CodOcorrenciaToTipoRemessa(CodOcorrencia); <<<< novo end; {Metodo Adicionado} function TACBrBanco.TipoOcorrenciaToCodRemessa(const TipoOcorrencia: TACBrTipoOcorrencia ) : String; begin Result:= fBancoClass.TipoOcorrenciaToCodRemessa(TipoOcorrencia); end; {Metodo Adicionado} function TACBrBancoClass.TipoOcorrenciaToCodRemessa(const TipoOcorrencia : TACBrTipoOcorrencia ) : String ; begin Result := '01'; end ; {Arquivo ACBrBancoCaixa.pas} ========================================================================================== {Metodo Adicionado} function TACBrCaixaEconomica.CodOcorrenciaToTipoRemessa( const CodOcorrencia: Integer): TACBrTipoOcorrencia; begin case CodOcorrencia of 02: Result := toRemessaBaixar; 04: Result := toRemessaConcederAbatimento; 05: Result := toRemessaCancelarAbatimento; 06: Result := toRemessaAlterarVencimento; 07: Result := toRemessaConcederDesconto; 08: Result := toRemessaCancelarDesconto; 09: Result := toRemessaProtestar; 10: Result := toRemessaCancelarInstrucaoProtestoBaixa; 11: Result := toRemessaCancelarInstrucaoProtesto; 13: Result := toRemessaDispensarJuros; 31: Result := toRemessaAlterarNomeEnderecoSacado; else Result := toRemessaRegistrar; end; end; {Metodo Adicionado} function TACBrCaixaEconomica.TipoOcorrenciaToCodRemessa(const TipoOcorrencia: TACBrTipoOcorrencia): string; begin case TipoOcorrencia of toRemessaBaixar : Result := '02'; toRemessaConcederAbatimento : Result := '04'; toRemessaCancelarAbatimento : Result := '05'; toRemessaAlterarVencimento : Result := '06'; toRemessaConcederDesconto : Result := '07'; toRemessaCancelarDesconto : Result := '08'; toRemessaProtestar : Result := '09'; toRemessaCancelarInstrucaoProtestoBaixa: Result := '10'; toRemessaCancelarInstrucaoProtesto : Result := '11'; toRemessaDispensarJuros : Result := '13'; toRemessaAlterarNomeEnderecoSacado : Result := '31'; else Result := '01'; end; end; {Criei o metodo "TipoOcorrenciaToCodRemessa" com o conteudo do case} {Metodo Antigo} function TACBrCaixaEconomica.GerarRegistroTransacao240(ACBrTitulo : TACBrTitulo): String; begin ... case OcorrenciaOriginal.Tipo of toRemessaBaixar : ATipoOcorrencia := '02'; toRemessaConcederAbatimento : ATipoOcorrencia := '04'; toRemessaCancelarAbatimento : ATipoOcorrencia := '05'; toRemessaAlterarVencimento : ATipoOcorrencia := '06'; toRemessaConcederDesconto : ATipoOcorrencia := '07'; toRemessaCancelarDesconto : ATipoOcorrencia := '08'; toRemessaProtestar : ATipoOcorrencia := '09'; toRemessaCancelarInstrucaoProtestoBaixa: ATipoOcorrencia := '10'; toRemessaCancelarInstrucaoProtesto : ATipoOcorrencia := '11'; toRemessaDispensarJuros : ATipoOcorrencia := '13'; toRemessaAlterarNomeEnderecoSacado : ATipoOcorrencia := '31'; else ATipoOcorrencia := '01'; end; ... end; {Metodo Alterado} function TACBrCaixaEconomica.GerarRegistroTransacao240(ACBrTitulo : TACBrTitulo): String; begin ... ATipoOcorrencia := TipoOcorrenciaToCodRemessa(OcorrenciaOriginal.Tipo); ... end; Tá aí minha contribuição. Espero ter ajudado! Desde já agradeço a oportunidade! ACBrBoleto.pas ACBrBancoCaixa.pas -
ACBrBoleto - Remessa CNAB 240 - TipoOcorrencia
Wagner Freitas replied to Wagner Freitas's tópico in ACBrBoleto
Up! -
ACBrBoleto Caixa Econômica Federal - Trocar DataMoraJuros por DataMulta
um tópico no fórum postou Wagner Freitas ACBrBoleto
Bom dia! Verifiquei que ao montar o arquivo remessa da Caixa Econômica federal, estão inserindo a DataMoraJuros no lugar da DataMulta. Isso obriga que a cobrança da Multa seja cobrada sempre a partir da mesma data que o juros de mora ao dia. Se eu não estiver errado, essas datas são independentes, por isso fiz as alterações necessárias para corrigir este problema. Segue em anexo os arquivos alterados. ACBrBancoCaixa.pas ACBrBoleto.pas -
Boa Tarde! Realizei a extração de dois métodos que acho importantes para o tratamento do TipoOcorrencia para todos os bancos. Por enquanto implementei estes métodos apenas no "ACBrBoleto.pas" e "ACBrBancoCaixa.pas". Poderiam verificar se estão corretas essas alterações e se poderiam ser incluídas no projeto ACBrBoleto? Segue em anexo as alterações. Att. ACBrBancoCaixa.pas ACBrBoleto.pas
-
Fiz uma implementação que retorna uma resposta mais específica quando se lê um arquivo PRÉ-CRÍTICA. Talvez ajude.
- 13 replies
-
- 1
-
-
- arquivo remessa
- rejeição
-
(e 1 mais)
Tags:
-
Tratamento do Arquivo de retorno PRÉ-CRITICA da Caixa Econômica Federal
um tópico no fórum postou Wagner Freitas ACBrBoleto
Estou compartilhando uma alteração que fiz no processamento do retorno PRÉ-CRÍTICA para ser enviado ao SVN. Fiz o seguinte: Quando recebo um arquivo de retorno PRÉ-CRÍTICA da CEF e tento processá-lo, o ACBrBoleto me retorna a seguinte mensagem: "ACBrBanco.ACBrBoleto.NomeArqRetorno +'não é um arquivo de retorno do '+ Nome". O que eu fiz foi analisar o arquivo PRÉ-CRÍTICA e retornar uma mensagem mais específica quanto às informações contidas nesse arquivo. O arquivo PRÉ-CRÍTICA retorna na posição 143 os seguintes status: 3 - Arquivo PRÉ-CRITICA PROCESSADO; 5 - Arquivo PRÉ-CRITICA REJEITADO; 5 - Arquivo PRÉ-CRITICA REJEITADO - W (posição 14) - Mostra qual o motivo da rejeição (no caso mostra o código que contém a descrição do motivo da rejeição que está contido no manual CNAB240 da caixa). Criei também um método para retornar o TACBrTipoOcorrencia passando o codOcorrencia. DÚVIDA: Por enquanto, trabalho apenas com a Caixa Econômica federal e estou na dúvida se alteração que fiz poderia servir para qualquer banco, dessa forma eu poderia transferir o tratamento que fiz no arquivo específico da CEF (ACBrBancoCaixa) para o arquivo Geral (ACBrBoleto). Att. Wagner Freitas ACBrBancoCaixa.pas ACBrBoleto.pas- 6 replies
-
- 1
-
-
- pré-critica
- boleto
-
(e 1 mais)
Tags: