Jump to content

AlexBecker

Membros
  • Content Count

    31
  • Joined

  • Last visited

Community Reputation

10 Good

1 Follower

About AlexBecker

  • Rank
    Membro

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Na verdade pelo array do json isto funciona corretamente mesmo separado, o erro é muito mais 'vergonhoso' do que isto... o erro é simplesmente gerado porque usei um MEMO também para retornos grandes, meu memo estava com worwrap = true, esta quebrando o json... como pode observar justamente onde tem o subItems ele está quebrando para uma próxima linha o que ocasionava o erro quando tentava pegar o valor do json subitems, nada mais que isto... acabei descobrindo por acaso pois como estava quebrando entao alterei a propriedade do mesmo para poder ver a linha toda pois meu monito é 2k podendo visualizar linhas bem longas na tela, fiz isto para encontrar um possível erro de formatação no retorno e a partir dai: LJsonArr := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(ObjetoJson.GetValue('items').ToString),0) as TJSONArray; if (LJsonArr.Count > 0) then for I:=0 to LJsonArr.Count - 1 do begin ObjetoJsonLinha := LJsonArr.Items as TJSONObject; vItensJson := ObjetoJsonLinha.ToString; jstodataset( tbItems, vItensJson ); //showmessage(ObjetoJsonLinha.ToString); try if objetojsonlinha.GetValue('subItems').ToString <> '' then jstodataset ( tbsubItems, objetojsonlinha.GetValue('subItems').ToString ); showmessage( objetojsonlinha.GetValue('subItems').ToString ); except end; end; começou a funcionar normalmente... deu só um pouquinho de raiva na hora rsrsrsrsrsr. Bem, muito obrigado mesmo! suas dicas foram e tem sido de grande ajuda, utilizei exemplos teus e de vários outros programadores da web e tenho conseguido ótimos resultados com performance satisfatória!
  2. tentei mais algumas opções e não deu certo... segue o array contendo apenas 1 item retornado do json: [{"name":"PEDIDO DE TESTE - GRANDE 3 SABORES","quantity":1,"price":0.0,"subItemsPrice":55.98,"totalPrice":55.98,"discount":0.0,"addition":0.0,"externalCode":"25","subIte ms":[{"name":"BORDA DE CHEDDAR","quantity":1,"price":6.0,"totalPrice":6.0,"discount":0.0,"addition":0.0,"externalCode":"3000"}, {"name":"1\/3 3 QUEIJOS","quantity":1,"price":16.66,"totalPrice":16.66,"discount":0.0,"addition":0.0,"externalCode":"30"}, {"name":"1\/3 CALABRESA","quantity":1,"price":15.0,"totalPrice":16.66,"discount":0.0,"addition":1.66,"externalCode":"31"}, {"name":"1\/3 MUSSARELA","quantity":1,"price":10.0,"totalPrice":16.66,"discount":0.0,"addition":6.66,"externalCode":"32"}]}] aqui uma simples leitura do array json em um botao do delphi procedure TfrmPrincipal.BitBtn6Click(Sender: TObject); var LJsonArr : TJSONArray; i: integer; ObjetoJsonLinha : TJSONObject; begin LJsonArr := TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(mJson.Lines.Text),0) as TJSONArray; if (LJsonArr.Count > 0) then for I:=0 to LJsonArr.Count - 1 do begin ObjetoJsonLinha := LJsonArr.Items as TJSONObject; showmessage( objetojsonlinha.GetValue('name').value ); showmessage( objetojsonlinha.GetValue('subItems').value ); end; end; o array é carregado normalmente, quando uilizo o showmessage para mostrar o valor dentro do campo NAME a mensagem é retornada corretamente, quando utilizo o showmessage para mostrar o conteudo ou tento pegar o conteudo dentro do campo subItems ele dá erro de acesso ( erro básico do delphi ). Testando o exemplo que me passou se eu deixo o array completo como acima ele me diz que não é um objeto válido ( pois é um array ) se eu tiro os colches e deixo como objeto json e não array eu clico no botao e ele nao processa nada ( vide imagem ) preciso apenas ler o valor dentro do campo subitens ( que será o array json contendo os valores dos campos subitens, name, quantity, price ( etc etc ), porém sempre que tento acessar isto no delphi com tostring, value ou qualquer outra funcão relacionada a subItems ele dá erro e não consigo resolver isto, já tentei muitos exemplos e nada...
  3. show! eu separei todos os arrays que retornam no json como local de entrega, formas de pagamento, em um memo também e depois disto fiz um jsontodataset, porém com o subitens estava mais dificil fazer mas a base onde consegui retirar é como no teu exemplo, looping no registro json foi o unico jeito mesmo. Muito obrigado!
  4. Olá muito obrigado, na verdade o problema ali é que a primeira linha dos itens não retorna a estrutura completa do objeto/array itens se o mesmo não tem subitens, pelo que vi deveria retornar mesmo em branco o array SubItems com os campos e seus valores mesmo com zero, então assim... lançando a linha: vStringItem := '{"name":"ITEMARRAY","quantity":0,"price":0.0,"subItemsPrice":0.0,"totalPrice":0.0,'+ '"discount":0.0,"addition":0.0,"externalCode":"0","subItems":[{"name":"desc","quantity":0,"price":0.0,"totalPrice":0.0,'+ '"discount":0.0,"addition":0.0,"externalCode":"0"}],"observations":"obs"},'; que na verdade é o objeto do SubItems completo ai o jsontodataset reconhece o array subitens e o campo observacoes porém tenho que conseguir criar o campo manualmente pois o jsontodataset cria automaticamente um campo com 255 caracteres e não entra todo o valor, se alguém tiver um exemplo do JsonToDataset criando os campos com Text, BloB ou variável que aceite mais caracteres ajudaria bastante, encontrei um exemplo com ClientDataSet mas tá bugadasso, estudei ele, tentei alterar e adequar mas não tive sucesso nesta tarefa até agora.
  5. Olá, para finalizar o tópico entramos em contato com a prefeitura, esta repassou o problema a unidade que atende a região e nos novos schemas na NFSe tudo foi resolvido! agradeço a todos!
  6. Olá, acredito que voce não precise se orientar somente pelo componente da JEDIlib basta pegar a data atual e usar o incmonth, logo depois usar a funcao: //## Function PrimeiroDiaUtil(Data : TDateTime) : TDateTime; var Ano, Mes, Dia : word; DiaDaSemana : Integer; begin DecodeDate (Data, Ano, Mes, Dia); Dia := 1; DiaDaSemana := DayOfWeek(Data); if DiaDaSemana = 1 Then begin Dia := 2; end else if DiaDaSemana = 7 Then begin Dia := 3; end; Result := EncodeDate (Ano, Mes, Dia); end; //## para pegar o primeiro dia util do proximo mes, para finalizar informe a data do mes anterior e também pegue o ultimo dia util: //## Function LastDayOfMonth (Data : TDateTime; lSabDom : Boolean) : TDateTime; var Ano, Mes, Dia : word; AuxData : TDateTime; DiaDaSemana : Integer; begin AuxData := FirstDayOfMonth (NextMonth (Data), False) - 1; if lSabDom Then begin DecodeDate (Auxdata, Ano, Mes, Dia); DiaDaSemana := DayOfWeek (AuxData); if DiaDaSemana = 1 Then Dia := Dia - 2 else if DiaDaSemana = 7 Then Dec (Dia); AuxData := EnCodeDate (Ano, Mes, Dia); end; LastDayOfMonth := AuxData; end; //## Se acessar o codigo fonte do Jedi verá que para implementar a diferença de cores no calendário eles usam uma função similar. Caso precise use o decodedate para a sua data atual: var ano, mes, dia: Word; begin DecodeDate(data, ano, mes, dia); e depois com inc e dec no mes voce tem o mes: atual, anterior e posterior.
  7. Olá a todos! estou integrando a api do ifood ao retaguarda e com todas as informações de consumo da API ok, porém estou tendo uma dificuldade em pegar 'SUBDADOS' dentro do array json: [{"name":"PEDIDO DE TESTE - Pastel de palmito","quantity":1,"price":5.0,"subItemsPrice":0,"totalPrice":5.0,"discount":0.0,"addition":0.0,"externalCode":"123"},{"name":"PEDIDO DE TESTE - Item teste","quantity":1,"price":10.0,"subItemsPrice":0,"totalPrice":10.0,"discount":0.0,"addition":0.0,"externalCode":"789"},{"name":"PEDIDO DE TESTE - X-burguer bacon","quantity":1,"price":8.0,"subItemsPrice":0,"totalPrice":8.0,"discount":0.0,"addition":0.0,"externalCode":"7"},{"name":"PEDIDO DE TESTE - Item teste","quantity":1,"price":10.0,"subItemsPrice":0,"totalPrice":10.0,"discount":0.0,"addition":0.0,"externalCode":"789","observations":"COM OBSERVAO"},{"name":"PEDIDO DE TESTE - Item teste","quantity":1,"price":10.0,"subItemsPrice":0,"totalPrice":10.0,"discount":0.0,"addition":0.0,"externalCode":"789","observations":"SEM OBSERVAO"},{"name":"PEDIDO DE TESTE - X-burguer bacon","quantity":1,"price":8.0,"subItemsPrice":1.5,"totalPrice":9.5,"discount":0.0,"addition":0.0,"externalCode":"7","subItems":[{"name":"Alface","quantity":1,"price":1.5,"totalPrice":1.5,"discount":0.0,"addition":0.0,"externalCode":"13"}],"observations":"TESTE COM ALFACE"},{"name":"PEDIDO DE TESTE - GRANDE","quantity":1,"price":0.0,"subItemsPrice":48.0,"totalPrice":48.0,"discount":0.0,"addition":0.0,"externalCode":"25","subItems":[{"name":"BORDA DE CATURPIRY","quantity":1,"price":6.0,"totalPrice":6.0,"discount":0.0,"addition":0.0,"externalCode":"2000"},{"name":"PALMITO","quantity":1,"price":42.0,"totalPrice":42.0,"discount":0.0,"addition":0.0,"externalCode":"33"}],"observations":"TESTE DE PIZZA"},{"name":"PEDIDO DE TESTE - GRANDE 3 SABORES","quantity":1,"price":0.0,"subItemsPrice":55.98,"totalPrice":55.98,"discount":0.0,"addition":0.0,"externalCode":"25","subItems":[{"name":"BORDA DE CHEDDAR","quantity":1,"price":6.0,"totalPrice":6.0,"discount":0.0,"addition":0.0,"externalCode":"3000"},{"name":"1/3 3 QUEIJOS","quantity":1,"price":16.66,"totalPrice":16.66,"discount":0.0,"addition":0.0,"externalCode":"30"},{"name":"1/3 CALABRESA","quantity":1,"price":15.0,"totalPrice":16.66,"discount":0.0,"addition":1.66,"externalCode":"31"},{"name":"1/3 MUSSARELA","quantity":1,"price":10.0,"totalPrice":16.66,"discount":0.0,"addition":6.66,"externalCode":"32"}]}] para cada item tenho OU NÃO um subitem, para cada item tenho OU NÃO uma observação, estou usando a função jsontodataset mostrada em exemplo aqui no forum ACBR por um colega que funciona muito bem porém quando uso o comando: vItensJson := ObjetoJson.GetValue('items').ToString; JsonArrayToDataset(tbItems, vItensJson); a tabela é gerada porém somente com a parte dos itens, o campo subitens não é gerado e assim não tenho como pegar a informacao do json subitens de cada item assim como a observação de cada item, alguém poderia por gentileza ajudar com isto? tentei alguns exemplos de parser da internet porém sem sucesso... desde já agradeço.
  8. Olá Daniel! primeiramente obrigado, os formulários estão para criação em run time somente dinamicamente conforme o uso, apenas o principal está como auto create então nenhum formulário está na memória, acho que não fui bem específico, na hora de compilar demora demais e dá um erro no delphi e fecha, realmente o seattle não é uma versão full e sim uma de testes pode ser isto, vou tentar novamente com uma versão full do rio, muito obrigado!
  9. Olá todos! tenho um projeto bem grande e totalmente nativo no delphi XE, tentei abrir este projeto no Seattle up1 mas dá erro e ele não consegue abrir o projeto, eu vi na embarcadero no que 'há de novo no delphi XX' que algumas versões tem suporte a grandes projetos, poderiam me indicar qual a versão mais indicada acima dos XE's da vida ( seattle, berlin, tokyo... rio ) e a versão com update ou não? o projeto é totalmente nativo porém tem muitos formulários. desde já, muito grato!!
  10. Muito obrigados pelos exemplos postados até agora, são de GIGANTE ajuda, estou conseguindo consumir a api, por enquanto no tratamento do evento polling ainda mas caminhando, obrigado a todos, se alguem quiser postar mais sobre os eventos de CANCELAMENTO, ACEITAÇÃO e REJEIÇÃO de pedidos, ou se tiver outros código a contribuir fico muito grato mesmo! notei que quando faço o pedido pelo site do ifood como usuário cadastrado eu devo enviar um evento ou de cancelamento ou de aceitação, se eu estiver utilizando o gerenciador do ifood instalado em meu pc ele fica simulando o toque do telefone por até 3 minutos e por ele eu consigo confirmar ou cancelar o evento, porém na minha aplicação ainda não cheguei neste ponto.
  11. Olá bom dia a todos, como assunto 'diversos' do delphi gostaria de saber se alguém por aqui já consumiu a API do iFOOD via delhi com indy, rest.. etc, peguei alguns exemplos mas não obtive sucesso na tarefa, ainda não consegui retornar nem o token via json ( eles trabalham com token, pega a chave com validacao de usuario e senha e trabalha com ela até vencer, esta é a primeira etapa apenas e a mais simples ), fico grato por qualquer ajuda possível, exemplos e código são muito bem vindos, desde já agradeço a todos.
  12. Olá boa tarde, já entramos em contato mas ainda estamos aguardando retorno, acredito que foi redirecionado lá dentro, assim que sair algo posto o retorno, obrigado novamente.
  13. Pessoal, como não encontrei maneira de editar o topico já postado vou postar a resposta para o ocorrido aqui mesmo, o problema é que todas as MP 4200 TH com firmware abaixo do 1.7 não imprimem o QRCode, nas 2 impressoras que tenho aqui atualizei o firmware e funcionou corretamente, então já fica de dica para quem estiver com problemas nesta impressora, obrigado.
  14. Olá bom dia a todos, na versão atualizada do ACBR 02/04/19 estou com problemas na impressão do QRCode NFCe via posprinter, já testei em + de 1 impressora em computadores diferentes com versoes do windows 10 e windows 7 e o resultado é o mesmo no sistema e no DEMO do posprinter, as tags não mudaram porém o resultado é que ao invés de imprimir o QRCode ele imprime o Texto usado para gerar o qrcode, quando se usa a DANFE da NFCe com fast ou fortes tudo segue normalmente porém tenho clientes que usam impressora serial e não tem driver para windows. Isto acontece com a versão atual do ACBR atualizado, na versão antiga de 2 meses atrás não, já testei em + de uma versão do Delphi e todas apresentam o mesmo resultado via demo e via sistema. Para maiores detalhes segue em anexo PDF com demonstrativo, desde já agradeço!!! Problemas com impressao do QRCode no posprinter novo.pdf
  15. Bom dia, vou entrar em contato com o pessoal da Equiplano, infelizmente e normalmente, eles passam para a prefeitura e quando se liga na prefeitura o que acontece é que o encarregado nem sempre está por dentro da realidade ou desconhece o procedimento, por enquanto, obrigado!
×
×
  • Create New...