Пример #1
0
        private void PrintButton_Click(object sender, EventArgs e)
        {
            CustomListBoxItem _item               = (CustomListBoxItem)LocalList.SelectedItem;
            int                _local             = _item._value;
            Processo_bll       processoRepository = new Processo_bll(_connection);
            List <Processogti> _lista             = processoRepository.Lista_Processos_CCusto(_local);

            TextWriter tw = new StreamWriter("d:\\tmp\\lista.txt");

            List <Rel> _listaRel = new List <Rel>();
            int        _pos = 1, _total = _lista.Count;

            foreach (Processogti reg in _lista)
            {
                Local_Tramite lt    = processoRepository.Verificar_Processo(reg.Ano, reg.Numero);
                DateTime      _data = lt.Data_Evento;
                if (_data == DateTime.MinValue)
                {
                    _data = reg.Dataentrada;
                }

                bool _find = false;
                if (lt.Local_Codigo == _local)
                {
                    foreach (Rel check in _listaRel)
                    {
                        if (check.Ano == reg.Ano && check.Numero == reg.Numero)
                        {
                            _find = true;
                        }
                    }
                    if (!_find)
                    {
                        short  ret  = Convert.ToInt16(processoRepository.DvProcesso(reg.Numero));
                        string _row = reg.Numero + "-" + ret.ToString() + "/" + reg.Ano.ToString();
                        tw.WriteLine(_row);
                        Rel _r = new Rel()
                        {
                            Ano    = reg.Ano,
                            Numero = reg.Numero
                        };
                        _listaRel.Add(_r);
                    }
                }

                if (_pos % 10 == 0)
                {
                    PBar.Value = _pos * 100 / _total;
                    PBar.Update();
                    System.Windows.Forms.Application.DoEvents();
                }
                _pos++;
            }


            tw.Close();
            MessageBox.Show("Fim");
        }
Пример #2
0
        private short RetornaDV()
        {
            short ret = 0;

            if (DVText.Text == "")
            {
                DVText.Text = "0";
            }
            int Numero = Convert.ToInt32(DVText.Text);

            if (Dv1Option.Checked)
            {
                Processo_bll clsProcesso = new Processo_bll(_connection);
                ret = Convert.ToInt16(clsProcesso.DvProcesso(Numero));
            }
            else
            {
                Tributario_bll clsTributario = new Tributario_bll(_connection);
                ret = Convert.ToInt16(clsTributario.DvDocumento(Numero));
            }

            return(ret);
        }
        public ActionResult ProcessoqryC(ProcessoViewModel model)
        {
            if (Session["hashid"] == null)
            {
                return(RedirectToAction("Login", "Home"));
            }
            Processo_bll processoRepository = new Processo_bll(_connection);

            bool _filterN = false;

            if (!string.IsNullOrEmpty(model.Numero_Ano))
            {
                _filterN = true;
            }

            int _ano = 0, _numero = 0;
            List <ProcessoLista> _lista = new List <ProcessoLista>();

            model.Lista_Processo = _lista;
            if (_filterN)
            {
                ProcessoNumero processoNumero = Functions.Split_Processo_Numero(model.Numero_Ano);
                string         _numStr        = model.Numero_Ano;
                _numero = processoNumero.Numero;
                _ano    = processoNumero.Ano;

                short _dv     = processoRepository.ExtractDvProcesso(_numStr);
                short _realdv = Convert.ToInt16(processoRepository.DvProcesso(_numero));
                if (_dv != _realdv)
                {
                    ViewBag.Result = "Nº de processo inválido.";
                    return(View(model));
                }

                bool _existe = processoRepository.Existe_Processo(_ano, _numero);
                if (!_existe)
                {
                    ViewBag.Result = "Nº de processo não cadastrado.";
                    return(View(model));
                }
            }

            string _nome                = model.Requerente;
            string _endereco            = model.Endereco;

            if (!string.IsNullOrEmpty(_nome))
            {
                if (_nome.Length < 5)
                {
                    ViewBag.Result = "Digite ao menos 5 caracteres do nome.";
                    return(View(model));
                }
            }
            if (!string.IsNullOrEmpty(_endereco))
            {
                if (_endereco.Length < 5)
                {
                    ViewBag.Result = "Digite ao menos 5 caracteres do endereco.";
                    return(View(model));
                }
            }

            List <ProcessoStruct> ListaProcesso = processoRepository.Lista_Processos(_ano, _numero, model.Requerente, model.Endereco, model.EnderecoNumero);

            if (ListaProcesso.Count == 0)
            {
                ViewBag.Result = "Não foi localizado nenhum processo com este requerente.";
                return(View(model));
            }

            foreach (ProcessoStruct item in ListaProcesso)
            {
                ProcessoLista reg = new ProcessoLista()
                {
                    AnoNumero  = item.Numero.ToString("00000") + "-" + Functions.RetornaDvProcesso(item.Numero).ToString() + "/" + item.Ano.ToString(),
                    Requerente = Functions.TruncateTo(item.NomeCidadao, 30),
                    Assunto    = Functions.TruncateTo(item.Assunto, 30),
                    Endereco   = string.IsNullOrEmpty(item.LogradouroNome) ? "" : item.LogradouroNome
                };
                if (reg.Endereco != "")
                {
                    reg.Endereco += ", " + item.LogradouroNumero.ToString();
                    reg.Endereco  = Functions.TruncateTo(reg.Endereco, 32);
                }
                _lista.Add(reg);
            }

            model.Lista_Processo = _lista;
            return(View(model));
        }
Пример #4
0
        private void GerarButton_Click(object sender, EventArgs e)
        {
            MainListView.Items.Clear();
            string _d1 = DataInicioMask.Text;
            string _d2 = DataFinalMask.Text;

            if (!gtiCore.IsDate(_d1))
            {
                MessageBox.Show("Data inicial inválida!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (!gtiCore.IsDate(_d2))
            {
                MessageBox.Show("Data final inválida!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            DateTime _dataInicio = Convert.ToDateTime(_d1);
            DateTime _dataFinal  = Convert.ToDateTime(_d2);

            if (_dataInicio > _dataFinal)
            {
                MessageBox.Show("Data inicial maior que a data final!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            gtiCore.Ocupado(this);
            Processo_bll             processoRepository = new Processo_bll(_connection);
            List <ProcessoAnoNumero> Lista = processoRepository.Lista_Processos_Atraso(_dataInicio, _dataFinal);
            int _total = Lista.Count();

            if (_total == 0)
            {
                gtiCore.Liberado(this);
                MessageBox.Show("Nenhum processo em atraso no período informado!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            int _pos = 0;
            List <Local_Tramite> _listaProcessos = new List <Local_Tramite>();

            foreach (ProcessoAnoNumero item in Lista)
            {
                short _ano    = item.Ano;
                int   _numero = item.Numero;

                Local_Tramite lt    = processoRepository.Verificar_Processo(_ano, _numero);
                DateTime?     _data = lt.Data_Evento;
                if (_data == DateTime.MinValue)
                {
                    _data = lt.Data_Entrada;
                }

                int      Local_Codigo = lt.Local_Codigo;
                DateTime Data_Evento  = Convert.ToDateTime(_data);
                bool     Arquivado    = lt.Arquivado;
                bool     Suspenso     = lt.Suspenso;
                string   Local_Nome   = "";
                string   _assunto     = lt.Assunto_Nome;
                int      NumDias      = lt.Dias;
                if (Arquivado)
                {
                    Local_Nome = lt.Local_Nome;
                }
                else
                {
                    if (Suspenso)
                    {
                        Local_Nome = "PROCESSO SUSPENSO/CANCELADO";
                    }
                    else
                    {
                        Local_Nome = lt.Local_Nome;
                    }
                }

                if (!Arquivado && !Suspenso)
                {
                    Tuple <short, string> Secretaria = processoRepository.Retorna_Vinculo_Top_CentroCusto((short)Local_Codigo);
                    int    secretaria_codigo         = Secretaria.Item1;
                    string secretaria_nome           = Secretaria.Item2;

                    Local_Tramite reg = new Local_Tramite()
                    {
                        Ano               = _ano,
                        Numero            = _numero,
                        Secretaria_Codigo = secretaria_codigo,
                        Secretaria_Nome   = secretaria_nome,
                        Local_Codigo      = Local_Codigo,
                        Local_Nome        = Local_Nome,
                        Data_Evento       = Data_Evento,
                        Dias              = NumDias,
                        Assunto_Nome      = _assunto
                    };
                    _listaProcessos.Add(reg);
                }

                if (_pos % 10 == 0)
                {
                    pBar.Value = _pos * 100 / _total;
                    pBar.Update();
                    Refresh();
                }
                _pos++;
            }
            pBar.Value = 0;
            pBar.Update();
            Refresh();

            List <Secretaria> listaSecretaria = processoRepository.Lista_Secretaria();

            foreach (Local_Tramite reg in _listaProcessos)
            {
                short _cod2 = 0;
                for (int i = 0; i < listaSecretaria.Count; i++)
                {
                    if (listaSecretaria[i].Codigocc == reg.Local_Codigo)
                    {
                        _cod2 = listaSecretaria[i].Codigo;
                        break;
                    }
                }
                string       _processo = reg.Numero.ToString() + "-" + processoRepository.DvProcesso(reg.Numero).ToString() + "/" + reg.Ano.ToString();
                ListViewItem lvi       = new ListViewItem(_processo);
                lvi.SubItems.Add(reg.Local_Codigo.ToString("000"));
                lvi.SubItems.Add(_cod2.ToString("000"));
                lvi.SubItems.Add(reg.Local_Nome);
                lvi.SubItems.Add(reg.Secretaria_Codigo.ToString("000"));
                lvi.SubItems.Add(reg.Secretaria_Nome);
                lvi.SubItems.Add(reg.Data_Evento.ToString("dd/MM/yyyy"));
                lvi.SubItems.Add(reg.Dias.ToString());
                lvi.SubItems.Add(reg.Assunto_Nome);

                MainListView.Items.Add(lvi);
            }

            gtiCore.Liberado(this);
        }
Пример #5
0
        static void Main(string[] args)
        {
            string _connection = gtiCore.Connection_Name();
            string _path       = "C:\\WORK\\GTI\\PROCESSO_EMAIL\\" + DateTime.Now.Year.ToString();
            //DateTime Data1 = Convert.ToDateTime("01/10/2021");
            //DateTime Data2 = Convert.ToDateTime("04/10/2021");
            DateTime Data1 = Convert.ToDateTime("01/01/2021");
            DateTime Data2 = Convert.ToDateTime(DateTime.Now.Date);

            Processo_bll processoRepository = new Processo_bll(_connection);

            Print("Buscando Processos: ");
            int _total = 0;
            List <ProcessoAnoNumero> Lista = processoRepository.Lista_Processos_Atraso(Data1, Data2);

            _total = Lista.Count();
            Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop);
            Print("Localizados " + _total.ToString() + " Processos.");
            BreakLine();

            List <short>         listaSecretariaRel = new List <short>();
            int                  _pos            = 0;
            List <Local_Tramite> _listaProcessos = new List <Local_Tramite>();

            Print("Carregando: ");
            using (var progress = new ProgressBar()) {
                foreach (ProcessoAnoNumero item in Lista)
                {
                    progress.Report((double)_pos / _total);
                    short _ano    = item.Ano;
                    int   _numero = item.Numero;

                    Local_Tramite lt    = processoRepository.Verificar_Processo(_ano, _numero);
                    DateTime?     _data = lt.Data_Evento;
                    if (_data == DateTime.MinValue)
                    {
                        _data = lt.Data_Entrada;
                    }

                    int      Local_Codigo = lt.Local_Codigo;
                    DateTime Data_Evento  = Convert.ToDateTime(_data);
                    bool     Arquivado    = lt.Arquivado;
                    bool     Suspenso     = lt.Suspenso;
                    string   _assunto     = lt.Assunto_Nome;
                    int      NumDias      = lt.Dias;

                    if (NumDias < 6)
                    {
                        goto Proximo;
                    }

                    if (!Arquivado && !Suspenso)
                    {
                        Tuple <short, string> Secretaria = processoRepository.Retorna_Vinculo_Top_CentroCusto((short)Local_Codigo);
                        int    secretaria_codigo         = Secretaria.Item1;
                        string secretaria_nome           = Secretaria.Item2;

                        Local_Tramite reg = new Local_Tramite()
                        {
                            Ano               = _ano,
                            Numero            = _numero,
                            Secretaria_Codigo = secretaria_codigo,
                            Secretaria_Nome   = secretaria_nome,
                            Local_Codigo      = Local_Codigo,
                            Local_Nome        = lt.Local_Nome,
                            Data_Evento       = Data_Evento,
                            Dias              = NumDias,
                            Assunto_Nome      = _assunto
                        };
                        _listaProcessos.Add(reg);

                        bool _find = false;
                        for (int i = 0; i < listaSecretariaRel.Count; i++)
                        {
                            if (listaSecretariaRel[i] == secretaria_codigo)
                            {
                                _find = true;
                                break;
                            }
                        }
                        if (!_find)
                        {
                            listaSecretariaRel.Add((short)secretaria_codigo);
                        }
                    }
                    Proximo :;
                    _pos++;
                }
            }
            Print("OK");
            BreakLine();
            Print("Secretarias encontradas: " + listaSecretariaRel.Count.ToString());
            BreakLine();
            Console.WriteLine("ENVIANDO E-MAILS PARA AS SECRETARIAS");
            Console.WriteLine("------------------------------------");


            for (int z = 0; z < listaSecretariaRel.Count; z++)
            {
                Secretaria _secretaria = processoRepository.Retorna_Secretaria(listaSecretariaRel[z]);
                Console.WriteLine(_secretaria.Nome);
                int          _qtde     = 0;
                short        _seq      = processoRepository.Retorna_Seq_Processo_Secretaria_Remessa(listaSecretariaRel[z]);
                string       _filename = "REL" + listaSecretariaRel[z].ToString("000") + _seq.ToString("00") + ".TXT";
                string       _fullpath = Path.Combine(_path, _filename);
                StreamWriter sw        = new StreamWriter(_fullpath);
                sw.WriteLine("RELATÓRIO DE PROCESSOS QUE SE ENCONTRAM A MAIS DE 5 DIAS NA SECRETARIA");
                sw.WriteLine("");
                sw.WriteLine(_secretaria.Nome);
                sw.WriteLine("");

                sw.WriteLine("Nº PROCESSO  LOCAL ONDE O PROCESSO DE ENCONTRA        ASSUNTO DO PROCESSO                      DIAS");
                sw.WriteLine("===================================================================================================");
                sw.WriteLine("");
                foreach (Local_Tramite item in _listaProcessos.Where(p => p.Secretaria_Codigo == listaSecretariaRel[z]).OrderBy(h => h.Local_Nome).ThenByDescending(m => m.Dias))
                {
                    string _processo = item.Numero.ToString("00000") + "-" + processoRepository.DvProcesso(item.Numero) + "/" + item.Ano.ToString();
                    sw.WriteLine(_processo + " " + gtiCore.TruncateTo(item.Local_Nome.PadRight(40), 40) + " " + gtiCore.TruncateTo(item.Assunto_Nome.PadRight(40), 40) + "  " + item.Dias.ToString("000"));
                    _qtde++;
                }

                sw.WriteLine("");
                sw.WriteLine("===============================");
                sw.WriteLine("QTDE DE PROCESSOS ==> " + _qtde.ToString());
                sw.WriteLine("RELATÓRIO GERADO EM " + DateTime.Now);
                sw.WriteLine("GESTÃO DE TIBUTAÇÃO MUNICIPAL INTEGRADA (G.T.I.)");

                sw.Close();

                //Enviar Email
                MailAddress from = new MailAddress("*****@*****.**", "Sistema GTI");
                MailAddress to   = new MailAddress("*****@*****.**", "Eduardo");
                using (MailMessage emailMessage = new MailMessage()) {
                    string Body = File.ReadAllText("C:\\WORK\\GTI\\PROCESSO_EMAIL\\AccessTemplate.htm");
                    Body = Body.Replace("#$$$#", _secretaria.Nome);
                    emailMessage.From = from;
                    emailMessage.To.Add(to);
                    emailMessage.Attachments.Add(new Attachment(_fullpath));
                    emailMessage.Subject    = "Relatório dos processos quem encontram-se na secretaria a mais de 5 dias";
                    emailMessage.Body       = Body;
                    emailMessage.IsBodyHtml = true;

                    using (SmtpClient MailClient = new SmtpClient("smtp.gmail.com", 587)) {
                        MailClient.DeliveryMethod = SmtpDeliveryMethod.Network;
                        MailClient.EnableSsl      = true;
                        MailClient.Credentials    = new NetworkCredential("*****@*****.**", "esnssgzxxjcdjrpk");
                        MailClient.Send(emailMessage);
                    }
                }


                //Gravar remessa na tabela
                Secretaria_processo_remessa reg = new Secretaria_processo_remessa()
                {
                    Codigo = listaSecretariaRel[z],
                    Data   = DateTime.Now.Date,
                    Seq    = _seq,
                    Qtde   = _qtde
                };
                Exception ex = processoRepository.Incluir_Secretaria_Processo_Remessa(reg);
            }

            Console.WriteLine("");
            Console.WriteLine("Processo finalizado, aperte uma tecla para finalizar");
            Console.ReadLine();
        }
Пример #6
0
        private void Fill_List()
        {
            gtiCore.Ocupado(this);

            //***Construção do filtro ****
            Processo_bll   processo_Class = new Processo_bll(_connection);
            ProcessoFilter Reg            = new ProcessoFilter();

            if (!string.IsNullOrEmpty(NumeroProcesso.Text))
            {
                Reg.Ano          = processo_Class.ExtractAnoProcesso(NumeroProcesso.Text);
                Reg.Numero       = processo_Class.ExtractNumeroProcessoNoDV(NumeroProcesso.Text);
                Reg.SNumProcesso = NumeroProcesso.Text;
            }
            else
            {
                Reg.Ano          = 0;
                Reg.Numero       = 0;
                Reg.SNumProcesso = "";
            }
            Reg.AnoIni = AnoInicial.Text.Trim() == "" ? 0 : Convert.ToInt32(AnoInicial.Text);
            Reg.AnoFim = AnoFinal.Text.Trim() == "" ? 0 : Convert.ToInt32(AnoFinal.Text);
            if (gtiCore.IsDate(DataEntrada.Text))
            {
                Reg.DataEntrada = Convert.ToDateTime(DataEntrada.Text);
            }
            Reg.Requerente = Requerente.Text.Trim() == "" ? 0 : Convert.ToInt32(Requerente.Text);
            if (FisicoList.SelectedIndex > 0)
            {
                Reg.Fisico = FisicoList.SelectedIndex == 1 ? true : false;
            }
            if (InternoList.SelectedIndex > 0)
            {
                Reg.Interno = InternoList.SelectedIndex == 1 ? true : false;
            }

            CustomListBoxItem selectedItem = (CustomListBoxItem)SetorList.SelectedItem;

            Reg.Setor         = SetorList.SelectedIndex == 0 ? 0 : selectedItem._value;
            selectedItem      = (CustomListBoxItem)AssuntoList.SelectedItem;
            Reg.AssuntoCodigo = AssuntoList.SelectedIndex == 0 ? 0 : selectedItem._value;
            Reg.Complemento   = Complemento.Text.Trim();
            if (Reg.Setor > 0)
            {
                Reg.Interno = true;
            }

            //********************************

            List <ProcessoStruct> Lista  = processo_Class.Lista_Processos(Reg);
            List <ProcessoNumero> aCount = new List <ProcessoNumero>(); //usado na totalização dos processos

            int _total = 0;

            if (aDatResult == null)
            {
                aDatResult = new List <ArrayList>();
            }
            aDatResult.Clear();
            foreach (var item in Lista)
            {
                //Array para totalizar os processos distintos, desta forma processos com mais de um endereço serão contados apenas 1 vez.
                bool bFind = false;
                for (int i = 0; i < aCount.Count; i++)
                {
                    if (aCount[i].Ano == item.Ano && aCount[i].Numero == item.Numero)
                    {
                        bFind = true;
                        break;
                    }
                }
                if (!bFind)
                {
                    aCount.Add(new ProcessoNumero {
                        Ano = item.Ano, Numero = item.Numero
                    });
                    _total++;
                }

                string _nome = item.Interno ? item.CentroCustoNome : item.NomeCidadao;
                //******************************************

                ArrayList itemlv = new ArrayList {
                    item.Ano.ToString(),
                          item.Numero.ToString("00000") + "-" + processo_Class.DvProcesso(item.Numero),
                    _nome ?? "",
                    item.Assunto ?? "",
                    Convert.ToDateTime(item.DataEntrada).ToString("dd/MM/yyyy")
                };
                if (item.DataCancelado != null)
                {
                    itemlv.Add(Convert.ToDateTime(item.DataCancelado).ToString("dd/MM/yyyy"));
                }
                else
                {
                    itemlv.Add("");
                }
                if (item.DataArquivado != null)
                {
                    itemlv.Add(Convert.ToDateTime(item.DataArquivado).ToString("dd/MM/yyyy"));
                }
                else
                {
                    itemlv.Add("");
                }
                if (item.DataReativacao != null)
                {
                    itemlv.Add(Convert.ToDateTime(item.DataReativacao).ToString("dd/MM/yyyy"));
                }
                else
                {
                    itemlv.Add("");
                }
                if (item.Interno)
                {
                    itemlv.Add("S");
                }
                else
                {
                    itemlv.Add("N");
                }
                if (item.Fisico)
                {
                    itemlv.Add("S");
                }
                else
                {
                    itemlv.Add("N");
                }
                string sEndereco = item.LogradouroNome ?? "";
                string sNumero   = item.LogradouroNumero ?? "";
                if (sEndereco != "")
                {
                    itemlv.Add(sEndereco + ", " + sNumero ?? "");
                }
                else
                {
                    itemlv.Add("");
                }

                aDatResult.Add(itemlv);
            }
            MainListView.BeginUpdate();
            MainListView.VirtualListSize = aDatResult.Count;
            MainListView.EndUpdate();

            Total.Text = _total.ToString();
            gtiCore.Liberado(this);
            if (MainListView.Items.Count == 0)
            {
                MessageBox.Show("Nenhum contribuinte coincide com os critérios especificados", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Пример #7
0
        private void GerarButton_Click(object sender, EventArgs e)
        {
            Processo_bll processo_Class = new Processo_bll(_connection);
            int          _ano = 0, _numero = 0, _pos = 1;
            string       _numero_processo, _assunto, _requerente, _data_entrada;

            if (aDatResult == null)
            {
                aDatResult = new List <ArrayList>();
            }
            aDatResult.Clear();
            gtiCore.Ocupado(this);

            ProcessoFilter Reg = new ProcessoFilter();

            Reg.AnoIni    = 2017;
            Reg.AnoFim    = 2017;
            Reg.Arquivado = false;
            List <ProcessoStruct> ListaProcesso = processo_Class.Lista_Processos(Reg);
            int _total = ListaProcesso.Count;

            foreach (ProcessoStruct _processo in ListaProcesso)
            {
                if (_pos % 10 == 0)
                {
                    PBar.Value = _pos * 100 / _total;
                    PBar.Update();
                    System.Windows.Forms.Application.DoEvents();
                    break;
                }

                _ano             = _processo.Ano;
                _numero          = _processo.Numero;
                _numero_processo = _numero.ToString("00000") + "-" + processo_Class.DvProcesso(_numero).ToString();
                _assunto         = _processo.Complemento ?? "";
                _requerente      = _processo.NomeCidadao == null ? _processo.CentroCustoNome : _processo.NomeCidadao;
                _data_entrada    = Convert.ToDateTime(_processo.DataEntrada).ToString("dd/MM/yyyy");


                List <TramiteStruct> ListaTramite = processo_Class.DadosTramite((short)_ano, _numero, 0);
                string   _ultimo_tramite = "", _ultimo_despacho = "", _proximo_tramite = "";
                DateTime _data_envio = DateTime.Now;

                if (_numero == 180)
                {
                    _ano = 23;
                }
                for (int i = ListaTramite.Count - 1; i >= 0; i--)
                {
                    if (!string.IsNullOrWhiteSpace(ListaTramite[i].DataEntrada))
                    {
                        if (string.IsNullOrWhiteSpace(ListaTramite[i].DataEnvio))
                        {
                            if (i > 0)
                            {
                                if (string.IsNullOrWhiteSpace(ListaTramite[i - 1].DataEnvio))
                                {
                                    _data_envio = Convert.ToDateTime(ListaTramite[i].DataEntrada);
                                }
                                else
                                {
                                    _data_envio = Convert.ToDateTime(ListaTramite[i - 1].DataEnvio);
                                }

                                _ultimo_tramite  = ListaTramite[i - 1].CentroCustoNome;
                                _ultimo_despacho = ListaTramite[i - 1].DespachoNome;
                            }
                            else
                            {
                                _data_envio = Convert.ToDateTime(ListaTramite[i].DataEntrada);

                                _ultimo_tramite  = ListaTramite[i].CentroCustoNome;
                                _ultimo_despacho = ListaTramite[i].DespachoNome;
                            }
                            _proximo_tramite = ListaTramite[i].CentroCustoNome;
                        }
                        else
                        {
                            if (i == ListaTramite.Count - 1)
                            {
                                goto Proximo;
                            }
                            _data_envio      = Convert.ToDateTime(ListaTramite[i].DataEnvio);
                            _ultimo_tramite  = ListaTramite[i].CentroCustoNome;
                            _ultimo_despacho = ListaTramite[i].DespachoNome;
                            _proximo_tramite = ListaTramite[i + 1].CentroCustoNome;
                        }
                        break;
                    }
                }

                if (_ultimo_despacho.Length > 8 && _ultimo_despacho.Substring(0, 9) == "ARQUIVADO")
                {
                    goto Proximo;
                }

                if (_proximo_tramite == "SETOR DE ARQUIVO" || _proximo_tramite == "SETOR DE PROTOCOLO E DISTRIBUIÇÃO")
                {
                    goto Proximo;
                }

                TimeSpan t;
                double   _numero_dias = 0;
                t            = (DateTime.Now - _data_envio);
                _numero_dias = (int)t.TotalDays;

                if (_numero_dias <= 30)
                {
                    goto Proximo;
                }

                ArrayList itemlv = new ArrayList();
                itemlv.Add(_ano.ToString());
                itemlv.Add(_numero_processo);
                itemlv.Add(_assunto);
                itemlv.Add(_requerente);
                itemlv.Add(_data_entrada);
                itemlv.Add(_ultimo_tramite);
                itemlv.Add(_ultimo_despacho);
                itemlv.Add(_numero_dias.ToString());
                itemlv.Add(_proximo_tramite);
                aDatResult.Add(itemlv);
Proximo:
                _pos++;
            }
            gtiCore.Liberado(this);
            MainListView.BeginUpdate();
            MainListView.VirtualListSize = aDatResult.Count;
            MainListView.EndUpdate();
            PBar.Value = 100;
            Gerar_Excel();
        }