private XmlElement GerarDest(NFe NFe)
{
XmlElement e0 = doc.CreateElement("dest");
nodeCurrent = e0;
if (NFe.infNFe.Versao <= 2 ||
(NFe.infNFe.Versao >= 3 && (!string.IsNullOrEmpty(NFe.dest.CNPJ) || !string.IsNullOrEmpty(NFe.dest.CPF) || !string.IsNullOrEmpty(NFe.dest.idEstrangeiro))))
{
if (NFe.infNFe.Versao >= 3 && !string.IsNullOrEmpty(NFe.dest.idEstrangeiro))
{
if (NFe.dest.idEstrangeiro.Equals("NAO GERAR TAG"))
wCampo("", TpcnTipoCampo.tcStr, TpcnResources.idEstrangeiro, ObOp.Obrigatorio); //E03a
else
wCampo(NFe.dest.idEstrangeiro, TpcnTipoCampo.tcStr, TpcnResources.idEstrangeiro, ObOp.Opcional); //E03a
}
else
if (NFe.dest.enderDest.cPais != 1058 && NFe.infNFe.Versao <= 2)
wCampo("", TpcnTipoCampo.tcStr, TpcnResources.CNPJ);
else
if (!string.IsNullOrEmpty(NFe.dest.CNPJ))
wCampo(NFe.dest.CNPJ, TpcnTipoCampo.tcStr, TpcnResources.CNPJ);
else
if (!string.IsNullOrEmpty(NFe.dest.CPF))
wCampo(NFe.dest.CPF, TpcnTipoCampo.tcStr, TpcnResources.CPF);
}
if (NFe.ide.mod == TpcnMod.modNFe || (NFe.ide.mod == TpcnMod.modNFCe && !string.IsNullOrEmpty(NFe.dest.xNome)))
{
wCampo(NFe.ide.tpAmb == TipoAmbiente.taProducao ? NFe.dest.xNome : "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL",
TpcnTipoCampo.tcStr,
TpcnResources.xNome,
(NFe.infNFe.Versao >= 3 && NFe.ide.mod == TpcnMod.modNFCe) ? ObOp.Opcional : ObOp.Obrigatorio);
}
if (NFe.ide.mod == TpcnMod.modNFe || (NFe.ide.mod == TpcnMod.modNFCe && !string.IsNullOrEmpty(NFe.dest.enderDest.xLgr))) //danasa: 12/2013
{
///
/// (**)GerarDestEnderDest(UF);
///
XmlElement e1 = doc.CreateElement("enderDest");
e0.AppendChild(e1);
nodeCurrent = e1;
wCampo(NFe.dest.enderDest.xLgr, TpcnTipoCampo.tcStr, TpcnResources.xLgr);
wCampo(NFe.dest.enderDest.nro, TpcnTipoCampo.tcStr, TpcnResources.nro);
wCampo(NFe.dest.enderDest.xCpl, TpcnTipoCampo.tcStr, TpcnResources.xCpl, ObOp.Opcional);
wCampo(NFe.dest.enderDest.xBairro, TpcnTipoCampo.tcStr, TpcnResources.xBairro);
wCampo(NFe.dest.enderDest.cMun, TpcnTipoCampo.tcInt, TpcnResources.cMun, ObOp.Obrigatorio, 7);
wCampo(NFe.dest.enderDest.xMun, TpcnTipoCampo.tcStr, TpcnResources.xMun);
wCampo(NFe.dest.enderDest.UF, TpcnTipoCampo.tcStr, TpcnResources.UF);
wCampo(NFe.dest.enderDest.CEP, TpcnTipoCampo.tcInt, TpcnResources.CEP, ObOp.Opcional, 8);
wCampo(NFe.dest.enderDest.cPais, TpcnTipoCampo.tcInt, TpcnResources.cPais, ObOp.Opcional, 4);
wCampo(NFe.dest.enderDest.xPais, TpcnTipoCampo.tcStr, TpcnResources.xPais, ObOp.Opcional);
wCampo(NFe.dest.enderDest.fone, TpcnTipoCampo.tcStr, TpcnResources.fone, ObOp.Opcional);
}
///
/// </enderDest">
///
nodeCurrent = e0;
if (e0.HasChildNodes)
{
if ((double)NFe.infNFe.Versao >= 3.10)
wCampo((int)NFe.dest.indIEDest, TpcnTipoCampo.tcInt, TpcnResources.indIEDest, ObOp.Obrigatorio);
else
NFe.dest.indIEDest = TpcnindIEDest.inContribuinte; //força para a versao 2.00
switch (NFe.dest.indIEDest)
{
case TpcnindIEDest.inContribuinte:
case TpcnindIEDest.inNaoContribuinte:
{
if (!string.IsNullOrEmpty(NFe.dest.IE) || NFe.infNFe.Versao < 3)
{
if (NFe.dest.enderDest.UF != "EX" || NFe.dest.enderDest.cPais == 1058)
{
if (string.IsNullOrEmpty(NFe.dest.IE))
{
wCampo("", TpcnTipoCampo.tcStr, TpcnResources.IE);
}
else
if (!string.IsNullOrEmpty(NFe.dest.IE) || NFe.ide.mod != TpcnMod.modNFCe)
{
wCampo(NFe.dest.IE, TpcnTipoCampo.tcStr, TpcnResources.IE);
}
}
else
{
wCampo("ISENTO", TpcnTipoCampo.tcStr, TpcnResources.IE);
}
}
}
break;
}
wCampo(NFe.dest.ISUF, TpcnTipoCampo.tcStr, TpcnResources.ISUF, ObOp.Opcional);
wCampo(NFe.dest.IM, TpcnTipoCampo.tcStr, TpcnResources.IM, ObOp.Opcional);
wCampo(NFe.dest.email, TpcnTipoCampo.tcStr, TpcnResources.email, ObOp.Opcional);
}
return e0;
}