Funcionalidade para gerar o XML do grupo do Destinatário da NF-e / NFC-e.
string destinatario310(string CNPJ, string CPF, string idEstrangeiro, string xNome, string xLgr, string nro, string xCpl, string xBairro, string cMun, string xMun, string UF, string CEP, string cPais, string xPais, string fone, string indIEDest, string IE, string IESUF, string IM, string eMail)
Funcionalidade para gerar o XML do grupo do Destinatário da NF-e / NFC-e.
A versão 3.x do leiaute da NFC-e/NF-e trouxe alterações significativas na geração do grupo de informações do destinatário.
No caso da NFC-e, a identificação do destinatário tem algumas particularidades:
• Identificação opcional, até o limite máximo de valor total da operação definido pela UF. Acima do limite de valor, mesmo para o caso de estrangeiro, é necessária a identificação do destinatário;
• Em qualquer caso, se for decidido pela identificação do destinatário, também é opcional a identificação completa do endereço, ou somente a identificação de CPF, CNPJ, ou dados do estrangeiro;
• No caso de emissão de NFC-e para entrega em domicílio (campo indPres=4), independentemente do valor da operação, é obrigatória a identificação do destinatário e do endereço de entrega.
Para a NF-e, se mantém obrigatória a identificação completa do destinatário, controlada por regras de validação efetuadas pela SEFAZ.
Incluído campo para a identificação da IE do destinatário (tag:indIEDest), que irá documentar a informação do destinatário Contribuinte do ICMS (obrigatória a informação da IE do destinatário), Contribuinte Isento de Inscrição (não deve informar a IE) e Não Contribuinte. Neste último caso, a IE do destinatário pode ser informada ou não, já que algumas UF concedem inscrição estadual para não contribuintes.
nome | tipo | tam. | obrig. | descrição |
---|---|---|---|---|
CNPJ | string | 14 | sim | informar o CNPJ do destinatário, sem formatação ou máscara |
CPF | string | 11 | sim | CPF do destinatário, sem formatação ou máscara |
idEstrangeiro | string | 0,5-20 | sim | No caso de operação com o exterior, ou para comprador estrangeiro informar a tag “idEstrangeiro”, com o número do passaporte ou outro documento legal para identificar pessoa estrangeira. Nota: Campo aceita valor Nulo. (campo novo) [23-12-13] |
xNome | string | 2-60 | não | informar a razão social do destinatário, pode ser omitida no caso de NFC-e. [23-12-13] |
xLgr | string | 2-60 | sim | informar o logradouro do destinatário, o grupo de informações do endereço do destinatário pode ser omitido no caso de NFC-e. [23-12-13] |
nro | string | 1-60 | sim | informar o número do endereço do destinatário, campo obrigatório. Informar S/N ou . (ponto) ou – (traço) para evitar falha de schema XML quando não houver número. |
xCpl | string | 1-60 | não | informar o complemento do endereço do destinatário, pode ser omitido |
xBairro | string | 2-60 | sim | informar o bairro do endereço do destinatário |
cMun | string | 7 | sim | informar o código do município na codificação do IBGE com 7 dígitos |
xMun | string | 2-60 | sim | informar o nome do município |
UF | string | 2 | sim | informar a sigla da UF |
CEP | string | 8 | não | informar o CEP, sem formatação ou máscara, pode ser omitido |
cPais | string | 4 | não | informar o código do pais na codificação do BCB, se informado deve ser 1058 |
xPais | string | 6 | não | informar o nome do país, se informado deve ser Brasil ou BRASIL |
fone | string | 6-14 | não | informar o telefone com DDD + número, sem formatação |
indIEDest | string | 1 | sim | Indicador da IE do Destinatário, informar: 1 – Contribuinte ICMS (informar a tag IE do destinatário); 2 – Contribuinte isento de Inscrição no cadastro de Contribuintes do ICMS – não informar a tag IE; 9 – Não Contribuinte, que pode ou não possuir Inscrição Estadual no Cadastro de Contribuintes do ICMS – não informar a tag IE. Nota 1: No caso de NFC-e informar indIEDest=9 e não informar a tag IE do destinatário; Nota 2: No caso de operação com o Exterior informar indIEDest=9 e não informar a tag IE do destinatário; Nota 3: No caso de Contribuinte Isento de Inscrição (indIEDest=2), não informar a tag IE do destinatário. (campo novo) [23-12-13] |
IE | string | 2-14 | não | informar a IE do destinatário (somente quando informar a tag indIEDest=1), sem formatação ou máscara A tag não aceita mais a literal “ISENTO”, assim só informe a Inscrição Estadual, isto é só informe está tag quando informar a tag indIEDest=1. Nota: Não informar esta tag no caso da NFC-e. [23-12-13] |
ISUF | string | 8-9 | não | informar a Inscrição SUFRAMA do destinatário, sem formatação ou máscara, se existir. |
IM | string | 1-15 | não | Inscrição Municipal do Tomador do Serviço, campo opcional, pode ser informado na NF-e conjugada, com itens de produtos sujeitos ao ICMS e itens de serviços sujeitos ao ISSQN (campo novo) [23-12-13] |
string | 1-60 | não | informar o e-mail do destinatário, pode ser omitido |
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.
A tag CNPJ não aceita mais valor nulo, em caso de destinatário que seja pessoa estrangeira informar a tag idEstrangeiro com o número do passaporte ou outro documento legal para identificar pessoa estrangeira.
Nota: Campo aceita valor Nulo.
O grupo de identificação do destinatário pode ser omitido na NFC-e, também é possível informar o CPF/idEstrangeiro ou o CPF/idEstrangeiro e o nome.
O grupo de informações do endereço do destinatário podem ser omitidos no caso de NFC-e.
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.10 do leiaute.
Um string com o grupo XML do emitente.
TAG indIEDest = 1 – destinatário contribuinte do ICMS
<dest>
<CNPJ>00000000000191</CNPJ>
<xNome>DISTRIBUIDORA DE AGUAS MINERAIS</xNome>
<enderDest>
<xLgr>AV DAS FONTES</xLgr>
<nro>1777</nro>
<xCpl>10 ANDAR</xCpl>
<xBairro>PARQUE FONTES</xBairro>
<cMun>5030801</cMun>
<xMun>Sao Paulo</xMun>
<UF>SP</UF>
<CEP>13950000</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
<fone>1932011234</fone>
</enderDest>
<indIEDest>1</indIEDest>
<IE>123456789</IE>
<email>contato@nf-eletronica.com</email>
</dest>
TAG indIEDest = 2 – destinatário contribuinte do ICMS, mas ISENTO de inscrição no cadastro de contribuintes do ICMS
<dest>
<CPF>11122233344</CPF>
<xNome>Fulano de Tal - transportador autonomo</xNome>
<enderDest>
<xLgr>AV DAS FONTES</xLgr>
<nro>1777</nro>
<xCpl>10 ANDAR</xCpl>
<xBairro>PARQUE FONTES</xBairro>
<cMun>5030801</cMun>
<xMun>Sao Paulo</xMun>
<UF>SP</UF>
<CEP>13950000</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
<fone>1932011234</fone>
</enderDest>
<indIEDest>9</indIEDest>
<email>caminhoneiro@transporte.com</email>
</dest>
TAG indIEDest = 9 – destinatário não contribuinte do ICMS
<dest>
<CNPJ>00000000000191</CNPJ>
<xNome>Banco do Brasil S/A</xNome>
<enderDest>
<xLgr>AV DAS FONTES</xLgr>
<nro>1777</nro>
<xCpl>10 ANDAR</xCpl>
<xBairro>PARQUE FONTES</xBairro>
<cMun>5030801</cMun>
<xMun>Sao Paulo</xMun>
<UF>SP</UF>
<CEP>13950000</CEP>
<cPais>1058</cPais>
<xPais>BRASIL</xPais>
<fone>1932011234</fone>
</enderDest>
<indIEDest>9</indIEDest>
<email>contato@nf-eletronica.com</email>
</dest>
Exemplo de XML da versão 3.10 do leiaute da NFC-e
<dest>
<CPF>11122233344</CPF>
<indIEDest>9</indIEDest>
</dest>
<dest>
<CPF>11122233344</CPF>
<xNome>Fulano de Tal</xNome>
<indIEDest>9</indIEDest>
</dest>
<dest>
<idEstrangeiro>1234567890</idEstrangeiro>
<xNome>Fulano de Tal</xNome>
<indIEDest>9</indIEDest>
</dest>
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 ser desnecessária, pois os browser exibem formatado.
Visual Basic 6.0
' inicializar variáveis
'...............................................
Dim objNFeUtil As Object
Set objNFeUtil = CreateObject("NFe_Util_2G.Util")
'
'========grupo de identificação do destinatario =======
'
' <>&" são caracteres reservados do XML e devem ser evitados ou substituídos
' por < &gy; & "
'
' Vale ressaltar que as aplicações das UF devem mostrar DIAS & DIAS TENTANDO S/A,
' pois não entedem & como &, assim talvez seja melhor substituir o & por e.
'
dest_CNPJ = "00000000000191" ' CNPJ do destinatario sem máscara de formatação
dest_CPF = "" ' CPF do destinatario sem máscara de formatação
dest_idEstrangeiro = "" ' Número do passaporte ou outro documento legal para indentificar pessoa estrangeira
dest_xNome = "Banco do Brasil S/A" ' Razão social do destinatario, evitar caracteres acentuados e &
dest_xLgr = "Rua Libero Badaro" ' logradouro
dest_nro = "280" ' número, informar S/N quando inexistente para evitar erro de Schema XML
dest_xCpl = "10 andar" ' complemento do endereço, o conteúdo pode ser omitido
dest_xBairro = "CENTRO" ' bairro
dest_cMun = "3550308" ' código do município (vide página 141 do manual), deve ser compatível com a UF
dest_xMun = "SAO PAULO" ' nome do município
dest_UF = "SP" ' sigla da UF
dest_CEP = "01315000" ' CEP - sem máscara
dest_cPais = "1058" ' código do pais - deve fixo em 1058 - Brasil
dest_xPais = "Brasil" ' nome do pais (Brasil ou BRASIL)
dest_fone = "1133221234" ' número do telefone sem máscara
dest_indIEDest = "9" ' Indicador da IE do Destinatário
dest_IE = "123456789011" ' Inscrição Estadual do destinatario sem máscara
dest_IESUF = "" ' Inscrição SUFRAMA
dest_IM = "99988811100" ' Inscrição Municipal do Tomador do Serviço
dest_eMail = "contato@bb.com.br" ' e-mail do destinatário
'
' gera grupo do destinatário
'
dest = objNFeUtil.destinatario310(dest_CNPJ, dest_CPF, dest_idEstrangeiro, dest_xNome, dest_xLgr, dest_nro, dest_xCpl, dest_xBairro, dest_cMun, dest_xMun, dest_UF, dest_CEP, dest_cPais, dest_xPais, dest_fone, dest_indIEDest, dest_IE, dest_IESUF, dest_IM, dest_eMail)
MsgBox dest, vbInformation, "Informação"
' inicializar variáveis
'...............................................
Dim objNFeUtil As Object
Set objNFeUtil = CreateObject("NFe_Util_2G.Util")
'
'========grupo de identificação do destinatario =======
'
' <>&" são caracteres reservados do XML e devem ser evitados ou substituídos
' por < &gy; & "
'
' Vale ressaltar que as aplicações das UF devem mostrar DIAS & DIAS TENTANDO S/A,
' pois não entedem & como &, assim talvez seja melhor substituir o & por e.
'
dest_CNPJ = "" ' CNPJ do destinatario sem máscara de formatação
dest_CPF = "11122233344" ' CPF do destinatario sem máscara de formatação
dest_idEstrangeiro = "" ' Número do passaporte ou outro documento legal para indentificar pessoa estrangeira
dest_xNome = "Fulano de Tal" ' Razão social do destinatario, evitar caracteres acentuados e &
dest_xLgr = "" ' logradouro
dest_nro = "" ' número, informar S/N quando inexistente para evitar erro de Schema XML
dest_xCpl = "" ' complemento do endereço, o conteúdo pode ser omitido
dest_xBairro = "" ' bairro
dest_cMun = "" ' código do município (vide página 141 do manual), deve ser compatível com a UF
dest_xMun = "" ' nome do município
dest_UF = "" ' sigla da UF
dest_CEP = "" ' CEP - sem máscara
dest_cPais = "" ' código do pais - deve fixo em 1058 - Brasil
dest_xPais = "" ' nome do pais (Brasil ou BRASIL)
dest_fone = "" ' número do telefone sem máscara
dest_indIEDest = "" ' indicador a IE do destinatário
dest_IE = "" ' Inscrição Estadual do destinatario sem máscara
dest_IESUF = "" ' Inscrição SUFRAMA
dest_IM = "" ' Inscrição Municipal
dest_eMail = "" ' e-mail do destinatário
'
' gera grupo do destinatário
'
dest = objNFeUtil.destinatario310(dest_CNPJ, dest_CPF, dest_idEstrangeiro, dest_xNome, dest_xLgr, dest_nro, dest_xCpl, dest_xBairro, dest_cMun, dest_xMun, dest_UF, dest_CEP, dest_cPais, dest_xPais, dest_fone, dest_indIEDest, dest_IE, dest_IESUF, dest_IM, dest_eMail)
MsgBox dest, vbInformation, "Informação"
Delphi
procedure TForm1.Button5Click(Sender: TObject);
// acrescentar comObj no use da unit.
var
Util: Olevariant;
//====== Dados do Destinatário==========
dest: widestring;
dest_CNPJ: widestring;
dest_CPF: widestring;
dest_xNome: widestring;
dest_xLgr: widestring;
dest_nro: widestring;
dest_xCpl: widestring;
dest_xBairro: widestring;
dest_cMun: widestring;
dest_xMun: widestring;
dest_UF: widestring;
dest_CEP: widestring;
dest_cPais: widestring;
dest_xPais: widestring;
dest_fone: widestring;
dest_IE: widestring;
dest_IESUF: widestring;
dest_eMail:widestring;
//========================== campos novos
dest_idEstrangeiro: widestring;
dest_indIEDest: widestring;
dest_IM: widestring;
begin
//
//========grupo de identificação do destinatario (grupo E do Manual de Integração =====================
//
// <>&'; são caracteres reservados do XML e devem ser evitados ou substituídos
// por < &gy; & "
//
// Vale ressaltar que as aplicações das UF devem mostrar DIAS & DIAS TENTANDO S/A,
// pois não entedem & como &, assim talvez seja melhor substituir o & por e.
//
dest_CNPJ := '00000000000191'; // CNPJ do destinatario sem máscara de formatação
dest_CPF := ''; // CPF do destinatario sem máscara de formatação
dest_idEstrangeiro := ''; // Número do passaporte ou outro documento legal para indentificar pessoa estrangeira
dest_xNome := 'Banco do Brasil S/A'; // Razão social do destinatario, evitar caracteres acentuados e &
dest_xLgr := 'Rua Libero Badaro'; // logradouro
dest_nro := '280'; // número, informar S/N quando inexistente para evitar erro de Schema XML
dest_xCpl := '10 andar'; // complemento do endereço, o conteúdo pode ser omitido
dest_xBairro := 'CENTRO'; // bairro
dest_cMun := '3550308'; // código do município (vide página 141 do manual), deve ser compatível com a UF
dest_xMun := 'SAO PAULO'; // nome do município
dest_UF := 'SP'; // sigla da UF
dest_CEP := '01315000'; // CEP - sem máscara
dest_cPais := '1058'; // código do pais - deve fixo em 1058 - Brasil
dest_xPais := 'Brasil'; // nome do pais (Brasil ou BRASIL)
dest_fone := '1133221234'; // número do telefone sem máscara
dest_indIEDest := '1'; // indicador a IE do destinatário
dest_IE := '123456789011'; // Inscrição Estadual do destinatario sem máscara
dest_IESUF := ''; // Inscrição SUFRAMA
dest_IM :=''; // Inscrição Municipal do tomador
dest_eMail := 'contato@bb.com.br'; // e-mail do destinatário
//
// gera grupo do destinatário
//
Util := CreateOleObject('NFe_util_2G.util');
dest := Util.destinatario310(dest_CNPJ, dest_CPF, dest_idEstrangeiro, dest_xNome, dest_xLgr, dest_nro, dest_xCpl, dest_xBairro, dest_cMun, dest_xMun, dest_UF, dest_CEP, dest_cPais, dest_xPais, dest_fone, dest_indIEDest, dest_IE, dest_IESUF, dest_IM, dest_eMail);
MessageDlg( dest, mtInformation, [mbOk], 0);
end;