O que a classe faz com essa informação?
::cXmlDados += [<infInut Id="ID] + ::UFCodigo( ::cUF ) + Right( cAno, 2 ) + cCnpj + cMod + StrZero( Val( cSerie ), 3 )
::cXmlDados += StrZero( Val( cNumIni ), 9 ) + StrZero( Val( cNumFim ), 9 ) + [">]
::cXmlDados += XmlTag( "tpAmb", ::cAmbiente )
::cXmlDados += XmlTag( "xServ", "INUTILIZAR" )
::cXmlDados += XmlTag( "cUF", ::UFCodigo( ::cUF ) )
::cXmlDados += XmlTag( "ano", cAno )
::cXmlDados += XmlTag( "CNPJ", SoNumeros( cCnpj ) )
::cXmlDados += XmlTag( "mod", cMod )
::cXmlDados += XmlTag( "serie", cSerie )
::cXmlDados += XmlTag( "nNFIni", cNumIni )
::cXmlDados += XmlTag( "nNFFin", cNumFim )
::cXmlDados += XmlTag( "xJust", cJustificativa )
::cXmlDados += [</infInut>]
::cXmlDados += [</inutNFe>]
AssinaXml( @::cXmlDados, ::cCertificado )
::XmlSoapPost( ::cUF, ::cCertificado, WS_PROJETO_NFE )
É o fonte parcial, mas ok.
Ela apenas monta o XML de acordo com o manual da Fazenda.
Assina, e chama a rotina de comunicação
E depois?
::cXmlSoap := ""
::cXmlSoap += [<?xml version="1.0"?>]
::cXmlSoap += [<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ]
::cXmlSoap += [xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">]
::cXmlSoap += [<soap12:Body>]
::cXmlSoap += [<] + cProjeto + [DadosMsg xmlns="] + ::cServico + [">]
::cXmlSoap += ::cXmlDados
::cXmlSoap += [</] + cProjeto + [DadosMsg>]
::cXmlSoap += [</soap12:Body>]
::cXmlSoap += [</soap12:Envelope>]
Ela coloca aquele XML dentro de outro XML.
Isso é chamado de envelope, segue as regras de SOAP, e do webservice do governo pra fazer a comunicacão.
Tem uns detalhes chatos, e não podem conter erro.
E depois?
oServer := win_OleCreateObject( "MSXML2.ServerXMLHTTP" )
oServer:Open( "POST", ::cWebService, .F. )
oServer:SetRequestHeader( "SOAPAction", cSoapAction )
oServer:SetRequestHeader( "Content-Type", "application/soap+xml; charset=utf-8" )
oServer:Send( ::cXmlSoap )
oServer:WaitForResponse( 500 )
cRetorno := oServer:ResponseBody
Ela manda o XML pra Fazenda e pega a resposta.
Usa o endereço de acordo com a UF, e a SOAP Action de acordo com a UF (deveria ser padrão, mas é "quase" padrão)
Resumindo:
Ela faz o que tem no manual da Sefaz, no manual do webservice da Sefaz, no manual de comunicação SOAP.
Só sobra pra quem usar fazer o XML de acordo com o manual.
Caso precise de manual...... Sefaz
Se eu não estiver disponÃvel pra ajudar em algum problema.... é só olhar o manual da Sefaz