Ir para conteúdo
  • Cadastre-se

toninhonunes

Membros
  • Total de ítens

    75
  • Registro em

  • Última visita

  • Days Won

    3

Tudo que toninhonunes postou

  1. Olá, Só um aviso aos colegas, quem usa link com balanceamento de carga, o consultacnpj falha diversas vezes quando você possui dois links ou mais na rede, fica complicado redirecionar entradas e saída http na porta 80 só o site de consulta da receita, neste protocolo pode entrar e sair por qualquer wan na rede, já analisei o código da unit httpdsend.pas, mas sem sucesso para ver onde poderia saber porque ocorre o erro, só funciona 100% com um link. Toninho Nunes
  2. Comprei o Teamviewer e posso garantir, valeu o investimento, o negócio de ficar lento, é quando começam a usar muito, aí com certeza a empresa vai baixando a bola do client que está sendo usado para outros fins e até derrubar a conexão, não adianta correr, não dá pra perder tempo tentando desenvolver uma solução que já tem pronta no mercado e se paga conforme o negócio, se o seu negócio o foco é outro não perderia o tempo tentando fazer algo que não será talvez garantido.
  3. Tinha selecionado o arquivo, mas não cliquei no botão anexar este arquivo, segue anexo. Toninho Nunes ACBrCaixaEconomica.pas
  4. Boa noite Juliomar, Faltou no arquivo anterior estas linhas na procedure LerRetorno240 CodigoLiquidacao := Copy(Linha,214,02); CodigoLiquidacaoDescricao := CodigoLiquidacao_Descricao( StrToIntDef(CodigoLiquidacao,0) ); Esta linha captura o canal de pagamento, se foi na Lotérica, Internet Banking e outros, segue anexo o arquivo, fiz um teste num boleto no valor pequeno com a carteira 24, passou tranquilo, se o colega que usa carteira 21 quiser testar já está ok. Toninho Nunes
  5. Não sei como sua alteração vai ser homologada, você alterou lá aquela linha e deixou isso aqui desta forma, o dígito verificador não vai passar, num lugar você usa 21 e aqui nesta function está fixado o 4 de acordo com a escolha da carteira, agora vou ficar mais esperto com essas mudanças, falha minha em ter feito um update sem ter checado as modificações, acostumei em saber que quase nunca dá problemas. function TACBrCaixaEconomica.CalcularDigitoVerificador(const ACBrTitulo: TACBrTitulo ): String; var Num, ACarteira, ANossoNumero, Res :String; begin Result := '0'; if (ACBrTitulo.Carteira = 'RG') then ACarteira := '1' else if (ACBrTitulo.Carteira = 'SR')then ACarteira := '2' else raise Exception.Create( ACBrStr('Carteira Inválida.'+sLineBreak+'Utilize "RG" ou "SR"') ) ; ANossoNumero := OnlyNumber(ACBrTitulo.NossoNumero); Num := ACarteira + '4' + PadR(ANossoNumero, 15, '0'); <====== o 4 está fixado, envio pelo Cedente Modulo.CalculoPadrao; Modulo.MultiplicadorFinal := 2; Modulo.MultiplicadorInicial := 9; Modulo.Documento := Num; Modulo.Calcular; Res:= IntToStr(Modulo.ModuloFinal); if Length(Res) > 1 then Result := '0' else Result := Res[1]; end;
  6. Sobre o modo coloborativo, sim, é colaborativo, mas o Aldus relatou que não viu no manual o 24 e viu só 21, reportando como se isso fosse um erro, desde a concepção do componente a carteira sem registro da caixa foi fixado como 24, na maioria 99% trabalhou assim, fiz um update da última vez e não percebi esta mudança, foi comentada a linha e mudou pra 21. Antes de comitar é melhor analisar e saber se realmente as alterações conferem com o ocorrido, eu criei uma propriedade do AcbrBoleto.pas chamado CarteiraEnvio com os tipos tceCedente e tceBanco, como default deixei o tceCedente não necessitando por parte dos desenvolvedores que são maioria com a carteira 24 não precisarem setar nada na propriedade, somente se for envio pelo banco deve setar o valor na mesma. Fiz uma pequena adição no arquivo AcbrCaixaEconomica.pas e no AcbrBoleto.pas, segue as adições, o meu cliente precisava saber em que canal de pagamento foi processado boleto, se foi em lotérica, caixa automático e outros, e tinha que mostrar isso no relatório, no arquivo retorno eu não tinha isso e fiz para gravar no banco de dados. Também uma pequena correção no nosso número, estava pegando na posição do padrão SICOB, no SIGCB é diferente na rotina lerRetorno240, bom, aqui está funcionando ok e dando resultados ao cliente, não sei se poderia mandar o arquivo via svn, vou colocar aqui os dois anexos, se for aprovado, fico agradecido por aceitar as adições. Eu peguei um boleto gerado pelo sistema da caixa e informei os mesmos dados no meu sistema, sairam os mesmos números e também leu corretamente o código de barras e a representação bateu, usei o cigamboleto no meu smartphone, é bom que deem uma analisada, o recurso de canal de pagamento inclui com a revisão 6655 que baixei e adiconei. Toninho Nunes ACBrCaixaEconomica.pas ACBrBoleto.pas
  7. A solução para este caso é criar propriedade no arquivo da caixa possibilitando as duas opções de envio do boleto, pelo Cedente ou pela Caixa, do jeito que está aí, quem atualizou pela revisão 6655 e começou a emitir boleto tendo como base o 24, vai ter todos os boletos devolvidos. Toninho Nunes
  8. O senhor Aldo mandou um belo problema, resolveu o seu e mandou pro mantenedor um problema, todos que atualizaram pela revisão 6655 e tem como base o SIGC Carteria Sem Registro enviado pelo Cliente vão ter os seus boletos todos rejeitados, já estou contando o prejuízo aqui, leu o manual e não leu certo, consta o 21 e 24 no manual, pior é o mantenedor ter aceito e comitado a alteração, agora lascou, reverti o código, o estrago já foi feito. Toninho Nunes.
  9. Olá Pessoal, Voltando ao assunto do tópico e reabrindo, relatei que estava tendo problemas com o componente, descobri a origem do problema, na empresa temos dois links redudantes, o roteamento é feito por um link cisco que gerencia duas wan, mas já tinha aplicado regras de protocolo https para sair só por um modem, o engraçado que no componente do cnpjconsulta não faz chamada por https, pelo menos é o que internamente aparece, de alguma forma ele faz chamada por um modem e deve retornar por outra e acontece os erros de captcha e até mesmo de buscar o cnpj, peguei um cabo de rede e coloquei direto no notebook para acessar apenas por um modem, pronto, não deu mais nenhum erro, se tem como contornar isso no componente, aí já é uma situação atípica, vou fazer a regra para acessar o site da receita só por um modem. Com certeza na troca de modem/ip, deve quebrar a session da consulta e não reconhecer mais, mesmo que não seja um protocolo de chamada https. Antonio Carlos.
  10. Ok, somente comentei que vou analisar como fez, o tópico está encerrado.
  11. Aproveitando, vi que fez o componente Cotação, creio que adicionar a taxa selic também ajudaria para fazer calculo de correção monetária, vou olhar como fez nos outros para poder fazer a idéia da taxa selic que também está no banco central. Toninho Nunes
  12. É, o negócio aqui está estranho mesmo, agora está funcionando tudo normal, vou checar em outra máquina. Toninho Nunes
  13. Olha, eu usando a depuração, esse método demora muito para trazer a página. function TACBrConsultaCNPJ.GetCaptchaURL : String ; var URL, Html: String; begin try Self.HTTPGet('http://www.receita.fazenda.gov.br/pessoajuridica/cnpj/cnpjreva/cnpjreva_solicitacao2.asp'); //Demora muito aqui este método Html := Self.RespHTTP.Text; URL := 'http://www.receita.fazenda.gov.br' + StrEntreStr(Html, 'alt='+ QuotedStr(ACBrStr('Imagem com os caracteres anti robô')) + ' src='+'''', ''''); FViewState := StrEntreStr(Html, '<input type=hidden id=viewstate name=viewstate value='+'''', ''''); Result := StringReplace(URL, 'amp;', '', []); except on E: Exception do begin raise EACBrConsultaCNPJException.Create('Erro na hora de obter a URL do captcha.'+#13#10+E.Message); end; end; end; //ConsultaCNPJ procedure TACBrConsultaCNPJ.Captcha(Stream: TStream); begin try HTTPGet(GetCaptchaURL); if HttpSend.ResultCode = 200 then begin HTTPSend.Document.Position := 0; Stream.CopyFrom(HttpSend.Document, HttpSend.Document.Size); Stream.Position := 0; end; Except on E: Exception do begin raise EACBrConsultaCNPJException.Create('Erro na hora de fazer o download da imagem do captcha.'+#13#10+E.Message); end; end; end; Dá erro no JPEG, dá erro nos campos, não sei se é o meu Delphi, uso a versão 7 enterprise no Windows XP SP3.
  14. Daniel, Eu tenho tentado usar o consultacnpj, mas falha o captca diversas vezes e lento também, eu tenho visto uma aplicação Delphi que parece que usa o Twebbrowser e retorna o captcha e os dados da empresa muito rapidamente, não tenho os fontes do sistema, mas vi que todas as tentativas que fiz e mandei trocar o captcha não ouve nenhuma falha e foi muito rápido, estou testando o exemplo do acbr. Toninho Nunes
  15. Pessoal, desculpa, não sei se é paranóia, mas rodando de novo parece que acelerou, pode ser o servidor da receita, mas o captcha estava demorando bastante dar o retorno. Toninho Nunes
  16. Estive olhando o código, a parte que demora bastante é este trecho. { connect } if not InternalConnect(UpperCase(Prot) = 'HTTPS') then begin FAliveHost := ''; FAlivePort := ''; Exit; end; No arquivo httpsend.pas function THTTPSend.InternalDoConnect(needssl: Boolean): Boolean; begin Result := False; FSock.CloseSocket; FSock.Bind(FIPInterface, cAnyPort); if FSock.LastError <> 0 then Exit; FSock.Connect(FTargetHost, FTargetPort); //Demora bastante aqui para ir no site da receita Analisando o código percebi a lentidão neste trecho do código. Toninho Nunes
  17. Olá Pessoal, Estou testando o componente Acbrconsultacnpj, o captcha parece demorar muito para aparecer, alguém está tendo problemas? Estou testando um componente alternativo e a resposta é bem mais rápida, até na atualização, alguém está percebendo essa lentidão no AcbrConsultacnpj? Obrigado. Toninho Nunes
  18. Ano passado pedi para adicionar uma correção no retorno da caixa modelo sigcb e também adicionei no acbrboleto o campo canal de pagamento, onde podemos identificar se o boleto foi pago no banco, lotérica, caixa eletrônico, internet banking, não tive mais notícias, os arquivos estão anexo neste link, se puder avaliar, estou usando e funcionando normalmente os recursos.
  19. Olá, Analisei hoje o repo do AcbrBoleto e não vi as correções do arquivo retorno do SIGCB da caixa e também adicionei no retorno a captura do canal de pagamento como, lotérica, internet bank, agência, em fim, para cada banco pode-se identificar o canal, se não for possível, já fico sabendo que não poderei atualizar do repo por conta destas correções e features, obrigado pela atenção, enviei em agosto/2013. Toninho Nunes
  20. Oi Ana Fernanda o SIGCB da Caixa exige o seguinte. 1 - A propriedade Nosso número dever ser preenchido com 15 dígitos. //- NossoNumero := IntToStrZero(nosso_numero,10); +NossoNumero := IntToStrZero(nosso_numero,15); 2 - A propriedade CodigoCedente deve ser preenchida somente os número sem o código verificador, isto é 6 dígitos. Olha eu coloquei para Conta e ContaDigito o mesmo código do Cedente e o Digito do Cedente, não coloquei o número da conta do banco não. Cedente.CodigoCedente := IB_Cursor_Cedente.FieldByName('BOLETO_CODIGO_CEDENTE').AsString; //'123456' Cedente.ContaDigito := IB_Cursor_Cedente.FieldByName('BOLETO_CODIGO_PV').AsString; //'7'; Cedente.Conta := IB_Cursor_Cedente.FieldByName('BOLETO_CODIGO_CEDENTE').AsString; // '123456'; Cedente.ContaDigito := IB_Cursor_Cedente.FieldByName('BOLETO_CODIGO_PV').AsString; //'7'; Cedente.AgenciaDigito := IB_Cursor_Cedente.FieldByName('CODIGO_AGENCIA_DIGITO_CONVENIO').AsString; Cedente.Agencia := IB_Cursor_Cedente.FieldByName('CODIGO_AGENCIA_CONVENIO').AsString; Uso o fastreport e tem funcionado. Antônio.
  21. Oi Juliana, Tem notícias destas adições e correções que realizei? vai ser possível inserir no core? Toninho
  22. Oi pessoal, Podem avaliar por favor? o vencimento também estava pegando o ano errado na LerRetorno240 do SIGCB, obrigado. Toninho
  23. Olá Pessoal do ACBR, Fiz uma pequena adição no arquivo AcbrCaixaEconomica.pas e no AcbrBoleto.pas, segue as adições, o meu cliente precisava saber em que canal de pagamento foi processado boleto, se foi em lotérica, caixa automático e outros, e tinha que mostrar isso no relatório, no arquivo retorno eu não tinha isso e fiz para gravar no banco de dados. Também uma pequena correção no nosso número, estava pegando na posição do padrão SICOB, no SIGCB é diferente na rotina lerRetorno240, bom, aqui está funcionando ok e dando resultados ao cliente, não sei se poderia mandar o arquivo via svn, vou colocar aqui os dois anexos, se for aprovado, fico agradecido por aceitar as adições. Index: C:/dlib/acbr/Fontes/ACBrBoleto/ACBrBoleto.pas =================================================================== --- C:/dlib/acbr/Fontes/ACBrBoleto/ACBrBoleto.pas (revision 4670) +++ C:/dlib/acbr/Fontes/ACBrBoleto/ACBrBoleto.pas (working copy) @@ -531,6 +531,8 @@ fVersao : String; fACBrBoleto : TACBrBoleto; fTextoLivre : String; + fCodigoLiquidacao : String; + fCodigoLiquidacaoDescricao: String; procedure SetCarteira(const AValue: String); procedure SetNossoNumero ( const AValue: String ) ; @@ -559,6 +561,8 @@ property Sacado : TACBrSacado read fSacado write fSacado; property Parcela :Integer read fParcela write SetParcela default 1; property TotalParcelas :Integer read fTotalParcelas write SetTotalParcelas default 1; + property CodigoLiquidacao : String read fCodigoLiquidacao write fCodigoLiquidacao; + property CodigoLiquidacaoDescricao : String read fCodigoLiquidacaoDescricao write fCodigoLiquidacaoDescricao; property OcorrenciaOriginal : TACBrOcorrencia read fOcorrenciaOriginal write fOcorrenciaOriginal; @@ -585,7 +589,6 @@ property Versao : String read fVersao write fVersao; property SeuNumero : String read fSeuNumero write fSeuNumero; property PercentualMulta : Double read fPercentualMulta write fPercentualMulta; - property TextoLivre : String read fTextoLivre write fTextoLivre; end; Index: C:/dlib/acbr/Fontes/ACBrBoleto/ACBrCaixaEconomica.pas =================================================================== --- C:/dlib/acbr/Fontes/ACBrBoleto/ACBrCaixaEconomica.pas (revision 4670) +++ C:/dlib/acbr/Fontes/ACBrBoleto/ACBrCaixaEconomica.pas (working copy) @@ -64,8 +64,8 @@ function GerarRegistroTrailler240(ARemessa : TStringList): String; override; procedure LerRetorno240(ARetorno: TStringList); override; function CodMotivoRejeicaoToDescricao(const TipoOcorrencia: TACBrTipoOcorrencia; CodMotivo: Integer): string; override; - function CodOcorrenciaToTipo(const CodOcorrencia: Integer): TACBrTipoOcorrencia; override; + function CodigoLiquidacao_Descricao( CodLiquidacao : Integer) : String; end; implementation @@ -78,7 +78,7 @@ fpDigito := 0; fpNome := 'Caixa Economica Federal'; fpNumero:= 104; - fpTamanhoAgencia := 5; + fpTamanhoAgencia := 5; fpTamanhoMaximoNossoNum := 15; fValorTotalDocs:= 0; @@ -541,15 +541,20 @@ NumeroDocumento := copy(Linha,59,11); 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' ); + Copy(Linha,78,4),0, 'DD/MM/YY' ); ValorDocumento := StrToFloatDef(Copy(Linha,82,15),0)/100; ValorDespesaCobranca := StrToFloatDef(Copy(Linha,199,15),0)/100; - NossoNumero := Copy(Linha,40,11); + NossoNumero := Copy(Linha,42,15); Carteira := Copy(Linha,40,2); + CodigoLiquidacao := Copy(Linha,214,02); + CodigoLiquidacaoDescricao := CodigoLiquidacao_Descricao( StrToIntDef(CodigoLiquidacao,0) ); end {Ssegmento U} @@ -586,8 +591,8 @@ end; end; end; +end; -end; function TACBrCaixaEconomica.CodOcorrenciaToTipo( const CodOcorrencia: Integer): TACBrTipoOcorrencia; begin @@ -726,4 +731,19 @@ end; end; + +function TACBrCaixaEconomica.CodigoLiquidacao_Descricao( + CodLiquidacao: Integer): String; +begin + case CodLiquidacao of + 02 : result := 'Casa Lotérica'; + 03 : result := 'Agências CAIXA'; + 04 : result := 'Compensação Eletrônica'; + 05 : result := 'Compensação Convencional'; + 06 : result := 'Internet Banking'; + 07 : result := 'Correspondente Bancário'; + 08 : result := 'Em Cartório' + end; +end; + end. ACBrCaixaEconomica.pas ACBrBoleto.pas
  24. Colega, Primeiro voce deve saber com o seu gerente, em que tipo de cobrança o contrato esta feito, a caixa tem uns 3 ou 4 padroes, o que estao homologando agora e o SIGCB, antes era o SICOB11, SICOB16 e SINCO, todos eles tem a mesma finalidade, no entanto estas versoes incluem mudanças evolutivas na questao de respostas para melhor detalhamento da cobrança. O seu codigo de cedente esta enorme, pelo menos no meu, a agencia vai num campo separado, a melhor documentaçao sao os fontes, eu estou fazendo umas adiçoes aqui, nem sei se ja fizeram, vou compartilhar depois, estou trabalhando com arquivo retorno do SIGCB pelo ACBR ja achei algum erro que pode ja ter sido corrigido e acrescentando descricao do motivo de retorno por liquidaçao.
  25. Eu analisei o arquivo retorno também, na hora de ler, o arquivo retorno não possuem conta, segundo o manual da Caixa do SIGCB, o campo na posição 59-64 do header de arquivo, código cedente, não é a conta que ele pega no arquivo, estive olhando, parece que a função LerRetorno240 deste arquivo foi feito pra ler o 240 da contribuição sindical da caixa, fora também a agência com dígito não passa na validação, ainda estou testando, mas não sei se isso foi homologado, no momento estou precisando mais é ler arquivo retorno, vou fazer teste por teste e fazer as minhas considerações e ver se são válidas, volto a postar em breve. Toninho Nunes
×
×
  • 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.