public ControladorDireccion()
 {
     coloniasDAO   = new ColoniasDAO();
     estadosDAO    = new EstadosDAO();
     municipiosDAO = new MunicipiosDAO();
     paisesDAO     = new PaisesDAO();
 }
예제 #2
0
        public ActionResult Form()
        {
            ViewBag.Pais = new Pais();
            PaisesDAO    dao    = new PaisesDAO();
            IList <Pais> paises = dao.Lista();

            ViewBag.Paises = paises;
            return(View(paises));
        }
예제 #3
0
        public void EliminarRegistroPais()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setIdpais(int.Parse(txtcodigo.Text));
            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.EliminarPais();
            MessageBox.Show("Registro Eliminado");
        }
예제 #4
0
        public void Guardar()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setNombrepais(txtpais.Text);
            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.GuardarPais();
            MessageBox.Show("Registro guardado");
        }
예제 #5
0
        public void EliminarRegistroPais()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setIdpais(Convert.ToInt16(txtcodigo.Text));
            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.EliminarPais();
            MessageBox.Show("Registro eliminado correctamente.");
        }
예제 #6
0
        public void GuardarCambios()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setIdpais(Convert.ToInt16(txtcodigo.Text));
            paisesDTO.setNombrepais(txtnombrepais.Text);
            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.GuardarCambiosPais();
            MessageBox.Show("Registro modificado.");
        }
예제 #7
0
        private void guardarNuevoPais()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setNombrepais(txtnombrepais.Text);
            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.guardarNuevoPais();

            MessageBox.Show("Registro Exitoso");
        }
예제 #8
0
        public void GuardarCambios()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setIdpais(int.Parse(txtcodigo.Text));
            paisesDTO.setNombrepais(txtpais.Text);
            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.GuardarCambiosPais();
            MessageBox.Show("Registro Modificado");
        }
예제 #9
0
        private void GuardarPais()
        {
            paisesDTO            = new PaisesDTO();
            paisesDTO.opcion     = 1;
            paisesDTO.nombrepais = txtnombre.Text;
            paisesDAO            = new PaisesDAO(paisesDTO);

            paisesDAO.GuardarPais();
            MessageBox.Show("Guardado exitoso", "Guardar");
        }
예제 #10
0
        private void guardarCambiosPais()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setIdpais(Byte.Parse(txtcodigo.Text));
            paisesDTO.setNombrepais(txtnombrepais.Text);
            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.guardarCambiospais();

            MessageBox.Show("Modificación Exitosa");
        }
예제 #11
0
        public void GuardarCambios()
        {
            paisesDTO = new PaisesDTO();
            paisesDTO.setIdpais(Convert.ToInt16(txtcodigo.Text));
            paisesDTO.setNombrepais(txtpais.Text);

            paisesDAO = new PaisesDAO(paisesDTO);

            paisesDAO.GuardarCambios();
            MessageBox.Show("Cambios guardados correctamente.");
        }
예제 #12
0
        public void ListarPaises()
        {
            paisesDTO = new PaisesDTO();
            paisesDAO = new PaisesDAO(paisesDTO);
            Dtt       = new DataTable();
            Dtt       = paisesDAO.ListarPaises();

            if (Dtt.Rows.Count > 0)
            {
                dtpaises.DataSource = Dtt;
            }
            else
            {
                MessageBox.Show("No hay registros de Paises.");
            }
        }
예제 #13
0
        private void listarPaises()
        {
            paisesDTO = new PaisesDTO();
            paisesDAO = new PaisesDAO(paisesDTO);

            dataTable = new DataTable();
            dataTable = paisesDAO.ListarPaises();

            if (dataTable.Rows.Count > 0)
            {
                dtpaises.DataSource = dataTable;
            }
            else
            {
                MessageBox.Show("No hay paises para mostrar");
            }
        }
예제 #14
0
        private void ListarPaises()
        {
            paisesDTO = new PaisesDTO();
            paisesDAO = new PaisesDAO(paisesDTO);

            DttPaises = new DataTable();
            DttPaises = paisesDAO.ListarPaises();

            if (DttPaises.Rows.Count > 0)
            {
                cmbpais.DataSource = DttPaises;

                DataRow dataRow = DttPaises.NewRow();
                dataRow["nombrepais"] = "Seleccione";
                DttPaises.Rows.InsertAt(dataRow, 0);

                cmbpais.DisplayMember = "nombrepais";
                cmbpais.ValueMember   = "idpais";
            }
        }
        private void listarPaises()
        {
            paisesDTO = new PaisesDTO();
            paisesDAO = new PaisesDAO(paisesDTO);

            datatablePaises = new DataTable();
            datatablePaises = paisesDAO.ListarPaises();

            if (datatablePaises.Rows.Count > 0)
            {
                cmbpaises.DataSource = datatablePaises;

                DataRow dataRow = datatablePaises.NewRow();
                dataRow["nombrepais"] = "Seleccione..";
                datatablePaises.Rows.InsertAt(dataRow, 0);

                cmbpaises.DisplayMember = "nombrepais";
                cmbpaises.ValueMember   = "idpais";
            }
            else
            {
                MessageBox.Show("No hay paises para mostrar");
            }
        }
예제 #16
0
 public CtrlPaises() : base(new PaisesDAO())
 {
     this.DaoPais = (PaisesDAO)this.Dao;
 }
예제 #17
0
        protected void btnImportar_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.txtUpload.PostedFile == null)
                {
                    ModelState.AddModelError(string.Empty, "Nenhum arquivo informado");
                }

                if (this.txtUpload.PostedFile.ContentLength == 0)
                {
                    ModelState.AddModelError(string.Empty, "Arquivo inválido");
                }

                var extensao = new FileInfo(this.txtUpload.PostedFile.FileName)?.Extension?.ToUpper() ?? string.Empty;

                if (string.IsNullOrWhiteSpace(extensao))
                {
                    ModelState.AddModelError(string.Empty, "Arquivo inválido");
                }

                if (!extensao.Equals(".XML") && !extensao.Equals(".TXT") && !extensao.Equals(".CSV"))
                {
                    ModelState.AddModelError(string.Empty, "É permitido apenas importação de arquivos .txt, .csv ou .xml");
                }

                if (!ModelState.IsValid)
                {
                    return;
                }

                if (!UploadArquivo(this.txtUpload))
                {
                    throw new Exception("O arquivo não pode ser processado. Certifique-se que já não esteja aberto em outro programa");
                }

                if (extensao == ".XML")
                {
                    try
                    {
                        var dueBusca = _documentoUnicoExportacaoDAO.ObterDUEPorId(this.txtDueID.Value.ToInt());

                        if (dueBusca == null)
                        {
                            throw new Exception("DUE não encontrada");
                        }

                        if (this.txtUpload.HasFiles)
                        {
                            int xmlsImportados = 1;

                            foreach (HttpPostedFile uploadedFile in this.txtUpload.PostedFiles)
                            {
                                string nomeArquivo = Path.Combine(Server.MapPath("Uploads"), uploadedFile.FileName);

                                XmlDocument doc = new XmlDocument();
                                doc.Load(nomeArquivo);

                                XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
                                ns.AddNamespace("nfe", "http://www.portalfiscal.inf.br/nfe");

                                var cnpjEmitente        = "";
                                var razaoSocialEmitente = "";
                                var enderecoEmitente    = "";
                                var estadoEmitente      = "";

                                var informacoesEmitente = doc.SelectNodes("//nfe:emit", ns);

                                foreach (XmlNode dadoEmit in informacoesEmitente)
                                {
                                    foreach (XmlNode childNode in dadoEmit.ChildNodes)
                                    {
                                        if (childNode.Name == "CNPJ")
                                        {
                                            cnpjEmitente = childNode.InnerText;
                                        }

                                        if (childNode.Name == "xNome")
                                        {
                                            razaoSocialEmitente = childNode.InnerText;
                                        }

                                        if (childNode.Name == "enderEmit")
                                        {
                                            foreach (XmlNode emitEndereco in childNode.ChildNodes)
                                            {
                                                if (emitEndereco.Name == "xLgr")
                                                {
                                                    enderecoEmitente = emitEndereco.InnerText;
                                                }

                                                if (emitEndereco.Name == "nro")
                                                {
                                                    enderecoEmitente += ", " + emitEndereco.InnerText;
                                                }

                                                if (emitEndereco.Name == "UF")
                                                {
                                                    estadoEmitente = emitEndereco.InnerText;
                                                }
                                            }
                                        }
                                    }
                                }

                                var dadosNfe = doc.SelectNodes("//nfe:ide", ns);

                                var numeroNf = "";

                                foreach (XmlNode dadoNfe in dadosNfe)
                                {
                                    foreach (XmlNode childNode in dadoNfe.ChildNodes)
                                    {
                                        if (childNode.Name == "nNF")
                                        {
                                            numeroNf = childNode.InnerText;
                                        }
                                    }
                                }

                                var paisesDanfe = PaisesDAO.ObterPaisesDanfe();

                                var nomeDestinatario             = string.Empty;
                                var paisDestinatario             = string.Empty;
                                var logradouroDestinatario       = string.Empty;
                                var logradouroNumeroDestinatario = string.Empty;

                                var dadosDestinatario = doc.SelectNodes("//nfe:dest", ns);

                                foreach (XmlNode dadoDest in dadosDestinatario)
                                {
                                    foreach (XmlNode childNode in dadoDest.ChildNodes)
                                    {
                                        if (childNode.Name == "xNome")
                                        {
                                            nomeDestinatario = childNode.InnerText;
                                        }

                                        if (childNode.Name == "enderDest")
                                        {
                                            foreach (XmlNode childNodeDest in childNode.ChildNodes)
                                            {
                                                if (childNodeDest.Name == "xLgr")
                                                {
                                                    logradouroDestinatario = childNodeDest.InnerText;
                                                }

                                                if (childNodeDest.Name == "nro")
                                                {
                                                    logradouroNumeroDestinatario = childNodeDest.InnerText;
                                                }

                                                if (childNodeDest.Name == "cPais")
                                                {
                                                    var paisSped = paisesDanfe
                                                                   .Where(c => c.CodigoSPED == childNodeDest.InnerText)
                                                                   .FirstOrDefault();

                                                    if (paisSped != null)
                                                    {
                                                        if (!string.IsNullOrEmpty(paisSped.Sigla1))
                                                        {
                                                            paisDestinatario = paisSped.Sigla1;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }

                                var enderecoDestinatario = $"{logradouroDestinatario}, {logradouroNumeroDestinatario}";

                                var informacoesChaveNfe = doc.SelectSingleNode("//nfe:infProt", ns);
                                var chaveNfe            = informacoesChaveNfe.ChildNodes[2].InnerText;

                                var item = doc.SelectSingleNode("//nfe:det", ns)?.FirstChild;

                                var listaProdutos = new List <ProdutoNfe>();

                                int contaItem = 1;
                                if (item != null)
                                {
                                    var produtos = doc.SelectNodes("//nfe:prod", ns);

                                    foreach (XmlNode produto in produtos)
                                    {
                                        var descricaoProduto         = "";
                                        var unidadeComercializada    = "";
                                        var quantidadeEstatistica    = "";
                                        var quantidadeComercializada = "";
                                        var valorProduto             = "";
                                        var ncm = "";

                                        foreach (XmlNode childNode in produto.ChildNodes)
                                        {
                                            if (childNode.Name == "xProd")
                                            {
                                                descricaoProduto = childNode.InnerText;
                                            }

                                            if (childNode.Name == "uTrib")
                                            {
                                                unidadeComercializada = childNode.InnerText;
                                            }

                                            if (childNode.Name == "qCom")
                                            {
                                                quantidadeComercializada = childNode.InnerText.Replace(".", ",");
                                            }

                                            if (childNode.Name == "qTrib")
                                            {
                                                quantidadeEstatistica = childNode.InnerText.Replace(".", ",");
                                            }

                                            if (childNode.Name == "vProd")
                                            {
                                                valorProduto = childNode.InnerText.Replace(".", ",");
                                            }

                                            if (childNode.Name == "NCM")
                                            {
                                                ncm = childNode.InnerText;
                                            }
                                        }

                                        var produtoNfe = new ProdutoNfe(
                                            contaItem,
                                            descricaoProduto,
                                            unidadeComercializada,
                                            quantidadeComercializada.ToDecimal(),
                                            quantidadeEstatistica.ToDecimal(),
                                            valorProduto.ToDecimal(),
                                            chaveNfe,
                                            ncm,
                                            cnpjEmitente,
                                            razaoSocialEmitente,
                                            numeroNf.ToInt());

                                        listaProdutos.Add(produtoNfe);
                                        contaItem++;
                                    }

                                    contaItem = 1;

                                    ExcluirItensSemVinculoDeNotaFiscal(dueBusca.Id);

                                    if (listaProdutos.Any())
                                    {
                                        foreach (var produtoNFE in listaProdutos)
                                        {
                                            var notaFiscal = new NotaFiscal();

                                            notaFiscal.TipoNF        = "EXP";
                                            notaFiscal.Item          = produtoNFE.Item;
                                            notaFiscal.ChaveNF       = chaveNfe;
                                            notaFiscal.NumeroNF      = numeroNf;
                                            notaFiscal.CnpjNF        = cnpjEmitente;
                                            notaFiscal.QuantidadeNF  = produtoNFE.QuantidadeComercializada;
                                            notaFiscal.UnidadeNF     = produtoNFE.UnidadeComercializada;
                                            notaFiscal.NCM           = produtoNFE.NCM;
                                            notaFiscal.Arquivo       = this.txtUpload.FileName;
                                            notaFiscal.Usuario       = Convert.ToInt32(Session["UsuarioId"].ToString());
                                            notaFiscal.DueId         = this.txtDueID.Value.ToInt();
                                            notaFiscal.VMLE          = this.txtVMLE.Text.ToDecimal();
                                            notaFiscal.VMCV          = this.txtVMCV.Text.ToDecimal();
                                            notaFiscal.Enquadramento = this.cbEnquadramento.SelectedValue.ToInt();

                                            var existeNf = _notaFiscalDAO.ExisteNotaFiscalNaDUEFromXML(notaFiscal);

                                            if (existeNf > 0)
                                            {
                                                _notaFiscalDAO.ExcluirNotaFiscaiDuePorId(existeNf);
                                            }

                                            _notaFiscalDAO.Cadastrar(notaFiscal);

                                            string  enquadramento = string.Empty;
                                            decimal vmle          = notaFiscal.VMLE;
                                            decimal vmcv          = notaFiscal.VMCV;

                                            if (this.cbEnquadramento.SelectedValue.ToInt() > 0)
                                            {
                                                enquadramento = this.cbEnquadramento.SelectedValue;
                                            }
                                            else
                                            {
                                                enquadramento = dueBusca.Enquadramento1_Default.ToString();
                                            }

                                            //Para cada item da nota fiscal, criar um item na DUE com a mesma chave

                                            var dueId = _documentoUnicoExportacaoDAO.CriarItensDUEFromXML(
                                                dueBusca.Id,
                                                Convert.ToInt32(Session["UsuarioId"].ToString()),
                                                cnpjEmitente,
                                                razaoSocialEmitente,
                                                enderecoEmitente,
                                                estadoEmitente,
                                                nomeDestinatario,
                                                enderecoDestinatario,
                                                paisDestinatario,
                                                produtoNFE.ChaveNFE,
                                                produtoNFE.Item,
                                                produtoNFE.NCM,
                                                produtoNFE.DescricaoProduto,
                                                produtoNFE.UnidadeComercializada,
                                                produtoNFE.QuantidadeEstatistica,
                                                produtoNFE.QuantidadeComercializada,
                                                vmle,
                                                vmcv,
                                                enquadramento,
                                                dueBusca);

                                            _documentoUnicoExportacaoDAO.MarcarComoAutomatica(this.txtDueID.Value.ToInt());
                                        }
                                    }
                                }

                                xmlsImportados++;
                            }

                            ViewState["Sucesso"]             = true;
                            ViewState["TotalNotasFiscais"]   = this.txtUpload.PostedFiles.Count;
                            ViewState["QuantidadeImportada"] = xmlsImportados;
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new Exception("Ocorreu um problema ao processar o XML - Detalhes:" + ex.ToString());
                    }
                }
                else
                {
                    int quantidadeImportada = 0;

                    var notasFiscais = ProcessarArquivo(this.txtUpload.PostedFile.InputStream, ";");

                    var dueBusca = _documentoUnicoExportacaoDAO.ObterDUEPorId(this.txtDueID.Value.ToInt());

                    if (dueBusca != null)
                    {
                        ExcluirItensSemVinculoDeNotaFiscal(dueBusca.Id);

                        var notasValidas = new List <NotaFiscal>();

                        foreach (var nf in notasFiscais)
                        {
                            nf.Arquivo       = this.txtUpload.FileName;
                            nf.Usuario       = Convert.ToInt32(Session["UsuarioId"].ToString());
                            nf.DueId         = this.txtDueID.Value.ToInt();
                            nf.VMCV          = this.txtVMCV.Text.ToDecimal();
                            nf.VMLE          = this.txtVMLE.Text.ToDecimal();
                            nf.Enquadramento = this.cbEnquadramento.SelectedValue.ToInt();

                            if (nf.TipoNF == "EXP")
                            {
                            }
                            var existeNf = _notaFiscalDAO.ExisteNotaFiscalNaDUE(nf);

                            if (existeNf > 0)
                            {
                                _notaFiscalDAO.ExcluirNotaFiscaiDuePorId(existeNf);
                            }

                            _notaFiscalDAO.Cadastrar(nf);
                            notasValidas.Add(nf);
                            quantidadeImportada++;
                        }

                        var atributosCafe = dueBusca.Attr_Padrao_Qualidade_Default + dueBusca.Attr_Tipo_Default + dueBusca.Attr_Embarque_Em_Default +
                                            dueBusca.Attr_Caracteristica_Especial_Default + dueBusca.Attr_Outra_Caracteristica_Especial_Default + dueBusca.Attr_Metodo_Processamento_Default;

                        foreach (var notaNcm in notasFiscais)
                        {
                            if (notaNcm.NCM != "09011110" && notaNcm.NCM != "09011190" && notaNcm.NCM != "09011200" && notaNcm.NCM != "09012100" && notaNcm.NCM != "09012200" && notaNcm.NCM != "21011110" && notaNcm.NCM != "21011190" && notaNcm.NCM != "21011200")
                            {
                                if (!string.IsNullOrEmpty(atributosCafe))
                                {
                                    ModelState.AddModelError(string.Empty, "Você informou atributos de café nas informações default, mas o NCM da nota que está sendo cadastrada é diferente de NCMs para exportação de café.");
                                    return;
                                }
                            }
                        }


                        CriarItensDUEAutomaticamente(notasValidas);

                        _documentoUnicoExportacaoDAO.MarcarComoAutomatica(this.txtDueID.Value.ToInt());

                        ViewState["Sucesso"]             = true;
                        ViewState["TotalNotasFiscais"]   = notasFiscais.Count;
                        ViewState["QuantidadeImportada"] = quantidadeImportada;
                    }
                }
            }
            catch (Exception ex)
            {
                DeletarArquivo(this.txtUpload);
                LogsService.Logar("CadastrarDUE.aspx", ex.ToString());
                ModelState.AddModelError(string.Empty, ex.Message);
            }
        }
예제 #18
0
        protected async void btnGerarCsv_Click(object sender, EventArgs e)
        {
            var filtro = new StringBuilder();
            var paises = PaisesDAO.ObterPaisesSiscomex();

            if (this.txtUpload.PostedFile != null)
            {
                if (this.txtUpload.PostedFile.ContentLength > 0)
                {
                    if (!UploadArquivo(this.txtUpload))
                    {
                        throw new Exception("O arquivo não pode ser processado. Certifique-se que já não esteja aberto em outro programa");
                    }

                    var notasFiscais = ProcessarArquivo(this.txtUpload.PostedFile.InputStream);

                    var notasFiscaisFiltro = new List <string>();

                    foreach (var nf in notasFiscais)
                    {
                        notasFiscaisFiltro.Add($"'{nf}'");
                    }

                    var filtroNfs = string.Join(",", notasFiscaisFiltro);

                    if (!string.IsNullOrEmpty(filtroNfs))
                    {
                        Session["FILTRO_CHAVES_REMESSA_UPLOAD"] = filtroNfs;
                        filtro.Append($" AND E.CHAVE_ACESSO IN ({filtroNfs}) ");
                    }

                    try
                    {
                        File.Delete(Path.Combine(Server.MapPath("Uploads"), this.txtUpload.PostedFile.FileName));
                    }
                    catch
                    {
                    }
                }
                else
                {
                    if (Session["FILTRO_CHAVES_REMESSA_UPLOAD"] != null)
                    {
                        filtro.Append($" AND E.CHAVE_ACESSO IN ({Session["FILTRO_CHAVES_REMESSA_UPLOAD"].ToString()}) ");
                    }
                }
            }

            var filtroRem            = new StringBuilder();
            var listaNotasArquivo    = new List <string>();
            var listaNotasConsulta   = new List <string>();
            var listaNotasDiferencas = new List <string>();

            if (Session["FILTRO_CHAVES_REMESSA_UPLOAD"] != null)
            {
                filtroRem.Append($" AND B.CHAVE_ACESSO IN ({Session["FILTRO_CHAVES_REMESSA_UPLOAD"].ToString()}) ");

                listaNotasArquivo.AddRange(Session["FILTRO_CHAVES_REMESSA_UPLOAD"].ToString().Split(','));
            }

            var dataTableRemessa = _estoqueDAO.ObterNotasRemessa(filtroRem.ToString());

            foreach (DataRow rowRemessa in dataTableRemessa.Rows)
            {
                listaNotasConsulta.Add(rowRemessa["CHAVE_NF"].ToString());
            }

            listaNotasConsulta = listaNotasConsulta.Distinct().ToList();

            foreach (var chaveNfArquivo in listaNotasArquivo)
            {
                var nf = chaveNfArquivo.Replace("'", "");

                if (!listaNotasConsulta.Contains(nf))
                {
                    listaNotasDiferencas.Add(nf);
                }
            }

            StringBuilder builder = new StringBuilder();
            List <string> rows    = new List <string>();

            List <string> colunas = new List <string>();

            foreach (DataColumn column in dataTableRemessa.Columns)
            {
                colunas.Add(column.ColumnName);
            }

            foreach (DataRow rowRemessa in dataTableRemessa.Rows)
            {
                List <string> camposRemessa = new List <string>();

                foreach (DataColumn column in dataTableRemessa.Columns)
                {
                    object item  = rowRemessa[column];
                    var    texto = Regex.Replace(item.ToString(), @"\t|\n|\r", "");
                    camposRemessa.Add(texto);
                }

                rows.Add(string.Join(";", camposRemessa.ToArray()));
            }

            var duesImportadas = new List <string>();

            if (listaNotasDiferencas.Any())
            {
                rows.Add("As notas abaixo não formam encontradas no banco de dados de DUEs CARGILL e os dados apresentados foram consultados diretamente no SISCOMEX");

                foreach (var notaNaoEncontrada in listaNotasDiferencas)
                {
                    var dadosDue = await SisComexService
                                   .ConsultarDUEPorDanfe(notaNaoEncontrada, ConfigurationManager.AppSettings["CpfCertificado"].ToString());

                    if (dadosDue != null)
                    {
                        if (dadosDue.Sucesso)
                        {
                            foreach (var due in dadosDue?.ListaDadosDUE)
                            {
                                var retornoDue = await SisComexService.ObterDUECompleta(due.rel, ConfigurationManager.AppSettings["CpfCertificado"].ToString());

                                if (retornoDue != null)
                                {
                                    if (!duesImportadas.Contains(due.rel))
                                    {
                                        duesImportadas.Add(due.rel);

                                        var declarante       = retornoDue.declarante?.numeroDoDocumento ?? string.Empty;
                                        var declaranteNome   = retornoDue.declarante?.nome ?? string.Empty;
                                        var descricaoRecinto = string.Empty;
                                        var descricaoUnidade = string.Empty;

                                        if (retornoDue.recintoAduaneiroDeDespacho != null)
                                        {
                                            var recintoBusca = _recintosDAO.ObterRecintos()
                                                               .Where(c => c.Id == retornoDue.recintoAduaneiroDeDespacho?.codigo.ToInt()).FirstOrDefault();

                                            if (recintoBusca != null)
                                            {
                                                descricaoRecinto = recintoBusca.Descricao;
                                            }
                                        }
                                        else
                                        {
                                            descricaoRecinto = "Indisponível";
                                        }

                                        if (retornoDue.unidadeLocalDeDespacho != null)
                                        {
                                            var unidadeBusca = _unidadesReceitaDAO.ObterUnidadesRFB()
                                                               .Where(c => c.Codigo.ToInt() == retornoDue.unidadeLocalDeDespacho?.codigo.ToInt()).FirstOrDefault();

                                            if (unidadeBusca != null)
                                            {
                                                descricaoUnidade = unidadeBusca.Descricao;
                                            }
                                        }
                                        else
                                        {
                                            descricaoUnidade = "Indisponível";
                                        }

                                        var ultimoEvento = string.Empty;
                                        EventosDoHistorico averbacao;
                                        var      dataAverbacao    = string.Empty;
                                        DateTime?dataUltimoEvento = null;

                                        if (retornoDue.eventosDoHistorico != null)
                                        {
                                            ultimoEvento     = retornoDue.eventosDoHistorico.OrderByDescending(c => c.dataEHoraDoEvento).Select(c => c.evento).FirstOrDefault();
                                            dataUltimoEvento = retornoDue.eventosDoHistorico.OrderByDescending(c => c.dataEHoraDoEvento).Select(c => c.dataEHoraDoEvento).FirstOrDefault();

                                            averbacao = retornoDue.eventosDoHistorico
                                                        .FirstOrDefault(c => c.evento.ToLower().Contains("averbacao") || c.evento.ToLower().Contains("averbação"));

                                            dataAverbacao = averbacao != null
                                                    ? averbacao.dataEHoraDoEvento.ToString("dd/MM/yyyy HH:mm:ss")
                                                    : string.Empty;
                                        }

                                        if (retornoDue.itens != null)
                                        {
                                            foreach (var item in retornoDue.itens)
                                            {
                                                string valorDaMercadoriaNaCondicaoDeVenda        = item?.valorDaMercadoriaNaCondicaoDeVenda.ToString() ?? "0";
                                                string valorDaMercadoriaNoLocalDeEmbarque        = item?.valorDaMercadoriaNoLocalDeEmbarque.ToString() ?? "0";
                                                string valorDaMercadoriaNoLocalDeEmbarqueEmReais = item?.valorDaMercadoriaNoLocalDeEmbarqueEmReais.ToString() ?? "0";

                                                string importador         = item?.nomeImportador ?? string.Empty;
                                                string enderecoImportador = item?.enderecoImportador ?? string.Empty;
                                                string pesoLiquidoTotal   = item?.pesoLiquidoTotal.ToString() ?? "0";
                                                pesoLiquidoTotal = pesoLiquidoTotal.Replace(".", "").Replace(",", ".");
                                                string incoterm = item?.codigoCondicaoVenda.codigo ?? string.Empty;

                                                var    codigoPaisImportador = retornoDue?.paisImportador?.codigo ?? 0;
                                                string paisImportador       = paises.Where(c => c.Id == codigoPaisImportador)
                                                                              .Select(c => c.Descricao).FirstOrDefault() ?? string.Empty;

                                                var    codigoPaisDestino = item?.listaPaisDestino.Select(c => c.codigo).FirstOrDefault() ?? 0;
                                                string paisDestino       = paises.Where(c => c.Id == codigoPaisDestino)
                                                                           .Select(c => c.Descricao).FirstOrDefault() ?? string.Empty;

                                                string unidadeEstatistica        = item?.unidadeComercializada ?? string.Empty;
                                                string informacoesComplementares = retornoDue?.informacoesComplementares ?? string.Empty;

                                                var    codigoMoeda     = retornoDue?.moeda?.codigo ?? 0;
                                                string moedaNegociacao = _moedasDAO.ObterMoedas().Where(c => c.Id == codigoMoeda)
                                                                         .Select(c => c.Descricao).FirstOrDefault() ?? string.Empty;

                                                foreach (var nfRemessa in item.itensDaNotaDeRemessa)
                                                {
                                                    if (nfRemessa != null)
                                                    {
                                                        var tipoNf = string.Empty;
                                                        var cfop   = nfRemessa.cfop.ToString();

                                                        if (cfop.EndsWith("04") || cfop.EndsWith("05"))
                                                        {
                                                            tipoNf = "FDL";
                                                        }

                                                        if (cfop.EndsWith("01") || cfop.EndsWith("02"))
                                                        {
                                                            tipoNf = "REM";
                                                        }

                                                        var itemNfRef = nfRemessa.notaFiscal;
                                                        var emitente  = itemNfRef.identificacaoDoEmitente;

                                                        rows.Add($";{retornoDue.dataDeRegistro.ToString("dd/MM/yyyy HH:mm:ss")};{retornoDue.numero};{retornoDue.chaveDeAcesso};{declarante};{declaranteNome};{ultimoEvento};{dataUltimoEvento?.ToString("dd/MM/yyyy HH:mm:ss")};{dataAverbacao};{nfRemessa.ncm?.codigo};{nfRemessa.numeroDoItem};{nfRemessa.cfop};{nfRemessa.descricao};{tipoNf};{itemNfRef.chaveDeAcesso};{itemNfRef.numeroDoDocumento};{itemNfRef.modelo};{itemNfRef.serie};{itemNfRef.ufDoEmissor};{emitente.numero};{retornoDue.situacao};{valorDaMercadoriaNaCondicaoDeVenda.Replace(".", "").Replace(",", ".") };{valorDaMercadoriaNoLocalDeEmbarque.Replace(".", "").Replace(",", ".") };{valorDaMercadoriaNoLocalDeEmbarqueEmReais.Replace(".", "").Replace(",", ".") };{importador};{enderecoImportador};{paisImportador};{paisDestino};{unidadeEstatistica};{pesoLiquidoTotal};{moedaNegociacao};{incoterm};{informacoesComplementares};{retornoDue.unidadeLocalDeDespacho?.codigo};{descricaoUnidade};{retornoDue.recintoAduaneiroDeDespacho?.codigo };{descricaoRecinto};{item.quantidadeNaUnidadeEstatistica.ToString("n3")};{nfRemessa.quantidadeConsumida.ToString("n3")}");
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    var retornoDueResumida = await SisComexService.ObterDetalhesDUE(due.rel, ConfigurationManager.AppSettings["CpfCertificado"].ToString());

                                    if (retornoDueResumida != null)
                                    {
                                        if (!duesImportadas.Contains(due.rel))
                                        {
                                            duesImportadas.Add(due.rel);

                                            var declarante       = retornoDueResumida.declarante?.numero ?? string.Empty;
                                            var descricaoRecinto = string.Empty;
                                            var descricaoUnidade = string.Empty;

                                            if (retornoDueResumida.codigoRecintoAduaneiroDespacho != null)
                                            {
                                                var recintoBusca = _recintosDAO.ObterRecintos()
                                                                   .Where(c => c.Id == retornoDueResumida.codigoRecintoAduaneiroDespacho.ToInt()).FirstOrDefault();

                                                if (recintoBusca != null)
                                                {
                                                    descricaoRecinto = recintoBusca.Descricao;
                                                }
                                            }
                                            else
                                            {
                                                descricaoRecinto = "Indisponível";
                                            }

                                            if (retornoDueResumida.uaDespacho != null)
                                            {
                                                var unidadeBusca = _unidadesReceitaDAO.ObterUnidadesRFB()
                                                                   .Where(c => c.Codigo.ToInt() == retornoDueResumida.uaDespacho.ToInt()).FirstOrDefault();

                                                if (unidadeBusca != null)
                                                {
                                                    descricaoUnidade = unidadeBusca.Descricao;
                                                }
                                            }
                                            else
                                            {
                                                descricaoUnidade = "Indisponível";
                                            }

                                            rows.Add($";;{retornoDueResumida.numeroDUE};;{declarante};;;;;;;;;;{notaNaoEncontrada};;;;;;;;;;;;;;;;;;;{retornoDueResumida.uaDespacho};{descricaoUnidade};{retornoDueResumida.codigoRecintoAduaneiroDespacho };{descricaoRecinto}");
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            rows.Add(dadosDue.Mensagem);
                        }
                    }
                }
            }

            builder.Append(string.Join(";", colunas.ToArray()));
            builder.Append("\n");
            builder.Append(string.Join("\n", rows.ToArray()));

            var agora       = DateTime.Now;
            var nomeArquivo = $"LM_{agora.ToString("ddMMyyyy")}_{agora.ToString("HHmmss")}";

            Response.Clear();
            Response.ContentType = "text/csv";
            Response.AddHeader("Content-Disposition", $"attachment;filename={nomeArquivo}.csv");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("Windows-1252");
            Response.Write(builder.ToString());
            //Response.End();

            HttpContext.Current.Response.Flush();
            HttpContext.Current.Response.SuppressContent = true;
            HttpContext.Current.ApplicationInstance.CompleteRequest();
        }