Ir para conteúdo
  • Cadastre-se

Jacinto Junior

Membros
  • Total de ítens

    141
  • Registro em

  • Última visita

Tudo que Jacinto Junior postou

  1. Verifiquei que tais alterações não estão no SVN. Na revisão 11046 a unit não foi commitada, e até hoje também não. Por favor verifique. Antecipadamente agradeço.
  2. Bom dia. Realizei algumas alterações/correções ref. a ocorrências na unit do BB, assinalei todas com DONE. Peço que avaliem. Antecipadamente agradeço. ACBrBancoBrasil.pas
  3. Bom dia. Essa informação deverá ser enviada em branco pois ao enviar como "N" e os dados de débito automático não forem informados (ainda não há suporte para isso no componente) o registro é recusado, abaixo segue detalhamento conforme manual: 094 a 094 – Condições de Registro para Débito Automático - Quando igual a “N” e os dados do débito estiverem incorretos, rejeita o registro na cobrança e não emite Boleto de cobrança; - Quando diferente de “N” e os dados do débito estiverem incorretos, registra na cobrança e emite Boleto de cobrança. Nesta condição, não ocorrerá o agendamento do debito. Em anexo segue arquivo alterado. ACBrBancoBradesco.pas
  4. Bom dia. Em anexo seguem alterações no ACBrBancoSantander.pas referentes a inclusão/alterações de ocorrências e leitura da data do crédito. Todas as alterações foram assinaladas com DONE. ACBrBancoSantander.pas
  5. Bom dia. Realizei uma alteração marcada como DONE devido ao fato de que quando não se faz uso de sacador/avalista o tipo de inscrição deverá ser 0 (zero). Método GerarRegistroTransacao240, linhas 463-466 e 535. Em anexo segue unit. ACBrBancoCaixa.pas
  6. Olá brsamn, se fizer essa mudança e fazer um build no pacto do componente Fortes Report seguramente irá resolver. O problema ocorre acima de cinco páginas devido ao fato de uma característica do próprio componente que faz armazenamento em disco para impressões maiores que cinco páginas, e o problema ocorre justamente ao recuperar esse arquivo armazenado. Como exposto pelo Juliomar, recentemente foram corrigidos alguns bugs no Fortes, então talvez esse já tenha sido sanado com outra estratégia.
  7. Boa tarde. Enfrentei esse mesmo problema e o resolvi fazendo a seguinte alteração no Fortes Report na unit "RLMetaFile.pas" no procedimento "TRLGraphicSurface.LoadFromStream": procedure TRLGraphicSurface.LoadFromStream(AStream: TStream); procedure LoadHeaderFromStream(AStream: TStream); var data: AnsiString; ch: char; I: Integer; begin SetLength(data, MaxSurfaceHeader); I := 0; while (I < MaxSurfaceHeader) and (AStream.Read(ch, 1) = 1) do begin Inc(I); data[I] := AnsiChar(ch); if AnsiChar(ch) = #26 then // Alterado aqui. Break; end; SetLength(data, I); if data <> SurfaceHeaderStr then raise Exception.Create('File is corrupted!'); end; procedure LoadBoundsFromStream(AStream: TStream); begin AStream.Read(FWidth, SizeOf(FWidth)); AStream.Read(FHeight, SizeOf(FHeight)); end; procedure LoadMacrosFromStream(AStream: TStream); var count, len, I: Integer; ln: AnsiString; begin AStream.Read(count, SizeOf(count)); // grava símbolos e seus valores for I := 0 to count - 1 do begin // lê length + nome AStream.Read(len, SizeOf(len)); SetLength(ln, len); AStream.Read(ln[1], len); // FMacros.Add(ln); end; end; procedure LoadFontsFromStream(AStream: TStream); var count, len, I: Integer; name: AnsiString; begin AStream.Read(count, SizeOf(count)); // carrega nomes das fontes for I := 0 to count - 1 do begin AStream.Read(len, SizeOf(len)); SetLength(name, len); AStream.Read(name[1], len); FFonts.Add(name); end; end; procedure LoadObjectsFromStream(AStream: TStream); var count: Integer; size: Integer; kind: TGraphicObjectKind; creator: TRLGraphicObjectClass; I: Integer; begin AStream.Read(count, SizeOf(count)); for I := 0 to count - 1 do begin AStream.Read(kind, SizeOf(kind)); AStream.Read(size, SizeOf(size)); creator := GraphicObjectClass(kind); // se a classe não for conhecida, salta o segmento if creator <> nil then creator.Create(Self).LoadFromStream(AStream) else AStream.Position := AStream.Position + size; end; end; begin Clear; LoadHeaderFromStream(AStream); LoadBoundsFromStream(AStream); LoadMacrosFromStream(AStream); LoadFontsFromStream(AStream); LoadObjectsFromStream(AStream); end;
  8. Boa tarde meu caro. O método abaixo deverá ser alterado, conforme: function TACBrBancoBrasil.CalcularTamMaximoNossoNumero( const Carteira: String; NossoNumero : String = ''): Integer; var wCarteira : String; wTamConvenio: Integer; begin Result := 10; if (ACBrBanco.ACBrBoleto.Cedente.Convenio = '') then raise Exception.Create(ACBrStr('Banco do Brasil requer que o Convênio do Cedente '+ 'seja informado.')); if (Carteira = '') then raise Exception.Create(ACBrStr('Banco do Brasil requer que a carteira seja '+ 'informada antes do Nosso Número.')); wCarteira:= Trim(Carteira); wTamConvenio:= Length(Trim(ACBrBanco.ACBrBoleto.Cedente.Convenio)); // DONE -oJacinto Junior: Alterado pois para os convênios de 7 posições e carteira 18 o tamanho do nosso número é 17. // if (Length(trim(NossoNumero)) > 10) and (wTamConvenio = 6) and // ((wCarteira = '16') or (wCarteira = '18')) then if (Length(Trim(NossoNumero)) > 10) and (wTamConvenio in [6, 7]) and ((wCarteira = '16') or (wCarteira = '17') or (wCarteira = '18')) then Result:= 17 else if (wTamConvenio <= 4) then Result := 7 else if ((wTamConvenio > 4) and (wTamConvenio < 6)) or ((wTamConvenio = 6) and ((wCarteira = '12') or (wCarteira = '15') or (wCarteira = '17'))) then Result := 5 else if (wTamConvenio = 6) then Result := 11 else if (wTamConvenio = 7) then Result := 10; end; Em anexo segue a unit alterada. ACBrBancoBrasil.pas
  9. Olá Juliana. Segue em anexo o arquivo alterado. ACBrBancoBrasil.pas ACBrBancoBrasil.pas
  10. Pessoal quer fazer andorinha, mas acaba fazendo morcego.
  11. krepe, o problema somente ocorre se a NFe originária for emitida em contigência e o CTe for emitido em FS. Se o CTe for emitido no ambiente normal ou na SVC-SP não há problema. No ambiente de homologação do serviço normal já foi corrigido, provavelmente amanhã já estará disponível no ambiente de produção. Veremos...
  12. Obrigado Juliana, mas fiquei com uma dúvida, o "Trim" não fará falta? Pois caso sejam lidos espaços em branco do arquivo, eles serão diferentes de "EmptyStr".
  13. Meu caro, seria interessante apurar essa informação com o banco. Acredito que esse não seja o código do seu convênio.
  14. Basta informar o número do convêncio no atributo "ACBrBoleto.Cedente.Convenio".
  15. Boa tarde meus caros. O conteúdo do "SeuNumero" por ser de responsabilidade do cliente emissor poderá ser alfanumérico, portanto acredito que seja uma melhor solução o seguinte: if AnsiSameText(Trim(SeuNumero), EmptyStr) then begin SeuNumero := NossoNumero; NumeroDocumento := NossoNumero end; Em anexo segue a unit alterada. ACBrBancoCaixa.pas
  16. Boa tarde meu caro. Em que trecho do manual consta essa informação? Pois de acordo com a nota 06 do manual CBR641 (CNAB400) para as carteiras 12, 15 e 17 o nosso número contém 10 posições. PS: Por favor desconsidere meu post, me equivoquei ao observar somente o número sequencial e acabei desconsiderando o número no convênio. Desculpe.
  17. Bom dia. O cobSafraBradesco é do Banco Safra porém via banco correspondente Bradesco, por isso é utilizado o 237. Acredito que cobCaixaSicob seja a mesma situação.
  18. Meu caro, isso ocorre devido ao fato de na função CalcularDigitoVerificadorBradesco você fazer uso de CalcularDigitoVerificador, e este utilizar o CalculoPadrao, que por sua vez utiliza o MultiplicadorFinal igual a 9. Tente com o seguinte código: function TACBrBancoSafraBradesco.CalcularDigitoVerificadorBradesco(const ACBrTitulo: TACBrTitulo): String; begin Modulo.CalculoPadrao; Modulo.MultiplicadorInicial := 2; Modulo.Documento := ACBrTitulo.Carteira + Copy(DateToStr(ACBrTitulo.DataDocumento), 9, 2) + ACBrTitulo.NossoNumero + CalcularDigitoVerificador(ACBrTitulo); Modulo.MultiplicadorFinal := 7; Modulo.Calcular; if Modulo.ModuloFinal = 1 then Result := 'P' else Result := IntToStr(Modulo.DigitoFinal); end;
  19. Jorge, o manual que disponibilizei foi o que o suporte me forneceu na época. Realmente este trecho de código não está na unit ACBrBancoSafraBradesco.pas, acabei por utiliza-lo diretamente na aplicação. Sugiro utilizar a unit ACBrBancoSafraBradesco.pas pois acredito que o Safra também tenha o serviço de cobrança sem banco correspondente. Pode contar comigo no que precisar.
  20. Bom dia. Segue em anexo o manual utilizado, veja o item 10.2 na página 40. Cobranca Safra CNAB 400 v2010-09.pdf
  21. Tenho boletos do Safra com o Bradesco como correspondente em produção sim, desde 02/2014. Realmente tive que tratar alguma particularidades. Desculpe mas não lembro de todas de imediato. Referente ao cálculo do dígito verificador foi necessário no ato da emissão gerar o nosso número da seguinte forma: FTitulo.NossoNumero := FormatDateTime('yy', <Data_de_Vencimento>) + IntToStr(VSeqNossoNumero) + Self.CalcularDigitoVerificadorSafra(IntToStr(VSeqNossoNumero)); function CalcularDigitoVerificadorSafra(ANossoNumero: String): String; begin FACBrBoleto.Banco.BancoClass.Modulo.CalculoPadrao; FACBrBoleto.Banco.BancoClass.Modulo.Documento := ANossoNumero; FACBrBoleto.Banco.BancoClass.Modulo.Calcular; if FACBrBoleto.Banco.BancoClass.Modulo.ModuloFinal = 0 then Result := '1' else if FACBrBoleto.Banco.BancoClass.Modulo.ModuloFinal = 1 then Result := '0' else Result := IntToStr(FACBrBoleto.Banco.BancoClass.Modulo.DigitoFinal); end;
  22. Utilize cobSafraBradesco tanto para emissão do boleto quanto para geração da remessa. Provavelmente na emissão do boleto você tenha de configurar o cedente como sendo o Banco Safra. Os layouts foram homologados em 02/2014 e estão em operação desde então, porém não sei lhe informar se atualmente estão mais criteriosos quanto a homologação.
  23. Boa tarde Jorge. Você já utilizou o ACBrBoleto para algum outro banco? Pois o procedimento de configuração segue o mesmo padrão. Qual é o tipo de dificuldade que você está tendo?
  24. Meu caro, é fato que os manuais dos bancos possuem inconsistências. É fato também que não vou me lembrar com precisão onde apurei esta informação, porém você pode certificar-se que não há agências com mais de quatro dígitos através do arquivo que contém a relação de agências e postos bancários disponibilizado de Banco Central do Brasil disponível em: http://www.bcb.gov.br/?RELAGPAB
  25. Boa tarde Osmar. Você tem que implementar a exibição destas informações da lista de títulos carregada pelo componente.
×
×
  • 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...