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.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...