Ir para conteúdo
  • Cadastre-se

jpedrosojr

Membros
  • Total de ítens

    7
  • Registro em

  • Última visita

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

jpedrosojr's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Week One Done
  • One Month Later
  • One Year In
  • Conversation Starter

Recent Badges

0

Reputação

  1. Ola Carlos, Posso demorar um pouco, mas podem contar comigo para novas implementações. Um abraço e Parabéns a Todos. "Até as mais longas jornadas começam com o primeiro passo"
  2. Ola Carlos e Juliana, segue em anexo o codigo que estamos desenvolvendo. Favor ver comentario que fiz no centro dele ----------------------------------------------------------------------------- procedure TACBrBancoBrasil.LerRetorno240(ARetorno: TStringList); var ContLinha: Integer; Titulo: TACBrTitulo; Linha, rCedente: String; rCNPJCPF: String; CodOCorrencia: Integer; i, MotivoLinha: Integer; begin ContLinha := 0; // informação do Header // Verifica se o arquivo pertence ao banco if strtoint(copy(ARetorno.Strings[0], 3, 3)) <> Numero then raise Exception.create(ACBrStr(ACBrBanco.ACBrBoleto.NomeArqRetorno + 'não' + 'é um arquivo de retorno do ' + Nome)); rCedente := trim(copy(ARetorno[0], 73, 30)); rCNPJCPF := trim(IntToStr(StrToIntDef(copy(ARetorno[1], 19, 14), 0))); with ACBrBanco.ACBrBoleto do begin if (not LeCedenteRetorno) and (rCNPJCPF <> Cedente.CNPJCPF) then raise Exception.create(ACBrStr('CNPJ\CPF do arquivo inválido')); Cedente.Nome := rCedente; Cedente.CNPJCPF := rCNPJCPF; case StrToIntDef(copy(ARetorno[0], 18, 1), 0) of 01: Cedente.TipoInscricao := pFisica; 02: 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, 8, 8) <> '3' then // verifica se o registro (linha) é um registro detalhe (segmento J) Continue; if copy(Linha, 14, 1) = 'T' then // se for segmento T cria um novo titulo Titulo := ACBrBanco.ACBrBoleto.CriarTituloNaLista; with Titulo do begin {===================================================== neste ponto abaixo comentado eu fiquei com duvidas como no caso da "Especie de documento" nao encontrei esta informacao no retorno e no caso da ocorrencia estava vendo o manual da febraban. Nele ele mostra todos os codigos de ocorrencias de 01 a 99 e outros como A1 ate A4. Nao seria interessante criar uma procedure derivada da classe TACBrBancoClass, deste modo ficaria padrao para todos (bem, na verdade existe, mas o q eu digo se nao pode colocar todos os codigos ja nela e permitir o OVERRIDE apenas para complementar um ou outro codigo? } { OcorrenciaOriginal.Tipo := CodOcorrenciaToTipo (StrToIntDef(copy(Linha, 214, 2), 0)); MotivoLinha := 214; for i := 0 to 3 do begin MotivoRejeicaoComando.Add(IfThen(copy(Linha, MotivoLinha, 2) = ' ', '00', copy(Linha, MotivoLinha, 2))); if MotivoRejeicaoComando[i] <> '00' then begin CodOCorrencia := StrToIntDef(MotivoRejeicaoComando[i], 0); DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao (OcorrenciaOriginal.Tipo, CodOCorrencia)); end; MotivoLinha := MotivoLinha + 2; end; } { Espécie do documento } { if Trim(Copy(Linha,174,2)) = '' then EspecieDoc := '99' else case StrToInt(Copy(Linha,174,2)) of 01 : EspecieDoc := 'DM'; 02 : EspecieDoc := 'NP'; 03 : EspecieDoc := 'NS'; 04 : EspecieDoc := 'ME'; 05 : EspecieDoc := 'RC'; 06 : EspecieDoc := 'CT'; 07 : EspecieDoc := 'CS'; 08 : EspecieDoc := 'DS'; 09 : EspecieDoc := 'LC'; 13 : EspecieDoc := 'ND'; 15 : EspecieDoc := 'DD'; 16 : EspecieDoc := 'EC'; 17 : EspecieDoc := 'PS'; 99 : EspecieDoc := 'DV'; else EspecieDoc := 'DV'; end; } if copy(Linha, 14, 1) = 'T' then begin SeuNumero := copy(Linha, 106, 25); NumeroDocumento := copy(Linha, 59, 15); Carteira := copy(Linha, 58, 1); Vencimento := StringToDateTimeDef(copy(Linha, 74, 8), 0, 'DDMMYY'); ValorDocumento := StrToFloatDef(copy(Linha, 82, 15), 0) / 100; NossoNumero := copy(Linha, 38, 20); ValorDespesaCobranca := StrToFloatDef(copy(Linha, 199, 15), 0) / 100; end else // segmento U begin 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, 108, 15), 0) / 100; ValorRecebido := StrToFloatDef(copy(Linha, 78, 15), 0) / 100; DataOcorrencia := StringToDateTimeDef(copy(Linha, 138, 8), 0, 'DDMMYY'); DataCredito := StringToDateTimeDef(copy(Linha, 146, 8), 0, 'DDMMYY'); end; end; end; end;
  3. Olá Carlos, Gostaria que você desse uma olhada no código que fiz, tenho algumas duvidas, como posso mandá-lo?
  4. Ola Carlos, pretendo iniciar nesta quarta dia 12/01. Pelo que eu vi, o BB dá um link direto para o site da Febraban onde tem o manual. Em outros links tem partes dele. Se voce tiver um exemplo de retorno para eu testar, depois de pronto, e puder me enviar agradeço. Att
  5. Ola Carlos, estou esperando a chegada do manual por email para começar. Agradeço a disposição.
  6. Ola a todos, Gostaria de saber se alguém ja iniciou ou esta pensando em iniciar a implementação dos seguintes recursos: 1) Tratamento do arquivo Retorno para Banco do Brasil 2) Tratamento do arquivo Remessa e Retorno para Nossa Caixa Nosso Banco e Santander Estou precisando desses e se alguem ja começou ou vai começar e quer uma ajuda, entre em contato pela e-mail [email protected]
  7. jpedrosojr

    FastReport

    Existe alguma extensão para uso do FastReport com o ACBrBoleto? Senão como posso estar contribuindo? (Eu já tenho alguma experiencia em FastReport) Grato
×
×
  • 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.