// EDITAR DESPESA ESCOLHIDA
        //------------------------------------------------------------------------------------------------------------
        private void btnVisualizar_Click(object sender, EventArgs e)
        {
            //--- check selected item
            if (dgvListagem.SelectedRows.Count == 0)
            {
                AbrirDialog("Favor selecionar um registro para Visualizar...",
                            "Selecionar Registro", DialogType.OK, DialogIcon.Information);
                return;
            }

            //--- get Selected item
            objDespesaCartao item = (objDespesaCartao)dgvListagem.SelectedRows[0].DataBoundItem;

            var frm = new frmDespesaCartao(item, this);

            frm.MdiParent = Application.OpenForms.OfType <frmPrincipal>().FirstOrDefault();
            DesativaMenuPrincipal();
            Close();
            frm.Show();
        }
        private void btnEfetuar_Click(object sender, EventArgs e)
        {
            //--- GET REF DATE
            if (!DateTime.TryParse($"{numRefDia.Value}/{cmbRefMes.SelectedValue}/{numRefAno.Value}", out DateTime _RefDate))
            {
                AbrirDialog("Data escolhida é inválida...\n" +
                            "Favor selecionar uma data válida",
                            "Data de Referência",
                            DialogType.OK, DialogIcon.Exclamation);
                numRefDia.Focus();
            }

            //--- ANALIZE LAST DESPESA
            if (_LastDespesa != null)
            {
                //--- CHECK LAST DESPESA SITUACAO
                if (_LastDespesa.IDSituacao != 2)
                {
                    var resp = AbrirDialog("A última Despesa Reunida desse Cartão de Crédito ainda não foi Finalizada...\n" +
                                           "Há necessidade de Concluir a Fatura da ultima despesa, antes de Criar uma nova Despesa.\n" +
                                           "Deseja abrir a última Fatura de Cartão?",
                                           "Fatura não Concluída",
                                           DialogType.SIM_NAO,
                                           DialogIcon.Exclamation);

                    if (resp != DialogResult.Yes)
                    {
                        return;
                    }

                    var frm = new frmDespesaCartao(_LastDespesa);
                    frm.MdiParent = Application.OpenForms[0];
                    Close();
                    frm.Show();
                    return;
                }

                //--- CHECK LAST DESPESA DATE
                if (_LastDespesa.ReferenciaData >= _RefDate)
                {
                    AbrirDialog("A última Despesa de Fechamento desse Cartão de Crédito " +
                                "tem uma Data de Referência posterior à Data de Referência escolhida...\n" +
                                $"Favor escolher uma data posterior a: {_LastDespesa.ReferenciaData:d}",
                                "Data de Referência",
                                DialogType.OK, DialogIcon.Exclamation);
                    numRefDia.Focus();
                    return;
                }
            }

            //--- INSERT NEW DESPESA CARTAO
            try
            {
                // --- Ampulheta ON
                Cursor.Current = Cursors.WaitCursor;

                var dBLL          = new DespesaCartaoBLL();
                var newDespCartao = dBLL.InsertDespesaCartao(_CartaoSelected, _RefDate);

                //--- open form
                var frm = new frmDespesaCartao(newDespCartao);
                frm.MdiParent = Application.OpenForms[0];
                frm.Show();

                Close();
            }
            catch (Exception ex)
            {
                AbrirDialog("Uma exceção ocorreu ao Inserir uma nova Despesa de Cartão de Crédito..." + "\n" +
                            ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation);
            }
            finally
            {
                // --- Ampulheta OFF
                Cursor.Current = Cursors.Default;
            }
        }