16.1. Identificação da NF-e
16.1.2. Identificação da NF-e 2G
16.1.1. Identificação da NF-e
« Anterior
16.2. Informações das Notas Fiscais referenciadas
Próximo »

16.1.2. Identificação da NF-e 2G

Funcionalidade para gerar o XML do grupo do Identificação da NF-e 2G

Assinatura

string identificador2G(int cUF, int cNF, string natOp, int indPag, int mod, int serie, int nNF, DateTime dEmi, DateTime dSaiEnt, string hSaiEnt, int tpNF, string cMunFG, string NFref, int tpImp, int tpEmis, int cDV, int tpAmb, int finNFe, int procEmi, string verProc, DateTime dhCont, string xJust)

Descrição:

Funcionalidade para gerar o XML do grupo do Identificação da NF-e da versão 2.00 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. (tamanho do campo reduzido para 8 dígitos)
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.
indPag inteiro - sim informar o indicador da forma de pagamento:
0 - pagamento à vista;
1 - pagamento à prazo;
2 - outros.
mod inteiro - sim informar o código do Modelo do Documento Fiscal, código 55 para a NF-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.
dEmi data - sim informar a data de emissão do Documento Fiscal.
dSaiEnt data - não informar a data de saída ou entrada da mercadoria ou do produto, pode ser omitido informando:
Delphi: 0 (zero)
.NET (c#, VB.NET): DateTime.MinValue
VB 6.0 : #12:00:00 AM#
Outros (xBase, etc) : 1899-12-30
hSaiEnt string - não informar a hora de saída ou entrada da mercadoria ou do produto no formato HH:MM:SS, pode ser omitido. (campo novo)
tpNFe inteiro - sim informar o código do tipo do Documento Fiscal: 0 - entrada ou 1 - saída
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 mercacoria, 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. (novas opções de documento referenciado: CT-e, Cupom Fiscal e Nota Fiscal de Produtor)
tpImp inteiro - sim informar o formato de impressão do DANFE: 1-retrato ou 2-paisagem.
tpEmis inteiro - sim informar o código da forma de emissão:
1 - Normal - emissão normal;
2 - Contingência FS - emissão em contingência com impressão do DANFE em Formulário de Segurança;
3 - Contingência SCAN - emissão em contingência no Sistema de Contingência do Ambiente Nacional - SCAN;
4 - Contingência DPEC - emissão em contingência com envio da Declaração Prévia de Emissão em Contingência - DPEC;
5 - Contingência FS-DA - emissão em contingência com impressão do DANFE em Formulário de Segurança para Impressão de Documento Auxiliar de Documento Fiscal Eletrônico (FS-DA).
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 ou 2-Homologação
finNFe inteiro - sim infformar o código da finalidade de emissão da NF-e: 1- NF-e normal; 2-NF-e complementar; 3 - NF-e de ajuste.
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 data - não informar a data e hora de entrada em contingência no formato AAAA-MM-DDTHH:MM:SS (campo novo)
Deve ser informado com um conteúdo válido sempre que tpEmis for diferente de 1, para omitir o conteúdo, quando tpEmis=1, informe:
Delphi: 0 (zero)
.NET (c#, VB.NET): DateTime.MinValue
VB 6.0 : #12:00:00 AM#
Outros (xBase, etc) : 1899-12-30
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. (campo novo)
Importante: dhCont e xJust devem ser ambos informados ou omitidos.

Dica para omitir o conteúdo de um parâmetro do tipo data

Informar a menor data aceita pela linguagem:

Delphi: 0 (zero)

.NET (c#, VB.NET): DateTime.MinValue

VB 6.0 : #12:00:00 AM#

Outros (xBase, etc) : 1899-12-30

Diagrama:

DiagramaIdentificacao

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 2.00 do leiaute.

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 XML da versão 2.00 do leiaute da NF-e emissão normal (tpEmis=1 - emissão normal -> no WS da UF)

    <ide>
      <cUF>35</cUF>
      <cNF>71414682</cNF>
      <!--  reducao do tamanho do cNF para 8 digitos, para maiores detalhes veja itens 5 e 9.2 da NT 2009/006 -->
      <natOp>Venda a vista</natOp>
      <indPag>0</indPag>
      <mod>55</mod>
      <serie>1</serie>
      <!-- a serie permitida para emissao na SEFAZ foi restringida para faixa 0-889, para maiores detalhes veja item 9.3 da NT 2009/006 -->
      <nNF>1</nNF>
      <dEmi>2010-05-06</dEmi>
      <dSaiEnt>2010-05-06</dSaiEnt>
      <hSaiEnt>09:00:00</hSaiEnt>
      <!-- acrescimo da hora de saida da mercadoria, para maiores detalhes veja item 9.4 da NT 2009/006 -->
      <tpNF>0</tpNF>
      <cMunFG>3550308</cMunFG>
      <tpImp>1</tpImp>
      <tpEmis>1</tpEmis>
      <cDV>4</cDV>
      <tpAmb>2</tpAmb>
      <finNFe>1</finNFe>
      <procEmi>0</procEmi>
      <verProc>NFe_Util_2G</verProc>
    </ide>

Exemplo de XML da versão 2.00 do leiaute da NF-e emissão em contingência (tpEmis=2 - emissão em contingência com uso de FS - Formulário de Segurança)

    <ide>
      <cUF>35</cUF>
      <cNF>71414682</cNF>
      <!--  reducao do tamanho do cNF para 8 digitos, para maiores detalhes veja itens 5 e 9.2 da NT 2009/006 -->
      <natOp>Venda a vista</natOp>
      <indPag>0</indPag>
      <mod>55</mod>
      <serie>1</serie>
      <!-- a serie permitida para emissao na SEFAZ foi restringida para faixa 0-889, para maiores detalhes veja item 9.3 da NT 2009/006 -->
      <nNF>1</nNF>
      <dEmi>2010-05-06</dEmi>
      <dSaiEnt>2010-05-06</dSaiEnt>
      <hSaiEnt>09:00:00</hSaiEnt>
      <!-- acrescimo da hora de saida da mercadoria, para maiores detalhes veja item 9.4 da NT 2009/006 -->
      <tpNF>0</tpNF>
      <cMunFG>3550308</cMunFG>
      <tpImp>1</tpImp>
      <tpEmis>2</tpEmis>
      <!-- tpEmis = 2 - em contingencia FS, necessario informar a data e hora de adoção da contingencia e motivo da contingencia (dhCont e xJust) -->
      <cDV>4</cDV>
      <tpAmb>2</tpAmb>
      <finNFe>1</finNFe>
      <procEmi>0</procEmi>
      <verProc>NFe_Util_2G</verProc>
      <dhCont>2010-05-06T08:50:00</dhCont>
      <xJust>Indisponibilidade do Web Service de recepção</xJust>
      <!-- data e hora e motivo da entrada em contingencia, para maiores detalhes veja item 9.5 da NT 2009/006 -->
    </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_indPag As Long
Dim ide_mode As Long
Dim ide_serie As Long
Dim ide_nNF As Long
Dim ide_dEmi As Date
Dim ide_dSaiEnt As Date
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 Date
Dim ide_xJust As String
 
 
' 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_indPag = 0                  ' 0=pagamento à vista
ide_mode = 55                   ' modelo da nota fiscal eletronica
ide_serie = 0                   ' série única = 0
ide_nNF = 1                     ' número da NF-e
ide_dEmi = #4/30/2010#          ' data de emissão
ide_dSaiEnt = #4/30/2010#       ' data da saída, informe #12:00:00 AM# para deixar vazio em VB
ide_hSaiEnt = "09:30:00"        ' hora da saída
ide_tpNF = 1                    ' número da nota fiscal de saída
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 1-retrato/2-paisagem
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- normal, 2 - contingência FS, 3 - contingência SCAN, etc.
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 = #12:00:00 AM#      ' data e hora de entrada em contingência - informar quanto tpEmis diferente de 1, informe #12:00:00 AM# para deixar vazio em VB
ide_xJust = ""          ' justificativa para emissão em contingência
'
'     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 = Format(ide_dEmi, "YY")
mes = Format(ide_dEmi, "mm")
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.identificador2G(ide_cUF, ide_cNF, ide_natOp, ide_indPag, ide_mode, ide_serie, ide_nNF, ide_dEmi, ide_dSaiEnt, ide_hSaiEnt, ide_tpNF, ide_cMunFG, ide_NFref, ide_tpImp, ide_tpEmis, ide_cDV, ide_tpAmb, ide_finNFe, ide_procEmi, ide_verProc, ide_dhCont, ide_xJust)
 
MsgBox msgResultado & vbCrLf & ide, vbInformation, "Informação"

Delphi

 
procedure TForm1.Button3Click(Sender: TObject);
var
Util : OleVariant;
ide:widestring;
ide_cUF:integer;
ide_cNF:integer;
ide_natOp:widestring;
ide_indPag:integer;
ide_mode:integer;
ide_serie:integer;
ide_nNF:integer;
ide_dEmi:Tdatetime;
ide_dSaiEnt:Tdatetime;
ide_tpNF:integer;
ide_cMunFG:widestring;
ide_tpIMP:integer;
ide_cDV:integer;
ide_tpAmb:integer;
ide_finNFe:integer;
ide_tpEmis:integer;
ide_procEmi:integer;
ide_verProc:widestring;
 
//
//  campos novos
//
 
ide_hSaiEnt: widestring;
ide_dhCont: TDateTime;
ide_xJust: WideString;
 
begin
 
ide_cUF:=35;
ide_cNF:=1;
ide_natOp:='Venda';
ide_indPag:=1;
ide_mode:=55;
ide_serie:=0;
ide_nNF:=1;
ide_dEmi:=now;
ide_dSaiEnt:=now;
ide_hSaiEnt:='15:00:00';
ide_tpNF:=1;
ide_cMunFG:='3550308';
ide_tpIMP:=1;
ide_cDV:=0;
ide_tpAmb:=2;
ide_finNFe:=1;
ide_tpEmis:=2;
ide_procEmi:=0;
ide_verProc:='Teste';
 
 
 
ide_dhCont:= 0;     // 0 é igual a data vazia no Delphi
ide_xJust:= '';
 
 
//
//  as tags da contingência só devem ser informadas em caso de emissão em contingência -> tpEmis diferente de 1
//
 
// ide_dhCont:= now;
// ide_xJust:= 'Teste de montagem do grupo';
 
Util := CreateOleObject('NFe_util_2G.util');
 
ide:=Util.Identificador2G(ide_cUF,ide_cNF,ide_natOP, ide_indPag, ide_mode, ide_serie, ide_nNF,ide_dEMI,ide_dSaiEnt,ide_hSaiEnt,ide_tpNF, ide_cMunFG, '',ide_tpImp, ide_tpEmis,ide_cDV,ide_tpAmb, ide_finNFe,ide_procEmi, ide_verProc, ide_dhCont, ide_xJust);
 
 
end;
16.1.2. Identificação da NF-e 2G
16.1. Identificação da NF-e
« Anterior
16.1.1. Identificação da NF-e
Próximo »
16.2. Informações das Notas Fiscais referenciadas