XmlToDocNfeEmi da Classe do Quintas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

XmlToDocNfeEmi da Classe do Quintas

Mensagem por janio »

Ola a todos,

Uso com sucesso a classe do Quintas que contem a função acima, para leitura de xml de fornecedores!

Porém, num xml específico a função não encontra o det nItem="10" do xml. Qndo chega nesse item a variavel retorna vazia e sai do loop.

Não consegui ver onde esta o erro

Janio
Anexos
23170204706416000180550000003000871481849036.XML
(15 KiB) Baixado 52 vezes
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

XmlToDocNfeEmi da Classe do Quintas

Mensagem por rubens »

Você não está errando nada a Classe tem esse "problema" que eu também não consegui resolver aqui...
Se os itens estão fora de ordem, que pra começar é um absurdo, dá esse erro. A classe do simplesmente entende que é o final do xml e finaliza...

Como é raro esse tipo de nota, eu edito o xml com o notepad e devolvo o xml para o cliente "corrigido" aí sim ele dá conta de importar o xml com a classe...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

XmlToDocNfeEmi da Classe do Quintas

Mensagem por janio »

Isso mesmo, Rubens.

Mas se vc colocar o cBlocoDetalhe dentro do loop, ele passa a encontrar todos os produtos.

Mas penso essa nao ser a melhor solução!

Código: Selecionar todos

	cBlocoDetalhe := "" 
   IF "<det" $ cXmlInput 
      cBlocoDetalhe := Substr( cXmlInput, At( "<det", cXmlInput ) - 1 ) 
   ENDIF 

   FOR nCont = 1 TO 1000

	   cBlocoDetalhe := "" 
	   IF "<det" $ cXmlInput 
	      cBlocoDetalhe := Substr( cXmlInput, At( "<det", cXmlInput ) - 1 ) 
	   ENDIF 
   
      cBlocoItem := XmlNode( cBlocoDetalhe, [det nItem="] + AllTrim( Str( nCont ) ) + ["] ) 
      
      IF Len( Trim( cBlocoItem ) ) = 0 // Se acabaram os itens 
         EXIT 
      ENDIF 
      AAdd( oNFE:Produto, NFEProdutoClass():New() ) 
...
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Responder