-
Total de ítens
36 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por dtybel
-
-
Não estou mais trabalhando com programas, porém fiquei sabendo que a carteira sem registro foi descontinuada.
-
Essa classe já foi atualizada inúmeras vezes após a primeira postagem, baixe do SVN.
-
Juliana,
Essa correção não foi enviada, ao atualizar o componente, me deparei com esse erro novamente.
Segue em anexo a classe para que você acerte a função "LerRetorno400" a partir da linha 410 até: 426.
-
Juliana,
Estou conferindo as atualizações que enviei, pois quero atualizar a pagina, será que quando puder, podia realizar esse commit no SVN ?
-
Juliana,
Enfrentei um caso novo nessa unit essa semana.
Tenho um cliente pessoa física. E para pessoa física usa o cpf no arquivo retorno. Por esse motivo emitia erro de CNPJ inválido.
Tive que realizar alteração no metodo:
procedure TACBrBancoob.LerRetorno400(ARetorno: TStringList);
rCNPJCPF := trim( Copy(ARetorno[1],4,14)) ; with ACBrBanco.ACBrBoleto do begin Cedente.Nome := rCedente; case StrToIntDef(Copy(ARetorno[1],2,2),0) of 1: begin Cedente.TipoInscricao:= pFisica; rCNPJCPF := copy(rCNPJCPF,length(rCNPJCPF) - 10,length(rCNPJCPF)); end; else Cedente.TipoInscricao:= pJuridica; end; Cedente.CNPJCPF := rCNPJCPF; ACBrBanco.ACBrBoleto.ListadeBoletos.Clear; end;
Exemplo de preenchimento:
//Configurar banco ACBrBoleto1.Banco.Numero := DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger; // DADOS DO BANCO with ACBrBoleto1.Banco do begin Digito := 0;//StrtoIntDef(0, 0); Nome := DMEmpresa.ClientDataSet2NOME_CONTA.AsString; Numero := DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger; case DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger of 237 : TipoCobranca := cobBradesco; 1 : TipoCobranca := cobBancoDoBrasil; 341 : TipoCobranca := cobItau; 748 : TipoCobranca := cobSicred; 104 : TipoCobranca := cobCaixaEconomica; 756 : TipoCobranca := cobBancoob; 33,53,008 : TipoCobranca := cobSantander; 21 : TipoCobranca := cobBanestes; else TipoCobranca := cobNenhum; end; end; with ACBrBoleto1.Cedente do begin Nome := DMEmpresa.ClientDataSet1EMPRESA.AsString; Agencia := DMEmpresa.ClientDataSet2AGENC_BANCO.AsString; AgenciaDigito := DMEmpresa.ClientDataSet2DIGITO_AGENC_BANCO.AsString; CodigoCedente := DMEmpresa.ClientDataSet2COD_CEDENTE.AsString; Conta := DMEmpresa.ClientDataSet2NUM_CONTA_BANCO.AsString; ContaDigito := DMEmpresa.ClientDataSet2DIGITO_CONTA_BANCO.AsString; if ( isCPF(tiraMask(DMEmpresa.ClientDataSet1CNPJ.AsString)) ) then TipoInscricao := pFisica else TipoInscricao := pJuridica; CNPJCPF := tiraMask(DMEmpresa.ClientDataSet1CNPJ.AsString); if ( Length(DMEmpresa.ClientDataSet2MODALIDADE.AsString) > 0) then Modalidade := DMEmpresa.ClientDataSet2MODALIDADE.AsString; if ( Length(DMEmpresa.ClientDataSet2CONVENIO.AsString) > 0) then Convenio := DMEmpresa.ClientDataSet2CONVENIO.AsString; end; ACBrBoleto1.DirArqRetorno := ExtractFilePath(txtNomeArquivoRetorno.Text) ; ACBrBoleto1.NomeArqRetorno := ExtractFileName(txtNomeArquivoRetorno.Text) ; ACBrBoleto1.LerRetorno;
-
Juliana,
O problema é o seguinte:
Na unit ACbrBoleto no método: SetCNPJCPF
- Cria um validador.
- Valida o CNPJ ou CPF
- Formata
Até aí tudo bem, mas no retorno a linha é a seguinte: ACbrBancoSantander.pas
Linha 351: if (not LeCedenteRetorno) and (rCNPJCPF <> Cedente.CNPJCPF) then
Repare que Cedente.CNPJCPF estará formatado devido o SetCNPJCPF enquanto o rCNPJCPF não estará, uma vez que é obtido do arquivo retorno, desse modo não ficará igual nunca.
Alterar a linha 351, para: if (not LeCedenteRetorno) and (rCNPJCPF <> OnlyNumber(Cedente.CNPJCPF)) then
Observar outros bancos também.
Favor mudar no SVN, pois mudei o meu aqui e funcionou, mas quando eu atualizar, vai voltar novamente.
-
Boa tarde Juliana,
Obrigado pelo retorno.
-
Juliana,
Na função: MontarCodigoBarras do ACBrBancoob:
A partir da linha 166 mudar:
ACBrTitulo.Parcela := IfThen(ACBrTitulo.Parcela = 0,1,ACBrTitulo.Parcela);
{Montando Campo Livre}
CampoLivre := padR(ACBrTitulo.ACBrBoleto.Cedente.Modalidade, 2, '0') +
padR(ACBrTitulo.ACBrBoleto.Cedente.CodigoCedente, 7, '0') +
padR(Copy(ANossoNumero,1,8), 8, '0') + //7 Sequenciais + 1 do digito
padR(IntToStr( ACBrTitulo.Parcela), 3, '0');
No layout carnê o local da linha digitável que deveria incrementar de acordo com as parcelas não está fazendo, pois está fixa.
Lembrando que o campo Parcela do componente ACBrBoleto deve ser instanciada.
Exemplo:
Titulo := ACBrBoleto1.CriarTituloNaLista; with Titulo do begin ...etc... Parcela := 1; //Parcela, incrementar de acordo com a parcela incluída no componente. ...etc... end;
Exemplo:
1º - PARCELA
7591.02846.00426.644308 00000.100016 6 46290000015052 - OK
2º - PARCELA
7591.02846.00426.644308 00000.280016 4 46290000025088 - ERRADO
7591.02846.00426.644308 00000.280026 4 46290000025088 - CORRETO
3º - PARCELA
7591.02846.00426.644308 00000.350017 9 46290000035122 - ERRADO
7591.02846.00426.644308 00000.350037 9 46290000035122 - CORRETO
Um usuário chamado: Wanderson entrou em contato solicitando correção.
-
Obrigado Juliana.
-
Juliana,
Em uma nova homologação do boleto para o Sicoob foi rejeitado devido o nome do banco: BANCO COOPERATIVO DO BRASIL S.A.
Solicitaram que fosse alterado apenas para: SICCOB.
Alterado na classe no método construtor:
constructor TACBrBancoob.create(AOwner: TACBrBanco); begin inherited create(AOwner); fpDigito := 0; fpNome := 'SICOOB.'; fpNumero:= 756; fpTamanhoMaximoNossoNum := 7; fpTamanhoCarteira := 1; end;
Pode alterar no SVN ?
-
Olá Juliana,
O banco não solicitou que eu removesse para a homologação. Só que fica uma frase estranha sobre cheque na parte de baixo.
Eu quero saber como ocultar a nível de programação, não quero que apareça...atualmente eu deletei o componente de lá, mas quando eu atualizar o SVN voltará.
Tem alguma propriedade onde eu consiga definir o texto que está lá ? assim eu poderia definir como nada e ficaria certo.
-
Juliana,
Li novamente a crítica e não foi devido ao texto do cheque que houve a recusa não, foi mesmo devido ao Ratio, me desculpe.
Como eu faço então para que aquele texto do cheque não apareça nos meus boletos ?
-
Juliana,
Sobre este erro do Ratio ? será alterado no SVN ?
Erro:
Acessei ACBRBoletoFCFortesFr no componente imgCodigoBarra e alterei a propriedade Ratio de 2 para 3
Outro ERRO no layout:
O componente: RLMemo2 com texto padrão sobre recebimento de cheque, saia em todos os boletos, e foi criticado pelo banco.
Removi o componente e compilei, minha dúvida, como fica estas alterações no SVN, será corrigido ?
-
Quer que eu faça o IF (alteração) e poste aqui ?
-
Use o comando antes de imprimir(pode ser até no botão imprimir):
//Definir a versão do fortesReport para o sistema RLConsts.SetVersion(3,70,'B');
Adicione na Uses: RLConsts
-
Na função:
function TACBrBancoBrasil.GerarRegistroTransacao240(ACBrTitulo : TACBrTitulo): String;
Na linha 389
Alterei de 1 para 7, solicitado pelo BANCO DO BRASIL - Agência: São Mateus/ES.
Após esse correção, foi homologado com sucesso.
'7'+ //58 - Cobrança Simples - Colunas 058 a 058 - informar 7 ao invés de 1 (por ser carteira 17).
Juliana, verificar possibilidade de acertar no SVN.
-
Atualizei a versão no SVN ontem para atualizar minha rotina de boletos, então foi onde começou o problema, pois os códigos de barras dos meus boletos começaram a ter inconsistência na leitura(a linha digitável batendo corretamente), realmente a olho nu se via em menor tamanho e por isso foi recusado na homologação do banco do Brasil.
Até mesmo com meu Milestone tentando ler o código de barras não lia de jeito nenhum e antes funcionava certinho.
Acessei ACBRBoletoFCFortesFr no componente imgCodigoBarra e alterei a propriedade Ratio de 2 para 3 e funcionou certinho a leitura do código de barras pelo meu Milestone.
Estou informando para ver se altera no servidor, pois está com esse problema na versão que baixei ontem.
-
Atilio,
Recebi a resposta do banco, segue abaixo:
*Obs: Caso vc queria que eu faça um testes com seus dados na minha rotina e imprima em pdf para vc ver, só falar.
BANCO DO BRASIL - CSO BELO HORIZONTE – 12/09/2011
RELATÓRIO DE TESTE CBR 641 F87603XX
Cliente : XXX
Agencia : 4628-0 Conta : 71xx-5
Carteira: 17 Variacao: 01 - 9 Convenio: 17115xx
Informamos que o arquivo recebido para teste está de acordo com o padrão definido pelo Banco do Brasil, não apresentando inconsistência referente a leiaute.
Salientamos que a informação correta dos dados impostados é de responsabilidade do cliente.
No teste é conferido apenas o Leiaute por amostragem.
É conveniente a transmissão de arquivo-teste pelo Gerenciador Financeiro, para que seja gerado arquivo-retorno a ser tratado pelo sistema da empresa. Para isso, o arquivo deverá conter a palavra TESTE nas posições 03 a 07 do Header de Arquivo.
Alertamos que a não informação da palavra TESTE implica no processamento do arquivo em ambiente de produção, gerando a impressão dos boletos e a cobrança de tarifas.
Consideramos os testes finalizados.
Atenciosamente,
Equipe de testes de leiaute
-
Olá Atilio,
O banco do brasil ainda não homologuei.
Foi ontem os boletos para aprovação da agencia.
Se quiser posso postar os resultados aqui.
Fiz um teste alterando a carteira para 18 e não apesentou erros, contudo minha rotina não está com a versão mais nova do svn.
-
Olá Juliana Tamizou,
Fiz uma pequena alteração na classe TACBrBancoSantander, pois estava emitindo um erro, apenas coloquei a variável:
fpTamanhoConta := 11;
no constructor.
Segue anexo:
Na Classe TACBrCaixaEconomica emitia a seguinte mensagem ao realizar retorno:
Agencia\Conta do arquivo inválido
Mesmo com as informações passadas corretamente
A correção foi:
fpTamanhoAgencia := 5; no construtor e
Em TACBrCaixaEconomica.LerRetorno240, alterei o trecho:
DE:
if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or
(rConta <> OnlyNumber(Cedente.Conta))) then
raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));
PARA
if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or
(rConta+rDigitoConta <> OnlyNumber(Cedente.CodigoCedente))) then
raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));
Seria até mais apropriado colocar em rConta sendo rCodCedente, mas não alterei, deixei por sua decisão alterar o nome da variável.
Segue classe:
Agora o retorno está funcionando certinho, segue código do meu retorno:
// DADOS DO BANCO with ACBrBoleto1.Banco do begin Digito := 0;//StrtoIntDef(0, 0); Nome := DMEmpresa.ClientDataSet2NOME_CONTA.AsString; Numero := DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger; case DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger of 237 : TipoCobranca := cobBradesco; 1 : TipoCobranca := cobBancoDoBrasil; 341 : TipoCobranca := cobItau; 748 : TipoCobranca := cobSicred; 104 : TipoCobranca := cobCaixaEconomica; 756 : TipoCobranca := cobBancoob; 33,53,008 : TipoCobranca := cobSantander; else TipoCobranca := cobNenhum; end; end; with ACBrBoleto1.Cedente do begin Nome := DMEmpresa.ClientDataSet1EMPRESA.AsString; Agencia := DMEmpresa.ClientDataSet2AGENC_BANCO.AsString; AgenciaDigito := DMEmpresa.ClientDataSet2DIGITO_AGENC_BANCO.AsString; CodigoCedente := DMEmpresa.ClientDataSet2COD_CEDENTE.AsString; Conta := DMEmpresa.ClientDataSet2NUM_CONTA_BANCO.AsString; ContaDigito := DMEmpresa.ClientDataSet2DIGITO_CONTA_BANCO.AsString; CNPJCPF := tiraMask(DMEmpresa.ClientDataSet1CNPJ.AsString); if ( Length(DMEmpresa.ClientDataSet2MODALIDADE.AsString) > 0) then Modalidade := DMEmpresa.ClientDataSet2MODALIDADE.AsString; if ( Length(DMEmpresa.ClientDataSet2CONVENIO.AsString) > 0) then Convenio := DMEmpresa.ClientDataSet2CONVENIO.AsString; end; ACBrBoleto1.NomeArqRetorno := txtNomeArquivoRetorno.Text; ACBrBoleto1.LerRetorno;
-
Olá amigo,
A classe do banco foi alterada devido a caixa manter dois padrões:
Segue post explicando:
Como você deve fazer agora para passar o código do banco para o componente(Exemplo):
// DADOS DO BANCO with ACBrBoleto1.Banco do begin Digito := 0;//StrtoIntDef(0, 0); Nome := DMEmpresa.ClientDataSet2NOME_CONTA.AsString; Numero := DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger; case DMEmpresa.ClientDataSet2NUM_BANCO.AsInteger of 237 : TipoCobranca := cobBradesco; 1 : TipoCobranca := cobBancoDoBrasil; 341 : TipoCobranca := cobItau; 748 : TipoCobranca := cobSicred; 104 : TipoCobranca := cobCaixaEconomica; 756 : TipoCobranca := cobBancoob; 33,53,008 : TipoCobranca := cobSantander; else TipoCobranca := cobNenhum; end; end;
//Restante do código, mas a alteração é só a de cima mesmo: with ACBrBoleto1.Cedente do begin Nome := DMEmpresa.ClientDataSet1EMPRESA.AsString; Agencia := DMEmpresa.ClientDataSet2AGENC_BANCO.AsString; AgenciaDigito := DMEmpresa.ClientDataSet2DIGITO_AGENC_BANCO.AsString; CodigoCedente := DMEmpresa.ClientDataSet2COD_CEDENTE.AsString; Conta := DMEmpresa.ClientDataSet2NUM_CONTA_BANCO.AsString; ContaDigito := DMEmpresa.ClientDataSet2DIGITO_CONTA_BANCO.AsString; CNPJCPF := tiraMask(DMEmpresa.ClientDataSet1CNPJ.AsString); if ( Length(DMEmpresa.ClientDataSet2MODALIDADE.AsString) > 0) then Modalidade := DMEmpresa.ClientDataSet2MODALIDADE.AsString; if ( Length(DMEmpresa.ClientDataSet2CONVENIO.AsString) > 0) then Convenio := DMEmpresa.ClientDataSet2CONVENIO.AsString; end; ACBrBoleto1.NomeArqRetorno := txtNomeArquivoRetorno.Text; ACBrBoleto1.LerRetorno;
Lembrando que você deve atualizar o ACBr.
Erros que enfrentei:
Devido 2 Delphis na maquina
"Nao foi possivel localizar o ponto de entrada do procedimento @Synautil@BinToInt$qqrx17System@AnsiString na biblioteca de vinculo dinamico synapse.bpl".
Resposta:
Exclui todos os arquivo bdl (ACBr) da pasta Delphi\projects\bpl e recompilar e reinstalar o ACBr novamente.
Versão do Rave diferente do componente(Ainda não consegui remover a 5 e instalar a 5.0.8, quem souber me avisa)
[Error] ACBrDANFeCBRave.pas(263): Undeclared identifier: 'OnDecodeImage'
Erros ao instalar o ACBrNFeDanfeRVCodeBase:
[Error] ACBrDANFeCBRave.pas(259): Undeclared identifier: 'OnDecodeImage'
[Error] ACBrDANFeCBRave.pas(259): Not enough actual parameters
[Error] ACBrDANFeCBRave.pas(261): Undeclared identifier: 'OnDecodeImage'
Resposta:
Versão do Rave deve ser Rave 5.0.8 não pode ser diferente
Ao instalar o Danfe Rave
[Fatal Error] ACBrNFeDanfeRV.dpk(76): Required package 'rave90vcl' not found
[Fatal Error] Required package 'rave90vcl' not found
Resposta:
Remover rave90vcl do requires
Uso o pacote Capicom A1 e A3, sem OpenSSL
ACBrCapicom.bpl can't be installed because it is not a design time package
Resposta:
Na tela de instalação clique em "Options"
Escolha Designtime and runtime
Compile e instale
-
Olá Juliana,
Fizeram umas correções na Unit ACBrBancoob que fiz e percebi algumas alterações muito boas, obrigado e desculpa por algumas variáveis esquecidas e não usadas!
Bom, o problema que ao testar a nova revisão, emite erro de layout da carteira inválido, pois está sendo passado para o componente o valor: SR que significa = 1 sem carteira, mas ao montar o código de barras ele coloca o S no lugar do 1 emitindo erro no meu cliente.
O que fiz foi alterar no unit para fixar em 1. Assim aparece no corpo do boleto SR, mas fica 1 no código de barras.
Ao implementar a opção com registro, é só mudar a condição.
Segue em anexo a unit corrigida: ACBrBancoob.rar
-
Juliana,
Na unit: ACBrBancoSantander
Existe um erro na função: Procedure TACBrBancoSantander.LerRetorno400 ( ARetorno: TStringList );
Trecho:
rCedente := trim(Copy(ARetorno[0],47,30));
rAgencia := trim(Copy(ARetorno[1],18,4));
rConta := trim(Copy(ARetorno[1],22,8))+ Copy(ARetorno[1],384,1);
rDigitoConta := Copy(ARetorno[1],385,1);
Alterar para:
rCedente := trim(Copy(ARetorno[0],47,30));
rAgencia := trim(Copy(ARetorno[1],18,4));
rConta := trim(Copy(ARetorno[1],22,8))+ Copy(ARetorno[1],384,1);
rConta := padR( OnlyNumber(rConta),fpTamanhoConta,'0');
rDigitoConta := Copy(ARetorno[1],385,1);
Senão emite erro de conta inválida, mas é só questão de formatação dos zeros a esquerda.
Anexo: ACBrBancoSantander.rar
-
Olá Juliana,
Não sei quem alterou a função que eu fiz LerRetorno240, contudo parou de funcionar alguns pontos.
Refiz as correções, segue abaixo a função funcionando, testei agora:
procedure TACBrCaixaEconomica.LerRetorno240(ARetorno: TStringList); var ContLinha: Integer; Titulo : TACBrTitulo; Linha, rCedente, rCNPJCPF, rAgencia, rConta: String; begin ContLinha := 0; if (copy(ARetorno.Strings[0],143,1) <> '2') then raise Exception.Create(ACBrStr(ACBrBanco.ACBrBoleto.NomeArqRetorno + 'não é um arquivo de retorno do '+ Nome)); rCedente := trim(Copy(ARetorno[0],73,30)); rAgencia := trim(Copy(ARetorno[0],53,5)); rConta := trim(Copy(ARetorno[0],59,6)); ACBrBanco.ACBrBoleto.DataArquivo := StringToDateTimeDef(Copy(ARetorno[1],192,2)+'/'+ Copy(ARetorno[1],194,2)+'/'+ Copy(ARetorno[1],198,2),0, 'DD/MM/YY' ); ACBrBanco.ACBrBoleto.DataCreditoLanc := StringToDateTimeDef(Copy(ARetorno[1],200,2)+'/'+ Copy(ARetorno[1],202,2)+'/'+ Copy(ARetorno[1],204,2),0, 'DD/MM/YY' ); { Tipo de Inscrição da Empresa ou Pessoa Física Código que identifica o tipo de inscrição da Empresa ou Pessoa Física perante uma Instituição governamental: ‘0’ = Não informado ‘1’ = CPF ‘2’ = CGC / CNPJ ‘9’ = Outros } rCNPJCPF := trim( Copy(ARetorno[0],19,14)) ; case StrToIntDef(Copy(ARetorno[1],18,1),0) of 1 : rCNPJCPF:= trim( Copy(ARetorno[1],19,14)); 2 : rCNPJCPF:= trim( Copy(ARetorno[0],19,14)); else rCNPJCPF:= trim( Copy(ARetorno[0],19,14)); end; with ACBrBanco.ACBrBoleto do begin Cedente.CNPJCPF := rCNPJCPF; Cedente.Agencia := rAgencia; Cedente.Conta := rConta; if (not LeCedenteRetorno) and (rCNPJCPF <> OnlyNumber(Cedente.CNPJCPF)) then raise Exception.Create(ACBrStr('CNPJ\CPF do arquivo inválido: '+ rCNPJCPF + ' <> '+ Cedente.CNPJCPF)); //if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia))) then //raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido '+rAgencia)); Cedente.Nome := rCedente; Cedente.AgenciaDigito := '0'; case StrToIntDef(Copy(ARetorno[1],18,1),0) of 1: Cedente.TipoInscricao:= pFisica; 2: Cedente.TipoInscricao:= pJuridica; else Cedente.TipoInscricao := pOutras; end; ACBrBanco.ACBrBoleto.ListadeBoletos.Clear; end; for ContLinha := 1 to ARetorno.Count - 2 do begin Linha := ARetorno[ContLinha] ; if Copy(Linha,14,1)= 'T' then //segmento T - Só cria após passar pelo seguimento T depois U Titulo := ACBrBanco.ACBrBoleto.CriarTituloNaLista; with Titulo do begin if Copy(Linha,14,1)= 'T' then //segmento T begin SeuNumero := copy(Linha,59,11); NumeroDocumento := copy(Linha,48,9); OcorrenciaOriginal.Tipo := CodOcorrenciaToTipo(StrToIntDef( copy(Linha,16,2),0)); //05 = Liquidação Sem Registro Vencimento := StringToDateTimeDef( Copy(Linha,74,2)+'/'+ Copy(Linha,76,2)+'/'+ Copy(Linha,78,2),0, 'DD/MM/YY' ); ValorDocumento := StrToFloatDef(Copy(Linha,82,15),0)/100; ValorRecebido := StrToFloatDef(Copy(Linha,82,15),0)/100; NossoNumero := copy( Copy(Linha,48,9),Length( Copy(Linha,48,9) )-TamanhoMaximoNossoNum ,TamanhoMaximoNossoNum); Carteira := Copy(Linha,40,2); end //if segmento else if Copy(Linha,14,1)= 'U' then //segmento U begin if StrToIntDef(Copy(Linha,138,6),0) <> 0 then DataOcorrencia := StringToDateTimeDef( Copy(Linha,138,2)+'/'+ Copy(Linha,140,2)+'/'+ Copy(Linha,142,4),0, 'DD/MM/YYYY' ); if StrToIntDef(Copy(Linha,146,6),0) <> 0 then DataCredito:= StringToDateTimeDef( Copy(Linha,146,2)+'/'+ Copy(Linha,148,2)+'/'+ Copy(Linha,150,4),0, 'DD/MM/YYYY' ); ValorIOF := StrToFloatDef(Copy(Linha,63,15),0)/100; ValorAbatimento := StrToFloatDef(Copy(Linha,48,15),0)/100; ValorDesconto := StrToFloatDef(Copy(Linha,33,15),0)/100; ValorMoraJuros := StrToFloatDef(Copy(Linha,18,15),0)/100; ValorOutrosCreditos := StrToFloatDef(Copy(Linha,123,15),0)/100; ValorDespesaCobranca := StrToFloatDef(Copy(Linha,108,15),0)/100; ValorOutrasDespesas := StrToFloatDef(Copy(Linha,108,15),0)/100; end;//if Copy(Linha,14,1)= 'U' then //segmento U end; //with end; //for end;
Boleto Sicoob Acbrboleto NOVA CLASSE BANCOOB TACBrBancoob
em ACBrBoleto
Postado
Aceite minhas desculpas. Não estou mais trabalhando nesse projeto e nem com programação. Lamento.