Ir para conteúdo
  • Cadastre-se

finoue

Membros
  • Total de ítens

    14
  • Registro em

  • Última visita

Reputação

0 Neutro

Sobre finoue

  • Rank
    Novato
  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
  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. Eu estou tendo esse problema em alguns computadores que possuem aqueles "Componentes de Segurança" do banco, em especial do Bradesco Pessoa Jurídica. Experimente executar sua aplicação em um computador que nunca acessou banco.
  8. Olá Juliana, o arquivo alterado está em anexo. Fabio ACBrBancoSantander.pas
  9. 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
  10. 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
  11. 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
  12. Estou usando o Danfe em Rave Reports, com o arquivo DANFE_Rave513.rav. O telefone é, por exemplo 11999998888, mas na impressão sai (11)9999-9888, faltando o último dígito. Fabio
  13. Olá a todos, notei que ao gerar o Danfe, o componente está retirando o último dígito do número de celular com 9 dígitos para o campo de telefone do destinatário. O arquivo XML está com o número correto. Existe alguma forma de exibir o número corretamente no Danfe? Fabio
  14. finoue

    Sugestões

    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
×