Clipper On Line • Ver Tópico - Classe e função pra carregar XML

Classe e função pra carregar XML

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

 

Classe e função pra carregar XML

Mensagempor NiltonGM » 08 Set 2016 11:12

O Lugab, vc quer abrir de dentro da aplicação? Se for isso aí só com o mestre Zeh que é fera em xml, quando apenas quero ver o conteúdo do xml abro no navegador Chrome que ele formata o xml, também tem um plugin para o editor de texto Notepad++ pra formatar xml e json.
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

Classe e função pra carregar XML

Mensagempor lugab » 08 Set 2016 18:50

Isso mesmo, Nilton, só preciso q o meu programa exiba o xml.

Dando run no Wordpad e no Winword eu já testei e eles não conseguem , então, que seja por algum código compilável
onde a gente só passe o caminho e o nome do xml
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Classe e função pra carregar XML

Mensagempor JoséQuintas » 08 Set 2016 19:12

Geralmente é o explorer:

RUN START arquivo.xml


iexml.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Classe e função pra carregar XML

Mensagempor JoséQuintas » 08 Set 2016 19:27

Não sei se dá pra chamar de mais sofisticado, mas foi só um teste rápido, não apareceram as barras de rolagem, mas virou janela do aplicativo:

PROCEDURE PTES0190

   LOCAL oControl
   CLS
   oControl := wvgActivexControl():New(,, { -1, -1 }, { -MaxRow() + 1, -MaxCol() + 1 } )
   oControl:CLSID :=  "\\serverjpa\inetpub\wwwroot\xmlpdf\xxx\xxx.XML"
   oControl:Create()
   Inkey(0)
   RETURN


comgtwvg.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Classe e função pra carregar XML

Mensagempor lugab » 09 Set 2016 09:49

Olá, Quintas,

O PROCEDURE PTES0190 deu erro de "not exported Method GETHWND" e eu nem experimentei...
Mas o RUN START funcionou...

Obrigado
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Classe e função pra carregar XML

Mensagempor janio » 15 Out 2016 08:55

Quintas,

Achei bem interessante essas funções para leitura de xml e as pretendo usar para LER e IMPORTAR xml de fornecedores, apesar de eu pouco saber trabalhar com classes! Não eh o meu forte hehehe

Para fazer testes, peguei os códigos que vc aqui postou (mim interessa apenas a parte de LER um xml de fornecedores), mas ao compilar deu falta de muitas funções!

hbmk2: Erro: Referenciado, faltando, mas fun‡äes desconhecida(s):
XMLTODOCCTEEMI(), XMLTODOCMDFEEMI(), XMLTODOCNFECANCEL(),
XMLTODOCCTECANCEL(), XMLTODOCNFECCE(), XMLTODOCMDFECANCEL(),
XMLTODOCMDFEENC(), SONUMEROS(), CALCULADIGITO(), VALIDCNPJCPF(),
XMLNODE(), XMLELEMENT(), XMLDATE()


Como faço?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Classe e função pra carregar XML

Mensagempor janio » 15 Out 2016 13:53

Quintas,

Encontrei as funções no link que vc disponibilizou!

Mim virando aqui... hehehe

Por enquanto dando certo
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Classe e função pra carregar XML

Mensagempor rubens » 23 Nov 2016 19:04

Quintas,

Nessa parte:
FOR EACH oProduto IN ( oDoc:Produto )

Como eu vou pegar os dados do produto?

? oNfe:Produto[ nCont ]:Nome

não tô visualizando isso. oDoc:Produto se refere a classe produto dentro do documento né? Só que aí Eu preciso pegar nome dentro de produto, que quando foi salvo foi identificado por nCont, agora para recuperar como fica essa identificação do nCont? Com o FOR EACH ele pula automático, não preciso identificar a posição ?

Obrigado,

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Classe e função pra carregar XML

Mensagempor JoséQuintas » 23 Nov 2016 21:51

FOR nCont = 1 TO Len( oDoc:Produto )
   ? oDoc:Produto[ nCont ]:Código
   ? oDoc:produto[ nCont ]:Nome
NEXT


ou

FOR EACH oElemento IN oDoc:Produto
   ? oElemento:Código
   ? oElemento:Nome
NEXT


CREATE CLASS NfeProdutoClass

   VAR  Codigo        INIT ""
   VAR  Nome          INIT ""
   VAR  CfOp          INIT ""
   VAR  NCM           INIT ""
   VAR  GTIN          INIT ""
   VAR  Anp           INIT ""
   VAR  Unidade       INIT ""
   VAR  Qtde          INIT 0
   VAR  ValorUnitario INIT 0
   VAR  ValorTotal    INIT 0
...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Classe e função pra carregar XML

Mensagempor janio » 23 Nov 2016 23:37

Pegando os produtos!

  oNfe := XmlToDoc( MemoRead( cArq ) )

FOR EACH oProduto IN ( oNfe:Produto )

   ? oProduto:Nome
   ? oProduto:Codigo
   ? oProduto:GTIN
   ? oProduto:GTINt
   ? oProduto:Qtde
   ? oProduto:ValorUnitario
   ? oProduto:ValorTotal
   ? oProduto:NCM
   ? oProduto:CEST
   ? oProduto:ValorDesconto
   ? oProduto:CFOP
   ? oProduto:IcmsSt:Base
   ? oProduto:IcmsSt:Aliquota
   ? oProduto:IcmsSt:Valor                               
   ? oProduto:Icms:Cst
   ? oProduto:Ipi:Valor
   ? oProduto:Ipi:Aliquota
     
NEXT


E assim vai puxando os campos de acordo com a sua necessidade!
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Classe e função pra carregar XML

Mensagempor rubens » 24 Nov 2016 07:15

Bom dia...

Certo... a classe tá instanciada e alimentada.

      cCGC         := oNfe:Emitente:Cnpj 
      cNOME      := oNfe:Emitente:Nome
      *cFantasia   := oNfe:Emitente:Fantasia        // Implementar na classe
      cEndereco   := oNfe:Emitente:Endereco
      cNumero     := oNfe:Emitente:Numero
      cBairro        := oNfe:Emitente:Bairro
      cCidadeCod  := oNfe:Emitente:CidadeIbge
      cCidade       := oNfe:Emitente:Cidade
      cEstado       := oNfe:Emitente:Uf
      cCep           := oNfe:Emitente:Cep
      cInsc_Est     := oNfe:Emitente:InscricaoEstadual
      cTelefone1  := oNfe:Emitente:Telefone
      cCrtEmit     := ''
      cTelefone1  := Transform( Val( cTelefone1 ), '( 99)9999-9999' )
     
      For EACH oProduto IN ( oNfe:Produto )
         cNompro_    := oProduto:Nome
         cCodBarra    := oProduto:GTIN
         nQtde_        := oProduto:Qtde
         nValor_       := oProduto:ValorUnitario
         nTotal_       := oProduto:ValorTotal
         cUnd_         := oProduto:Unidade
      Next


Pego qualquer variável da nota... essa parte aí do emitente tá certinho e tal.
? oNfe:Produto[1]:Nome - Retorna o nome certinho, então se usar o for x/next funciona.
Tô apanhado do FOR EACH (boa oportunidade para aprender usar, porque está dentro do contexto)
Se não declaro oProduto dá erro na hora da execussão - não encontrado
Se declaro Private oProduto, não dá mas retorna tipo U.
O FOR EACH não seria traduzido assim: Enquanto for encontrado oProduto em oNfe:Produto? Mas o oProduto veio de onde? (me desculpem minha ignorância) dei uma olhada nos tópicos sobre o FOR EACH, mas mesmo assim não consegui visualizar nesse caso.
Obrigado

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Classe e função pra carregar XML

Mensagempor janio » 24 Nov 2016 08:30

Eh a primeira vez que For Each tbm... e ate mim parece mais simples que For... Next

Mas se vc quiser usar o for... next, pode tbm:
FOR nCont = 1 TO Len( oNfe:Produto ) 
   ? oNfe:Produto[ nCont ]:Código
   ? oNfe:produto[ nCont ]:Nome
NEXT
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Classe e função pra carregar XML

Mensagempor JoséQuintas » 24 Nov 2016 10:21

Uma exigência do FOR/EACH é que a variável seja local.
A variável declarada será equivalente a um elemento do array.

LOCAL aProdutosLst, oProduto

aProdutosLst := { "PANETONE", "CASTANHA", "PERU", "ARVORE", "PRESENTE" }
FOR EACH oProduto IN aProdutosLst
   ? oProduto
NEXT


No exemplo acima, oProduto equivale a aProdutosLst[ n ]
No caso da classe, equivale às informações de um produto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Classe e função pra carregar XML

Mensagempor rubens » 24 Nov 2016 14:32

Fechou Quintas...

Declare local oProduto e depois peguei oProduto:Nome ...

Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Classe e função pra carregar XML

Mensagempor NiltonGM » 12 Dez 2016 07:59

Estou usando e abusando das novas no Harbour como WITH OBJECT, SWITCH, o FOR EACH, esses comandos são ótimos e substitui muito os tradicionais na maioria dos casos sem falar que podemos criar classes pra tudo...

FOR EACH xVar IN <array, string, etc>
       .... xVar
NEXT EACH

WITH OBJECT <oBjeto>
         ? :FieldGet(x)
     
     SWITCH :FieldGet('cf_tipo')
           CASE 1
                 .... ; EXIT
           CASE 2
                ..... ; EXIT
           OTHERWISE
     END SWITCH

END WITH
Nilton Medeiros
nilton@sistrom.com.br
Avatar de usuário

NiltonGM
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 393
Data de registro: 05 Jun 2014 23:47
Cidade/Estado: Caieiras/SP
Curtiu: 249 vezes
Mens.Curtidas: 24 vezes

Anterior Próximo



Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro