private void btn_Pesq_Click(object sender, EventArgs e)
        {
            bool controle = true;

            try
            {
                dataInicial = Convert.ToDateTime(mktbox_Inicio.Text);
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Data Inicial Inválida ou em Branco ", "Atenção ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                mktbox_Inicio.Focus();
                controle = false;
            }
            try
            {
                dataFinal = Convert.ToDateTime(mktbox_Fim.Text);
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Data Final Inválida ou em Branco ", "Atenção ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                mktbox_Fim.Focus();
                controle = false;
            }
            if (controle)
            {
                preencheGrid(EntradaDataAcess.ConsultaEnt(dataInicial.Date, dataFinal.Date));
            }
        }
        private void btn_cancelar_Click(object sender, EventArgs e)
        {
            if (Convert.ToBoolean(dataGridViewEnt.CurrentRow.Cells["Entrada Ativa ?"].Value))
            {
                EntradaCancel EntCancel = new EntradaCancel();
                if (Application.OpenForms.OfType <MotivoCancel>().Count() == 0)
                {
                    MotivoCancel motCancel = new MotivoCancel();
                    motCancel.ShowDialog();
                    EntCancel.motivo     = motCancel.motivo;
                    EntCancel.id_entrada = Convert.ToInt32(dataGridViewEnt.CurrentRow.Cells[0].Value);
                    EntCancel.data       = DateTime.Now.Date;

                    // busca registro de entrada para diminuir no estoque
                    Entrada entrada = EntradaDataAcess.BuscaEntrada(Convert.ToInt32(dataGridViewEnt.CurrentRow.Cells[0].Value));


                    List <Estoque> estoque = new List <Estoque>();
                    Estoque        est     = new Estoque();
                    est.qtde_C = 0;
                    est.qtde_S = 0;
                    if (entrada.C_ou_S.Equals('S'))
                    {
                        est.qtde_S = entrada.qtde;
                    }
                    if (entrada.C_ou_S.Equals('C'))
                    {
                        est.qtde_C = entrada.qtde;
                    }
                    est.id_produto = entrada.id_produto;
                    estoque.Add(est);

                    //grava na tabela Entrada_Cancel
                    bool a = EntradaCancelDataAcess.Inserir(EntCancel);
                    //atualiza regristro na Entrada
                    bool b = EntradaDataAcess.CancelaEntrada(Convert.ToInt32(dataGridViewEnt.CurrentRow.Cells[0].Value));
                    //diminui no estoque
                    bool c = EstoqueDataAcess.DiminuiEstoque(estoque);

                    if (a && b && c)
                    {
                        MessageBox.Show("Cancelamento realizado com sucesso ! ", "Concluído", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        preencheGrid(EntradaDataAcess.ConsultaEnt(dataInicial.Date, dataFinal.Date));
                    }
                    else
                    {
                        MessageBox.Show("Erro ao cancelar a Entrada ! ", "Atenção !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                MessageBox.Show("Essa Entrada já foi Cancelada ! ", "Atenção !", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void btn_salvar_Click(object sender, EventArgs e)
        {
            DialogResult confirm = MessageBox.Show("Deseja confirmar a entrada da lista de produtos  ?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);

            if (confirm.ToString().ToUpper() == "YES")
            {
                if (valida())
                {
                    List <Entrada> prodsEntrada = new List <Entrada>();
                    List <Estoque> estoques     = new List <Estoque>();

                    DataGridViewRow linha = null;

                    for (int j = 0; j < dataGridViewProdEst.RowCount; j++)
                    {
                        linha = dataGridViewProdEst.Rows[j];
                        Entrada entrada = new Entrada();


                        if (!DBNull.Value.Equals(linha.Cells["Id"].Value))
                        {
                            entrada.id_produto = Convert.ToInt32(linha.Cells["Id"].Value);
                        }

                        if (!DBNull.Value.Equals(linha.Cells["Quantidade"].Value))
                        {
                            entrada.qtde = Convert.ToInt32(linha.Cells["Quantidade"].Value);
                        }
                        else
                        {
                            entrada.qtde = 0;
                        }
                        if (!DBNull.Value.Equals(linha.Cells["Preço de Custo"].Value))
                        {
                            entrada.valor_compra = Convert.ToDecimal(linha.Cells["Preço de Custo"].Value);
                        }
                        else
                        {
                            entrada.valor_compra = 0;
                        }
                        if (!DBNull.Value.Equals(linha.Cells["\"C\" ou \"S\""].Value))
                        {
                            entrada.C_ou_S = Convert.ToChar(Convert.ToString(linha.Cells["\"C\" ou \"S\""].Value).ToUpper());
                        }

                        entrada.ativo = true;
                        entrada.data  = DateTime.Now.Date;
                        prodsEntrada.Add(entrada);


                        Estoque estoque = new Estoque();
                        estoque.id_produto = entrada.id_produto;
                        estoque.qtde_C     = 0;
                        estoque.qtde_S     = 0;
                        if (entrada.C_ou_S == 'S')
                        {
                            estoque.qtde_S = entrada.qtde;
                        }
                        if (entrada.C_ou_S == 'C')
                        {
                            estoque.qtde_C = entrada.qtde;
                        }

                        estoques.Add(estoque);
                    }

                    //grava produtos listados na tabela entrada, com a respectiva quantidade e preco de custo
                    bool a = EntradaDataAcess.Inserir(prodsEntrada);
                    //adiciona a quantidade no estoque
                    bool b = EstoqueDataAcess.GravaEstoque(estoques);
                    if (a && b)
                    {
                        MessageBox.Show("Entrada de produtos realizada com sucesso ! ", "Concluído", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    else
                    {
                        MessageBox.Show("Erro ao cadastrar Produtos no estoque ! ", "Atenção !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }

                    table.Clear();
                }
            }
        }