private void cadastrar_Click(object sender, EventArgs e)
        {
            if (tbDescrição.Text.Trim() == "")
            {
                MessageBox.Show("Digite uma descrição.");
                tbDescrição.Focus();
            }
            else if (tbValor.Text.Trim() == "")
            {
                MessageBox.Show("Digite um valor válido.");
                tbValor.Focus();
            }
            else
            {
                SqlCommand achaCategoria = formularioInicial.conexaoFinanceiro.CreateCommand();
                achaCategoria.CommandText = "SELECT ID_CATEGORIA FROM CATEGORIA WHERE NOME = '" + cbCategoria.Text + "'";
                int numeroCategoria = ((int)achaCategoria.ExecuteScalar());

                DataRow novoMovimento = formularioInicial.dadosFinanceiro.Tables["MOVIMENTO"].NewRow();
                novoMovimento["Descricao"]      = tbDescrição.Text;
                novoMovimento["Valor"]          = tbValor.Text.Replace("R$", "");
                novoMovimento["Data_Cadastro"]  = DateTime.UtcNow;
                novoMovimento["Id_Categoria"]   = numeroCategoria;
                Cs_Movimento movimento = new Cs_Movimento(tbDescrição.Text, float.Parse(tbValor.Text.Replace("R$", "")), DateTime.UtcNow, 0, 0, cbCategoria.Text);

                if (itemAlt != null)
                {
                    foreach (DataRow registro in formularioInicial.dadosFinanceiro.Tables["MOVIMENTO"].Rows)
                    {
                        if (int.Parse(registro["ID_MOVIMENTO"].ToString()) == int.Parse(itemAlt.Tag.ToString()))
                        {
                            registro["Descricao"] = tbDescrição.Text;
                            registro["Valor"] = float.Parse(tbValor.Text.Replace("R$", ""));
                            registro["DATA_CADASTRO"] = DateTime.Parse(dtpData.Text);
                            registro["ID_CATEGORIA"] = numeroCategoria;
                            break;
                        }
                    }
                }
                else
                    formularioInicial.dadosFinanceiro.Tables["MOVIMENTO"].Rows.Add(novoMovimento);

                adaptadorMovimento.Update(formularioInicial.dadosFinanceiro, "MOVIMENTO");
                formularioInicial.carregaMovimentos();

                Saldo total_saldo = new Saldo(float.Parse(tbValor.Text.Replace("R$", "")));
                float total = float.Parse(tbValor.Text.Replace("R$", ""));
                bool negativar = formularioInicial.valor_Negativo();
                if (negativar == false)
                    // comando da inserção
                    comando.CommandText = "UPDATE SALDO SET TOTAL = TOTAL+ (" + total + ")";
                else
                    // comando da inserção
                    comando.CommandText = "UPDATE SALDO SET TOTAL = TOTAL- (" + total + ")";
                //executa a inserção dos dados no sql
                comando.ExecuteNonQuery();
                Close();
            }
        }
 public void AlteraMovimento(Cs_Movimento mvt, int tagItemAlterado, int idCategoria)
 {
     int i;
     for (i = 0; i < listViewMovimentos.Items.Count; i++)
         if (int.Parse(listViewMovimentos.Items[i].Tag.ToString()) == tagItemAlterado)
             break;
     listViewMovimentos.Items[i] = ConstroiItemMovimento(mvt, true, idCategoria);
 }
        public void carregaMovimentos(int idCategoria=0)
        {
            int prc;
            float total;
            listViewMovimentos.Items.Clear();
            SqlCommand comandoInicializarMovimentos = new SqlCommand();
            comandoInicializarMovimentos.Connection = conexaoFinanceiro;
            comandoInicializarMovimentos.CommandText = "Select ID_MOVIMENTO, DESCRICAO, VALOR, DATA_CADASTRO, PARCELA, VALOR_TOTAL, ID_CATEGORIA FROM MOVIMENTO";
            SqlDataReader leitorMovimentos = comandoInicializarMovimentos.ExecuteReader();
            while (leitorMovimentos.Read())
            {
                if (int.TryParse(leitorMovimentos["PARCELA"].ToString(), out prc))
                {
                    prc     = int.Parse(leitorMovimentos["PARCELA"].ToString());
                    total   = float.Parse(leitorMovimentos["VALOR_TOTAL"].ToString());
                }
                else
                    prc = 0; total = 0;

                Cs_Movimento movimento = new Cs_Movimento(
                    (string)leitorMovimentos["DESCRICAO"],
                    float.Parse(leitorMovimentos["VALOR"].ToString()),
                    (DateTime)leitorMovimentos["DATA_CADASTRO"],
                    prc,
                    total,
                    leitorMovimentos["ID_CATEGORIA"].ToString()
                );
                if (idCategoria > 0)
                {
                    if (idCategoria.ToString() == leitorMovimentos["ID_CATEGORIA"].ToString())
                        AdicionaMovimento(movimento, leitorMovimentos["ID_MOVIMENTO"].ToString(), int.Parse(leitorMovimentos["ID_CATEGORIA"].ToString()));
                }
                else
                    AdicionaMovimento(movimento, leitorMovimentos["ID_MOVIMENTO"].ToString(), int.Parse(leitorMovimentos["ID_CATEGORIA"].ToString()));
            }
            leitorMovimentos.Close();
            string nomeCategoria = "";
            SqlCommand achaCategoria = conexaoFinanceiro.CreateCommand();

            // Troca o ID da categoria pelo nome da categoria na exibição do ListView
            foreach (ListViewItem item in listViewMovimentos.Items)
            {
                achaCategoria.CommandText = "SELECT NOME FROM CATEGORIA WHERE ID_CATEGORIA = @IdCategoria";
                achaCategoria.Parameters.Clear();
                achaCategoria.Parameters.AddWithValue("@IdCategoria", int.Parse(item.SubItems[3].Text));
                nomeCategoria = ((string)achaCategoria.ExecuteScalar());
                item.SubItems[3].Text = nomeCategoria;
            }
            verificaValor();
        }
 private ListViewItem ConstroiItemMovimento(Cs_Movimento mvt, bool alt=false, int idCategoria=0, string idMovimento="")
 {
     ListViewItem itemDescricao = new ListViewItem(mvt.descricao);
     ListViewItem.ListViewSubItem itemValor = new ListViewItem.ListViewSubItem(itemDescricao, "R$" + mvt.valor.ToString());
     ListViewItem.ListViewSubItem itemDataCadastro = new ListViewItem.ListViewSubItem(itemDescricao, mvt.dataCadastro.ToString());
     ListViewItem.ListViewSubItem itemCategoria = new ListViewItem.ListViewSubItem(itemDescricao, mvt.categoria);
     string parcela, valorTotal;
     if (mvt.parcela <= 0)
     {
         parcela = "";
         valorTotal = itemValor.Text;
     }
     else
     {
         parcela = mvt.parcela.ToString();
         valorTotal = mvt.valorTotal.ToString();
     }
     ListViewItem.ListViewSubItem itemParcela = new ListViewItem.ListViewSubItem(itemDescricao, parcela);
     itemDescricao.SubItems.Add(itemValor);
     itemDescricao.SubItems.Add(itemDataCadastro);
     itemDescricao.SubItems.Add(itemCategoria);
     itemDescricao.SubItems.Add(itemParcela);
     if (!alt)
         // Apenas atribui uma tag ao movimento para id e categoria se for uma inserção
         itemDescricao.Tag = idMovimento;
     itemDescricao.SubItems[3].Tag = idCategoria;
     return itemDescricao;
 }
 public void AdicionaMovimento(Cs_Movimento mvt, string idMovimento, int idCategoria)
 {
     listViewMovimentos.Items.Add(ConstroiItemMovimento(mvt, false, idCategoria, idMovimento));
 }