NFe.ConvertTxt.NFeW.GerarDest C# (CSharp) Method

GerarDest() private method

GerarDest
private GerarDest ( NFe NFe ) : XmlElement
NFe NFe
return System.Xml.XmlElement
        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;
        }