Ir para conteúdo
  • Cadastre-se

finoue

Membros
  • Total de ítens

    14
  • Registro em

  • Última visita

Posts postados por finoue

  1. Eduardo, eu tinha passado por esse problema quando eu preenchia um outro campo ao invés do campo "Modalidade", por isso falei sobre isso.

    O componente pega esse trecho da linha digitável do código de barras, e a geração do código de barras continua igual:

    CodigoBarras := '033'+'9'+ FatorVencimento +
                           IntToStrZero(Round(ACBrTitulo.ValorDocumento*100),10) +
                           '9'+ PadLeft(trim(Cedente.CodigoCedente),7,'0') +
                           PadLeft(ACBrTitulo.NossoNumero + DigitoNossoNumero, 13,'0') +
                           '0'+ PadLeft(trim(Cedente.Modalidade),3,'0');

    Você pode verificar como está saindo o código de barras com:

      c := ACBrBoleto1.Banco.MontarCodigoBarras(ACBrBoleto1.ListadeBoletos[0]);
      l := ACBrBoleto1.Banco.MontarLinhaDigitavel(c, ACBrBoleto1.ListadeBoletos[0]);

     

  2. Eduardo, experimente preencher o campo "Modalidade" com o número da Carteira.

    Fabio

    59 minutos atrás, Eduardo Brigoni disse:

    Bom dia pessoal, eu sempre tenho que verificar essas linhas 738 e 752 do ACBrBancoSantander.pas toda vez que atualizo, e sempre tenho que trocar pelo seguinte:

    Cedente.Complemento + Space(6)//Complemento

    O Santander sempre nos passa o complemento da seguinte forma "I31", na minha tela de configuração neste campo eu coloco exatamente o que o banco me passa.

    Estou fazendo mais 4 homologações no Santander e tenho 10 lojas que estão rodando sem problema, mas na última atualização a linha digitável não esta indo o código da carteira que sempre uso o 101 na minha tela de configuração do sistema. Segue a resposta do banco.

    Linha Digitável

    Enviado

     0339939936 22100000508 03385900000 9 71870000017918

    Esperado

     0339939936 22100000508 03385901016 3 71870000017918.

     

  3. Bom dia Juliana, eu não quis mexer no código antigo, mas seguem abaixo as diferenças: 

    No caso de contas novas, os dados devem ser informados com apenas os 8 primeiros dígitos da conta (que o banco agora tem informado com 9 dígitos, temos que considerar o zero à esquerda).

    A maioria dos meus clientes tem a conta antiga com um total de 9 números, exemplo:

    13002044-6

    Novos clientes tem recebido um número de conta com um total de 10 números, exemplo:

    013006882-8

    Olhando agora com calma, parece que o código não é necessário. Seria possível atender essa especificação com a parte antiga do código. Algumas das posições que o manual fala, já vem preenchidas pelo código de transmissão.

    Em anexo, o manual. Veja a página 15.

     

    Layout 400 atual.pdf

  4. Minha sugestão seria o código abaixo no componente. Acho que seria interessante que não houvesse alteração na geração do arquivo para clientes antigos, já que estão homologados. E a parte da nova é o código que veio na última atualização do componente. Não testei a parte nova para homologar novos clientes, mas a parte antiga funciona corretamente.

    Fabio

    if ContaNova then begin
          with ACBrBoleto do
          begin
             wLinha:= '1'                                                         +  // 1- ID Registro
                      IfThen(Cedente.TipoInscricao = pJuridica,'02','01')         +  // 2 a 3
                      PadLeft(trim(OnlyNumber(Cedente.CNPJCPF)),14,'0')           +  // 4 a 17
                      PadRight(trim(Cedente.CodigoTransmissao),20,'0')            +  // 18 a 37
                      PadRight( SeuNumero ,25,' ')                                +  // 38 a 62
                      PadLeft(RightStr(NossoNumero,7),7,'0') + DigitoNossoNumero  +  // 63 a 70
                      IfThen(DataAbatimento < EncodeDate(2000,01,01),
                             '000000',
                             FormatDateTime( 'ddmmyy', DataAbatimento))           +  // 71 a 76
                      ' '+IfThen(PercentualMulta > 0,'4','0')                     +  // 77 a 78
                      IntToStrZero( round( PercentualMulta * 100 ), 4)            +  // 79 a 82
                      '00'+StringOfChar( '0', 13)+space(4)                        +  // 83 a 101
                      IfThen(DataMoraJuros < EncodeDate(2000,01,01),
                             '000000',
                             FormatDateTime( 'ddmmyy', DataMoraJuros))            +  // 102 a 107
                       IntToStr(aCarteira) + Ocorrencia                           +  // 108 a 110
                      PadRight( NumeroDocumento,10,' ')                           +  // 111 a 120
                      FormatDateTime( 'ddmmyy', Vencimento)                       +  // 121 a 126
                      IntToStrZero( round( ValorDocumento * 100), 13)             +  // 127 a 139
                      '033' + aAgencia                                            +  // 140 a 147
                      PadLeft(aEspecie, 2) + 'N'                                  +  // 148 a 150
                      FormatDateTime( 'ddmmyy', DataDocumento )                   +  // 151 a 156
                      PadLeft(trim(Instrucao1),2,'0')                             +  // 157 a 158
                      PadLeft(trim(Instrucao2),2,'0')                             +  // 159 a 160
                      IntToStrZero( round(ValorMoraJuros * 100 ), 13)             +  // 161 a 173
                      IfThen(DataDesconto < EncodeDate(2000,01,01),
                             '000000',
                             FormatDateTime( 'ddmmyy', DataDesconto))             +  // 174 a 179
                      IntToStrZero( round( ValorDesconto * 100), 13)              +  // 180 a 192
                      IntToStrZero( round( ValorIOF * 100 ), 13)                  +  // 193 a 205
                      IntToStrZero( round( ValorAbatimento * 100 ), 13)           +  // 206 a 218
                      TipoSacado + PadLeft(OnlyNumber(Sacado.CNPJCPF),14,'0')     +  // 219 a 234
                      PadRight( Sacado.NomeSacado, 40, ' ')                       +  // 235 a 274
                      PadRight( Sacado.Logradouro + ' '+ Sacado.Numero, 40, ' ')  +  // 275 a 314
                      PadRight( Sacado.Bairro,12,' ')                             +  // 315 a 326
                      PadRight( OnlyNumber(Sacado.CEP) , 8, ' ' )                 +  // 327 a 334
                      PadRight( Sacado.Cidade, 15, ' ') + Sacado.UF               +  // 335 a 351
    		  IfThen(ACBrBoleto.Cedente.TipoInscricao = pJuridica,
                             Space(30),
                             PadRight(Sacado.Avalista, 30, ' ' )) + ' I'          +  // 352 a 383
                      Cedente.ContaDigito + Space(6)                              +  // 384 a 391
                      Protesto + ' '                                              +  // 392 a 394
                      IntToStrZero( aRemessa.Count + 1, 6 );                         // 395 a 400
    
    
             wLinha:= UpperCase(wLinha);
    
             for I := 0 to Mensagem.count-1 do
                wLinha:= wLinha + #13#10                         +
                         '2' + space(16)                             +
                         PadLeft(Cedente.CodigoTransmissao,20,'0')   +
                         Space(10) + '01'                            +
                         PadRight(Mensagem[I],50)                        +
                         Space(283) + 'I'                            +
                         Cedente.ContaDigito                         +
                         Space(6) + Protesto + ' '                   +
                         IntToStrZero( aRemessa.Count  + I + 2 , 6 );
    
             aRemessa.Text:= aRemessa.Text + UpperCase(wLinha);
          end;
    end else begin
          with ACBrBoleto do
          begin
             wLinha:= '1'                                                         +  // 1- ID Registro
                      IfThen(Cedente.TipoInscricao = pJuridica,'02','01')         +  // 2 a 3
                      PadLeft(trim(OnlyNumber(Cedente.CNPJCPF)),14,'0')           +  // 4 a 17
                      PadRight(trim(Cedente.CodigoTransmissao),20,'0')            +  // 18 a 37
                      PadRight( SeuNumero ,25,' ')                                +  // 38 a 62
                      PadLeft(RightStr(NossoNumero,7),7,'0') + DigitoNossoNumero  +  // 63 a 70
                      IfThen(DataAbatimento < EncodeDate(2000,01,01),
                             '000000',
                             FormatDateTime( 'ddmmyy', DataAbatimento))           +  // 71 a 76
                      ' '+IfThen(PercentualMulta > 0,'4','0')                     +  // 77 a 78
                      IntToStrZero( round( PercentualMulta * 100 ), 4)            +  // 79 a 82
                      '00'+StringOfChar( '0', 13)+space(4)                        +  // 83 a 101
                      IfThen(DataMoraJuros < EncodeDate(2000,01,01),
                             '000000',
                             FormatDateTime( 'ddmmyy', DataMoraJuros))            +  // 102 a 107
                       IntToStr(aCarteira) + Ocorrencia                           +  // 108 a 110
                      PadRight( NumeroDocumento,10,' ')                           +  // 111 a 120
                      FormatDateTime( 'ddmmyy', Vencimento)                       +  // 121 a 126
                      IntToStrZero( round( ValorDocumento * 100), 13)             +  // 127 a 139
                      '033' + aAgencia                                            +  // 140 a 147
                      PadRight(aEspecie,2) + 'N'                                  +  // 148 a 150
                      FormatDateTime( 'ddmmyy', DataDocumento )                   +  // 151 a 156
                      PadRight(trim(Instrucao1),2,'0')                            +  // 157 a 158
                      PadRight(trim(Instrucao2),2,'0')                            +  // 159 a 160
                      IntToStrZero( round(ValorMoraJuros * 100 ), 13)             +  // 161 a 173
                      IfThen(DataDesconto < EncodeDate(2000,01,01),
                             '000000',
                             FormatDateTime( 'ddmmyy', DataDesconto))             +  // 174 a 179
                      IntToStrZero( round( ValorDesconto * 100), 13)              +  // 180 a 192
                      IntToStrZero( round( ValorIOF * 100 ), 13)                  +  // 193 a 205
                      IntToStrZero( round( ValorAbatimento * 100 ), 13)           +  // 206 a 218
                      TipoSacado + PadLeft(OnlyNumber(Sacado.CNPJCPF),14,'0')     +  // 219 a 233
                      PadRight( Sacado.NomeSacado, 40, ' ')                       +  // 234 a 273
                      PadRight( Sacado.Logradouro + ' '+ Sacado.Numero, 40, ' ')  +  // 274 a 314
                      PadRight( Sacado.Bairro,12,' ')                             +  // 315 a 326
                      PadRight( OnlyNumber(Sacado.CEP) , 8, ' ' )                 +  // 327 a 334
                      PadRight( Sacado.Cidade, 15, ' ') + Sacado.UF               +  // 335 a 351
    		  IfThen(ACBrBoleto.Cedente.TipoInscricao = pJuridica,
                             Space(30),
                             PadRight(Sacado.Avalista, 30, ' ' )) + ' I'          +  // 352 a 383
                      Copy(Cedente.Conta,Length(Cedente.Conta),1)                 +  // 384 a 384
                      Cedente.ContaDigito + Space(6)                              +  // 385 a 391
                      Protesto + ' '                                              +  // 392 a 394
                      IntToStrZero( aRemessa.Count + 1, 6 );                         // 395 a 400
    
    
             wLinha:= UpperCase(wLinha);
    
             for I := 0 to Mensagem.count-1 do
                wLinha:= wLinha + #13#10                         +
                         '2' + space(16)                             +
                         PadRight(Cedente.CodigoTransmissao,20,'0')      +
                         Space(10) + '01'                            +
                         PadRight(Mensagem[I],50)                        +
                         Space(283) + 'I'                            +
                         Copy(Cedente.Conta,Length(Cedente.Conta),1) +
                         Cedente.ContaDigito                         +
                         Space(9)                                    +
                         IntToStrZero( aRemessa.Count  + I + 2 , 6 );
    
             aRemessa.Text:= aRemessa.Text + UpperCase(wLinha);
          end;
    end;
  5. Bom dia, acredito que é necessário uma opção para as contas novas. O código antigo funcionava corretamente para todos os meus cliente já homologados, mas o banco tem informado o número da conta e dígito diferente para contas novas.

    Contas novas tem vindo com 2 dígitos e o número da conta com um 0 à esquerda. A alteração enviada foi para aceitar o número novo, assim o dígito (com 2 números) ocupa os 2 caracteres depois da letra I e nas contas antigas o campo é composto pelo último número da conta e o dígito (com 1 número).

    Fabio

  6. Eu também estou com o mesmo problema após a atualização dos fontes. Houve uma mudança no código que gera as posições 384 e 385 dos registros detalhe.

    A posição 384 deveria conter o último número da conta e a posição 385 deve conter o dígito. Agora a posição 384 está recebendo o dígito da conta apenas,

    e o registro fica com 399 caracteres.

     

    Fabio

     

  7. Juliana, não é um contador de linhas. Também questionei o pessoal da homologação, mas é isso mesmo, deve ser fixo '01'. O arquivo de remessa ficou assim (tirei alguns espaços depois das instruções) :

     

    2                09810556367101300023          01PAGAVEL EM QUALQUER BANCO ATE O VENCIMENTO.            I10         000008
    2                09810556367101300023          01MORA DIARIA DE R$ 2,09 SOBRE O VALOR TOTAL APOS O      I10         000009
    2                09810556367101300023          01PROTESTAR APOS O QUINTO DIA DO VENCIMENT0.             I10         000010
    2                09810556367101300023          01NAO CONCEDER DESCONTO.                                 I10         000011

     

    Daniel: São 10 espaços mesmo. Segue o trecho do manual:

    Registro Movimento Detalhe - Remessa / mensagem variável por título (opcional)
    Posição
    inicial
    Posição
    final
    Picture Conteúdo
    001 001 9(001) Código do registro = 2
    002 017 X(016) Uso do Banco (BRANCO)
    018 037 9(020) Código de Transmissão (nota 1)
    038 047 X(010) Uso do Banco (BRANCO)
    048 049 9(002) Subseqüências do registro = 01
    050 099 X(050) Mensagem variável por título
    100 382 X(283) Uso do Banco (BRANCO)
    383 383 X(001) Identificador do Complemento (nota 2)
    384 385 9(002) Complemento (nota 2)
    386 394 X(009) Brancos
    395 400 9(006) Número seqüencial do registro no arquivo
    

     

     

     

    Após a alteração, já fiz a homologação em 5 empresas, todas foram com o arquivo dessa forma.
     
    Fabio
  8. Olá a todos, consegui homologar a remessa com o Banco Santander, mas tive que fazer uma pequena correção.

     

    Na linha 315 do ACBrBancoSantander.pas, o código:

     

    Space(10) + IntToStrZero(I+1,2) +

     

    Deve ser alterado para:

     

    Space(10) + '01' +

     

    Segundo o manual, os campos 48-49 do "Registro Movimento Detalhe - Remessa / mensagem variável por título (opcional)" devem ser fixos '01'.

     

    Assim o arquivo foi aceito com sucesso.

     

    Fabio

  9. Olá João, obrigado pela resposta. Mas acabei analisando os arquivos que foram atualizados e tive que fazer uma pequena correção na linha 767 do arquivo ACBrNFeUtil.pas:

    De: AValue := IntToStr(StrToIntDef(NotaUtil.LimpaNumero(AValue),0));

    Para: AValue := IntToStr(StrToInt64Def(NotaUtil.LimpaNumero(AValue),0));

    O número de telefone 11 99999 8888 ultrapassa o limite do Int Normal.

    Colocando Int64, funcionou perfeitamente.

    Obrigado

    Fabio

  10. Olá a todos, tenho usado há muito tempo o componente RLboleto, e estou tentando migrar para o ACBrBoleto. Já consegui homologar com o Itaú e o banco Santander, mas gostaria de sugerir algumas melhorias no layout do boleto no Fortes:

    Alinhar o valor do documento para a direita, no comprovante de entrega.

    No Recibo do sacado, alinhar melhor o endereço do sacado, ele está um pouco para cima.

    Nos endereços do sacado, adicionar um espaço entre o número da rua e o complemento, hoje eles saem colados.

    No código de barras, usar o ratio 3, para o código de barras ficar do mesmo tamanho da maioria dos boletos.

    Já efetuei essas mudanças, se quiserem eu anexo aqui no fórum.

    Fabio

×
×
  • 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.