Ir para conteúdo
  • Cadastre-se

AlexBecker

Membros
  • Total de ítens

    135
  • Registro em

  • Última visita

Tudo que AlexBecker postou

  1. são vários componentes com o fato ocorrendo, realmente sua prática seria a melhor mas normalmente componentes de fora então até conseguir conversar com o pessoal do fórum lá e esperar um retorno, normalmente aqui no diversos delphi e lazarus do ACBR obtenho um retorno mais rápido, muitos programadores, muita experiência para compartilhar, o fato é que a versão instala no d2010, XE, xe6 etc até tokyo, o problema só ocorre do seattle acima... estranho não? talvez algo diferente nesta versões, a questão que o daniel citou na ordem dos paths eu troquei todos e coloquei nos primeiros lugares o raize mas o erro persistiu, tirei o delphi fora e instalaei SOMENTE o raize, o erro persistiu... bem se surgir algo por aqui que possa ajudar belza senão o melhor é tirar fora, remover estes componentes com problemas do projeto, por enquanto obrigado a todos!
  2. Olá Daniel, primeiramente obrigado, nos componentes do ACBR o fato relatado também não acontecem... eu incluo um ACBNFE no form e ele encontra os fontes pelo path library normalmente do delphi, isto acontece somente com alguns componentes externos: ehlib, tponguard, raize components ( mais alguns não citarei todos tem bastante ), e já com o ACBR, JEDI isto não acontece...
  3. Olá a todos! Recentemente comecei a trabalhar com o delphi seatle porém tenho notado que instalando um pacote de componentes ( raize por ex: mas acontece com alguns outros componentes, acontece também no berlin, tokyo... ) e passo o caminho dele no path library do delphi e instalo o componente normalmente pelo dpk gerando os bpls quando incluo o componente no formulário mesmo tendo o componente no library path ele me retorna a mensagem que não foi possível encontrar o componente, em seguida vou nas opções do projeto em search path e adiciono novamente o mesmo path que está no library path e após isto ele funciona, tenho alguns projetos grandes com os componentes instalados e muitosssssssssssssss paths a adicionar o que gera um certo incomodo. gostaria de saber porque isto acontece nas versões mais atuais, o componente não está preparado? qual o motivo... pois instalando o jedi por exemplo o mesmo não apresenta o tal problema. a versão do componente que adquiri é com fontes e supostamente preparada para o delphi em questão tanto que instala normalmente, o windows é 10 FC, o delphi está com opções de executar como administrador... bem se alguém tiver uma dica agradeço!
  4. 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!
  5. 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...
  6. 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!
  7. 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.
  8. 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!
  9. 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.
  10. 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.
  11. 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!
  12. 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!!
  13. 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.
  14. 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.
  15. 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.
  16. 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.
  17. 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
  18. 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!
  19. Olá a todos boa tarde, com a atualização do ACBR na sexta feira da semana passada dia 29 e hoje repetindo o processo de atualização do ACBR e de todos os schemas contidos junto com ele para a pasta de schemas do cliente vem ocorrendo o seguinte erro: --------------------------- Falha de comunicação : 1001 - Exception in startElement: cvc-elt.1: Cannot find the declaration of element 'es:EnviarLoteRpsEnvio'. ! --------------------------- ( arquivos XML em anexo ) O estado é PR, para a NFSe sempre utilizei a Equiplano e até a algum tempo atrás estava funcionando normalmente, executei já os passos de reinstalação dos certificados raiz confiáveis v2, marquei as opções de internet conforme outro tópico já demonstrado aqui, alterei as configurações entre SSH, Capicom ( possíveis conforme demo ) e não consigo sair deste erro, o windows utilizado na máquina é o 10 atualizado ( para NFe sem problemas ), já tentei várias soluções sugeridas na internet e algumas aqui do fórum porém sem sucesso, aguardo um HELP se possível, desde já agradeço a todos!!! trecho inicial do XML: ?xml version="1.0" encoding="UTF-8"?> <es:EnviarLoteRpsEnvio xmlns:es="http://www.equiplano.com.br/esnfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.equiplano.com.br/enfs esRecepcionarLoteRpsEnvio_v01.xsd"> obs: este é somente o trecho inicial, demais arquivos XML estão em anexo. arquivos soap.rar
  20. Nossa! valeu mesmo pela resposta! provavelmente é este o meu erro, na prerrogativa de sempre testar tudo em ambiente de homologação para não prejudicar o cliente como sempre.... estou em viagem e assim que chegar no escritório novamente vou testar, acredito que deve ser isto, MUITO OBRIGADO MESMO!!
  21. Primeiramente, configuro o componente ACBRNFE, emito NFes normalmente sem problema, na mesma tela de emissão das NFes tenho a chamada para a manifestação e download, nesta tela executo os comandos: retorno :=FNFSEletronica.AcbrNFe.DistribuicaoDFePorUltNSU(vcodUF, vCnpj, vultNSU); vultNSU := FNFSEletronica.AcbrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.ultNSU; para pegar o ultimo NSU, de 5 certificados que tenho aqui com clientes tendo várias notas como DESTINATARIO ( estou consultado as notas emitidas de terceiros para o CNPJ, ou seja, quero baixar os xmls que foram feitos para este cnpj e não notas emitidas por este cnpj, notas emitidas eu salvo o XML no componente ACBR mesmo na hora de enviar ) e depois executo os comandos: try FNFSEletronica.AcbrNFe.DistribuicaoDFe(vcodUF,vCnpj, vultNSU, vANSU); except on E: Exception do begin MessageBox(handle,PChar('Não foi possível consultar SEFAZ ('+ E.Message +') !'), 'Mensagem de aviso', mb_IconInformation + 0 + mb_DefButton4); Exit; end; end; if (FNFSEletronica.AcbrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.cStat = 137) then begin MessageBox(handle, 'Nenhum documento localizado para o Destinatário !', 'Mensagem de aviso', mb_IconInformation + 0 + mb_DefButton4); Exit; end; Detalhe é que eu executo estes comandos já com o componente NFE configurado e emitindo nota, não mudo nada nele... Dos 5 certificados que estou usando as empresas tem muitos XMLs de terceiros em seu CNPJ, porém 4 destes o NSU retorna 0 e em 1 dos cnpjs o NSu retorna 2, mas na consulta de qualquer um passando os parametros corretamente retorna sempre o 137, nenhum documento. XML de envio: <?xml version="1.0" encoding="UTF-8"?> <nfeDadosMsg><distDFeInt xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01"> <tpAmb>2</tpAmb> <cUFAutor>21</cUFAutor> <CNPJ>07797056000400</CNPJ> <distNSU><ultNSU>000000000000002</ultNSU></distNSU> </distDFeInt></nfeDadosMsg> XML de retorno <?xml version="1.0" encoding="UTF-8"?> <retDistDFeInt xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versao="1.01" xmlns="http://www.portalfiscal.inf.br/nfe"> <tpAmb>2</tpAmb> <verAplic>1.1.9</verAplic> <cStat>137</cStat> <xMotivo>Nenhum documento localizado</xMotivo> <dhResp>2018-12-08T22:14:38-02:00</dhResp> <ultNSU>000000000000002</ultNSU> <maxNSU>000000000000002</maxNSU> </retDistDFeInt> atualizeis os SCHEMAS novamente hoje, estão na distro. versao="1.01"> conforme XML postado. Como é a primeira vez que estou trabalhando com a DFe ( mdfe ) não sei ao certo o que pode estar acontecendo, procurei e encontrei vários tópicos similares aqui neste mesmo conteúdo do meu porém com duvidas sobre como consultar, como prencher, como pegar o NSU... etc etc. Se alguém puder me ajudar com o que pode estar acontecendo fico grato, me apontar meu erro ou até me dar uma luz dizendo... se está voltando NSU zerado não haverá pesquisa..... ( mas ai tem 1 com NSU = 2 que tbem não retorna ). Qualquer ajudar fico grato e desculpe qualquer possível gafe postada, muito obrigado desde já!
  22. Olá a todos bom dia, esta opção do CEST tem somente no Trunk2? trunk1 última versão existe CEST?
  23. ainda não Juliomar mas depois da sua dica vou olhar, correria grande aqui e prazo apertadíssimo ai acabo fazendo pergunta besta, muito obrigado pela atenção!
  24. O processo vai ser o mesmo? digo, no componente NFe também vai ter como configurar para a 4.0 tal como é hoje para a 3.1?
  25. Muito obrigado pela resposta Juliomar, estou utilizando o Delphi 7 com Windows 7, não tem clientes rodando o sistema em windows XP para emissão de NFe ou outros docs -e, quanto a windows não seria a preocupação, pretendo atualizar sim ( o delphi ) mas ainda tenho uma longa jornada com este sistema que está na versão 2.0 da NFe ainda ( a empresa/programador perdeu o fonte com a NF3.1 que estava rodando em delphi 7 ) queria apenas saber da compatibilidade caso pudesse alongar o uso do D7 por um tempo mas pelo que vi agora a versão 0.9.0b de 2015 está rodando a NFe 3.1 normalmente certo? então o passo seria economizar tempo e depois atualizar tudo para o delphi 2010 ( somente 32 bits neste sistema por isto será utilizado o 2010 e será trocado apenas para manter compatibilidade com o ACBR ), amanhã vou consultar alguns tópicos para migrar da versão 2 a 3 mas pelo que vi é alterar o componente em configurações para 3.1, incluir os schemas na pasta e.... ( pesquisa, pesquisa ), muito obrigado e dicas são bem vindas!
×
×
  • 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.