Ir para conteúdo
  • Cadastre-se

dev botao

Funcao MontarCodigoBarras()


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

Recommended Posts

Boa tarde,

A geração do código de barras na Unit "ACBrBancoSicredi.pas" está ficando errada.

Segue a função modificada. Acabei de homologar os boletos em meu cliente e só passaram nos testes com esta modificação.

 

function TACBrBancoSicredi.MontarCodigoBarras ( const ACBrTitulo: TACBrTitulo) : String;
var
  CodigoBarras, FatorVencimento, DigitoCodBarras, CampoLivre, Modalidade:String;
  DigitoNum: Integer;
begin
   with ACBrTitulo.ACBrBoleto do
   begin
      FatorVencimento := CalcularFatorVencimento(ACBrTitulo.Vencimento);
      Modalidade := IfThen(Cedente.Modalidade='','1',Copy(trim(Cedente.Modalidade),1,1));
      // wNossoNumeroCompleto := OnlyNumber(MontarCampoNossoNumero(ACBrTitulo));
      { Monta o campo livre }
      CampoLivre :=   Modalidade                              + { 1-Com registro ou 3-Sem registro. Por enquanto vou deixar 1 mais tenho que tratar menhor essa informação }
                      '1'                                     + { 1-Carteira simples }
                      OnlyNumber(MontarCampoNossoNumero(ACBrTitulo)) +
                      //padR(ACBrTitulo.NossoNumero,8,'0')      + { Nosso número + DV }
                      //CalcularDigitoVerificador(ACBrTitulo)   + { Dígito verificador do nosso número }
                      padR(OnlyNumber(Cedente.Agencia),4,'0') + { Código agência (cooperativa) }
                      padR(Cedente.AgenciaDigito,2,'0')       + { Dígito da agência (posto da cooperativa) }
                      padR(OnlyNumber(Cedente.CodigoCedente),5,'0')   + { Código cedente }  //  Ver manual página 86 - CNAB240 ou 51 - CNAB400
                      '1'                                     + { Filler - zero. Obs: Será 1 quando o valor do documento for diferente se zero }
                      '0';                                    { Filler - zero }
      { Calcula o dígito do campo livre }
      Modulo.CalculoPadrao;
      Modulo.MultiplicadorFinal := 9;
      Modulo.Documento := CampoLivre;
      Modulo.Calcular;
      CampoLivre := CampoLivre + IntToStr(Modulo.DigitoFinal);

      { Monta o código de barras }
      CodigoBarras := IntToStr( Numero )                                     + { Código do banco 748 }
                      '9'                                                    + { Fixo '9' }
                      FatorVencimento                                        + { Fator de vencimento, não obrigatório }
                      IntToStrZero(Round(ACBrTitulo.ValorDocumento*100),10)  + { valor do documento }
                      CampoLivre;                                              { Campo Livre }

 

      DigitoCodBarras := CalcularDigitoCodigoBarras(CodigoBarras);
      DigitoNum := StrToIntDef(DigitoCodBarras,0);

      if (DigitoNum = 0) or (DigitoNum > 9) then
         DigitoCodBarras:= '1';
   end;

   Result:= IntToStr(Numero) + '9'+ DigitoCodBarras + Copy(CodigoBarras,5,39);
end;

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa noite.

Por favor anexe a unit alterada.

Att.

Boa noite.

Por favor anexe a unit alterada.

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

  • Fundadores

bug resultado do commit 9086, ocasionou baixa de vários títulos sem identificação em um cliente

Qual a finalidade da msg ? é apenas um desabafo ou você pretende sugerir alguma correção nos fontes ?

Porque você não implementa um Teste Unitário em seu processo de desenvolvimento ?

Assim você roda o mesmo toda vez que atualizar o ACBr... e tem certeza de que está tudo funcionando a contento...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Administradores

Boa noite.

Por favor anexe a unit alterada.

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á 3131 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.

The popup will be closed in 10 segundos...