Ir para conteúdo
  • Cadastre-se

johnbh3

Membros
  • Total de ítens

    703
  • Registro em

  • Última visita

Tudo que johnbh3 postou

  1. 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
  2. johnbh3

    NFSe Padrão Nacional

    @Italo Giurizzato Junior Sobre esta postagem - existe alguma previsão dos município começarem a operar isto?
  3. 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);
  4. 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?
  5. 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.
  6. 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?
  7. 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
  8. 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
  9. 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?
  10. 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.
  11. 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!
  12. 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/
  13. Bacana no postman mandou ma sno idtpp deu acess violantion hahahaha, e com inter comunica
  14. 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" }
  15. 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.
  16. 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?
  17. Pessoal Neste topico Parece que tinha solução para API do banco inter. Vejo o site dos cara eles fizeram favor de mudar a forma que fala com a API, antes geravam um arquivo certificado e agora aponta pra outo endereço https://developers.bancointer.com.br/reference/token-1 Me tire uma duvida basedo neste link como que faço pra passar os parametros corretos no postman por exemplo? Onde devo informar client_id e client_secret e scope
  18. ACBr_NFeDanfeFR.dpk(94) Fatal: E2202 Required package 'fs25' not found Sabem me dizer pq deu este erro? Somente o DanFe deu isso. Estou usando o delphi sydney pq ele reclamada do fs25? Os outros outros componentes do fastreport instalou.
  19. Desculpe pessoal reinicie o PC e por algum motivo deu ! Coisas de windows
  20. johnbh3

    Instalação do ACBR

    Pessoal estou usando o instalador do ACBR acabei de baixar no delphi delphi sydney E trava quando na parte inicial passa pelo adicionar path e trava em adicionando variavel de ambiente.
  21. unit uVendaItem; interface type TVendaItem = class private FIDVendaItem: Integer; FIDVenda: Integer; FProduto: String; { private declarations } protected { protected declarations } public { public declarations } property IDVendaItem: Integer read FIDVendaItem write FIDVendaItem; property IDVenda: Integer read FIDVenda write FIDVenda; property Produto: string read FProduto write FProduto; published { published declarations } end; implementation end. unit uVenda; interface uses System.Generics.Collections, System.SysUtils, uVendaItem, Dialogs; type TVenda = class private FIDVenda: Integer; FData: TDateTime; FListaVendaItem: TObjectList<TVendaItem>; { private declarations } protected { protected declarations } public { public declarations } property IDVenda: Integer read FIDVenda write FIDVenda; property Data: TDateTime read FData write FData; property ListaVendaItem: TObjectList<TVendaItem> read FListaVendaItem write FListaVendaItem; constructor Create; destructor Destroy; override; procedure AdicionarVendaItem(pProduto: String); procedure Remover(Index: Integer); function Count: Integer; published { published declarations } end; implementation { TVenda } procedure TVenda.AdicionarVendaItem(pProduto: String); var I: Integer; begin FListaVendaItem.Add(TVendaItem.Create); I := FListaVendaItem.Count -1; FListaVendaItem[I].IDVendaItem := I; FListaVendaItem[I].IDVenda := FIDVenda; FListaVendaItem[I].Produto := pProduto; end; function TVenda.Count: Integer; begin Result := FListaVendaItem.Count; end; constructor TVenda.Create; begin inherited; FIDVenda := 0; FData := EncodeDate(1900,1,1); FListaVendaItem := TObjectList<TVendaItem>.Create; end; destructor TVenda.Destroy; begin FreeAndNil(FListaVendaItem); inherited; end; procedure TVenda.Remover(Index: Integer); begin if Index < Count then FListaVendaItem.Delete(Index) else ShowMessage('Item não encontrado!'); end; end. O que vocês acham? Agora vou implementar os campos de valores R$ e percorrer a lista a ideia seria esta mesmo?
  22. Faça uma aplicação para simular o funcionamento de um caixa de restaurante, com as seguintes características: Os produtos disponíveis são: Bebidas • Refrigerante = R$ 5,90 p/ und • Água mineral = R$ 4,00 p/und • Cerveja = R$ 8,50 p/und Alimentos • Sanduiche queijo = R$ 20,00 p/und • Sanduiche misto = R$ 29,00 p/und • Self service = R$ 39,90 p/ Kg • Sobremesa = R$ 45,90 p/Kg Brindes • Boné = R$ 49,90 p/und • Chaveiro = R$ 14,90 p/und Deve existir a possibilidade de acrescentar ou excluir produtos à lista. Ao final da digitação dos dados a conta do cliente deve ser mostrada em uma listbox. A aplicação deve permitir cancelar produtos e recalcular a conta do cliente. Pessoal me dêem uma luz, com.o eu poderia fazer isto no listbox? Eu adicionaria no listbox os dados da conta com zeros a direita tipo assim Prod. Nome do prod. Qtde. Valor 0001. produto teste. 10. 100.00 Mas a dúvida como seria recalculado a conta? Através de um while? Isto e um teste pra vaga de emprego. Mas fiquei confuso por usar um listbox. O que eu fiz até agora foi a classe orientada a objetos do cadastro de produto, se fosse se fosse com dbgrid até seria mais tranquilo usando tabela temporária e chamar minha classe pra gravar a venda
  23. Pessoal uma tabela x e y em MySQL X Y a b c d 1 2 1 2 3 3 3 4 4 5 5 6 5 7 7 8 9 1 Retorna o erro Error Code: 1093. You can't specify target table 'y' for update in FROM clause Sabem o motivo?
  24. Pessoal Na transmissão do ESocial existe alguma tag que identificar o sistema que foi transmitido o xml?
  25. \resolvi pessoal obrigado E desculpe o post
×
×
  • 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...