Ir para conteúdo
  • Cadastre-se

Antonio Gomes

Membros
  • Total de ítens

    671
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Antonio Gomes postou

  1. fala comigo, rodando até hoje com unidac?
  2. está certo, alguns casos, aquele negocio das 13 hs, se o cliente pagar, eles colocam no mesmo dia disponível já para ser quitado no cliente.
  3. em produção, no cliente mesmo, mas, vou testar de novo, recordo de fato, que o pix, já na conta, acontecia do titulo nao vir com aquela situacao = PAGO.
  4. Interessante, usei isso ontem, com fontes atualizados no cliente, não tinha dado a falha. Testou ai francisco ?
  5. Sim, vc pode personalizar, até colocar salvar no cliente, o modelo do boleto, eu tenho dessa forma, o cara quer algo diferente, edito, salvo no banco e vida que segue. Abstraia o código: procedure TDMBoleto.ConfigurarFastReport; var ST: TMemoryStream; begin frxReport1.Clear; frxReport1.Report.Clear; frxDBReceber.RangeBegin := rbFirst; frxDBReceber.RangeEnd := reLast; frxReport1.EnabledDataSets.Clear; frxReport1.DataSets.Clear; frxReport1.DataSets.Add(frxDBReceber); frxReport1.EnabledDataSets.Add(frxDBReceber); ST := TMemoryStream.Create; try if FDSCfgMod.FieldByName('ARQUIVO_CFGBLMOD').IsNull then // Quando for atualizado, em Novembro de 2018, esse campo vai ficar vazio na tabela begin case FDSCfgMod.FieldByName('LAYOUT_CFGBLMOD').AsInteger of 1: begin TFuncoesSistemaOperacional.LerRecursoDLL('BOLETO_1PP_PIX', sNomeDaDLL, ST); end; 2: TFuncoesSistemaOperacional.LerRecursoDLL('BOLETO_2PP', sNomeDaDLL, ST); 3: TFuncoesSistemaOperacional.LerRecursoDLL('BOLETO_3PP_CARNE', sNomeDaDLL, ST); else // 3 raise Exception.Create('Tipo de Documento: Boleto ou carnê não selecionado na configuração.'); end; end else TBlobField(FDSCfgMod.FieldByName('ARQUIVO_CFGBLMOD')).SaveToStream(ST); ST.Position := 0; frxReport1.LoadFromStream(ST); finally FreeAndNil(ST); end; // desnecessário, mantido pois tem modelo salvo no cliente, e gera erro Var S: string; with frxReport1 do begin S := 'procedure INICIALIZA()'; if Script.FindLocal(S) = nil then Script.AddMethod(S, CallMethod); end; end; OnSaveReport, do Designer: function TDMBoleto.frxDesignerBoleto_SaveReport(Report: TfrxReport; SaveAs: Boolean): Boolean; var Stream: TStream; begin Stream := TMemoryStream.Create; try Report.SaveToStream(Stream); Stream.Position := 0; IBQryCfgMod.Edit; TBlobField(IBQryCfgMod.FieldByName('ARQUIVO_CFGBLMOD')).LoadFromStream(Stream); IBQryCfgMod.Post; finally Stream.Free; end; Result := True; end;
  6. Cara, eu criei meu próprio fr3, logo, bordo o que for preciso nele. Não sei se ajudei, ou botei mais dúvida ainda.
  7. inter: Criar app, baixar certificados, colocar certo os scopes, clientid Sicoob: Cadastrar no ambiente desenvolver, pegar o clientid, e fazer a mandinga do certificado ecnpj do cliente... Essa benção que refiro, nao basta querer do lado de cá, se lá (banco) nao está ativo.
  8. qual banco é? geralmente, o boleto vem a url pix já, se o banco permitir, pq eles precisam dar a benção (banco), inter mesmo, vem ja pronto, a gente so pega e imprime, e esquece a remessa, mas, se for um banco com remessa, coloca qual banco é, até então, não tinha visto ainda, remessa ter pix, já que é uma coisa dinâmica com o banco...
  9. Cara, eu fiz, e gravei tudo no meu banco, e eu mesmo faço a impressão, mas, deve ter no modelo do acbr, o qrcode já, lembre-se de gravar os dados abaixo: if ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.IDBoleto <> '' then ABoletoApi.CodigoSolicitacao := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.IDBoleto; ABoletoApi.NossoNumeroFormatado := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.NossoNum; ABoletoApi.CodigoBarras := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.CodBarras; ABoletoApi.LinhaDigitavel := ABoleto.ListaRetornoWeb[I].DadosRet.IDBoleto.LinhaDig; ABoletoApi.TxPIX := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.TxId; ABoletoApi.UrlPIX := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.EMV; // inter está vindo aqui if ABoletoApi.UrlPIX = '' then ABoletoApi.UrlPIX := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.UrlPIX; if ABoletoApi.CodigoSolicitacao = '' then ABoletoApi.CodigoSolicitacao := ABoleto.ListaRetornoWeb[I].DadosRet.TituloRet.NossoNumeroCorrespondente; e na hora de imprimir, atribui no titulo, se tiver pix - gravado no seu receber a url, claro Titulo.QrCode.emv := .... procure por TACBrBoletoPIXQRCode = class private Femv: String; Furl: String; FtxId: String; procedure Setemv(const Value: String); procedure SettxId(const Value: String); procedure Seturl(const Value: String); public constructor Create(); destructor Destroy; override; property url : String read Furl write Seturl; property txId : String read FtxId write SettxId; property emv : String read Femv write Setemv; procedure PIXQRCodeDinamico(const AURL, ATXID: String; ATitulo : TACBrTitulo); end;
  10. Gostaria que conferissem por favor, sobre a falta da declaração {$I ACBr_jedi.inc} no topo da unit ACBrDFeXsLibXml2, onde a mesma, faz uso da chamada de uma diretiva, que está dentro dessa .inc Diretiva: DELPHILANGUAGE Isso ocorre o erro na validação da NF-e, onde fica aparecendo apenas o número do erro 1824, de erro de campo de inscricao estadual no caso. Erro que retorna: "Falha na validação dos dados da nota: 1232 --> 1824" função: function TDFeSSLXmlSignLibXml2.TentaPegarMensagemErroDetalhada(const MsgErroAtual: string): String; var prtUltimoErroXml: xmlErrorPtr; begin Result := ''; prtUltimoErroXml := xmlGetLastError(); if prtUltimoErroXml = nil then begin Result := MsgErroAtual; Exit; end; Result := MsgErroAtual + ' --> ' + IntToStr(prtUltimoErroXml^.code); {$IFDEF DELPHILANGUAGE} {$IFDEF WINDOWS} if (prtUltimoErroXml^.message <> nil) then Result := Result + ' - ' + prtUltimoErroXml^.message; {$ENDIF} {$ELSE} if (prtUltimoErroXml^.message <> nil) then Result := Result + ' - ' + prtUltimoErroXml^.message; {$ENDIF} end; Inclusive, está até estranho, o código é igual.
  11. Olha se pode ser usado dessa forma, sincronizei e alterei. ACBrBoletoRet_Inter_API.pas
  12. @Daniel InfoCotidiano Na tentativa de emitir um boleto, após ser cancelado, na property JSON do retorno, veio o seguinte texto: {"title":"Requisição inválida","detail":"Não será possível emitir o boleto. Pois, existe um boleto emitido há poucos minutos com os mesmos dados com a situação “em aberto” com nosso número: 01371641358.","timestamp":"2024-07-11T14:36:41.735762-03:00"}' Antes, com vencimento ontem, veio esse: '{"title":"Dados inválidos.","detail":"Verifique se os dados informados estão de acordo com a documentação disponibilizada e tente novamente.","timestamp":"2024-07-11T14:24:42.10409-03:00","violacoes":[{"razao":"O valor deve ser igual ou maior a data atual","propriedade":"incluirBoleto.body.dataVencimento","valor":"2024-07-10"}]}' ----- Porém, essa property JSON quando sucesso, vem prenchido com o json correto, com dados do boleto, logo, para mexer, penso que precisa ser dentro exclusivamente na unit do inter: onde vem essa msg de erro: if ABoleto.TotalListaRetornoWeb > 0 then for var I: Integer := 0 to Pred(ABoleto.TotalListaRetornoWeb) do begin ABoleto.ListaRetornoWeb[I].JSON ... end; Teria como alimentar a lista de rejeições? E eu posso mexer nisso ?
  13. Fecha por favor, é mosca comida + cansaço! Grato.
  14. Olá, @Daniel InfoCotidiano Uma coisa inusitada, que não consegui depurar, se emito o boleto no inter v2, no passado, agora com o novo componente, se aciono para cancelar, o mesmo não aciona a vinculação do certificado, faz algum sentido? Inter: 1 hora de token, se está fora do periodo, pede cancelamento, erro 400, no mesmo tempo, eu aciono a emissão da boleta, que regenera o token, nesse ato, consegue cancelar. é possivel eu saber, qual momento que o token é acionado? para eu debugar direto isso ? Pois preciso esperar 1 hr, para vencer o token. Modo que peço a baixa: Boleto.ListadeBoletos.Clear; ACBrTitulo := Boleto.CriarTituloNaLista; ACBrTitulo.NossoNumero := Fds.FieldByName('BOLETO_REC').AsString; ACBrTitulo.NossoNumeroCorrespondente := Fds.FieldByName('COD_SOLICITACAO_BOL_REC').AsString; Boleto.Configuracoes.WebService.Operacao := TOperacao.tpBaixa; // inter é baixa if not Boleto.Enviar then AMsgErro := Self.LerRetornoCancelamentoBoletoDeAPI(Boleto); procedure TFuncBoleto.ACBrBoleto_AntesAutenticar(var AToken: string; var AValidadeToken: TDateTime); begin // Carrega o token gravado na conta TFuncConta.GetTokenContaServicoBancario(fTransacao, Boleto, FDSServBanc.FieldByName('CODIGO_SER').AsInteger, FToken, FDataAtual, FDAtaHoraValidadeToken); AToken := FToken; AValidadeToken := FDAtaHoraValidadeToken; end;
  15. é, isso é um porre mesmo, eu botei tudo que o cliente ativou na epoca, e mandava em producao mesmo, o cliente cancelava o boleto depois. ou eu mesmo. Muitos em debug, se perderam, dai o cliente cancelava.
  16. aquele campo certificado ali, esta sendo passado? pois, olhando meu fonte aqui, so passa 2 arquivos, e é o que eles geram. assim: FACbrBoleto.Configuracoes.WebService.ArquivoCRT := FCertificadoCrt; FACbrBoleto.Configuracoes.WebService.ArquivoKEY := FCertificadoKey; AACBrBoleto.Configuracoes.WebService.Ambiente := TpcnTipoAmbiente.taProducao; AACBrBoleto.Configuracoes.WebService.Operacao := TOperacao.tpInclui; AACBrBoleto.Configuracoes.WebService.Certificado := ''; AACBrBoleto.Configuracoes.WebService.ChavePrivada := ''; AACBrBoleto.Configuracoes.WebService.VersaoDF := '1.2'; // TSSLCryptLib = (cryNone, cryOpenSSL, cryCapicom, cryWinCrypt); AACBrBoleto.Configuracoes.WebService.SSLHttpLib := TSSLHttpLib(ADSServico.FieldByName('API_SSLHTTPLIB_SER').AsInteger); AACBrBoleto.Configuracoes.WebService.SSLCryptLib := cryNone; AACBrBoleto.Configuracoes.WebService.SSLDgst := dgstSHA1; AACBrBoleto.Configuracoes.WebService.SSLHttpLib := httpOpenSSL; AACBrBoleto.Configuracoes.WebService.SSLType := LT_TLSv1_2; AACBrBoleto.Configuracoes.WebService.SSLType := LT_TLSv1_2; AACBrBoleto.Configuracoes.WebService.SSLXmlSignLib := xsNone; AACBrBoleto.Configuracoes.WebService.UseCertificateHTTP := True; AACBrBoleto.Cedente.CedenteWS.IndicadorPix := true; AACBrBoleto.Cedente.CedenteWS.ClientID := ADSServico.FieldByName('CLIENT_ID_SER').AsString; AACBrBoleto.Cedente.CedenteWS.ClientSecret := ADSServico.FieldByName('CLIENT_SECRET_SER').AsString; AACBrBoleto.Cedente.CedenteWS.KeyUser := ADSServico.FieldByName('KEY_USER_SER').AsString; AACBrBoleto.Cedente.CedenteWS.Scope := ADSServico.FieldByName('SCOPE_SER').AsString; confere com o seu
  17. Voce pode criar seu proprio boleto, basta pegar o fr3, essa do inter, voce pode criar o endpoint no seu app https://developers.inter.co/references/cobranca-bolepix#tag/Cobranca/operation/obterPdfCobranca ou adicionar no seu fr3 o campo pix.. copiar mesmo do inter....
  18. seu erro é certificado, vc baixou e ativou no portal da conta ?
  19. sim, mas compara o que foi impresso, no canto acima do campo valor, o que tiver ali, é o que tem na barra, se ambos forem iguais, ai precisa ser investigado. bate uma foto da boleta nova impressa e da antiga novamente.
  20. O vencimento continua igual ? Olha no boleto impresso, o nosso numero, do boleto origem, e naquele que voce está replicando.
  21. tente olhar. se o nosso numero é apenas 2580 no santander, se for, vc nao coloca o 8 no final, acbr calcula o DV. Logo, o dv deve ser o 3.. e não nosso numero, importante salientar, acbr hoje, eu gravo separado, pq isso sempre causa confusao, nosso numero é um campo, o boleto no caso, e o dv, outro, e por fim, eu tenho um completo. Pois há cortes, com padr e padl ao incluir um nosso numero. No meu sistema: ATitulo.NossoNumero := ANumeroSlip; // Não pode somar o DV aqui - campo boleto
  22. Ian, é cnab 400 mesmo, vc deve mudar, para 240 antes de gerar. O 400 não é segmentado. Aparenta ser um titulo de 29,97 venc 05/07/24 esse arquivo so tem o ID de registro 1 e 2.
  23. Ian, cadê o arquivo gerado, posta aqui, para gente tentar ajudar voce. Inclusive, para saber, a largura da linha, se é 240 ou 400. E seu CNAB no ini está 1. Avalia a remessa gerada e posta aqui. Ao ler o ini, tem isso: if ( wCNAB = 0 ) then LayoutRemessa := c240 else LayoutRemessa := c400; Ao gravar, isso if LayoutRemessa = c240 then IniRetorno.WriteInteger(CBanco,'CNAB',0) else IniRetorno.WriteInteger(CBanco,'CNAB',1);
×
×
  • 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...