FUNÇÕES: Conversar com NFe a partir de XML.

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

FUNÇÕES: Conversar com NFe a partir de XML.

Mensagem por rochinha »

Amiguinhos,

Para aqueles que quizerem gerar em suas aplicações arquivos formattados em XML para conversar com aplicativos de integração NFeou enviar requisições diretamente para os servidores deste serviço, podem usar estas funções:

Código: Selecionar todos

/*
 * Verifica status
 * <?xml version="1.0" encoding="UTF-8"?>
 * <consStatServ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 *               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 *               xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.07">
 *    <tpAmb>1</tpAmb>
 *    <cUF>51</cUF>
 *    <xServ>STATUS</xServ>
 * </consStatServ>
 */
function NFEStatus( cNFe, cUF )
   LOCAL oEDX, cXMLFile
   cXMLFile := DtoS( date() )+"T"+StrTran( Time(), ":", "" )+"-ped-sta.XML"
   EDX oEDX FILE cXMLFile VERSION "1.0" ENCODING "UTF-8" FORMATED
      EDX OPEN MARK "consSitNFe" ;
               ATTRIB "xmlns:xsi" VALUE "http://www.w3.org/2001/XMLSchema-instance" ;
               ATTRIB "xmlns:xsd" VALUE "http://www.w3.org/2001/XMLSchema" ;
               ATTRIB "versao"    VALUE "1.07" ;
               ATTRIB "xmlns"     VALUE "http://www.portalfiscal.inf.br/nfe" OF oEDX
          EDX OPEN MARK "tpAmb"   TYPE "" TAG "2"           AUTOCLOSE OF oEDX
          EDX OPEN MARK "cUF"     TYPE "" TAG cUF           AUTOCLOSE OF oEDX
          EDX OPEN MARK "xServ"   TYPE "" TAG "STATUS"      AUTOCLOSE OF oEDX
      EDX CLOSE MARK OF oEDX
   EDX END oEDX
   return .t.

/*
 * Cancelamento de NFe
 * <?xml version="1.0" encoding="UTF-8"?>
 * <cancNFe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 *          xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 *          versao="1.07" 
 *          xmlns="http://www.portalfiscal.inf.br/nfe">
 *    <infCanc Id="NFe51080612345678901234550010000001041671821888">
 *       <tpAmb>2</tpAmb>
 *       <xServ>CANCELAR</xServ>
 *       <chNFe>51080612345678901234550010000001041671821888</chNFe>
 *       <nProt>151080000194296</nProt>
 *       <xJust>Cliente cancelou a venda nao desejando mais levar o produto</xJust>
 *   </infCanc>
 * </cancNFe>
 */
function NFECancelamento( cNFe, nProt, xJust )
   LOCAL oEDX, cXMLFile
   cXMLFile := cNFe+".XML"
   EDX oEDX FILE cXMLFile VERSION "1.0" ENCODING "UTF-8" FORMATED
      EDX OPEN MARK "cancNFe" ;
               ATTRIB "xmlns:xsi" VALUE "http://www.w3.org/2001/XMLSchema-instance" ;
               ATTRIB "xmlns:xsd" VALUE "http://www.w3.org/2001/XMLSchema" ;
               ATTRIB "versao"    VALUE "1.07" ;
               ATTRIB "xmlns"     VALUE "http://www.portalfiscal.inf.br/nfe" OF oEDX
          EDX OPEN MARK "infCanc" ATTRIB "Id" VALUE "NFe"+cNFe OF oEDX
              EDX OPEN MARK "tpAmb"  TYPE "" TAG "2"          AUTOCLOSE OF oEDX
              EDX OPEN MARK "xServ"  TYPE "" TAG "CANCELAR"   AUTOCLOSE OF oEDX
              EDX OPEN MARK "chNFe"  TYPE "" TAG cNFe         AUTOCLOSE OF oEDX
              EDX OPEN MARK "nProt"  TYPE "" TAG str( nProt ) AUTOCLOSE OF oEDX
              EDX OPEN MARK "xJust"  TYPE "" TAG xJust        AUTOCLOSE OF oEDX
          EDX CLOSE MARK OF oEDX
      EDX CLOSE MARK OF oEDX
   EDX END oEDX
   return .t.

/*
 * Inutiliza NFe
 * <?xml version="1.0" encoding="UTF-8"?>
 * <inutNFe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 *          xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 *          versao="1.07" 
 *          xmlns="http://www.portalfiscal.inf.br/nfe">
 *    <infInut Id="NFe511234567890123455001000000101000000101">
 *       <tpAmb>2</tpAmb>
 *       <xServ>INUTILIZAR</xServ>
 *       <cUF>51</cUF>
 *       <ano>08</ano>
 *       <CNPJ>12345678901234</CNPJ>
 *       <mod>55</mod>
 *       <serie>1</serie>
 *       <nNFIni>101</nNFIni>
 *       <nNFFin>101</nNFFin>
 *       <xJust>Ocorreu uma falha no sistema que pulou a sequencia de numeracao</xJust>
 *   </infInut>
 * </inutNFe>
 */
function NFEInutilizada( cNFe, cUF, cAno, cCNPJ, cMod, cSerie, nNFIni, nNFFin, xJust )
   LOCAL oEDX, cXMLFile
   cXMLFile := cNFe+".XML"
   EDX oEDX FILE cXMLFile VERSION "1.0" ENCODING "UTF-8" FORMATED
      EDX OPEN MARK "inutNFe" ;
               ATTRIB "xmlns:xsi" VALUE "http://www.w3.org/2001/XMLSchema-instance" ;
               ATTRIB "xmlns:xsd" VALUE "http://www.w3.org/2001/XMLSchema" ;
               ATTRIB "versao"    VALUE "1.07" ;
               ATTRIB "xmlns"     VALUE "http://www.portalfiscal.inf.br/nfe" OF oEDX
          EDX OPEN MARK "infInut" ATTRIB "Id" VALUE cNFe OF oEDX
              EDX OPEN MARK "tpAmb"  TYPE "" TAG "2"           AUTOCLOSE OF oEDX
              EDX OPEN MARK "xServ"  TYPE "" TAG "INUTILIZAR"  AUTOCLOSE OF oEDX
              EDX OPEN MARK "cUF"    TYPE "" TAG cUF           AUTOCLOSE OF oEDX
              EDX OPEN MARK "ano"    TYPE "" TAG cAno          AUTOCLOSE OF oEDX
              EDX OPEN MARK "CNPJ"   TYPE "" TAG cCNPJ         AUTOCLOSE OF oEDX
              EDX OPEN MARK "mod"    TYPE "" TAG cMod          AUTOCLOSE OF oEDX
              EDX OPEN MARK "serie"  TYPE "" TAG cSerie        AUTOCLOSE OF oEDX
              EDX OPEN MARK "nNFIni" TYPE "" TAG str( nNFIni ) AUTOCLOSE OF oEDX
              EDX OPEN MARK "nNFFin" TYPE "" TAG str( nNFFin ) AUTOCLOSE OF oEDX
              EDX OPEN MARK "xJust"  TYPE "" TAG xJust         AUTOCLOSE OF oEDX
          EDX CLOSE MARK OF oEDX
      EDX CLOSE MARK OF oEDX
   EDX END oEDX
   return .t.

/*
 * Recebimento de NFe
 * <?xml version="1.0" encoding="UTF-8"?>
 * <consReciNFe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 *              xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 *              versao="1.10" 
 *              xmlns="http://www.portalfiscal.inf.br/nfe">
 *   <tpAmb>2</tpAmb>
 *   <nRec>510000000106704</nRec>
 * </consReciNFe>
 */
function NFERecebimento( cNFe )
   LOCAL oEDX, cXMLFile
   cXMLFile := cNFe+".XML"
   EDX oEDX FILE cXMLFile VERSION "1.0" ENCODING "UTF-8" FORMATED
      EDX OPEN MARK "consReciNFe" ;
               ATTRIB "xmlns:xsi" VALUE "http://www.w3.org/2001/XMLSchema-instance" ;
               ATTRIB "xmlns:xsd" VALUE "http://www.w3.org/2001/XMLSchema" ;
               ATTRIB "versao"    VALUE "1.10" ;
               ATTRIB "xmlns"     VALUE "http://www.portalfiscal.inf.br/nfe" OF oEDX
          EDX OPEN MARK "tpAmb"   TYPE "" TAG "2"           AUTOCLOSE OF oEDX
          EDX OPEN MARK "nRec"    TYPE "" TAG cNFe          AUTOCLOSE OF oEDX
      EDX CLOSE MARK OF oEDX
   EDX END oEDX
   return .t.

/*
 * Situacao de NFe
 * <?xml version="1.0" encoding="UTF-8"?>
 * <consSitNFe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 *             xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 *             versao="1.07" 
 *             xmlns="http://www.portalfiscal.inf.br/nfe">
 *   <tpAmb>2</tpAmb>
 *   <xServ>CONSULTAR</xServ>
 *   <chNFe>51080612345678901234550010000001041671821888</chNFe>
 * </consSitNFe>
 */
function NFESituacao( cNFe )
   LOCAL oEDX, cXMLFile
   cXMLFile := cNFe+".XML"
   EDX oEDX FILE cXMLFile VERSION "1.0" ENCODING "UTF-8" FORMATED
      EDX OPEN MARK "consSitNFe" ;
               ATTRIB "xmlns:xsi" VALUE "http://www.w3.org/2001/XMLSchema-instance" ;
               ATTRIB "xmlns:xsd" VALUE "http://www.w3.org/2001/XMLSchema" ;
               ATTRIB "versao"    VALUE "1.07" ;
               ATTRIB "xmlns"     VALUE "http://www.portalfiscal.inf.br/nfe" OF oEDX
          EDX OPEN MARK "tpAmb"   TYPE "" TAG "2"           AUTOCLOSE OF oEDX
          EDX OPEN MARK "xServ"   TYPE "" TAG "CONSULTAR"   AUTOCLOSE OF oEDX
          EDX OPEN MARK "chNFe"   TYPE "" TAG cNFe          AUTOCLOSE OF oEDX
      EDX CLOSE MARK OF oEDX
   EDX END oEDX
   return .t.
O seu codigo ficará bem formatado e bastará então criar a rotina de envio para completar.

Para maiores informações consultem o topico aqui para obter os arquivos necessários.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder