- 14. Gerar XML da NF-e [23-12-13]
14.1. Identificação da NF-e NT2020/06 [21-02-21] - 14. Gerar XML da NF-e [23-12-13]
« Anterior - 14.2. Informações das Notas Fiscais referenciadas
Próximo »
14.1. Identificação da NF-e NT2020/06 [21-02-21]
Funcionalidade para gerar o XML do grupo do Identificação da NF-e 4.00
Assinatura
string identificador202006(int cUF, int cNF, string natOp, int mod, int serie, int nNF, string dhEmi, string dhSaiEnt, int tpNF, int idDest, string cMunFG, string NFref, int tpImp, int tpEmis,int cDV, int tpAmb, int finNFe, int indFinal, int indPres, int procEmi, string verProc, string dhCont, string xJust, int indIntermed_Opc)
Descrição:
Funcionalidade para gerar o XML do grupo do Identificação da NF-e da versão 4.x do leiaute da NF-e.
Parâmetros:
nome | tipo | tam. | obrig. | descrição |
---|---|---|---|---|
cUF | inteiro | - | sim | informar o código da UF do emitente do Documento Fiscal, utilizar a codificação do IBGE (Ex. SP->35, RS->43, etc.) |
cNF | inteiro | - | sim | informar o código numérico que compõe a Chave de Acesso. Número aleatório gerado pelo emitente para cada NF-e para evitar acessos indevidos da NF-e. |
natOpe | string | 1-60 | sim | informar a natureza da operação de que decorrer a saída ou a entrada, tais como: venda, compra, transferência, devolução, importação, consignação, remessa (para fins de demonstração, de industrialização outra), conforme previsto na alínea 'i', inciso I, art. 19 do CONVÊNIO S/Nº, de 15 de dezembro de 1970. |
mod | inteiro | - | sim | informar o código do Modelo do Documento Fiscal, código 55 para a NF-e ou código 65 para NFC-e. |
serie | inteiro | - | sim | Série do Documento Fiscal, preencher com zeros na hipótese de a NF-e não possuir série. Série na faixa: - [000-889]: Aplicativo do Contribuinte; Emitente=CNPJ; Assinatura pelo e-CNPJ do contribuinte (procEmi<>1,2); - [890-899]: Emissão no site do Fisco (NFA-e - Avulsa);Emitente= CNPJ / CPF; Assinatura pelo e-CNPJ da SEFAZ (procEmi=1); - [900-909]: Emissão no site do Fisco (NFA-e); Emitente=CNPJ; Assinatura pelo e-CNPJ da SEFAZ (procEmi=1), ou Assinatura pelo e-CNPJ do contribuinte (procEmi=2); - [910-919]: Emissão no site do Fisco (NFA-e); Emitente=CPF; Assinatura pelo e-CNPJ da SEFAZ (procEmi=1), ou Assinatura pelo e-CPF do contribuinte (procEmi=2); - [920-969]: Aplicativo do Contribuinte; Emitente=CPF; Assinatura pelo e-CPF do contribuinte (procEmi<>1,2); |
nNF | infeiro | - | sim | informar o Número do Documento Fiscal. |
dhEmi | string | 25 | sim | informar a data de emissão do Documento Fiscal no padrão UTC - Universal Coordinated Time, onde TZD pode ser -02:00 (Fernando de Noronha), -03:00 (Brasília) ou -04:00(Manaus), no horário de verão serão - 01:00, -02:00 e -03:00. Ex.: 2010-08-19T13:00:15-03:00. Nota 1: No caso da NF-e, a informação da Hora de Emissão é opcional, podendo ser informada com zeros. Nota 2: A emissão da NFC-e deve ocorrer de forma on-line, realtime, com uma tolerância de até 5 minutos, devido ao sincronismo de horário do servidor da Empresa e o servidor da SEFAZ. Nota 3: A tolerância acima motivada pelo horário dos servidores, somada ao atraso permitido para a autorização da NFC-e acaba resultando em um atraso máximo de 10 minutos a ser controlado pela aplicação da SEFAZ. |
dhSaiEnt | string | 25 | não | informar a data e hora de Saída ou da Entrada da Mercadoria/Produto no padrão UTC - Universal Coordinated Time, onde TZD pode ser -02:00 (Fernando de Noronha), -03:00 (Brasília) ou -04:00(Manaus), no horário de verão serão - 01:00, -02:00 e -03:00. Ex.: 2010-08-19T13:00:15-03:00. Nota: Para a NFC-e este campo não deve existir. |
tpNF | inteiro | - | sim | informar o código do tipo do Documento Fiscal: 0 - entrada; 1 - saída. |
idDest | inteiro | - | sim | informar o identificador de local de destino da operação: 1 - Operação interna; 2 - Operação interestadual; 3 - Operação com exterior. |
cMunFG | string | 7 | sim | informar o código do Município de Ocorrência do Fato Gerador do ICMS, que é o local onde ocorre a entrada ou saída da mercadoria, utilizar a Tabela do IBGE |
NFRef | string | - | não | informar o grupo de informações NFRef dos documentos fiscais referenciados, Utilizar para referenciar um Documento Fiscal vinculado a NF-e atual. Esta informação será utilizada nas hipóteses previstas na legislação. (Ex.: Devolução de Mercadorias, Substituição de NF cancelada, Complementação de NF, etc.). Necessário montar o grupo XML do documento correspondente. |
tpImp | inteiro | - | sim | informar o formato de impressão do DANFE: 0 - Sem geração de DANFE; 1 - DANFE normal, Retrato; 2 - DANFE normal, Paisagem; 3 - DANFE Simplificado; 4 - DANFE NFC-e; 5 - DANFE NFC-e em mensagem eletrônica (o envio de mensagem eletrônica pode ser feita de forma simultânea com a impressão do DANFE; usar o tpImp - 5 quando esta for a única forma de disponibilização do DANFE). |
tpEmis | inteiro | - | sim | informar o código da forma de emissão: 1 - Emissão normal (não em contingência); 2 - Contingência FS-IA, com impressão do DANFE em formulário de segurança; 3 - Contingência SCAN (Sistema de Contingência do Ambiente Nacional); 4 - Contingência EPEC (Evento Prévio de Emissão em Contingência); 5 - Contingência FS-DA, com impressão do DANFE em formulário de segurança; 6 - Contingência SVC-AN (SEFAZ Virtual de Contingência do AN); 7 - Contingência SVC-RS (SEFAZ Virtual de Contingência do RS); 9 - Contingência off-line da NFC-e; Nota 1: Para a NFC-e somente são válidas as opções de contingência 4 (EPEC) e 9 (off-line), sendo que a disponibilidade da opção de contingência depende da UF (Ex.: SP só permite a contingência EPEC). Nota 2: SVC-AN e SVC-RS substituem o SCAN - NT 2013/007. |
cDV | inteiro | - | sim | informar o código do dígito verificador - DV da Chave de Acesso da NF-e, o DV será calculado com a aplicação do algoritmo módulo 11 (base 2,9) da Chave de Acesso. |
tpAmb | inteiro | - | sim | informar o código de identificação do Ambiente: 1 - Produção; 2 - Homologação |
finNFe | inteiro | - | sim | informar o código da finalidade de emissão da NF-e: 1 - NF-e normal; 2 - NF-e complementar; 3 - NF-e de ajuste; 4 - Devolução |
indFinal | inteiro | - | sim | informar o indicador de operação com Consumidor final: 0 - Não; 1 - Consumidor final; |
indPres | inteiro | - | sim | Informar o indicador de presença do comprador no estabelecimento comercial no momento da operação: 0 - Não se aplica (por exemplo, Nota Fiscal complementar ou de ajuste); 1 - Operação presencial; 2 - Operação não presencial, pela Internet; 3 - Operação não presencial, Teleatendimento; 4 - NFC-e em operação com entrega a domicílio; 5 - Operação presencial fora do estabelecimento. 9 - Operação não presencial, outros. (obrigatório informar a tag indIntermed_Opc quando = 2, 3, 4 e 9) [14-02-21] |
procEmi | inteiro | - | sim | informar o código de identificação do processo de emissão da NF-e: Identificador do processo de emissão da NF-e: 0 - emissão de NF-e com aplicativo do contribuinte; 1 - emissão de NF-e avulsa pelo Fisco; 2 - emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site do Fisco; 3 - emissão NF-e pelo contribuinte com aplicativo fornecido pelo Fisco. |
verProc | string | 1-20 | sim | informar a versão do processo de emissão da NF-e utilizada (aplicativo emissor de NF-e). |
dhCont | string | 25 | não | informar a data e hora de entrada em contingência no padrão UTC - Universal Coordinated Time, onde TZD pode ser -02:00 (Fernando de Noronha), -03:00 (Brasília) ou -04:00(Manaus), no horário de verão serão - 01:00, -02:00 e -03:00. Ex.: 2010-08-19T13:00:15-03:00. Importante: dhCont e xJust devem ser ambos informados ou omitidos. |
xJust | string | 15-256 | não | informar a justificativa de entrada em contingência, deve ser informado sempre que tpEmis for diferente de 1. Importante: dhCont e xJust devem ser ambos informados ou omitidos. |
indIntermed_Opc | inteiro | - | ? | informar o indicador de intermediador/marketplace: 0=Operação sem intermediador (em site ou plataforma própria); 1=Operação em site ou plataforma de terceiros (intermediadores/marketplace); (campo novo, obrigatório, a DLL gera somente quando indPres=1, 2, 3 4 ou 9) [21-02-21] |
Diagrama:
Dica
Os campos com contorno tracejado podem ser omitidos se a operação não exigir a informação.
Os campos em verde são tags novas ou tags que sofreram alteração na definição na versão 3.x0 do leiaute.
Os campos do tipo data foram modificados para string e devem ser informados no formato UTC - Universal Coordinated Time, onde TZD pode ser -02:00 (Fernando de Noronha), -03:00 (Brasília) ou -04:00(Manaus), no horário de verão serão - 01:00, -02:00 e -03:00. Ex.: 2010-08-19T13:00:15-03:00
O grupo XML NFRef dos documentos fiscais referenciados deve ser criado em separado se necessário.
Retorno:
Um string com o grupo XML de identificação
XML:
Exemplo de trecho do XML
<ide> <cUF>35</cUF> <cNF>00559284</cNF> <natOp>Venda</natOp> <mod>55</mod> <serie>0</serie> <nNF>1</nNF> <dhEmi>2021-02-10T10:12:13-02:00</dhEmi> <tpNF>1</tpNF> <idDest>1</idDest> <cMunFG>3550308</cMunFG> <tpImp>1</tpImp> <tpEmis>1</tpEmis> <cDV>3</cDV> <tpAmb>2</tpAmb> <finNFe>1</finNFe> <indFinal>0</indFinal> <indPres>0</indPres> <indIntermed>0</indIntermed> <procEmi>0</procEmi> <verProc>NFe_Util_2G</verProc> </ide>
Importante
O trecho do XML foi formatado para uma melhor visualização, a mensagem original não tem formatação.
Vale observar que a formatação pode corromper a assinatura digital, além de ocupar espaço e sendo desnecessária, pois os browser exibem formatado.
Exemplos de uso:
Visual Basic 6.0
' ' DECLARAÇÃO DAS VARIÁVEIS '======Identificação do documento======= ' Dim ide As String Dim ide_cUF As Long Dim ide_cNF As String Dim ide_natOp As String Dim ide_mode As Long Dim ide_serie As Long Dim ide_nNF As Long Dim ide_dhEmi As String Dim ide_dhSaiEnt As String Dim ide_tpNF As Long Dim ide_cMunFG As String Dim ide_tpImp As Long Dim ide_cDV As Long Dim ide_tpAmb As Long Dim ide_finNFe As Long Dim ide_tpEmis As Long Dim ide_procEmi As Long Dim ide_verProc As String Dim ide_NFref As String Dim ide_hSaiEnt As String Dim ide_dhCont As String Dim ide_xJust As String Dim ide_indPres As Long Dim ide_indFinal As Long Dim ide_idDest As Long Dim ide_indIntermed As Long ' inicializar variáveis '............................................... ' ' criação dos grupos ' ' '========grupo de identificação da NF-e - grupo B do Manual de integração ' ide_cUF = 35 ' código da UF - tabela do IBGE: 35 - SP, 43 - RS, etc ide_natOp = "Venda" ' naturez da operação ide_mode = 55 ' modelo da nota fiscal eletronica 55 NF-e ou 65 NFC-e ide_serie = 0 ' série única = 0 ide_nNF = 1 ' número da NF-e ide_dhEmi = "2021-02-10T10:12:13-03:00" ' data de emissão no formato UTC ide_dhSaiEnt = "" ' data da saída no formato UTC ide_tpNF = 1 ' 1 - nota fiscal de saída ' 0 - nota fiscal de entrada ide_idDest = 1 ' 1 - Operação interna; ' 2 - Operação interestadual; ' 3 - Operação com exterior. ide_cMunFG = "3550308" ' código do município do IBGE de ocorrência do FG do ICMS ide_tpImp = 1 ' orientação da impressão ' 0-Sem geração de DANFE; ' 1-DANFE normal , Retrato; ' 2-DANFE normal, Paisagem; ' 3-DANFE Simplificado; ' 4-DANFE NFC-e; ' 5-DANFE NFC-e em mensagem eletrônica ide_tpAmb = 2 ' ambiente de envio da NF-e 1-produção / 2 - homologação ide_finNFe = 1 ' finalidade da emissão da NF-e 1- NF-e normal ide_tpEmis = 1 ' forma de emissão da NF-e: ' 1 - Emissão normal (não em contingência); ' 2 - Contingência FS-IA, com impressão do DANFE em formulário de segurança; ' 4 - Contingência EPEC (Evento Prévio da Emissão em Contingência); ' 5 - Contingência FS-DA, com impressão do DANFE em formulário de segurança; ' 6 - Contingência SVC-AN (SEFAZ Virtual de Contingência do AN); ' 7 - Contingência SVC-RS (SEFAZ Virtual de Contingência do RS); ' 9 - Contingência off-line da NFC-e (somente para a NFC-e e desde que a UF permita); ' Opções válidas para a NF-e: 1, 2, 4, 5, 6 e 7 ' Opções válidas para a NFC-e: 1, 4 ou 9, consultar UF. ide_procEmi = 0 ' identificação do processo de emissão da NF-e 0 - aplicação do contribuinte ide_verProc = "NFe_Util_2G" ' identificação da versão do processo de emissão ide_NFref = "" ' grupo XML da NF referenciada, utilizar as funcionalidade para gerar o grupo da NFRef se necessário ide_dhCont = "" ' data e hora de entrada em contingência no formato UTC ide_xJust = "" ' justificativa para emissão em contingência ide_idDest = 1 ' 1 - Operação interna; ' 2 - Operação interestadual; ' 3 - Operação com exterior. ide_indFinal = 0 ' 0 - não / 1 - consumidor final ide_indPres = 0 ' Indicar de presença do comprado no estabelecimento comercial no momento da operação ' 0 =Não se aplica (por exemplo, para a Nota Fiscal complementar ou de ajuste); ' 1 - Operação presencial; ' 2 - Operação não presencial, pela Internet; ' 3 - Operação não presencial, Teleatendimento; ' 4 - NFC-e em operação com entrega em domicílio; ' 5 - Operação presencial fora do estabelecimento; ' 9 - Operação não presencial, outros. ' Nota: Para a NFC-e, somente são aceitas as opções 1 e 4. ide_indIntermed = 0 ' indicador de intermediador/marketplace, obrigatório informar quando indPres =2, 3, 4 ou 9 ' 0=Operação sem intermediador (em site ou plataforma própria) ' 1=Operação em site ou plataforma de terceiros (intermediadores/marketplace); ' gera a chave de acesso da NF-e ' ' utilizar a função criaChaveNFe para gerar a chave de acesso, código da NF-e e DV ' '=========variáveis de trabalho ' ' Dim resultado As Long Dim emi_CNPJ As String Dim cUF, ano, mes, modelo, serie, numero, tpemis, codigoseguranca As String Dim msgResult As String Dim cNF As String Dim cDV As String emi_CNPJ = "00000000000191" cUF = Trim(Str(ide_cUF)) ano = Mid(ide_dhEmi, 3, 2) mes = Mid(ide_dhEmi, 6, 2) modelo = Trim(Str(ide_mode)) serie = Trim(Str(ide_serie)) numero = Trim(Str(ide_nNF)) tpemis = Trim(Str(ide_tpEmis)) msgResult = "" codigoseguranca = "segredo" ' informar uma expressão para garantir o sigilo da forma de cálculo do cNF cNF = "" cDV = "" chaveNFe = "" Dim objNFeUtil As Object Set objNFeUtil = CreateObject("NFe_Util_2G.Util") resultado = objNFeUtil.CriaChaveNFe2G(cUF, ano, mes, emi_CNPJ, modelo, serie, numero, tpemis, codigoseguranca, msgResult, cNF, cDV, chaveNFe) If resultado <> 5601 Then MsgBox "Ocorreu um erro ao gerar a chave de acesso " + msgResult, vbInformation, "Resultado" End If ide_cNF = Val(cNF) ' código numérico que compõe a chave de acesso ide_cDV = Val(cDV) ' DV da chave de acesso da NF-e ' ' gera grupo ide ' ide = objNFeUtil.identificador202006(ide_cUF, _ ide_cNF, _ ide_natOp, _ ide_Mod, _ ide_serie, _ ide_nNF, _ ide_dhEmi, _ ide_dhSaiEnt, _ ide_tpNF, _ ide_idDest, _ ide_cMunFG, _ ide_NFref, _ ide_tpImp, _ ide_tpEmis, _ ide_cDV, _ ide_tpAmb, _ ide_finNFe, _ ide_indFinal, _ ide_indPres, _ ide_procEmi, _ ide_verProc, _ ide_dhCont, _ ide_xJust, _ ide_indIntermed) MsgBox ide, vbInformation, "Informação"
Delphi
procedure TForm1.Button1Click(Sender: TObject); var Util: OleVariant; ide:widestring; ide_cUF : integer; ide_natOp :widestring; ide_Mod : integer; ide_serie : integer; ide_nNF : integer; ide_dhEmi :widestring; ide_dhSaiEnt :widestring; ide_tpNF : integer; ide_idDest : integer; ide_cMunFG :widestring; ide_tpImp : integer; ide_tpAmb : integer; ide_finNFe : integer; ide_tpEmis : integer; ide_procEmi : integer; ide_verProc :widestring; ide_NFref : widestring; ide_dhCont :widestring; ide_xJust : widestring; ide_indFinal : integer; ide_indPres : integer; ide_cNF :widestring; ide_cDV :widestring; ide_indIntermed : integer; begin ide_cUF := 35; ide_natOp := 'Venda'; ide_mod := 55; ide_serie := 0; ide_nNF := 1; ide_dhEmi := '2021-02-10T10:12:13-03:00'; ide_dhSaiEnt := ''; ide_tpNF := 1; ide_idDest := 1; ide_cMunFG := '3550308'; ide_tpImp := 1; ide_tpAmb := 2; ide_finNFe := 1; ide_tpEmis := 1; ide_procEmi := 0; ide_verProc := 'NFe_Util_2G'; ide_NFref := ''; ide_dhCont := ''; ide_xJust := ''; ide_idDest := 1; ide_indFinal := 0; ide_indPres := 0; ide_indIntermed :=0; ide_cNF := '0'; ide_cDV := '0'; // // gera grupo ide // Util := CreateOleObject('NFe_Util_2G.util'); ide := Util.identificador202006(ide_cUF, ide_cNF, ide_natOp, ide_Mod, ide_serie, ide_nNF, ide_dhEmi, ide_dhSaiEnt, ide_tpNF, ide_idDest, ide_cMunFG, ide_NFref, ide_tpImp, ide_tpEmis, ide_cDV, ide_tpAmb, ide_finNFe, ide_indFinal, ide_indPres, ide_procEmi, ide_verProc, ide_dhCont, ide_xJust, ide_indIntermed); MessageDlg( 'XML resultante: '+ide, mtInformation, [mbOk], 0); end;
- 14.1. Identificação da NF-e NT2020/06 [21-02-21]
14. Gerar XML da NF-e [23-12-13] - « Anterior
14. Gerar XML da NF-e [23-12-13] - Próximo »
14.2. Informações das Notas Fiscais referenciadas