Compare com a sua, ignore as funções que são particulares nos IFs.
// Valida XML
Method ValidaXml(XmlDoc, TipoXml, cXmlAssinado) Class TVoNFeUtil2G
Local nRet:=0,Mensagem:=""
Local QtdErros:=0
Local ErrosXml:=""
// NEW - 23/01/2013 - Evitando: Ronaldo(CVS) kkkkk
LOCAL oDlgErro, oFnt, oFont, IDCor, oSaida, oIco, cSiteFlexs, ;
oAjudaErro, oSaida2, oSayFalha, cPromptDsay, cSiteGoogle, ;
oAjudaGoogle, cTitle, oErro5305, cErro5305
DEFAULT cXmlAssinado := ""
//DEFAULT TipoXml:=19 // PASSEI PARA BAIXO: 09/02/2015
IF lNovaDll4 // VERSAO 4.00
DEFAULT TipoXml:=68 // Mudou na versao 4.00
XmlDoc := ::ReadXml(XmlDoc)
If TipoXml== 68 // Mudou na Versao 4.00 alterado em 11/02/2018
If ::Assinar(XmlDoc, "infNFe", @cXmlAssinado)
XmlDoc := cXmlAssinado
Else
Return( .f. )
Endif
Endif
ELSE // NA VERSAO 3.10 ERA ASSIM:
DEFAULT TipoXml:=52 // Mudou na versao 3.10 By Gilmer
XmlDoc := ::ReadXml(XmlDoc)
If TipoXml== 52 // Mudou na Versao 3.10 By Gilmer 20/10/2014
If ::Assinar(XmlDoc, "infNFe", @cXmlAssinado)
XmlDoc := cXmlAssinado
Else
Return( .f. )
Endif
Endif
ENDIF
// NAO MUDOU NADA AQUI NA Versao 3.10 By Gilmer.
nRet := ::oNFEUtil:ValidaXML(XmlDoc, TipoXml, @Mensagem, @QtdErros, @ErrosXml)
::cMensagem:=ErrosXml
// teste tirar isto abaixo nao esquecer - 23/01/2013 Somente teste.
// nret := 5505 //Para testar o Erro 5505
// nret := 5305 //Para testar o Erro 5305 deu na CALU em: 18/11/2013
If nRet != 5501 // 5505 e erro de Schema de XML
If ::lMensagem
::GeraLog(Mensagem+" - Total de Erros:"+Alltrim(Str(QtdErros))+CRLF+ErrosXml+CRLF+XmlDoc)
#IFDEF __DOS__
Alert(hb_ansitooem(Mensagem)+"-"+ProcName()+"-"+hb_ansitooem(ErrosXML) )
#ELSE
wTextoErro := ErrosXML
nRetErroXml := SUBSTR( wTextoErro, 27, 17 ) // 27,13
// ? nRetErroXml
// SOMENTE TESTE, TIRAR
// nRetErroXml := "Campo:[dVenc]"
// nRetErroXml := "Campo:[natOp]"
// USUARIO NAO PREENCHEU O CAMPO DO ENDERECO 27/06/2013
IF ALLTRIM( nRetErroXml ) = "Campo:[xLgr]"
// Evitando a CVS de Novo( O Retorno ) 27/06/2013 Joao
// ESTA EM: DBMANUT2.PRG 07/04/2014
CAMPO_LOGRADOURO_NAO_PREENCHIDO()
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[xBairro]"
// ESTA EM: DBMANUT2.PRG 28/09/2015 - Esqueci no plenocb
CAMPO_BAIRRO_NAO_PREENCHIDO()
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[xMun]"
// ESTA EM: DBMANUT2.PRG 07/04/2014
CAMPO_CIDADE_NAO_PREENCHIDO()
// Campo:[email] errado no cadastro de clientes.
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[email]"
// ESTA EM: DBMANUT2.PRG 07/04/2014
CAMPO_EMAIL_NAO_PREENCHIDO()
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[IE]"
// ESTA EM: DBMANUT2.PRG 18/03/2015 - ERRO NA TORBAL NA 3.10
CAMPO_INSCRICAO_ESTADUAL()
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[xNome]"
// ESTA EM: DBMANUT2.PRG 18/03/2015 - ERRO NA TORBAL NA 3.10
CAMPO_NOME_DO_CLIENTE()
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[dhSaiEnt]"
CAMPO_HORA_SAIDA() // ERRO DE DIGITACAO NA INCENTIVO. 01/04/2015
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[dhEmi]"
CAMPO_HORA_SAIDA()
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[NIHIL]" .OR. ;
ALLTRIM( nRetErroXml ) = "Campo:[NIHIL] Conteúdo:[NIHIL] Erro:O elemento 'ICMS10' no espaço para nome"
CAMPO_VAZIO_ICMS() // 22/04/2015 - EM: DBMANUT2.PRG
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[infCpl]"
CAMPO_INF_COMPLEMENTAR() // 27/04/2015 - EM: DBMANUT2.PRG
// Campo:[dVenc] Conteúdo:[5015-06-01] - Gilmaria Andaluzia
// informar a data de vencimento da duplicata
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[dVenc]"
CAMPO_VENCIMENTO_DUPLICATA() // 30/04/2015 EM DBMANUT2.PRG E FUNCOES.PRG
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[CEST]"
// ERRO NA TORBAL - DIGITARAM O CAMPO CEST ERRADO.
CAMPO_CEST_INVALIDO() // 30/03/2016 - EM: DBMANUT2.PRG
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[placa]"
CAMPO_PLACA_VEICULO() // 19/09/2017 - EM: DBMANUT2.PRG
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[NCM]"
CAMPO_NCM_INVALIDO() // 27/07/2016 - EM: DBMANUT2.PRG
// Meire BJ para variar... 02/08/2016 Joao
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[natOp]" // Conteúdo:[DEVOL COMPRA P/COMERCIALIZA‡AO]
CAMPO_NATOP_INVALIDO() // 02/08/2016 - EM: DBMANUT2.PRG
ELSEIF ALLTRIM( nRetErroXml ) = "Campo:[veicTransp]"
CAMPO_TRANSPORTADORA() // 18/12/2017 - EM: DBMANUT2.PRG
ENDIF
NFeAlert(Mensagem+" - "+CRLF+ProcName()+CRLF+ErrosXML,,,CAPTION_MSG,,IDI_HAND)
// TRANSFERI PARA DBMANUT2.PRG EM: 07/04/2014-diminuindo consumo
ERRO_5505_FALHA_NO_SCHEMA_DO_XML( nRet ) // ESTA EM: DBMANUT2.PRG
#ENDIF
Endif
Endif
Return( nRet==5501 )