Ir para conteúdo
  • Cadastre-se

johnbh3

Membros
  • Total de ítens

    712
  • Registro em

  • Última visita

Tudo que johnbh3 postou

  1. Pessoal, eu já vi uma configuração antes que consegue por edits abaixo da coluna do cxGrid para pesquisa, embaixo de cada coluna. Alguém sabe qual propriedade?
  2. Bom dia Eu até tenho, pensei que existisse um emulador pra cenário com suporte, essas coisas. Mas obrigado pessoal! Se quiserem fechar o post.
  3. Olá Bom dia, Pessoal existe emulador de impressora não fiscal?
  4. Pessoal Boa tarde Estou mechendo com Horse e estou tendo um retorno do seguinte: ESTE ERRP >>>> Microsoft MSXML is not installed Passo este JSON { "teste1": 1, "teste2": "01244553107", "teste3": 1, "teste3": "M", "xmlPagamentos":"<?xml version='1.0' standalone='yes' ?> <FINALIZADORES> <ITEM> <FIN_CODIGO>1</FIN_CODIGO> <VFI_VALOR>43,89</VFI_VALOR> </ITEM> </FINALIZADORES>", "quantidade": "1" } e dentro do JSON estou como pode ver na xmlPagamentos eu pago um XML. No delphi basicamente pego assim XMLDoc := TXMLDocument.Create(Application); XMLDoc.XML.Text := (XML); // no XML eu pego o conteudo da TAG xmlPagamentos senhores
  5. top isso mesmo, eu fiz com case ficou maior kkkk
  6. Ola Bom dia duvida em SQL/Firebird Pessoal, seguinte eu tenho uma tabela EXEMPLO: PEDIDO E o seguinte campos: ID, DATA, NUM_PEDIDO, NUM_PREP Ocorre que dependendo do cenário NUM_PREP pode estar NULL Então quero seguinte quando NUM_PREP não estiver vazio exiba ele num ALIAS NUM_PEDIDO, quando ele (NUM_PREP )estiver VAZIO (Null) eu exiba ele buscando do campo NUM_PEDIDO como alias NUM_PEDIDO No final quero que retorno em : NUM_PEDIDO sempre isto pq tem um APP que ja espera este NUM_PEDIDO e n quebra ele CASE WHEN VD.NUM_PREP IS NULL THEN VD.NUM_PEDIDO ELSE VD.NUM_PREP Fiz isso ta errado?
  7. Olá, E possivel gerar relatorio do fortes em imagem? Se sim podem me da uma dica?
  8. Pessoal fortes Exporta para imagem? Sabem me dizer como faz?
  9. Ola, pessoal duas dúvidas básicas o ACBrTEFAPI e comunicado rest? Outra dúvida posso usar o Tef com uma venda não fiscal(sem o nfce) ?
  10. Desculpe @Italo Giurizzato Junior eu estou confuso quanto ao nfse? NEste outro post o acbrnfseX nao tem nada haver com nacional então e isso? nwst
  11. johnbh3

    NFSe Padrão Nacional

    @Italo Giurizzato Junior Sobre esta postagem - existe alguma previsão dos município começarem a operar isto?
  12. Pessoal eu coloquei aspas nas datas e deu certo. Sabem me dizer como eu faça para recuperar 2. Recupere os pedidos feitos há menos de cinco anos. Exemplo fiz pedido de 09/11/2022 e recuperar os pedidos a menos de 5 anos. CREATE TABLE `pedido` ( `cod_pedido` int(11) NOT NULL, `val_total_pedido` decimal(18,2) DEFAULT NULL, `dta_pedido` date DEFAULT NULL, `cod_fun` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `pedido` (`cod_pedido`, `val_total_pedido`, `dta_pedido`, `cod_fun`) VALUES (1, '5000.00', '2022-11-08', 1), (2, '7200.00', '2022-11-08', 1), (3, '3200.00', '2022-11-08', 2), (4, '9000.00', '2022-11-08', 3);
  13. Existe algum segredo para trabalhar com data no Mysql Um outro teste SELECT * FROM `funcionario` WHERE funcionario.dta_admissao BETWEEN 1999-01-01 AND 2022-01-01 and funcionario.cod_func_supervisor IS NULL Eu tenho um funcionario com data_admissao com conteudo igual 2021-11-01 O comando acima n deveria retornar este registro?
  14. pessoal eu to confuso quanto a uso de Mysql com esses dados coisa boba com 4 registro cod_dependente cod_func nome_depedente dta_nascimento des_sexo 12PATRICIA1990-01-21F4 2JOHN KENNEDY SOUZA1985-0 3-21M11PATRICIA2001-01-21F2 4JOSE1994-01-21F SELECT * FROM `dependentes` where dta_nascimento >= 2000-01-01 Eu uso o seguinte comando sql e retorna nenhum registo.
  15. UPDATE OR INSERT INTO RELTRPPDV ( LOJ_CODIGO ,PDV_CODIGO ,PRO_CODIGO ,TRP_CODIGO ,TPD_SEQUENCIA ) VALUES ( 1 ,1 ,15604 ,10 ,10) WHERE LOJ_CODIGO = 1 AND PDV_CODIGO = 1 AND TRP_CODIGO = 1 Ele da um erro no Where Como eu faço um SQL update nesta condição?
  16. Pessoal Alguém sabe porque eu consigo usar este comando PostMessage(DBGrid1.Handle, WM_HSCROLL, 0, 0); PostMessage(DBGrid1.Handle, WM_HSCROLL, 1 ,0); Pra quem não sabe - Este comando eu consigo simulado o clique do Scroll pra direita ou pra esquerta no botão por exemplo
  17. Ola, Sabem alterar as cores dos itens do RadioGroup Eu colquei um form de uma azul, e queria deixar o radio pegando a cor do fundo ok - porem a fonte ficar branca. Ele não fica branco de de jeito nenhum Var i : Integer; begin // Para trocar as cores dos botoes do RadioGroup for i := 0 to RADIOGROUP1.Items.Count-1 do begin TRadioButton(RADIOGROUP1.Controls[i]).Font.Color := clGreen; TRadioButton(RADIOGROUP1.Controls[i]).Font.Style := [fsBold]; end; TRadioButton(RADIOGROUP1.Controls[RADIOGROUP1.ItemIndex]).Font.Color := clRed; TRadioButton(RADIOGROUP1.Controls[RADIOGROUP1.ItemIndex]).Font.Style := [fsBold]; end; Já coloquei a cor de fonte do form em branco e nada tambem
  18. Pessoal Seguinte Eu queria alterar uma tabela que seria assim update nfe set nf.finalidade= 1 e tenho uma outra tabela select v.status from venda v where v.status = 'R' E possivel fazer isto com where simples e também inner join?
  19. Resolvido pessoal, se puder fechar ! A solução e: UTF8Decode no JSON para envio OK! Como postei toda solução aqui, caso alguém precise já fica a dica! Forte a abraço a todos.
  20. Muito estranho o idHttp esta enviando nada! Eu até uma VCL zerado e coloquei apenas em uses IdServerIOHandler, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdCoderMIME, uLkJSON,XSuperObject; var idHttp:TIdHTTP; SoketSSL:TIdSSLIOHandlerSocketOpenSSL; JsonStreamRetorno, JsonStreamEnvio: TStringStream; SJson: String; begin idHttp := tidHttp.Create(self); with idHttp.Request.CustomHeaders do begin Clear; Values['Content-Type'] := 'application/json'; end; SoketSSL := TIdSSLIOHandlerSocketOpenSSL.Create(self); idHttp.IOHandler := SoketSSL; SJson :='{ "pagador": { "cpfCnpj": "13259086000113", "nome:"TESTE"}}'; JsonStreamEnvio := TStringStream.Create(SJson); JsonStreamRetorno := TStringStream.Create(''); idhttp.Post('http://webhookinbox.com/view/iiZ4ti1N/',JsonStreamEnvio,JsonStreamRetorno); ShowMessage(JsonStreamRetorno.DataString); Inventei um conteudo JSON bobo atoa e tem mesmo comportamento não enviar pro webhookinbox que vc sugeriu!
  21. Cara, no postman mandou a o request pro endereço endereço que vc disse: http://webhookinbox.com/ Mas com idtpp passou pelo meu post porem n mandou nada pro endpoint http://webhookinbox.com/ e retornou um HTML todo estranho no postman retorna o OK com 200 No idHtpp passa retorna 200 com um HTML todo estranho e como disse acima não manda nada pro endpoint http://webhookinbox.com/
  22. Bacana no postman mandou ma sno idtpp deu acess violantion hahahaha, e com inter comunica
  23. No PostMan peguei o mesmo JSON gerado pelo delphi e enviou, so troquei claro o '#$D#$A' do JSON gerado pelo delphi Retornou normalmente status 200 { "seuNumero": "1383", "nossoNumero": "00845404898", "codigoBarras": "07791905600000010000001112050675100845404898", "linhaDigitavel": "07790001161205067510208454048987190560000001000" }
  24. Bom dia Ainda mechendo no componente do post Consegui avançar um pouco ! Consigui recuperar o boleto e gerar o PDF dele. Mas o endpoint de envio do boleto da erro - ao chamar a GerarBoleto Porem o envio do boleto retorna erro: HTTP/1.0 400 Bad Request {"status":400,"title":"Falha durante a execução da request","detail":"Verifique se os dados informados estão de acordo com a documentação disponibilizada e tente novamente","violacoes":[{"razao":"O valor requerido no Body não foi informado","propriedade":"body"}]} Código de retorno: 400 O json gerado fica assim '{'#$D#$A' "pagador":{'#$D#$A' "cnpjCpf":"01281218000124",'#$D#$A' "nome":"BIO MOVEIS E DECORACOES LTDA - ME",'#$D#$A' "email":"",'#$D#$A' "telefone":"",'#$D#$A' "cep":"09133000",'#$D#$A' "numero":"552",'#$D#$A' "complemento":"",'#$D#$A' "bairro":"VILA GUARARA",'#$D#$A' "cidade":"S�O PAULO",'#$D#$A' "uf":"SP",'#$D#$A' "endereco":"EST DO PEDROSO",'#$D#$A' "ddd":"",'#$D#$A' "tipoPessoa":"FISICA"'#$D#$A' },'#$D#$A' "dataEmissao":"2022-07-23",'#$D#$A' "seuNumero":"1377",'#$D#$A' "dataVencimento":"2022-07-19",'#$D#$A' "mensagem":{'#$D#$A' "linha1":"",'#$D#$A' "linha2":"",'#$D#$A' "linha3":"",'#$D#$A' "linha4":"",'#$D#$A' "linha5":""'#$D#$A' },'#$D#$A' "desconto1":{'#$D#$A' "codigoDesconto":"NAOTEMDESCONTO",'#$D#$A' "taxa":0,'#$D#$A' "valor":0,'#$D#$A' "data":""'#$D#$A' },'#$D#$A' "desconto2":{'#$D#$A' "codigoDesconto":"NAOTEMDESCONTO",'#$D#$A' "taxa":0,'#$D#$A' "valor":0,'#$D#$A' "data":""'#$D#$A' },'#$D#$A' "desconto3":{'#$D#$A' "codigoDesconto":"NAOTEMDESCONTO",'#$D#$A' "taxa":0,'#$D#$A' "valor":0,'#$D#$A' "data":""'#$D#$A' },'#$D#$A' "valorNominal":64.87,'#$D#$A' "valorAbatimento":0,'#$D#$A' "multa":{'#$D#$A' "codigoMulta":"NAOTEMMULTA",'#$D#$A' "data":"",'#$D#$A' "valor":0,'#$D#$A' "taxa":0'#$D#$A' },'#$D#$A' "mora":{'#$D#$A' "codigoMora":"ISENTO",'#$D#$A' "data":"",'#$D#$A' "valor":0,'#$D#$A' "taxa":0'#$D#$A' },'#$D#$A' "cnpjCPFBeneficiario":"08030107000194",'#$D#$A' "numDiasAgenda":"SESSENTA"'#$D#$A'}' Logo apos passar na linha: SJson := GenerateReadableText(js,i); Por fim tenta enviar e da o erro no post idhttp.Post('https://cdpj.partners.bancointer.com.br/cobranca/v2/boletos',JsonStreamEnvio,JsonStreamRetorno); A proposito o codigo completo da unit unit uBancoInter; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Controls, Vcl.Dialogs, Vcl.StdCtrls, IdServerIOHandler, IdSSL, IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdCoderMIME, uLkJSON,XSuperObject; const numDiasAgenda:array[0..2] of string = ( 'ZERO', 'TRINTA', 'SESSENTA'); codigoDesconto:array[0..6] of string = ( 'NAOTEMDESCONTO', 'VALORFIXODATAINFORMADA', 'PERCENTUALDATAINFORMADA', 'VALORANTECIPACAODIACORRIDO', 'VALORANTECIPACAODIAUTIL', 'PERCENTUALVALORNOMINALDIACORRIDO', 'PERCENTUALVALORNOMINALDIAUTIL'); codigoMulta:array[0..2] of string = ( 'NAOTEMMULTA', 'VALORFIXO', 'PERCENTUAL'); codigoMora:array[0..2] of string = ( 'VALORDIA', 'TAXAMENSAL', 'ISENTO'); filtaPor:array[0..3] of string = ( 'PAGOS', 'EXPIRADOS', 'VENCIDOSAVENCER', 'TODOSBAIXADOS'); ordenarPor:array[0..6] of string = ( 'NOSSONUMERO', 'DATAVENCIMENTO_DSC', 'NOMESACADO', 'VALOR_ASC', 'VALOR_DSC', 'STATUS_ASC', 'STATUS_DS'); codigoBaixa:array[0..7] of string = ( 'ACERTOS', 'PROTESTADO', 'DEVOLUCAO', 'PROTESTOAPOSBAIXA', 'PAGODIRETOAOCLIENTE', 'SUBISTITUICAO', 'FALTADESOLUCAO', 'APEDIDODOCLIENTE'); diasBaixas:array[0..3] of string = ( 'Hoje', 'SeteDias', 'QuinzeDias', 'TrintaDias'); type TVariantArray = array of array of variant; TipoData = ( Vencimento, Emissao); TipoSituacao = ( Pagos, Expirados, VencidosAVencer, TodosBaixados ); TipoDiasBaixa = ( Hoje, SeteDias, QuinzeDias, TrintaDias); TipoBaixa = ( Acertos, Protestado, Devolucao, ProtestoAposBaixa, PagoDiretoAoCliente, Subistituicao, FaltaDeSolucao, APedidoDoCliente); TipoOrdem = ( NossoNumero, DataVencimento_DSC, NomeSacado, Valor_ASC, Valor_DSC, Status_ASC, Status_DS); TipoMora = ( ValorDia, TaxaMensal, Isento); TipoMulta = ( NaoTemMulta, ValorFixo, Percentual); TipoDesconto = ( NaoTemDesconto, ValorFixoDataInformada, PercentualDataInformada, ValorAntecipadoDiaCorrido, ValorAntecipadoDiaUtil, PercentualValorNominalDiaCorrido, PercentualValorNominalDiaUtil); TipoAgenda = ( Zero, Trinta, Sessenta); TipoPessoa = ( Fisica, Juridica); TPagador = Class(Tcomponent) private ftipopessoa:TipoPessoa; fnome:string; // max 100 fendereco:string; //max 90 fnumero:string; // max 10 fcomplemento:string; //max 30 fbairro:string; // max 60 fcidade:string; fuf:string; fcep:string; // max 8 fcnpjCPF:string; femail:string; // max 50 fddd:string; // max 2 ftelefone:string; //max 9 public published property TipoPessoa:TipoPessoa read ftipopessoa write ftipopessoa; property Nome:string read fnome write fnome; property Endereco:string read fendereco write fendereco; property Numero:string read fnumero write fnumero; property Complemento:string read fcomplemento write fcomplemento; property Bairro:string read fbairro write fbairro; property UF:string read fuf write fuf; property CEP:string read fcep write fcep; property CNPJ_CPF:string read fcnpjCPF write fcnpjCPF; property Email:string read femail write femail; property Telefone:string read ftelefone write ftelefone; property DDD:string read fddd write fddd; property Cidade:string read fcidade write fcidade; End; TDesconto1 = Class(TComponent) private fcodigodesc:TipoDesconto; fdatadesc:tdate; ftaxa:double; fvalor:double; public published property CodigoDesconto:TipoDesconto read fcodigodesc write fcodigodesc; property DataDesconto:tdate read fdatadesc write fdatadesc; property Taxa:double read ftaxa write ftaxa; property Valor:double read fvalor write fvalor; End; TDesconto2 = Class(TComponent) private fcodigodesc:TipoDesconto; fdatadesc:tdate; ftaxa:double; fvalor:double; public published property CodigoDesconto:TipoDesconto read fcodigodesc write fcodigodesc; property DataDesconto:tdate read fdatadesc write fdatadesc; property Taxa:double read ftaxa write ftaxa; property Valor:double read fvalor write fvalor; End; TDesconto3 = Class(TComponent) private fcodigodesc:TipoDesconto; fdatadesc:tdate; ftaxa:double; fvalor:double; public published property CodigoDesconto:TipoDesconto read fcodigodesc write fcodigodesc; property DataDesconto:tdate read fdatadesc write fdatadesc; property Taxa:double read ftaxa write ftaxa; property Valor:double read fvalor write fvalor; End; //Classe responsavel por retornar uma lista de boletos gerando a patir de um dia após //Classe responsavel por recuperar os dados do Boleto detalhado TDadosDoBoleto = class(Tcomponent) public private protected published end; //Classe responsavel por baixar um boleto no formato pdf em base64 TPDFdoBoleto = class(Tcomponent) public private fNossoNumero:string; protected published property NossoNumero: String read fNossoNumero write fNossoNumero; end; TMesangem = class(Tcomponent) public private fmensagem1,fmensagem2,fmensagem3,fmensagem4,fmensagem5:string; protected published //maximo 78 caracteres por mensagem property Mensagem1: String read fMensagem1 write fMensagem1; property Mensagem2: String read fMensagem2 write fMensagem2; property Mensagem3: String read fMensagem3 write fMensagem3; property Mensagem4: String read fMensagem4 write fMensagem4; property Mensagem5: String read fMensagem5 write fMensagem5; end; TMulta = class(Tcomponent) public private fcodigoMulta:TipoMulta; fdata:tdate; ftaxa:double; fvalor:double; protected published property CodigoMulta: TipoMulta read fcodigoMulta write fcodigoMulta; property DataAContar: Tdate read fdata write fdata; property Taxa: double read ftaxa write ftaxa; property Valor: double read fvalor write fvalor; end; TMora = class(Tcomponent) public private fcodigoMora:TipoMora; fdata:tdate; ftaxa:double; fvalor:double; protected published property CodigoMora: TipoMora read fcodigoMora write fcodigoMora; property DataAContar: Tdate read fdata write fdata; property Taxa: double read ftaxa write ftaxa; property Valor: double read fvalor write fvalor; end; TCertificado = class(Tcomponent) private fcertfile:string; fkeyfile:string; frootcertfile:string; published property CertFile:string read fcertfile write fcertfile; property KeyFile:string read fkeyfile write fkeyfile; property RootCertFile:string read frootcertfile write frootcertfile; end; //Classe resposavel por gerar novo boleto no banco TBancoInter = class(Tcomponent) private fconta:string; fseuNumero:string; //15 maximo fvalorNorminal:double; fvalorAbatimento:double; fDataEmissao:Tdate; fDataVencimento:Tdate; fpagador:TPagador; fmensagem:TMesangem; fmulta:TMulta; fmora:TMora; //fdataLimite:TipoAgenda; fdesconto1:TDesconto1; fdesconto2:TDesconto2; fdesconto3:TDesconto3; fCodigoBarras:string; fLinhaDigitavel:string; fNossoNumero:string; fcpf_cnpj:string; fnumDiasAgenda:TipoAgenda; fcertificado:TCertificado; fSitpagamento:string; fSituacao:string; fValorPago:double; fDataPagamento:tdate; function MontaDados:Tstringlist; public constructor Create( AOwner : TComponent); override; Destructor Destroy; override ; Function GerarBoleto:TStringList; function GetCodigoBarras:string; function GetLinhaDigitavel:string; function GetNossoNumero:string; //Consulta Pagamento procedure Consulta(NossoNumero:string); function ConsultaLita(FiltraPorSituacao:TipoSituacao;FiltrarPorData:TipoData;FiltrarDias:TipoDiasBaixa):Tstringlist; function ConsultaUmBoleto(NossoNumero:string):Tstringlist; procedure BaixaBoleto(NossoNumero:string;CodigoBaixa:TipoBaixa); procedure RecuperaBoletoPDF(NossoNumero,LocalPath:string); protected published property NumeroConta: String read fconta write fconta; property CPF_CNPJ_Beneficiario:string read fcpf_cnpj write fcpf_cnpj; property SeuNumero: String read fseuNumero write fseuNumero; property ValorNorminal: double read fvalorNorminal write fvalorNorminal; property ValorAbatimento: double read fvalorAbatimento write fvalorAbatimento; property DataEmissao: Tdate read fDataEmissao write fDataEmissao; property Vencimento: Tdate read fDataVencimento write fDataVencimento; //property DataLimite: TipoAgenda read fdataLimite write fdataLimite; property Pagador: TPagador read fpagador write fpagador ; property Mensagem: TMesangem read fMensagem write fmensagem ; property Multa: TMulta read fmulta write fmulta; property Mora: TMora read fmora write fmora ; property Desconto1:TDesconto1 read fdesconto1 write fdesconto1; property Desconto2:TDesconto2 read fdesconto2 write fdesconto2; property Desconto3:TDesconto3 read fdesconto3 write fdesconto3; property NumDiasAgenda:TipoAgenda read fnumDiasAgenda write fnumDiasAgenda; property Certificado:TCertificado read fcertificado write fcertificado; end; function RetCodigoDesconto(valor:TipoDesconto):string; function RetCodigoBaixa(valor:TipoBaixa):string; function RetTipoOrdem(valor:TipoOrdem):string; function RetCodigoMora(valor:TipoMora):string; function RetCodigoMulta(valor:TipoMulta):string; function RetDiasAgenda(valor:TipoAgenda):string; function RetData(data:tdate):string; function strzero(valor1:integer;valor2:integer):string; function numdos(valor:double):string; function RetTipoPessoa(valor:TipoPessoa):string; function RetSituacao(valor:TipoSituacao):string; function RetDataFiltro(valor:TipoData):string; procedure ConfiguraSSl(ConfSSL:TIdSSLIOHandlerSocketOpenSSL;ArqCertFile,ArqKeyFile:string); Procedure ConfiguraIndy(ConfInd:TIdHTTP;NumConta:string); procedure Register; implementation procedure Register; begin RegisterComponents('Aprendendo', [TBancoInter]); end; function numdos(valor:double):string; var vtexto,resultado:string; begin vtexto := FloatToStr(valor); resultado := StringReplace(vtexto,'.','',[rfReplaceAll]); resultado := StringReplace(resultado,',','.',[rfReplaceAll]); result := trim(resultado); end; procedure ConfiguraSSl(ConfSSL:TIdSSLIOHandlerSocketOpenSSL;ArqCertFile,ArqKeyFile:string); begin //configurando o soketssl with ConfSSL.SSLOptions do begin Method := sslvSSLv23; SSLVersions := [sslvSSLv23]; CertFile := ArqCertFile; KeyFile := ArqKeyFile; end; end; Procedure ConfiguraIndy(ConfInd:TIdHTTP;NumConta:string); begin ConfInd.HandleRedirects:=True; with confind.Request.CustomHeaders do begin Clear; Values['Authorization'] := 'Bearer bddsss7e-a749-4cce-9dfe-b30fdfdfdac7e446'; end; { with confind.Request.CustomHeaders do begin Clear; Add('Content-Type: application/json'); /Add('x-inter-conta-corrente: '+NumConta); end; } end; function strzero(valor1:integer;valor2:integer):string; var monta:string; tira,ia:integer; begin if valor2=0 then begin result:=''; exit; end; monta:=trim(inttostr(valor1)); tira:=length(monta); if tira>valor2 then result := inttostr(valor1); tira:=valor2-tira; monta:=''; for ia:=1 to tira do monta:=monta+'0'; monta:=monta+trim(inttostr(valor1)); result := monta end; function RetData(data:tdate):string; var year,month,day:word; begin DecodeDate(data,year,month,day); if year<2021 then result := '' else result := strzero(year,4)+ '-' + strzero(month,2) + '-' + strzero(day,2); end; function RetTipoOrdem(valor:TipoOrdem):string; begin case valor of NossoNumero: result := ordenarPor[0] ; DataVencimento_DSC: result := ordenarPor[1] ; NomeSacado: result := ordenarPor[2] ; Valor_ASC: result := ordenarPor[3] ; Valor_DSC: result := ordenarPor[4] ; Status_ASC: result := ordenarPor[5] ; Status_DS: result := ordenarPor[6] ; end; end; function RetSituacao(valor:TipoSituacao):string; begin case valor of Pagos: result := filtaPor[0]; Expirados: result := filtaPor[1]; VencidosAVencer: result := filtaPor[2]; TodosBaixados: result := filtaPor[3]; end; end; function RetCodigoMora(valor:TipoMora):string; begin case valor of ValorDia: result := codigoMora[0]; TaxaMensal: result := codigoMora[1]; Isento: result := codigoMora[2]; end; end; function RetCodigoMulta(valor:TipoMulta):string; begin case valor of NaoTemMulta: result := codigoMulta[0]; ValorFixo: result := codigoMulta[1]; Percentual: result := codigoMulta[2]; end; end; function RetDiasAgenda(valor:TipoAgenda):string; begin case valor of Zero: result := numDiasAgenda[0]; Trinta: result := numDiasAgenda[1]; Sessenta: result := numDiasAgenda[2]; end; end; function RetDataFiltro(valor:TipoData):string; begin case valor of Vencimento: result := 'VENCIMENTO' ; Emissao: result := 'EMISSAO'; end; end; function RetCodigoBaixa(valor:TipoBaixa):string; begin case valor of Acertos: result := codigoBaixa[0]; Protestado: result := codigoBaixa[1]; Devolucao: result := codigoBaixa[2]; ProtestoAposBaixa: result := codigoBaixa[3]; PagoDiretoAoCliente: result := codigoBaixa[4]; Subistituicao: result := codigoBaixa[5]; FaltaDeSolucao: result := codigoBaixa[6]; APedidoDoCliente: result := codigoBaixa[7]; end; end; function RetCodigoDesconto(valor:TipoDesconto):string; begin case valor of NaoTemDesconto: result := codigoDesconto[0]; ValorFixoDataInformada: result := codigoDesconto[1]; PercentualDataInformada: result := codigoDesconto[2]; ValorAntecipadoDiaCorrido: result := codigoDesconto[3]; ValorAntecipadoDiaUtil: result := codigoDesconto[4]; PercentualValorNominalDiaCorrido: result := codigoDesconto[5]; PercentualValorNominalDiaUtil: result := codigoDesconto[6]; end; end; function RetTipoPessoa(valor:TipoPessoa):string; begin case valor of Fisica: result := 'FISICA' ; Juridica: result := 'JURIDICA' ; end; end; { TBancoInter } procedure TBancoInter.BaixaBoleto(NossoNumero: string; CodigoBaixa: TipoBaixa); var SJson,StringBaixa:string; DadosJson:TStringList; JsonStreamRetorno,JsonStreamEnvio : TStringStream; idHttp:TIdHTTP; SoketSSL:TIdSSLIOHandlerSocketOpenSSL; i:integer; begin StringBaixa := NossoNumero+'/baixas'; JsonStreamRetorno := TStringStream.Create; idHttp := tidHttp.Create(self); SoketSSL := TIdSSLIOHandlerSocketOpenSSL.Create(self); SJson :='{"codigoBaixa":"'+RetCodigoBaixa(CodigoBaixa)+'"}'; JsonStreamEnvio := TStringStream.Create(SJson); //configurando o soketssl ConfiguraSSl(SoketSSL,Certificado.CertFile,Certificado.KeyFile); //linkando o soketssl ao idhttp idHttp.IOHandler := SoketSSL; ConfiguraIndy(IdHTTP,NumeroConta); //enviando via https DadosJson := TStringList.Create; try idhttp.Post('https://apis.bancointer.com.br/openbanking/v1/certificado/boletos/'+StringBaixa,JsonStreamEnvio,JsonStreamRetorno); except on E:EIdHTTPProtocolException do DadosJson.Add(IdHTTP.ResponseText+#13#10+e.ErrorMessage) else showexception(exceptobject, exceptaddr); end; if IdHTTP.ResponseCode<>204 then begin DadosJson.Add('Código de retorno: '+inttostr(IdHTTP.ResponseCode)); DadosJson.Add(''); end; if JsonStreamRetorno.DataString<>'' then DadosJson.add(JsonStreamRetorno.DataString); if IdHTTP.ResponseCode<>204 then begin DadosJson.Add('Transação não pode ser inicada ('+inttostr(IdHTTP.ResponseCode)+').'); showmessage(DadosJson.Text); DadosJson.Clear; end; JsonStreamRetorno.Free; JsonStreamEnvio.Free; SoketSSL.Free; idHttp.Free; end; procedure TBancoInter.Consulta(NossoNumero: string); begin end; function TBancoInter.ConsultaLita(FiltraPorSituacao:TipoSituacao;FiltrarPorData:TipoData;FiltrarDias:TipoDiasBaixa):Tstringlist; var DadosJson:TStringList; JsonStreamRetorno : TStringStream; idHttp:TIdHTTP; SoketSSL:TIdSSLIOHandlerSocketOpenSSL; i:integer; montaconsulta,SJson:string; js:TlkJSONobject; begin JsonStreamRetorno := TStringStream.Create; idHttp := tidHttp.Create(self); SoketSSL := TIdSSLIOHandlerSocketOpenSSL.Create(self); //configurando o soketssl ConfiguraSSl(SoketSSL,Certificado.CertFile,Certificado.KeyFile); //linkando o soketssl ao idhttp idHttp.IOHandler := SoketSSL; ConfiguraIndy(IdHTTP,NumeroConta); //enviando via https DadosJson := TStringList.Create; try montaconsulta := 'filtrarPor=' + RetSituacao(FiltraPorSituacao); montaconsulta := montaconsulta + '&filtrarDataPor=' + RetDataFiltro(FiltrarPorData); if FiltrarDias=Hoje then montaconsulta := montaconsulta + '&dataInicial='+RetData(now) else if FiltrarDias=SeteDias then montaconsulta := montaconsulta + '&dataInicial='+RetData(date - 7) else if FiltrarDias=QuinzeDias then montaconsulta := montaconsulta + '&dataInicial='+RetData(date - 15) else if FiltrarDias=TrintaDias then montaconsulta := montaconsulta + '&dataInicial='+RetData(date - 30); montaconsulta := montaconsulta + '&dataFinal=' + RetData(date + 30); IdHTTP.Get('https://cdpj.partners.bancointer.com.br/cobranca/v2/boletos?'+montaconsulta,JsonStreamRetorno); except on E:EIdHTTPProtocolException do DadosJson.Add(IdHTTP.ResponseText+#13#10+e.ErrorMessage) else showexception(exceptobject, exceptaddr); end; if IdHTTP.ResponseCode<>200 then begin DadosJson.Add('Código de retorno: '+inttostr(IdHTTP.ResponseCode)); DadosJson.Add(''); end; if JsonStreamRetorno.DataString<>'' then DadosJson.add(JsonStreamRetorno.DataString); if IdHTTP.ResponseCode<>200 then begin DadosJson.Add('Transação não pode ser inicada ('+inttostr(IdHTTP.ResponseCode)+').'); showmessage(DadosJson.Text); DadosJson.Clear; end else begin //aqui tratamos os dados recebidos js := TlkJSON.ParseText(DadosJson.Text) as TlkJSONobject; i:=0; SJson := GenerateReadableText(js,i); DadosJson.Clear; DadosJson.Add(SJson); //result.Add(SJson); end; result := DadosJson; JsonStreamRetorno.Free; SoketSSL.Free; idHttp.Free; end; function TBancoInter.ConsultaUmBoleto(NossoNumero: string): Tstringlist; var DadosJson:TStringList; JsonStreamRetorno : TStringStream; idHttp:TIdHTTP; SoketSSL:TIdSSLIOHandlerSocketOpenSSL; i:integer; SJson:string; js:TlkJSONobject; begin JsonStreamRetorno := TStringStream.Create; idHttp := tidHttp.Create(self); SoketSSL := TIdSSLIOHandlerSocketOpenSSL.Create(self); //configurando o soketssl ConfiguraSSl(SoketSSL,Certificado.CertFile,Certificado.KeyFile); //linkando o soketssl ao idhttp idHttp.IOHandler := SoketSSL; ConfiguraIndy(IdHTTP,NumeroConta); //enviando via https DadosJson := TStringList.Create; try IdHTTP.Get('https://cdpj.partners.bancointer.com.br/cobranca/v2/boletos/' + NossoNumero,JsonStreamRetorno); except on E:EIdHTTPProtocolException do DadosJson.Add(IdHTTP.ResponseText+#13#10+e.ErrorMessage) else showexception(exceptobject, exceptaddr); end; if IdHTTP.ResponseCode<>200 then begin DadosJson.Add('Código de retorno: '+inttostr(IdHTTP.ResponseCode)); DadosJson.Add(''); end; if JsonStreamRetorno.DataString<>'' then DadosJson.add(JsonStreamRetorno.DataString); if IdHTTP.ResponseCode<>200 then begin DadosJson.Add('Transação não pode ser inicada ('+inttostr(IdHTTP.ResponseCode)+').'); showmessage(DadosJson.Text); DadosJson.Clear; end else begin //aqui tratamos os dados recebidos js := TlkJSON.ParseText(DadosJson.Text) as TlkJSONobject; i:=0; SJson := GenerateReadableText(js,i); DadosJson.Clear; DadosJson.Add(SJson); //result.Add(SJson); end; result := DadosJson; JsonStreamRetorno.Free; SoketSSL.Free; idHttp.Free; end; constructor TBancoInter.Create(AOwner: TComponent); begin inherited; fpagador := TPagador.Create(SELF); fpagador.Name:='Pagador'; fpagador.SetSubComponent(true); fmensagem := TMesangem.Create(self); fmensagem.Name := 'Mensagem'; fmensagem.SetSubComponent(true); fmulta := TMulta.Create(self); fmulta.Name := 'Multa'; fmulta.SetSubComponent(true); fmora := TMora.Create(self); fmora.Name := 'Mora'; fmora.SetSubComponent(true); fdesconto1 := TDesconto1.Create(self); fdesconto1.Name:='Desconto1'; fdesconto1.SetSubComponent(true); fdesconto2 := TDesconto2.Create(self); fdesconto2.Name:='Desconto2'; fdesconto2.SetSubComponent(true); fdesconto3 := TDesconto3.Create(self); fdesconto3.Name:='Desconto3'; fdesconto3.SetSubComponent(true); fcertificado := TCertificado.Create(self); fcertificado.Name:='Certificado'; fcertificado.SetSubComponent(true); end; destructor TBancoInter.Destroy; begin fmora.Free; fpagador.Free; fmensagem.Free; fmulta.Free; fdesconto1.Free; fdesconto2.Free; fdesconto3.Free; inherited; end; function TBancoInter.GerarBoleto: TStringList; var DadosEnvio:TStringList; JsonStreamRetorno, JsonStreamEnvio: TStringStream; idHttp:TIdHTTP; SoketSSL:TIdSSLIOHandlerSocketOpenSSL; i:integer; js:TlkJSONobject; SJson:string; ws: TlkJSONstring; begin idHttp := tidHttp.Create(self); SoketSSL := TIdSSLIOHandlerSocketOpenSSL.Create(self); //linkando o soketssl ao idhttp ConfiguraSSl(SoketSSL,Certificado.CertFile,Certificado.KeyFile); idHttp.IOHandler := SoketSSL; //enviando via https ConfiguraIndy(IdHTTP,NumeroConta); DadosEnvio := TStringList.Create; JsonStreamRetorno := TStringStream.Create(''); DadosEnvio.Text := MontaDados.Text; js := TlkJSON.ParseText(Dadosenvio.Text) as TlkJSONobject; i:=0; SJson := GenerateReadableText(js,i); JsonStreamEnvio := TStringStream.Create(SJson); //JsonStreamEnvio := TStringStream.Create(DadosEnvio.Text); DadosEnvio.Clear; try idhttp.Post('https://cdpj.partners.bancointer.com.br/cobranca/v2/boletos',JsonStreamEnvio,JsonStreamRetorno); except on E:EIdHTTPProtocolException do DadosEnvio.Add(IdHTTP.ResponseText+#13#10+e.ErrorMessage) else showexception(exceptobject, exceptaddr); end; if idhttp.ResponseCode<>200 then begin DadosEnvio.Add('Código de retorno: '+inttostr(IdHTTP.ResponseCode)); DadosEnvio.Add(''); end; if JsonStreamRetorno.DataString<>'' then DadosEnvio.add(JsonStreamRetorno.DataString); if idhttp.ResponseCode=200 then begin js := TlkJSON.ParseText(DadosEnvio.Text) as TlkJSONobject; fCodigoBarras := vartostr(js.Field['codigoBarras'].Value); fLinhaDigitavel := vartostr(js.Field['linhaDigitavel'].Value); fNossoNumero := vartostr(js.Field['nossoNumero'].Value); js.Free; end; if IdHTTP.ResponseCode<>200 then showmessage('Transação não pode ser inicada ('+inttostr(IdHTTP.ResponseCode)+').'); idHttp.Free; JsonStreamRetorno.Free; JsonStreamEnvio.Free; result := DadosEnvio; end; function TBancoInter.GetCodigoBarras: string; begin result := fCodigoBarras; end; function TBancoInter.GetLinhaDigitavel: string; begin result := fLinhaDigitavel; end; function TBancoInter.GetNossoNumero: string; begin result := fNossoNumero; end; function TBancoInter.MontaDados: Tstringlist; var Dados:tstringlist; begin Dados := TStringList.Create; // dados do pagador Dados.Add('{'); Dados.Add(' "pagador":{'); dados.Add(' "cnpjCpf":"' + Pagador.CNPJ_CPF + '",'); dados.Add(' "nome":"' + pagador.Nome + '",'); dados.Add(' "email":"' + pagador.Email + '",'); dados.Add(' "telefone":"' + pagador.Telefone + '",'); dados.Add(' "cep":"' + pagador.CEP + '",'); dados.Add(' "numero":"' + pagador.Numero + '",'); dados.Add(' "complemento":"' + pagador.Complemento + '",'); dados.Add(' "bairro":"' + pagador.Bairro + '",'); dados.Add(' "cidade":"' + pagador.Cidade + '",'); dados.Add(' "uf":"' + pagador.UF + '",'); dados.Add(' "endereco":"' + pagador.Endereco + '",'); dados.Add(' "ddd":"' + pagador.DDD + '",'); dados.Add(' "tipoPessoa":"' + RetTipoPessoa(pagador.TipoPessoa) + '"'); Dados.Add(' },'); //dados do boleto Dados.Add(' "dataEmissao":"' + RetData(fDataEmissao) + '",'); Dados.Add(' "seuNumero":"' + SeuNumero + '",'); //Dados.Add(' "dataLimite":"' + RetData(Vencimento) + '",'); Dados.Add(' "dataVencimento":"' + RetData(Vencimento) + '",'); //mensagem no boleto Dados.Add(' "mensagem":{'); dados.Add(' "linha1":"' + Mensagem.Mensagem1 + '",'); dados.Add(' "linha2":"' + Mensagem.Mensagem2 + '",'); dados.Add(' "linha3":"' + Mensagem.Mensagem3 + '",'); dados.Add(' "linha4":"' + Mensagem.Mensagem4 + '",'); dados.Add(' "linha5":"' + Mensagem.Mensagem5 + '"'); Dados.Add(' },'); Dados.Add(' "desconto1":{'); dados.Add(' "codigoDesconto":"' + RetCodigoDesconto(desconto1.CodigoDesconto) + '",'); dados.Add(' "taxa":' + numdos(Desconto1.Taxa) + ','); dados.Add(' "valor":' + numdos(Desconto1.Valor) + ','); dados.Add(' "data":"' + RetData(desconto1.DataDesconto) + '"'); Dados.Add(' },'); Dados.Add(' "desconto2":{'); dados.Add(' "codigoDesconto":"' + RetCodigoDesconto(desconto2.CodigoDesconto) + '",'); dados.Add(' "taxa":' + numdos(Desconto2.Taxa) + ','); dados.Add(' "valor":' + numdos(Desconto2.Valor) + ','); dados.Add(' "data":"' + RetData(desconto2.DataDesconto) + '"'); Dados.Add(' },'); Dados.Add(' "desconto3":{'); dados.Add(' "codigoDesconto":"' + RetCodigoDesconto(desconto3.CodigoDesconto) + '",'); dados.Add(' "taxa":' + numdos(Desconto3.Taxa) + ','); dados.Add(' "valor":' + numdos(Desconto3.Valor) + ','); dados.Add(' "data":"' + RetData(desconto3.DataDesconto) + '"'); Dados.Add(' },'); Dados.Add(' "valorNominal":' + numdos(ValorNorminal) + ','); Dados.Add(' "valorAbatimento":' + numdos(ValorAbatimento) + ','); //multa a ser aplicada Dados.Add(' "multa":{'); dados.Add(' "codigoMulta":"' + RetCodigoMulta(multa.CodigoMulta) + '",'); dados.Add(' "data":"' + RetData(multa.DataAContar) + '",'); dados.Add(' "valor":' + numdos(multa.Valor) + ','); dados.Add(' "taxa":' + numdos(multa.Taxa) ); Dados.Add(' },'); //mora diaria Dados.Add(' "mora":{'); dados.Add(' "codigoMora":"' + RetCodigoMora(mora.CodigoMora) + '",'); dados.Add(' "data":"' + RetData(multa.DataAContar) + '",'); dados.Add(' "valor":' + numdos(mora.Valor) + ','); dados.Add(' "taxa":' + numdos(mora.Taxa) ); Dados.Add(' },'); Dados.Add(' "cnpjCPFBeneficiario":"' + CPF_CNPJ_Beneficiario + '",'); Dados.Add(' "numDiasAgenda":"' + RetDiasAgenda(NumDiasAgenda) + '"'); Dados.Add('}'); result := dados; end; procedure TBancoInter.RecuperaBoletoPDF(NossoNumero, LocalPath: string); var DadosJson:TStringList; JsonStreamRetorno : TStringStream; idHttp:TIdHTTP; SoketSSL:TIdSSLIOHandlerSocketOpenSSL; MStream:TMemoryStream; Decoder:TIdDecoderMIME; Base64: string; begin JsonStreamRetorno := TStringStream.Create; idHttp := tidHttp.Create(self); SoketSSL := TIdSSLIOHandlerSocketOpenSSL.Create(self); //configurando o soketssl ConfiguraSSl(SoketSSL,Certificado.CertFile,Certificado.KeyFile); //linkando o soketssl ao idhttp idHttp.IOHandler := SoketSSL; ConfiguraIndy(IdHTTP,NumeroConta); //enviando via https DadosJson := TStringList.Create; try IdHTTP.Get('https://cdpj.partners.bancointer.com.br/cobranca/v2/boletos/' + NossoNumero + '/pdf',JsonStreamRetorno); except on E:EIdHTTPProtocolException do DadosJson.Add(IdHTTP.ResponseText+#13#10+e.ErrorMessage) else showexception(exceptobject, exceptaddr); end; if IdHTTP.ResponseCode<>200 then begin DadosJson.Add('Código de retorno: '+inttostr(IdHTTP.ResponseCode)); DadosJson.Add(''); DadosJson.Add('Transação não pode ser inicada ('+inttostr(IdHTTP.ResponseCode)+').'); showmessage(DadosJson.Text); DadosJson.Clear; end; if (IdHTTP.ResponseCode=200) and (JsonStreamRetorno.DataString<>'') then begin Decoder := TIdDecoderMIME.Create(nil); MStream := TMemoryStream.Create; Base64 := JsonStreamRetorno.DataString; Decoder.DecodeStream(Base64,MStream); MStream.SaveToFile(LocalPath+'\boleto-inter-' + NossoNumero + '.pdf'); FreeAndNil(Decoder); FreeAndNil(MStream); ShowMessage('Boleto Baixado Com Sucesso!'); end; JsonStreamRetorno.Free; SoketSSL.Free; idHttp.Free; end; end.
  25. Eu até consegui pegar o token Agora eu n seu como pegar os boletos pelo postman conforme documentação : https://developers.bancointer.com.br/reference/pesquisarboletos Onde eu passo esses QUERY PARAMS no postman?
×
×
  • 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...