protected void gvProdutos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Alterar"))
            {
                int index = int.Parse(e.CommandArgument.ToString());
                int ID    = int.TryParse(gvProdutos.Rows[index].Cells[1].Text, out ID) ? ID : 0;

                try
                {
                    ProdutoBll produtoBll = new ProdutoBll();
                    Produto    produto    = produtoBll.RetornaProduto(ID);

                    txtID.Text              = string.Format("{0:000000}", produto.ID);
                    txtDescricao.Text       = produto.Descricao;
                    txtPrecoQuantidade.Text = string.Format("{0:C}", produto.PrecoQuantidade);
                    txtPrecoUnitario.Text   = string.Format("{0:C}", produto.PrecoUnitario);
                    cbAtivo.Checked         = produto.Ativo.Equals(1) ? true : false;

                    hfTipoOperacao.Value = TipoOperacao.Update.ToString();
                }
                catch (Exception ex)
                {
                    LogBll.InserirLog(new Log
                    {
                        ItemID   = ID,
                        Login    = User.Identity.Name,
                        Mensagem = ex.Message,
                        Operacao = TipoOperacao.Read.ToString(),
                        Tabela   = "Produto"
                    });

                    Msg.Erro(Resource.ContateAdminstrador, this);
                }
            }
        }
        protected void btnProduto_Click(object sender, EventArgs e)
        {
            double Quantidade = double.TryParse(txtQuantidadeProduto.Text, out Quantidade) ? Quantidade : 0;

            if (Quantidade.Equals(0))
            {
                Msg.Info(Resource.QuantidadeMaiorZero, this);

                txtQuantidadeProduto.Focus();
            }
            else if (!ddlProdutos.SelectedValue.Equals("0"))
            {
                ProdutoBll ProdutoBll    = new ProdutoBll();
                DataTable  ProdutosTable = new DataTable();

                if (ViewState["Produtos"] != null)
                {
                    ProdutosTable = (DataTable)ViewState["Produtos"];
                }
                else
                {
                    ProdutosTable.Columns.Add("ID");
                    ProdutosTable.Columns.Add("produtoID");
                    ProdutosTable.Columns.Add("descricao");
                    ProdutosTable.Columns.Add("quantidade");
                    ProdutosTable.Columns.Add("total");
                    ProdutosTable.Columns.Add("precounitario");
                }

                int    ID            = int.Parse(ddlProdutos.SelectedValue);
                double PrecoUnitario = double.TryParse(txtPrecoProduto.Text, out PrecoUnitario) ? PrecoUnitario : 0;

                Produto Produto = ProdutoBll.RetornaProduto(ID);

                double Total = Quantidade * PrecoUnitario;

                ProdutosTable.NewRow();

                ProdutosTable.Rows.Add(0, Produto.ID, Produto.Descricao, string.Format("{0:N3}", Quantidade), string.Format("{0:N}", Total), PrecoUnitario);

                ViewState["Produtos"] = ProdutosTable;

                gvProdutos.DataSource = ProdutosTable;
                gvProdutos.DataBind();

                LimparFormularioProduto();
            }
            else
            {
                Msg.Info("Selecione um produto", this);
            }
        }
        private void AlterarProduto()
        {
            int ID = int.TryParse(txtID.Text, out ID) ? ID : 0;

            try
            {
                ProdutoBll produtoBll          = new ProdutoBll();
                Produto    produto             = produtoBll.RetornaProduto(ID);
                int        fornecedorID        = int.TryParse(ddlFornecedor.SelectedValue, out fornecedorID) ? fornecedorID : 0;
                decimal    precoUnitario       = decimal.TryParse(txtPrecoUnitario.Text, out precoUnitario) ? precoUnitario : 0;
                decimal    precoQuantidade     = decimal.TryParse(txtPrecoQuantidade.Text, out precoQuantidade) ? precoQuantidade : 0;
                decimal    quantidadeReposicao = decimal.TryParse(txtQuantidadeReposicao.Text, out quantidadeReposicao) ? quantidadeReposicao : 0;

                produto.Ativo     = cbAtivo.Checked;
                produto.Ativo     = cbAtivo.Checked;
                produto.Descricao = txtDescricao.Text;
                //TODO: IMPLEMENTAR
                //produto.EmpresaID
                //produto.FornecedorID = fornecedorID;
                produto.PrecoQuantidade = precoQuantidade;
                produto.PrecoUnitario   = precoUnitario;

                produtoBll.AlterarProduto(produto);

                LimparFormulario();

                LogBll.InserirLog(new Log
                {
                    ItemID   = ID,
                    Login    = Context.User.Identity.Name,
                    Operacao = TipoOperacao.Update.ToString(),
                    Tabela   = "Produto"
                });

                Msg.Sucesso(Resource.ItemSalvoSucesso, this);
            }
            catch (Exception ex)
            {
                LogBll.InserirLog(new Log
                {
                    ItemID   = ID,
                    Login    = Context.User.Identity.Name,
                    Mensagem = ex.Message,
                    Operacao = TipoOperacao.Update.ToString(),
                    Tabela   = "Produto"
                });

                Msg.Erro(Resource.ContateAdminstrador, this);
            }
        }
        protected void ddlProdutos_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                ProdutoBll ProdutoBll = new ProdutoBll();
                int        ID         = int.Parse(ddlProdutos.SelectedValue);

                if (!ID.Equals(0))
                {
                    Produto Produto = ProdutoBll.RetornaProduto(ID);

                    txtPrecoProduto.Text = string.Format("{0:N}", Produto.PrecoUnitario);
                }
            }
            catch (Exception ex)
            {
                Msg.Erro(Resource.ContateAdminstrador, this);
            }
        }