Funcionalidade para gerar o XML do grupo do Identificação da NF-e 4.00
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)
Funcionalidade para gerar o XML do grupo do Identificação da NF-e [ide] da versão 4.x (NT2020/006) do leiaute da NF-e.
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 | informar a série do Documento Fiscal, informar 0 (zero) para série única. A emissão normal pode utilizar série de 0-889, a emissão em contingência SCAN deve utilizar série 900-999. |
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] |
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 do leiaute.
Um string com o grupo XML de identificação
<ide>
<cUF>35</cUF>
<cNF>00559284</cNF>
<natOp>Venda</natOp>
<mod>55</mod>
<serie>0</serie>
<nNF>1</nNF>
<dhEmi>2013-12-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>
<procEmi>0</procEmi>
<verProc>NFe_Util_2G</verProc>
</ide>
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.
VB 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;