Jump to content
Fivewin Brasil

NFe 4.00


toya

Recommended Posts

  • 3 weeks later...
  • 4 weeks later...
  • 2 weeks later...

Para Marcelo - Marca. Vou começar a cobrar. kkkkkkkkkkkkkkkkk

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 By Paulo 
	      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]"
	               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]"                                                   
 
               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
	            // 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]"
	               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
	             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)
	            ERRO_5505_FALHA_NO_SCHEMA_DO_XML( nRet )  // ESTA EM: DBMANUT2.PRG
	         #ENDIF
	      Endif
	   Endif
	Return( nRet==5501 )


 

Link to comment
Share on other sites

 

Para Marcelo - Marca. Vou começar a cobrar. kkkkkkkkkkkkkkkkk

 


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 By Paulo 
	      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]"
	               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]"                                                   
 
               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
	            // 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]"
	               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
	             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)
	            ERRO_5505_FALHA_NO_SCHEMA_DO_XML( nRet )  // ESTA EM: DBMANUT2.PRG
	         #ENDIF
	      Endif
	   Endif
	Return( nRet==5501 )


 

KKKK

Irei me lembrar disso curintiano.......

 

Link to comment
Share on other sites

Ja desenvolvi e estou atualizando meus clientes mas estou com um problema no AcBRMonitor, ele não da o foco do preview da DANFE e ai da a impressão que o sistema trava devido o foco da preview não aparecer e ai só restaurando ou ALT+TAB para acessar coisa que não acontecia nas versões com apenas 3.10.

Alguém passou ou tem este problema?

Versão 1.1.0.54

 

Link to comment
Share on other sites

  • 2 weeks later...

A minha nota fiscal já funcionou normalmente com a nova versão do Gilme, mas o cupom eletrônico não está assinando.

O comando que estou utilisando é este:

If !oNFeUtil:ValidaXml(cDocXml, 68,@cXmlAssinado,"000001","000001")  
   return( .f. )
Endif
 

Erro invalido para xml 3.00 e 3.10

Acredito que seja essa chamada.

Se alguém poder me ajudar ficarei grato.

 

 

Link to comment
Share on other sites

Boa tarde Galera.

Alguém já consegui validar a vr 4.0 pelo validaxml classe do Gilmer?

Estou tentando validar uma xml emitente Simples Nacional e já acrescentei todas as novas tags mas continua dando o erro 5505.

No metodos ValidaXml já alterei o segundo parâmetro de 52 para 68.

Achei que era por causa da indpag na seção <pag> e a omiti a omiti, mas mesmo assim o erro continua. Tô começando a ficar desesperado rsrsrs

VoNfeUtil - 06/06/18 12:34:25
TVONFEUTIL2G:VALIDAXML
ENVIASEFAZ
5505 - Erro: XML não atende a especificação do Schema XML: [nfe_v4.00.xsd] , analise a lista de erros: [1 - Linha:0001 Coluna:3424 Campo:[NIHIL] Conteúdo:[NIHIL] Erro:O elemento 'infNFe' no espaço para nome 'http://www.portalfiscal.inf.br/nfe' apresenta elemento filho 'cobr' no espaço para nome 'http://www.portalfiscal.inf.br/nfe' inválido. Lista de possíveis elementos esperados: 'infAdic, exporta, compra, cana' no espaço para nome 'http://www.portalfiscal.inf.br/nfe'.
] - Total de Erros:1
1 - Linha:0001 Coluna:3424 Campo:[NIHIL] Conteúdo:[NIHIL] Erro:O elemento 'infNFe' no espaço para nome 'http://www.portalfiscal.inf.br/nfe' apresenta elemento filho 'cobr' no espaço para nome 'http://www.portalfiscal.inf.br/nfe' inválido. Lista de possíveis elementos esperados: 'infAdic, exporta, compra, cana' no espaço para nome 'http://www.portalfiscal.inf.br/nfe'.
 

Link to comment
Share on other sites

Novas exigências Nota Fiscal Eletrônica 4.0

A nova versão da Nota Fiscal Eletrônica, a NFe 4.0, entra em vigor Abril de 2018, com novo layout/leiaute, campos de preenchimento e regras de validação e não vai funcionar no Windows XP e Vista!

As alterações de leiaute da NF-e são feitas, geralmente, a cada três ou quatro anos, a fim de cumprir atualizações de leis e normas técnicas.

A versão 3.10 está em vigor desde 2014, e desde Dezembro de 2017 a versão 4.0 já está em ambiente de produçãosubstituindo a versão antiga, NFe 3.10, e, a partir de Abril/2018 –de acordo com norma técnica do governo, será obrigatório.

A NFe 4.0 é uma nova versão da Nota Fiscal Eletrônica, com novo layout/leiaute, novas regras de validação e campos de preenchimento, e é preciso adotá-la até o prazo final, para que seja possível a emissão de notas fiscais.

Atualização Sistema Operacional

Se sua empresa utiliza os sistemas operacionais, Windows Vista ou Winsdows XP, é necessário migrar para o Windows 7 ou uma versão superior (8, 8.1 ou 10), para poder emitir notas fiscais.

Os computadores que se comunicam com a Sefaz que estão com as versões do Windows (Windows 7, Windows 8, Windows Server 2003) precisam ser atualizadas para versões mais recentes.

As versões suportadas são Windows 7 SP1, Windows 8.1, Windows 10, Windows Server 2008, 2012, 2016  e precisam estar com as últimas atualizações do Windows instaladas, disponibilizadas pela Microsoft (Windows Update), para que o protocolo TLS 1.2 esteja instalado/atualizado.

Essa atualização do novo protocolo de segurança TLS 1.2, não é uma limitação do Evolution, e sim uma necessidade de comunicação com a Sefaz.

recomendável que essa mudança seja feita antecipadamente, para que não haja contratempos de última hora e a empresa fique sem emitir notas fiscais.

Após atualizar os computadores que se comunicam com a Sefaz, aconselhamos que seja aberto um chamado em nosso Suporte Técnico para que nossos Técnicos possam rodar um validador de ambiente que desenvolvemos especialmente para verificar os usuários Evolution.

Não deixe para depois.

Link to comment
Share on other sites

  • 4 weeks later...

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...