Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

Boa tarde, gostaria que vocês lessem esse arquivo doc, que estar em anexo.

Neste arquivo contem toda documentação dos erros que o componente tinha e suas devidas correções.

 

Atualmente, eu tenho os seguintes boletos homologados:

  • Banco do Brasil
  • Banco do Nordeste
  • Banco Bradesco
  • Banco Itaú

Todas funcionando perfeitamente, tanto a remessa quanto o retorno.

 

Segue por anexo, as units!

 

Desculpem o erro de digitação (Correções).

Documentacao (2).doc

ACBrBancoBradesco.pas

ACBrBancoBrasil.pas

ACBrBancoNordeste.pas

Editado por joaolenosi

João Leno

Developer In Lunar Tecnologia
Formação: Bacharel em Sistemas de Informação
Pós Graduação: Infraestrutura e aplicações em redes de computadores (Cursando)
Cell: (84) 8135-9585
Skype: joaolenosi
Site: http://lunartecnologia.com.br/

Se não puder vencer pelo o talento, vença pelo o esforço.

Postado

Olá João, o boleto ACBrBancoNordeste, estar gerando o arquivo remessa na possição122, referente ao vencimento, conforme

manual do banco e inclusive modifiquei o arquivo gerado e passou, tem que ser na possição 121. O componente atual estar

gerando na possição 1 a mais.

 

Postei o erro no endereço

 

Obrigado aguardo,

Leão

Postado (editado)

Realmente, o manual relata isso mesmo:

 

 PI  PF   T

121 126 9(6) Data de Vencimento. Informar no formato “ddmmaa”.

 

Mande sua unit, para eu comparar com a minha.

Editado por joaolenosi

João Leno

Developer In Lunar Tecnologia
Formação: Bacharel em Sistemas de Informação
Pós Graduação: Infraestrutura e aplicações em redes de computadores (Cursando)
Cell: (84) 8135-9585
Skype: joaolenosi
Site: http://lunartecnologia.com.br/

Se não puder vencer pelo o talento, vença pelo o esforço.

  • Moderadores
Postado

joaolenosi

Você postou ontem, com certeza a equipe queria disponibilizar na hora as correções, mas depende de analisar ao código e subir ao svn, mas também trabalhamos em empresas que dependem de nós, e no caso foi postado ontem, então fique calmo que com o tempo será avaliado e subido ao svn, agradecemos a colaboração, mas fique tranquilo que vemos todas elas e analisamos!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Juliomar, eu falei novamente, porque pensei que nenhum moderador tinha visto.

Obrigado pelo o retorno!

 

Qualquer coisa se precisar dos manuais atualizado, é só falar que eu posto aqui!

João Leno

Developer In Lunar Tecnologia
Formação: Bacharel em Sistemas de Informação
Pós Graduação: Infraestrutura e aplicações em redes de computadores (Cursando)
Cell: (84) 8135-9585
Skype: joaolenosi
Site: http://lunartecnologia.com.br/

Se não puder vencer pelo o talento, vença pelo o esforço.

  • Membros Pro
Postado

Juliomar também precisei fazer algumas alterações na na AcbrBoleto.pas e ACBrBancoBrasil.pas para corrigir um problema referente a cobrança de Multa com valor fixo e não apenas em percentual, estou anexando as units para análise, tentei seguir o padrão que estava no componente espero que esteja de acordo, desde já agradeço atenção...

ACBrBancoBrasil.pas

ACBrBoleto.pas

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

Postado

Olá Joaolenosi, para solucionar o problema provisoriamente apenas modifiquei o tamanho do NumeroDocumento para 9, justamente para subtrair um space(1), o arquivo foi importado pelo

site do banco do nordeste.

 

procedure TACBrBancoNordeste.GerarRegistroTransacao400(ACBrTitulo :TACBrTitulo; aRemessa: TStringList);
var
  DigitoNossoNumero, Ocorrencia, aEspecie, aAgencia :String;
  Protesto, TipoSacado, MensagemCedente, aConta     :String;
  wLinha: String;
begin

   with ACBrTitulo do
   begin
      DigitoNossoNumero := CalcularDigitoVerificador(ACBrTitulo);

      aAgencia := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Agencia),0),4);
      aConta   := IntToStrZero(StrToIntDef(OnlyNumber(ACBrBoleto.Cedente.Conta),0),7) + IntToStrZero(StrToIntDef(trim(ACBrBoleto.Cedente.ContaDigito),0),1);

      {Pegando Código da Ocorrencia}
      case OcorrenciaOriginal.Tipo of
         toRemessaBaixar                         : Ocorrencia := '02'; {Pedido de Baixa}
         toRemessaConcederAbatimento             : Ocorrencia := '04'; {Concessão de Abatimento}
         toRemessaCancelarAbatimento             : Ocorrencia := '05'; {Cancelamento de Abatimento concedido}
         toRemessaAlterarVencimento              : Ocorrencia := '06'; {Alteração de vencimento}
         toRemessaAlterarNumeroControle          : Ocorrencia := '08'; {Alteração de seu número}
         toRemessaProtestar                      : Ocorrencia := '09'; {Pedido de protesto}
         toRemessaCancelarInstrucaoProtestoBaixa : Ocorrencia := '18'; {Sustar protesto e baixar}
         toRemessaCancelarInstrucaoProtesto      : Ocorrencia := '19'; {Sustar protesto e manter na carteira}
         toRemessaOutrasOcorrencias              : Ocorrencia := '31'; {Alteração de Outros Dados}
      else
         Ocorrencia := '01';                                          {Remessa}
      end;

      {Pegando Especie}
      if trim(EspecieDoc) = 'DM' then
         aEspecie:= '01'
      else if trim(EspecieDoc) = 'NP' then
         aEspecie:= '02'
      else if trim(EspecieDoc) = 'NS' then
         aEspecie:= '03'
      else if trim(EspecieDoc) = 'CS' then
         aEspecie:= '04'
      else if trim(EspecieDoc) = 'ND' then
         aEspecie:= '11'
      else if trim(EspecieDoc) = 'DS' then
         aEspecie:= '12'
      else
         aEspecie := EspecieDoc;

      {Pegando campo Intruções}
      if (DataProtesto > 0) and (DataProtesto > Vencimento) then
          Protesto := '06' + IntToStrZero(DaysBetween(DataProtesto,Vencimento),2)
      else if Ocorrencia = '31' then
         Protesto := '9999'
      else
         Protesto := padR(trim(Instrucao1),2,'0') + padR(trim(Instrucao2),2,'0');

      {Pegando Tipo de Sacado}
      case Sacado.Pessoa of
         pFisica   : TipoSacado := '01';
         pJuridica : TipoSacado := '02';
      else
         TipoSacado := '99';
      end;

      with ACBrBoleto do
      begin
         if Mensagem.Text<>'' then
         MensagemCedente:= Mensagem[0];
         
         wLinha:= '1'                                                     +  // ID Registro
                  Space(16)                                               +  // Filler - Brancos
                  padR( aAgencia, 4, '0')                                 +  // Cód. da Agência do cliente
                  IntToStrZero(0, 2)                                      +  // Filler - Zeros
                  padR( aConta, 7, '0')                                   +  // Conta Corrente de Cobrança + Dígito da Conta Corrente
                  padR( Cedente.ContaDigito, 1, '0')                      +  // Dígito da conta corrente
                  IntToStrZero( round( PercentualMulta), 2)               +  // Percentual de Multa por atraso
                  Space(4)                                                +  // Filler - Brancos
                  padL( SeuNumero,25,' ')                                 +  // Numero de Controle do Participante
                  NossoNumero + DigitoNossoNumero                         +
                  padR( '0', 10, '0')                                     +  //Número do Contrato para cobrança caucionada/vinculada. Preencher com zeros para cobrança simples
                  padR( '0', 6, '0')                                      +  //Número do Contrato para cobrança caucionada/vinculada. Preencher com zeros para cobrança simples
                  IntToStrZero(round( ValorDesconto * 100), 13)           +
                  Space(8)                                                +  // Filler - Brancos
                  IntToStr(StrToInt(Carteira))                            +  // Carteira a ser utilizada
                  Ocorrencia                                              +  // Ocorrência
                  padL( NumeroDocumento,  9)                              +  //o padrão é 10 modifiquei para 9 para o campo vencimento ficar na posição 121.
                  FormatDateTime( 'ddmmyy', Vencimento)                   +

                  IntToStrZero( Round( ValorDocumento * 100 ), 13)        +
                  StringOfChar('0',7) + Space(1) + padl(aEspecie,2) + 'N' +  // Zeros + Filler + Especie do documento + Idntificação(valor fixo N)
                  FormatDateTime( 'ddmmyy', DataDocumento )               +  // Data de Emissão
                  Protesto                                                +
                  IntToStrZero( round(ValorMoraJuros * 100 ), 13)         +
                  IfThen(DataDesconto < EncodeDate(2000,01,01),'000000',
                         FormatDateTime( 'ddmmyy', DataDesconto))         +
                  IntToStrZero( round( ValorDesconto * 100 ), 13)         +
                  IntToStrZero( round( ValorIOF * 100 ), 13)              +
                  IntToStrZero( round( ValorAbatimento * 100 ), 13)       +
                  TipoSacado + padR(OnlyNumber(Sacado.CNPJCPF),14,'0')    +
                  padL( Sacado.NomeSacado, 40, ' ')                       +
                  padL( Sacado.Logradouro + ' ' + Sacado.Numero, 40, ' ') +
                  padL( Sacado.Complemento, 12, ' ')                      +
                  padL( Sacado.CEP, 8 )                                   +
                  padL( Sacado.Cidade, 15 )                               +
                  padL( Sacado.UF, 2 )                                    +
                  padl( MensagemCedente, 40 )                             +
                  '991'                                                   +
                  IntToStrZero(aRemessa.Count + 1, 6); // Nº SEQÜENCIAL DO REGISTRO NO ARQUIVO

         aRemessa.Text:= aRemessa.Text + UpperCase(wLinha);
      end;
   end;
end;
 

ACBrBancoNordeste.pas

Postado

Bom dia.

Estou desenvolvendo a geração de remessa para o Bradesco.

Mais estou com algumas duvidas.

1° - Instrução 1 e 2 para que serve?

2° - Se precisar atualizar o valor do boleto qual tipo de ocorrência colocar?

3° - Onde vcs efetuaram o teste dos arquivos de remessa foi no net empresa.

4° - Tem algum numero de suporte Bradesco que vcs utilizaram.

Postado

Olá Romuloads, sobre sua 3º e 4º pergunta, veja:

 

3º - O componente gera o arquivo remessa conforme bco.bradesco, já estar em uso, no net empresa

       você pode escolher a opção Teste ou enviou normal;

 

4º - Na verdade talvez não precise ligar, se ocorrrer algum erro no seu arquivo remessa a ele informa

       a posição e linha, muito simples, mas existe um telefone netempresa 3003-1000

 

       Arquivo retorno também funciona normalmente, para você dar baixa no contas a receber...

 

Obrigado,

Leão

  • 3 semanas depois ...
Postado

Olá João Lenosi, como consegui homologar o banco do nordeste se na posição inicial do vencimento é 121 e o fonte gera na 122.

postei logo abaixo, para solucionar diminuir o tamanho do docto de 10 para 9, justamente para o vencimento ficar na posição 121

 

Por favor, detalhes...

 

 

Obrigado,

Leão

Postado (editado)

Olá, alguem teria testado o  arquivo de retorno(LerRetorno400) do Banco do Nordeste,  as posições do campos não batem com o layout que o banco me passou. Por exemplo:

 

No layout: Agencia: inicial 18 tam 4

Na procedure: inicial 26 tam 4  

 

no codigo

rAgencia := trim(Copy(ARetorno[1], 26, ACBrBanco.TamanhoAgencia));

Editado por ch4rl3s
  • 6 meses depois ...
Postado

Boa Tarde Colaboradores - Eu uso o sistema de de Alterdata, quero inserir a emissão do Boleto diretamente nesse sistema (BNB carteira 21) Ha no sistema um layout antigo com mais numeros no codigo de barras que o atual) queria atualiza-lo alguem pode me ajudar?

  • Este tópico foi criado há 3713 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.