Ir para conteúdo
  • Cadastre-se

dev botao

Ler arquivo de retorno


jorgehenrique
  • Este tópico foi criado há 3112 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • 2 meses depois ...

Bom dia pessoal,

ao gerar o arquivo REMESSA para a CEF no formato c400 esta sendo exibido a mesma mensagem:

" Geracao do arquivo Remessa em 400 colunas não implementada o banco "

isto acontece na chamada deste método.

function TACBrBancoClass.GerarRegistroHeader400( NumeroRemessa: Integer): String;

este metodo possui este comentario:

" Método implementado apenas para evitar Warnings de compilação (poderia ser abstrato)

Você de fazer "override" desse método em todas as classes filhas de TACBrBancoClass "

podemos ignorar essa exceção ?

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia Carlos.

Esta mensagem é apenas um alerta de que ainda não está sendo feita a geração da remessa no padrão CNAB400 para este banco.

Caso você necessite utilizar este padrão e desejar colaborar com o projeto, você poderá efetuar a alteração da unit da Caixa e anexar aqui.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde Carlos.

Se surgir alguma dúvida, poderemos lhe ajudar pelo fórum.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois ...

Pessoal, sei que o post já é antigo, mas com a versão mais recente do ACBrBoleto, função LerRetorno(), me deparei com o seguinte na linha 524, da unit ACBrCaixaEconomica.pas:

if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or

(rConta <> OnlyNumber(Cedente.CodigoCedente))) then

raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));

Porém, atribuo os valores as propriedades da conta corrente no componente ACBrBoleto, desta forma:

//O usuario seleciona a C/C num ComboBox, então configuro o ACBrBoleto para aquela C/C

Boleto.Cedente.Agencia:=Trim(cds_contacorrenteAGENCIA.AsString);

Boleto.Cedente.Conta:=Trim(cds_contacorrenteCONTA.AsString);

Boleto.Cedente.CodigoCedente:=Trim(cds_contacorrenteCODCEDENTE.AsString);

Acontece que eu passo para o componente ACBrBoleto, apenas os digitos de 1..9, isto é, sem zeros a esquerda. Debugando a unit, vi que na propriedade Agencia, vem com 5 digitos e, no meu caso, com 2 zeros a esquerda. Meu problema é que não sei como o usuário irá cadastrar suas contas correntes no sistema, não sei se ele informará no campo agencia o valor "163", "0163" ou "00163". Por isso, tenho uma exceção de que a agencia\conta informada não é a mesma do arquivo de retorno.

O que eu fiz foi alterar esse código para:

if (not LeCedenteRetorno) and ((Trim(IntToStr(StrToInt(rAgencia))) <> Trim(IntToStr(StrToInt(OnlyNumber(Cedente.Agencia))))) or

(Trim(IntToStr(StrToInt(rConta))) <> Trim(IntToStr(StrToInt(OnlyNumber(Cedente.CodigoCedente)))))) then

raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));

Isto é, retirando os zeros e comparando apenas os digitos válidos. Sei que não ficou bonitp, mas se valer a dica alguem poderia alterar a unit e colocar uma forma melhor de não termos problemas com esses zeros.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 3 anos depois...

Bom dia!

estou tendo problemas na leitura do arquivo de retorno, está dando a seguinte mensagem " econvert error with message '00/00/0000' is not valid data and time'" resolvi colocar os dados no componente ACBrBoleto manualmente para ver se dava outro erro mas persiste, troquei o layout para c400 e não deu. vou anexar o retorno.

 

dentro do ACBrUtil.pas aponta aqui:

{-----------------------------------------------------------------------------
  Converte uma <DateTimeString> para TDateTime, semelhante ao StrToDateTimeDef,
  mas verifica se o seprador da Data é compatível com o S.O., efetuando a
  conversão se necessário. Se não for possivel converter, retorna <DefaultValue>
 ---------------------------------------------------------------------------- }
function StringToDateTimeDef(const DateTimeString : String ;
   const DefaultValue : TDateTime ; const Format : String) : TDateTime ;
begin
  try
     Result := StringToDateTime( DateTimeString, Format ) ;
  except
     Result := DefaultValue ;
  end ;
end ;
 

Obrigado

 

ret1100.ret

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

De qual banco estamos falando?

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Observe na linha 628 desta unit que existe uma validação para definir se deve ou não ser lido o campo de uma das datas com base no que foi retornado pelo banco, provavelmente a adição desta validação na leitura das outras datas resolverá o problema.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Bom dia.

Você chegou a verificar estas linhas na unit da Caixa?

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

A linha de exemplo que citei era no arquivo ACBrbancoCaixa.pas, porém o mesmo pode ser observado na linha 1250 do ACBrBancoCaixaSicob.pas

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Se você estudar o código fonte irá notar que em diversos trechos é feita a leitura de diversas datas diferentes, provavelmente seu problema ocorre em uma delas.

Recomendo que utilize debug a rotina para entender melhor  oque está ocorrendo.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

consegui, alterando um pouco, veja como ficou:

 

antes:

ACBrBanco.ACBrBoleto.DataArquivo   := StringToDateTimeDef(Copy(ARetorno[0],144,2)+'/'+
                                                             Copy(ARetorno[0],146,2)+'/'+
                                                             Copy(ARetorno[0],148,4),0, 'DD/MM/YYYY' );

 

depois:

ACBrBanco.ACBrBoleto.DataArquivo   := StrToDateTime(FormatDateTime('dd/MM/yyyy', StrToDate(Copy(ARetorno[0],144,2)+'/'+
                                                                                              Copy(ARetorno[0],146,2)+'/'+
                                                                                              Copy(ARetorno[0],148,4))));

   

 

e também estava recebendo o NossoNumero em branco, fiz uma pequena alteração, veja como ficou:

antes:

            NossoNumero := Copy(Copy(Linha,47,10), // sem o DV
                                Length(Copy(Linha,47,10))-TamanhoMaximoNossoNum ,
                                TamanhoMaximoNossoNum);

depois:

           

            Vn := Copy(Linha,47,1);   //pega o primeiro digito do identificação do titulo no banco
            // Verificando para passar NossoNumero
            if Vn='8' then  //Cobrança Sem Registro
            begin
              NossoNumero  := copy(Linha,49,8);
            end;
            if Vn='9' then //Cobrança Rápida
            begin
              NossoNumero  := copy(Linha,48,9);
            end;

 

 

se for ajudar alguém, estou as ordens

 

obrigado

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde.

Sua alteração pode gerar problemas caso as posições referentes a data venham com caracteres inválidos, por isso era utilizado o StrToDateTimeDef().  Num dos meus comentários anteriores citei o exemplo de tratamento em outro campo do tipo data, observe como foi  implementado.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3112 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.