O tempo RUGE,
Apresento a todos minha classe, muito simples mesmo de geração do XML para GNRE, necessário para complemento da emissão das Notas Fiscais Eletrônicas relacionadas com DIFAL e Partilha.
Analisem, melhorem e divulguem:
/////////////////////////////////////////////////////////////////////////////
//
// GNRE - Classe de Funcoes Compativeis para NFe contemplando GNRE
//
// Autor: Jose Carlos da Rocha
// Data: 26/12/2015
// Email: irochinha@hotmail.com.br
// MSN: fivolution@hotmail.com
// Linguagem: xBase
// Prefixo: GNRE
// Plataformas: DOS, Windows
// Requerimentos: Harbour/xHarbour
//
// Fonte: http://www.nfp.fazenda.sp.gov.br/leg03_port102_07.shtm
//
/////////////////////////////////////////////////////////////////////////////
#include "FiveWin.ch"
function Main()
// Parametrizacao de uso
cPath := cFilePath( GetModuleFileName( GetInstance() ) )
//
cPathNFE := VerifyINI( "PATHS", "PathNFE" , cPath + "\NF-e\remessa\NFE" , cPath + "\" + "nfw.ini", .f.)
cPathGNRE := VerifyINI( "PATHS", "PathGNRE" , cPath + "\NF-e\remessa\GNRE" , cPath + "\" + "nfw.ini", .f.)
// Dados da empresa
cClNome := VerifyINI( "EMPRESA", "Nome" , "5VOLUTION.COM" , cPath + "\" + "nfw.ini", .f. )
cClEndereco := VerifyINI( "EMPRESA", "Endereco", "R Des M C Costa Leite, 25", cPath + "\" + "nfw.ini", .f. )
cClBairro := VerifyINI( "EMPRESA", "Bairro" , "Pirituba" , cPath + "\" + "nfw.ini", .f. )
cClCidade := VerifyINI( "EMPRESA", "Cidade" , "Sao Paulo" , cPath + "\" + "nfw.ini", .f. )
cClCEP := VerifyINI( "EMPRESA", "CEP" , "05171-560" , cPath + "\" + "nfw.ini", .f. )
cClEstado := VerifyINI( "EMPRESA", "Estado" , "SP" , cPath + "\" + "nfw.ini", .f. )
cClCNPJ := VerifyINI( "EMPRESA", "CNPJ" , "18.066.611/0001-06" , cPath + "\" + "nfw.ini", .f. )
cClInscr := VerifyINI( "EMPRESA", "IE" , "142.365.346.110" , cPath + "\" + "nfw.ini", .f. )
cClIM := VerifyINI( "EMPRESA", "IM" , "4.743.049-4" , cPath + "\" + "nfw.ini", .f. )
//
cCodUF := VerifyINI( "NFELETRONICA", "cCodUF" , "35" , cPath + "\" + "nfw.ini", .f.)
oGNRE := tGNRE():new()
oGNRE:nLote := 0 // Se numero de lote for igual a ZERO sera gerada uma guia unica, o contratio gera lote com varias guias
oGNRE:Homologacao := .t. // Se homologacao direciona para webservices especificos
oGNRE:c01_UfFavorecida := 26 // Contém a sigla da UF favorecida. Campo com 2 dígitos. (Ver ANEXO 1, na aba 'Anexos')
oGNRE:c02_receita := 1000099 // Contém o código da receita. Campo numérico com 6 dígitos. (Consultar na aba 'Regras de Preenchimento')
oGNRE:c25_detalhamentoReceita := 10101010 // Contém o código do detalhamento da receita. Campo numérico. A quantidade de dígitos corresponde a quantidade de dígitos do código. (Consultar na aba 'Regras de Preenchimento').
oGNRE:c26_produto := "TESTE DE PROD" // Contém o código do produto. Campo numérico. A quantidade de dígitos corresponde a quantidade de dígitos do código. (Consultar na aba 'Regras de Preenchimento').
oGNRE:c27_tipoIdentificacaoEmitente := 1 // Contém o código do tipo de identificação do contribuinte emitente (Responsável pelo Pagamento do Tributo). Campo numérico com 1 dígito. (Ver ANEXO 2, na aba 'Anexos'). Caso a identificação seja pela inscrição estadual, esse campo e sua tag poderão ser omitidos.
oGNRE:c03_idContribuinteEmitente := 41819055000105 // Contém o número do documento de identificação do contribuinte emitente. O CPF/ CNPJ não deverá conter espaços, pontos ou traços e apenas um documento poderá ser colocado no arquivo. Caso a identificação seja pela inscrição estadual, esse campo e sua tag poderão ser omitidos. Caso a identificação seja pelo CNPJ, a tag de CPF e de Inscrição Estadual poderão ser omitidas. Caso a identificação seja pelo CPF, os campos e as tags de CNPJ e de Inscrição Estadual poderão ser omitidos.
// Exemplos:
// CNPJ : <CNPJ>11111111111111</CNPJ>
// CPF : <CPF>11111111111</CPF>
oGNRE:c28_tipoDocOrigem := 10 // Contém o código do tipo de documento de origem. Campo numérico. A quantidade de dígitos corresponde a quantidade de dígitos do código. (Consultar na aba 'Regras de Preenchimento'). Caso a receita não exija documento de origem, esse campo e sua tag poderão ser omitidos.
oGNRE:c04_docOrigem := 5656 // Contém o número contido no documento de origem. Campo numérico sem espaços, traços, pontos ou vírgulas. A quantidade de dígitos corresponde a quantidade de dígitos do número. Caso a receita não exija documento de origem, esse campo e sua tag poderão ser omitidos.
oGNRE:c06_valorPrincipal := 10.99 // Contém o valor original da guia. Digitar apenas números. Usar ponto (".") como separador de decimal, e este deve ter 2 números. Caso a receita não exija valor principal, esse campo e sua tag poderão ser omitidos.
oGNRE:c10_valorTotal := 12.52 // Contém valor total da guia (valor original + encargos). Digitar apenas números. Usar ponto (".") como separador de decimal, e este deve ter 2 números. Caso a receita não exija valor total, esse campo e sua tag poderão ser omitidos. Para calcular os encargos, procurar informações na Sefaz do Estado da UF favorecida.
oGNRE:c14_dataVencimento := "2015-05-01" // Contém a data que o contribuinte deve pagar o tributo de acordo com a legislação de cada UF. Formato: AAAA-MM-DD.
oGNRE:c15_convenio := 546456 // Contém o número do convênio. Sem espaços, traços, pontos ou vírgulas. Este campo não é obrigatório e o tamanho do campo corresponde ao número do convênio. No caso de não ter essa informação, esse campo e sua tag poderão ser omitidos.
oGNRE:c16_razaoSocialEmitente := "GNRE PHP EMITENTE" // Contém o nome da razão social do contribuinte emitente. No caso da identificação do contribuinte ser por inscrição estadual, esse campo e sua tag poderão ser omitidos.
oGNRE:c17_inscricaoEstadualEmitente := 56756 // Contém a inscrição estadual do contribuinte emitente na UF favorecida. Campo numérico sem espaços ou traços. Caso seja inscrito na UF Favorecida, preencher este campo. Caso contrário, esse campo e sua tag poderão ser omitidos.
oGNRE:c18_enderecoEmitente := "Queens St" // Contém o endereço do contribuinte emitente. No caso da identificação do contribuinte ser por inscrição estadual, esse campo e sua tag poderão ser omitidos.
oGNRE:c19_municipioEmitente := 5300108 // Contém o código do município de localização do contribuinte emitente. Campo numérico. (Consultar no site do IBGE). O IBGE informará o código do município no formato "EEmmmmd". Tirar os 2 primeiros números que indicam o número do Estado e só colocar os 5 números restantes, ficando no formato "mmmmd".
// A cidade Recife tem o código 2611606, você tirará os dígitos "26" e colocará no arquivo de lote apenas os dígitos "11606".
oGNRE:c20_ufEnderecoEmitente := "DF" // Contém a UF de localização do contribuinte emitente. Campo com 2 dígitos. (Ver ANEXO 1, na aba 'Anexos'). No caso da identificação do contribuinte ser por inscrição estadual, esse campo e sua tag poderão ser omitidos.
oGNRE:c21_cepEmitente := "08215917" // Contém o CEP do contribuinte emitente com 8 dígitos. Digitar apenas números. Esse campo não é obrigatório. No caso da identificação do contribuinte ser por inscrição estadual, esse campo e sua tag poderão ser omitidos.
oGNRE:c22_telefoneEmitente := 1199999999 // Contém o telefone do contribuinte emitente. Colocar o DDD e o número do telefone. Digitar apenas números. Esse campo não é obrigatório. No caso de não ter essa informação, esse campo e sua tag poderão ser omitidos. Onde: 11 => DDD e 22222222 => Telefone
oGNRE:c34_tipoIdentificacaoDestinatario := 1 // Contém o código do tipo de identificação do contribuinte destinatário. Campo numérico com 1 dígito. (Ver ANEXO 2, na aba 'Anexos'). Caso a receita não exija destinatário, esse campo e sua tag poderão ser omitidos.
oGNRE:c35_idContribuinteDestinatario := 86268158000162 // Contém o número do documento de identificação do contribuinte destinatário. O CPF/ CNPJ não deverá conter espaços, pontos ou traços e apenas um documento poderá ser colocado no arquivo. Caso a receita não exija destinatário, esse campo e sua tag poderão ser omitidos.
oGNRE:c36_inscricaoEstadualDestinatario := 10809181 // Contém a inscrição estadual do contribuinte destinatário. Campo numérico sem espaços ou traços. Caso seja inscrito na UF Favorecida, preencher este campo. Caso a receita não exija destinatário, esse campo e sua tag poderão ser omitidos.
oGNRE:c37_razaoSocialDestinatario := "RAZAO SOCIAL GNRE PHP DESTINATARIO" // Contém o nome da firma ou a razão social do contribuinte destinatário. Caso a receita não exija destinatário, esse campo e sua tag poderão ser omitidos.
oGNRE:c38_municipioDestinatario := 2702306 // Contém o município de localização do contribuinte destinatário. Campo numérico. (Consultar no site do IBGE). O IBGE informará o código do município no formato "EEmmmmd". Tirar os 2 primeiros números que indicam o número do Estado e só colocar os 5 números restantes, ficando no formato "mmmmd".
oGNRE:c33_dataPagamento := "2015-11-30" // Contém a data que o contribuinte irá pagar o tributo.Formato: AAAA-MM-DD.
//oGNRE:c05_referencia := "" // Contém as informações do período de referência. Caso a receita não exija período de referência, esse campo e sua tag poderão ser omitidos.
oGNRE:mes := "05" // Contém o mês de referência da apuração. Campo numérico com 2 dígitos. (Ver ANEXO 3, na aba 'Anexos'). Caso a receita não exija mês de período de referência, esse campo e sua tag poderão ser omitidos.
oGNRE:ano := 2015 // Contém o ano de referência da apuração. Campo numérico com 4 dígitos. Caso a receita não exija ano de período de referência, esse campo e sua tag poderão ser omitidos.
oGNRE:parcela := 2 // Contém o número da parcela do débito. Campo numérico com tamanho máximo de 3 dígitos. Caso a receita não exija parcela no período de referência, esse campo e sua tag poderão ser omitidos.
oGNRE:periodo := 2014 // Contém o código do período. Campo numérico. A quantidade de dígitos corresponde a quantidade de dígitos do código. (Consultar na aba 'Regras de Preenchimento'). Caso a receita não exija código do período, esse campo e sua tag poderão ser omitidos
// Nao importantes
//c39_camposExtras := "" // Lista de campos extras. Poderá ter no máximo 3 campos extras por guia. Caso a receita não exija campos extras, esse campo e sua tag poderão ser omitidos.
//oGNRE:codigo := 0 // Contém o código do campo extra. Campo numérico. A quantidade de dígitos corresponde a quantidade de dígitos do código. (Consultar na aba 'Regras de Preenchimento'). Caso a receita não exija campos extras, esse campo e sua tag poderão ser omitidos.
//oGNRE:tipo := "" // Contém o tipo do campo extra. Campo com um caracter. (Consultar na aba 'Regras de Preenchimento'). Caso a receita não exija campos extras, esse campo e sua tag poderão ser omitidos.
//oGNRE:valor := 0.00 // Contém o valor solicitado no campo extra. Se for do tipo Data 'D', o formato é: AAAA-MM-DD. Se for do tipo Númerico 'N', usar ponto (".") como separador de decimal, e este deve ter 2 números.
//oGNRE:c42_identificadorGuia := 0 // Contém o identificador da guia no lote. O valor deste campo deverá ser informado pelo contribuinte para a identificação da guia. Esta informação é opcional e deve conter apenas números (até 10 posições).
// $lote = new Lote();
// $lote->addGuia($guia);
oGNRE:AdicionaGuia()
oGNRE:Serializa()
? oGNRE:MostraXML()
oGNRE:Enviar()
return .t.
CREATE CLASS tGNRE
VAR nLote
VAR cFileName
VAR Homologacao
VAR aGNRERegistros
VAR aGNRERegExtras
VAR c01_UfFavorecida
VAR c02_receita
VAR c25_detalhamentoReceita
VAR c26_produto
VAR c27_tipoIdentificacaoEmitente
VAR c03_idContribuinteEmitente
VAR c28_tipoDocOrigem
VAR c04_docOrigem
VAR c06_valorPrincipal
VAR c10_valorTotal
VAR c14_dataVencimento
VAR c15_convenio
VAR c16_razaoSocialEmitente
VAR c17_inscricaoEstadualEmitente
VAR c18_enderecoEmitente
VAR c19_municipioEmitente
VAR c20_ufEnderecoEmitente
VAR c21_cepEmitente
VAR c22_telefoneEmitente
VAR c34_tipoIdentificacaoDestinatario
VAR c35_idContribuinteDestinatario
VAR c36_inscricaoEstadualDestinatario
VAR c37_razaoSocialDestinatario
VAR c38_municipioDestinatario
VAR c33_dataPagamento
//VAR c05_referencia
VAR mes
VAR ano
VAR parcela
VAR periodo
//
METHOD New
METHOD AdicionaGuia
METHOD Serializa
METHOD MostraXML
//
METHOD Enviar
METHOD Consulta
END CLASS
METHOD New( cGNREFileName ) CLASS tGNRE
if cGNREFileName == nil
::cFileName := "GNRE.TXT"
else
::cFileName := cGNREFileName
endif
::nLote := 0
::Homologacao := .f.
::aGNRERegistros := {}
::aGNRERegExtras := {}
RETURN( self )
METHOD AdicionaGuia() CLASS tGNRE
aadd( ::aGNRERegistros, { ::c01_UfFavorecida ,;
::c02_receita ,;
::c25_detalhamentoReceita ,;
::c26_produto ,;
::c27_tipoIdentificacaoEmitente ,;
::c03_idContribuinteEmitente ,;
::c28_tipoDocOrigem ,;
::c04_docOrigem ,;
::c06_valorPrincipal ,;
::c10_valorTotal ,;
::c14_dataVencimento ,;
::c15_convenio ,;
::c16_razaoSocialEmitente ,;
::c17_inscricaoEstadualEmitente ,;
::c18_enderecoEmitente ,;
::c19_municipioEmitente ,;
::c20_ufEnderecoEmitente ,;
::c21_cepEmitente ,;
::c22_telefoneEmitente ,;
::c34_tipoIdentificacaoDestinatario ,;
::c35_idContribuinteDestinatario ,;
::c36_inscricaoEstadualDestinatario ,;
::c37_razaoSocialDestinatario ,;
::c38_municipioDestinatario ,;
::c33_dataPagamento ,;
::mes ,;
::ano ,;
::parcela ,;
::periodo })
//aadd( ::aGNRERegExtras, { ::c39_camposExtras ,;
// ::codigo ,;
// ::tipo ,;
// ::valor ,;
// ::c42_identificadorGuia })
return ::aGNRERegistros
METHOD Serializa() CLASS tGNRE
local aGNRE := ::aGNRERegistros
local nGNRE := fCreate( ::cFileName )
cResultado := "" // [<?xml version="1.0" encoding="utf-8"?>] + CRLF
if ::nLote > 0
//cResultado := cResultado + [ <TLote_GNRE xmlns="http://www.gnre.pe.gov.br">] + CRLF
//cResultado := cResultado + [ <guias>] + CRLF
//
endif
FOR I = 1 TO LEN(aGNRE)
//cResultado := cResultado + [ <guias>] + CRLF
cResultado := cResultado + [ <TDadosGNRE>] + CRLF
cResultado := cResultado + [ <c01_UfFavorecida>] + alltrim(str(aGNRE[I][01])) + [</c01_UfFavorecida>] + CRLF
cResultado := cResultado + [ <c02_receita>] + alltrim(str(aGNRE[I][02])) + [</c02_receita>] + CRLF
cResultado := cResultado + [ <c25_detalhamentoReceita>] + alltrim(str(aGNRE[I][03])) + [</c25_detalhamentoReceita>] + CRLF
cResultado := cResultado + [ <c26_produto>] + alltrim(aGNRE[I][04]) + [</c26_produto>] + CRLF
cResultado := cResultado + [ <c27_tipoIdentificacaoEmitente>] + alltrim(str(aGNRE[I][05])) + [</c27_tipoIdentificacaoEmitente>] + CRLF
cResultado := cResultado + [ <c03_idContribuinteEmitente>] + CRLF
cResultado := cResultado + [ <CNPJ>] + alltrim(str(aGNRE[I][06])) + [</CNPJ>] + CRLF
cResultado := cResultado + [ </c03_idContribuinteEmitente>] + CRLF
cResultado := cResultado + [ <c28_tipoDocOrigem>] + alltrim(str(aGNRE[I][07])) + [</c28_tipoDocOrigem>] + CRLF
cResultado := cResultado + [ <c04_docOrigem>] + alltrim(str(aGNRE[I][08])) + [</c04_docOrigem>] + CRLF
cResultado := cResultado + [ <c06_valorPrincipal>] + alltrim(str(aGNRE[I][09],2)) + [</c06_valorPrincipal>] + CRLF
cResultado := cResultado + [ <c10_valorTotal>] + alltrim(str(aGNRE[I][10],2)) + [</c10_valorTotal>] + CRLF
cResultado := cResultado + [ <c14_dataVencimento>] + alltrim(aGNRE[I][11]) + [</c14_dataVencimento>] + CRLF
cResultado := cResultado + [ <c15_convenio>] + alltrim(str(aGNRE[I][12])) + [</c15_convenio>] + CRLF
cResultado := cResultado + [ <c16_razaoSocialEmitente>] + alltrim(aGNRE[I][13]) + [</c16_razaoSocialEmitente>] + CRLF
cResultado := cResultado + [ <c17_inscricaoEstadualEmitente>] + alltrim(str(aGNRE[I][14])) + [</c17_inscricaoEstadualEmitente>] + CRLF
cResultado := cResultado + [ <c18_enderecoEmitente>] + alltrim(aGNRE[I][15]) + [</c18_enderecoEmitente>] + CRLF
cResultado := cResultado + [ <c19_municipioEmitente>] + alltrim(str(aGNRE[I][16])) + [</c19_municipioEmitente>] + CRLF
cResultado := cResultado + [ <c20_ufEnderecoEmitente>] + alltrim(aGNRE[I][17]) + [</c20_ufEnderecoEmitente>] + CRLF
cResultado := cResultado + [ <c21_cepEmitente>] + alltrim(aGNRE[I][18]) + [</c21_cepEmitente>] + CRLF
cResultado := cResultado + [ <c22_telefoneEmitente>] + alltrim(str(aGNRE[I][19])) + [</c22_telefoneEmitente>] + CRLF
cResultado := cResultado + [ <c34_tipoIdentificacaoDestinatario>] + alltrim(str(aGNRE[I][20])) + [</c34_tipoIdentificacaoDestinatario>] + CRLF
cResultado := cResultado + [ <c35_idContribuinteDestinatario>] + CRLF
cResultado := cResultado + [ <CNPJ>] + alltrim(str(aGNRE[I][21])) + [</CNPJ>] + CRLF
cResultado := cResultado + [ </c35_idContribuinteDestinatario>] + CRLF
cResultado := cResultado + [ <c36_inscricaoEstadualDestinatario>] + alltrim(str(aGNRE[I][22])) + [</c36_inscricaoEstadualDestinatario>] + CRLF
cResultado := cResultado + [ <c37_razaoSocialDestinatario>] + alltrim(aGNRE[I][23]) + [</c37_razaoSocialDestinatario>] + CRLF
cResultado := cResultado + [ <c38_municipioDestinatario>] + alltrim(str(aGNRE[I][24])) + [</c38_municipioDestinatario>] + CRLF
cResultado := cResultado + [ <c33_dataPagamento>] + alltrim(aGNRE[I][25]) + [</c33_dataPagamento>] + CRLF
cResultado := cResultado + [ <c05_referencia>] + CRLF
cResultado := cResultado + [ <mes>] + alltrim(aGNRE[I][26]) + [</mes>] + CRLF
cResultado := cResultado + [ <ano>] + alltrim(str(aGNRE[I][27])) + [</ano>] + CRLF
cResultado := cResultado + [ <parcela>] + alltrim(str(aGNRE[I][28])) + [</parcela>] + CRLF
cResultado := cResultado + [ <periodo>] + alltrim(str(aGNRE[I][29])) + [</periodo>] + CRLF
cResultado := cResultado + [ </c05_referencia>] + CRLF
/*
cResultado := cResultado + [ <c39_camposExtras>]
cResultado := cResultado + [ <campoExtra>]
cResultado := cResultado + [ <codigo>16</codigo>]
cResultado := cResultado + [ <tipo>T</tipo>]
cResultado := cResultado + [ <valor>1200012</valor>]
cResultado := cResultado + [ </campoExtra>]
cResultado := cResultado + [ <campoExtra>]
cResultado := cResultado + [ <codigo>15</codigo>]
cResultado := cResultado + [ <tipo>D</tipo>]
cResultado := cResultado + [ <valor>2015-03-02</valor>]
cResultado := cResultado + [ </campoExtra>]
cResultado := cResultado + [ <campoExtra>]
cResultado := cResultado + [ <codigo>10</codigo>]
cResultado := cResultado + [ <tipo>T</tipo>]
cResultado := cResultado + [ <valor>17.21</valor>]
cResultado := cResultado + [ </campoExtra>]
cResultado := cResultado + [ </c39_camposExtras>]
*/
cResultado := cResultado + [ </TDadosGNRE>] + CRLF
NEXT
if ::nLote > 0
//
//cResultado := cResultado + [ </guias>] + CRLF
//cResultado := cResultado + [ </TLote_GNRE>] + CRLF
endif
fWrite( nGNRE, cResultado, LEN(cResultado) )
fClose( nGNRE )
return cResultado
METHOD MostraXML() CLASS tGNRE
return MemoRead( ::cFileName )
METHOD Enviar() CLASS tGNRE
LOCAL cResultado
cURL := iif( ::Homologacao, "http://www.gnre-he.sp.gov.br", "http://www.gnre.sp.gov.br" )
//
cResultado := [<?xml version="1.0" encoding="utf-8"?>]
//
cResultado := cResultado + [<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">] + CRLF
cResultado := cResultado + [ <soap12:Header>] + CRLF
cResultado := cResultado + [ <gnreCabecMsg xmlns="http://www.gnre.pe.gov.br/wsdl/processar">] + CRLF
cResultado := cResultado + [ <versaoDados>1.00</versaoDados>] + CRLF
cResultado := cResultado + [ </gnreCabecMsg>] + CRLF
cResultado := cResultado + [ </soap12:Header>] + CRLF
cResultado := cResultado + [ <soap12:Body>] + CRLF
cResultado := cResultado + [ <gnreDadosMsg xmlns="http://www.gnre.pe.gov.br/webservice/GnreLoteRecepcao">] + CRLF
cResultado := cResultado + [ <TLote_GNRE xmlns="] + cURL + [">] + CRLF
cResultado := cResultado + [ <guias>] + CRLF
cResultado := cResultado + ::MostraXML() + CRLF
cResultado := cResultado + [ </guias>] + CRLF
cResultado := cResultado + [ </TLote_GNRE>] + CRLF
cResultado := cResultado + [ </gnreDadosMsg>] + CRLF
cResultado := cResultado + [ </soap12:Body>] + CRLF
cResultado := cResultado + [</soap12:Envelope>] + CRLF
//
//?"Enviar", cResultado
cResultado := GNREWebService( cResultado, "POST", cURL, "" ) // cSoapAction )
return cResultado
METHOD Consulta( cProtocolo, cUsuario, cSenha, cCNPJ, cCategoria ) CLASS tGNRE
LOCAL cResultado
//
cResultado := [<?xml version="1.0" encoding="utf-8"?>]
cResultado := ""
//
return cResultado
Function GNREWebService( cXMLFile, cMethod, cURL, cSoapAction )
DEFAULT cMethod := "POST", cSoapAction := cURL
DEFAULT cURL := "http://www.gnre.pe.gov.br/wsdl/processar"
oEDXSend:= TOLEAuto():New( "Microsoft.XMLHTTP" )
oEDXSend:Open( cMethod, cURL, .F. )
//oEDXSend:setrequestheader( "SOAPAction", cSoapAction )
//oEDXSend:setrequestheader( "content-type", "text/xml" )
oEDXSend:Send( cXMLFile )
cResultado := oEDXSend:ResponseText()
return cResultado