Jump to content
Fivewin Brasil

GERAR XML A PARTIR DA XML ASSINADA


JUDSON ROSA

Recommended Posts

Galera a um tempo atras consegui aqui no forum ( nao lembro o autor ) esta rotina para gerar a partir da XML ASSINADA a XML PROTOCOLADA ou seja autorizada NFE, funciona perfeito.

Agora quero fazer o mesmo para  NFCe , mas acho q na hora de incluir as tags no final da algum problema na xml quando tendo edita-la nao vem no formato , segue rotina:

 

cFileXmlAssinado  := w_dbfPath + cSubPastaAssinadas_  + Alltrim(cChave)+".xml"        
cFileXmlProtocolo := w_dbfPath + cSubPastaProtocolos_ + Alltrim(cChave)+"-nfce.xml" 

//cFileXmlAssinado  := w_dbfPath + "remessa\assinado\"+Alltrim(cChave)+".xml"         // mudei aqui
//cFileXmlProtocolo := w_dbfPath + "remessa\protocolos\"+Alltrim(cChave)+"-nfce.xml"  // mudei aqui

cArq_Assinado := memoread ( cFileXmlAssinado )


// ? "cFileXmlAssinado" , cArq

wIni_Velho:= '<?xml version="1.0" encoding="UTF-8"?><NFe xmlns='

DO CASE
   CASE AT('versao="1.10"' , cArq_Assinado ) # 0
        wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.10"><NFe xmlns='
   CASE AT('versao="2.00"' , cArq_Assinado ) # 0
        wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"><NFe xmlns='
   OTHE
        wIni_Novo := '<?xml version="1.0" encoding="UTF-8"?><nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"><NFe xmlns='
ENDCASE

cArq_Assinado := StrTran( cArq_Assinado , wIni_Velho , wIni_Novo )

wPosTmpIni := AT("<nNF>",cArq_Assinado)
wPosTmpFim := AT("</nNF>",cArq_Assinado)
WNFECOD    := VAL( SUBS( cArq_Assinado , wPosTmpIni+5 , ( wPosTmpFim - (wPosTmpIni+5) ) ) )
          
wPosTmpIni := AT("<DigestValue>",cArq_Assinado)
wPosTmpFim := AT("</DigestValue>",cArq_Assinado)
c_DIGVAL   := SUBS( cArq_Assinado , wPosTmpIni+13 , ( wPosTmpFim - (wPosTmpIni+13) ) )

nRet:=oNfeUtil:ConsultaNf( alltrim(cChave) , cFileXmlAssinado , .F. )   // alterado em 12/03/2015 - Paulo

If nRet // retorno nfce foi autorizada na sefaz

  // guarde estas informações em banco de dados
  
    c_protocolo  :=oNFeUtil:Protocolo
    c_recibo     :=oNFeUtil:Recebimento
    c_verAplic   :=oNFeUtil:VerAplic
    
? c_protocolo    
    
   c_STATUS="100"
   c_MOTIVO:="Autorizado o uso da NFCe"
    
    if empty(oNFeUtil:Recebimento)
       c_protocolo:=left(oNFeUtil:Protocolo,15)
       c_recibo   :=right(alltrim(oNFeUtil:Protocolo),19)
       c_datanfe  :=transform(dtos(ctod(left(c_recibo,10))),"@r 9999-99-99")   
        c_recibo   :=c_datanfe + "T" + right(c_recibo,8)
    endif
    
   wMsg_status := c_MOTIVO
   oSayMsg:SetColor(CLR_BLUE, RGB(255,255,200))      
    oSayMsg:refresh()

        
   DO CASE
      CASE AT('versao="1.10"' , cArq_Assinado ) # 0
           cArq_Assinado= cArq_Assinado + '<protNFe versao="1.10" xmlns="http://www.portalfiscal.inf.br/nfe">'
      CASE AT('versao="2.00"' , cArq_Assinado ) # 0
           cArq_Assinado= cArq_Assinado + '<protNFe versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">'
      OTHE 
           cArq_Assinado= cArq_Assinado + '<protNFe versao="3.10" xmlns="http://www.portalfiscal.inf.br/nfe">'
   ENDCASE

             
   cArq_Assinado := cArq_Assinado + '<infProt Id="ID' + c_protocolo   + '">'

   cArq_Assinado := cArq_Assinado + '<infProt>'
   cArq_Assinado := cArq_Assinado + '<tpAmb>'         + cTpAmb        + '</tpAmb>'     
   
   cArq_Assinado := cArq_Assinado + '<verAplic>'      + c_verAplic      + '</verAplic>'  
   cArq_Assinado := cArq_Assinado + '<chNFe>'         + alltrim(cChave) + '</chNFe>'
   cArq_Assinado := cArq_Assinado + '<dhRecbto>'      + c_recibo        + '</dhRecbto>'
   cArq_Assinado := cArq_Assinado + '<nProt>'         + c_protocolo     + '</nProt>'
   cArq_Assinado := cArq_Assinado + '<digVal>'        + c_DIGVAL        + '</digVal>'
   cArq_Assinado := cArq_Assinado + '<cStat>'         + c_STATUS        + '</cStat>'
   cArq_Assinado := cArq_Assinado + '<xMotivo>'       + c_MOTIVO        + '</xMotivo>'

   cArq_Assinado := cArq_Assinado + '</infProt>'
   
   cArq_Assinado := cArq_Assinado + '</protNFe>'
   
   cArq_Assinado := cArq_Assinado + '</nfeProc>'
   
   wArq_Protocolo := FCREATE(cFileXmlProtocolo,1)

   wtam:= len( cArq_Assinado )

   FWRITE( wArq_Protocolo , alltrim(cArq_Assinado) ) // , wtam )
   FCLOSE( wArq_Protocolo )    
                 
o que pode esta ocorrendo durante a inclusao das tags ??

 

21170524572077000285650010000097159000097151-nfce.xml

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...