Página 3 de 3

Gerar XML - NFE.PRG

Enviado: 04 Jun 2017 19:31
por JoséQuintas
No caso da classe de XML, eu zero tudo no New()

Me chamou a atenção uma coisa no seu fonte, ::hHash

Nem sei como se zera uma variável do tipo hash......

Gerar XML - NFE.PRG

Enviado: 08 Jun 2017 20:38
por lugab
Boa noite, Quintas, boa noite a todos..

Quintas, eu fui na sua "página incial" abaixo e vasculhei tudo
https://github.com/JoseQuintas/sefazclass

Mas não encontrei a Função XmlToNota()

Código: Selecionar todos

cXml := MemoRead( "arquivo.xml" )
oNota := XmlToNota( cXml )

? oNota:Emitente:Cnpj
? oNota:Emitente:Nome
? oNota:Emitente:Endereco

Será que eu fui na página errada ou o nome da função ta errada ?

Obrigado..

Gerar XML - NFE.PRG

Enviado: 08 Jun 2017 20:58
por JoséQuintas
Desculpe, errei o nome.
XmlToDoc()

Tá na classe de XML: ze_SpedXmlClass.prg

https://github.com/JoseQuintas/sefazcla ... lClass.prg

É que ela não atende somente nota, também MDFE, CTE, Carta de Correção, Cancelamento....
Mas de forma mais limitada para CTE e MDFE.

Gerar XML - NFE.PRG

Enviado: 08 Jun 2017 22:45
por lugab
Valeu, Quintas.. Vou procurar e compilar pra ver..

Enquanto isso, estou com um problema e preciso de ajuda.
Não sei como fazer a função AT() avançar para o próximo <xprod> de forma que
sempre fico exibindo o primeiro PRODUTO de um XML que possui mais onze produtos.
Alguém sabe o que falta fazer para que o AT() posicione o ponteiro nos próximos <xprod> ??

Código: Selecionar todos

L=12
XmlProdutos = XmlNode(XmlNota,"det")
For i=1 to 99
   if L>21
      Msg(24,12,"tecle algo p/prosseguir",.F.)
      @ 12,02 clea to 21,79  
      L=12
   endif
   TbNome = XmlNode(Xmlprodutos,"xProd")
   TbNcm = XmlNode(Xmlprodutos,"NCM")
   TbCfop = XmlNode(Xmlprodutos,"CFOP")
   TbQuaent=XmlNode(Xmlprodutos,"qCom")
   TbValent=XmlNode(Xmlprodutos,"vUnCom")
   TbValTot=XmlNode(Xmlprodutos,"vProd")
   @ l,00 say strzero(i,2)
   @ l,03 say TbNcm
   @ L,17 say substr(Tbnome,1,16)
   @ L,34 say val(Tbquaent) pict "@e 999,999"
   @ L,42 say val(Tbvalent) pict "@e 99999.99"
   @ L,53 say val(TbIcms)   pict "@e 99999.99"
   @ L,62 say val(Tbipi)    pict "@e 99999.99"
   @ L,71 say val(TbValtot) pict "@e 99999.99"
   L=L+1
Next I
Msg(24,32,"Fim de exibicao",.F.)
retu
*------------------------------
Function XmlNode(mXml,mNode)
*-------------------------------
Local mTexto := "", mInicio := 0, mFim := 0
mInicio := AT("<" + mNode + ">",mXml)+ (len(mNode)+2)
mFim := AT("</" + mNode + ">", mXml)
If mInicio != 0 .And. mFim != 0
  mTexto := Substr(mXml,mInicio,mFim-mInicio)
Endif
Return mTexto
01 04031000 DANONE GREGO ORI 2 5,19 0,00
02 04031000 DANONE GREGO ORI 2 5,19 0,00
03 04031000 DANONE GREGO ORI 2 5,19 0,00
04 04031000 DANONE GREGO ORI 2 5,19 0,00
05 04031000 DANONE GREGO ORI 2 5,19 0,00
06 04031000 DANONE GREGO ORI 2 5,19 0,00
07 04031000 DANONE GREGO ORI 2 5,19 0,00
08 04031000 DANONE GREGO ORI 2 5,19 0,00
09 04031000 DANONE GREGO ORI 2 5,19 0,00
10 04031000 DANONE GREGO ORI 2 5,19 0,00

Gerar XML - NFE.PRG

Enviado: 09 Jun 2017 00:11
por JoséQuintas
Ou usa hb_At(), que tem parâmetro pra indicar o início da pesquisa, ou pode ir cortando o produto do XML.

Código: Selecionar todos

Xml := Substr( Xml, At( "</Prod", Xml ) + 7 )

Gerar XML - NFE.PRG

Enviado: 14 Jun 2017 23:06
por lugab
Oi, Quintas, desculpe a demora na resposta, eu tava em viagem...

Eu optei pela sua sugestão de ir cortando a parte já usada e sim, funcionou perfeito...

Muito obrigado mais uma vez...

Gerar XML - NFE.PRG

Enviado: 15 Jun 2017 02:43
por JoséQuintas
Pois é... foi o que passei num link anterior.
Veja o link aberto, se não foi o que você fez.
retiranode.png
O "</Prod" nessa função é o "</" + cNode, onde vai passar pra função o "Prod", que vai ficar na variável cNode.

Gerar XML - NFE.PRG

Enviado: 15 Jun 2017 14:52
por lugab
Valeu Quintas,

Eu até baixei isso aí, mas não compilou, faltou um monte de coisas.
Postagens omitindo quais Lib e .Ch são necessários acrescentar, fazem a gente terminar desistindo.

Eu preferi seguir aquele exemplo feijão-com-arroz do início e desenvolver "eu mesmo" o resto em cima dele.

Um abraço

Gerar XML - NFE.PRG

Enviado: 15 Jun 2017 21:34
por JoséQuintas
Esse é um arquivo do projeto sefazclass.
Na página inicial baixa o projeto inteiro, incluindo exemplo e hbp.

https://github.com/JoseQuintas/sefazclass

Gerar XML - NFE.PRG

Enviado: 19 Jun 2017 00:47
por lugab
Ok, Quintas, já peguei as funções faltantes.

Compilei e deu tudo certo..

Muito obrigado, mestre !!!