protected void btnIncluirItem_Click(object sender, EventArgs e)
    {
        //será incluido no grid de ICMS manualmente (não incluirá no banco ainda)
        //pois só deverá ser incluido no banco quando salvar o produto

        //armazena em viewstate a linha selecionada para posterior atualização
        List<ItemEntradaEstoqueVO> newlstItemEntradaEstoque = NissiSession.ItemEntradaEstoques;
        int codMateriaPrima = 0;
        try
        {
            codMateriaPrima = int.Parse(ddlProduto.SelectedValue);
        }
        catch (Exception)
        {
            MensagemCliente(updCadastroItem, "Escolha um valor na lista para a Matéria Prima!");
            return;
        }

        const int codBitola = 0;
        //try
        //{
        //    codBitola = int.Parse(ddlBitola.SelectedValue);
        //}
        //catch (Exception)
        //{
        //    MensagemCliente(updCadastroItem, "Escolha um valor na lista para a Bitola!");
        //    return;
        //}

        decimal qtde = !string.IsNullOrEmpty(txtQtde.Text) ? decimal.Parse(txtQtde.Text) : 0;
        decimal valor = !string.IsNullOrEmpty(txtValorUnit.Text) ? decimal.Parse(txtValorUnit.Text) : 0;
        string norma = ddlProduto.SelectedItem.Text;
        decimal bitola = !string.IsNullOrEmpty(ddlBitola.SelectedItem.Text) && ddlBitola.SelectedValue != "" ? decimal.Parse(ddlBitola.SelectedItem.Text) : 0;
        string unidade = ddlUnidade.SelectedItem.Text;
        string especificacao = txtEspecificacao.Text;
        decimal Ipi = !string.IsNullOrEmpty(txtIPI.Text) ? decimal.Parse(txtIPI.Text) : 0;
        int codUnidade = !string.IsNullOrEmpty(ddlUnidade.SelectedValue) ? int.Parse(ddlUnidade.SelectedValue) : 0;
        //se for edição de ICMS, atualizar o list))
        if (hdfTipoAcaoItem.Value.Equals("Incluir"))
        {
            /************************************************************************
            Se a ação for inclusão, simplesmente verifica se o ítem já foi cadastrado
            se já for, exibe mensagem e não inclui o ítem
            /***********************************************************************/
            ItemEntradaEstoqueVO result = newlstItemEntradaEstoque.Find(
            delegate(ItemEntradaEstoqueVO bk)
            {
                return bk.MateriaPrimaVo.CodMateriaPrima == codMateriaPrima;
            }
            );
            if (result != null)
            {

                MensagemCliente(updCadastroItem, "Produto já cadastrado!");
                return;
            }
            /************************************************************************/
            /************************************************************************/

            //senão, incluir novo ítem no list
            ItemEntradaEstoqueVO lstItemEntradaEstoqueAux = new ItemEntradaEstoqueVO();
            lstItemEntradaEstoqueAux.Lote = !string.IsNullOrEmpty(txtLote.Text)? int.Parse(txtLote.Text):0;
            lstItemEntradaEstoqueAux.Certificado = txtCertificado.Text;
            lstItemEntradaEstoqueAux.Corrida = txtCorrida.Text;
            lstItemEntradaEstoqueAux.MateriaPrimaVo.CodMateriaPrima = codMateriaPrima;
            lstItemEntradaEstoqueAux.MateriaPrimaVo.NormaVo.Descricao = norma;
            lstItemEntradaEstoqueAux.BitolaVo.CodBitola = codBitola;
            lstItemEntradaEstoqueAux.BitolaVo.Bitola = bitola;
            lstItemEntradaEstoqueAux.Qtd = qtde;
            lstItemEntradaEstoqueAux.UnidadeVo.CodUnidade = codUnidade;
            lstItemEntradaEstoqueAux.UnidadeVo.TipoUnidade = unidade;
            lstItemEntradaEstoqueAux.Especificacao = especificacao;
            lstItemEntradaEstoqueAux.Ipi = Ipi;
            lstItemEntradaEstoqueAux.Valor = valor;
            lstItemEntradaEstoqueAux.C = !string.IsNullOrEmpty(txtC.Text) ? decimal.Parse(txtC.Text) : 0;
            lstItemEntradaEstoqueAux.Si = !string.IsNullOrEmpty(txtSi.Text) ? decimal.Parse(txtSi.Text) : 0;
            lstItemEntradaEstoqueAux.Mn = !string.IsNullOrEmpty(txtMn.Text) ? decimal.Parse(txtMn.Text) : 0;
            lstItemEntradaEstoqueAux.P = !string.IsNullOrEmpty(txtP.Text) ? decimal.Parse(txtP.Text) : 0;
            lstItemEntradaEstoqueAux.S = !string.IsNullOrEmpty(txtS.Text) ? decimal.Parse(txtS.Text) : 0;
            lstItemEntradaEstoqueAux.Cr = !string.IsNullOrEmpty(txtCr.Text) ? decimal.Parse(txtCr.Text) : 0;
            lstItemEntradaEstoqueAux.Ni = !string.IsNullOrEmpty(txtNi.Text) ? decimal.Parse(txtNi.Text) : 0;
            lstItemEntradaEstoqueAux.Mo = !string.IsNullOrEmpty(txtMo.Text) ? decimal.Parse(txtMo.Text) : 0;
            lstItemEntradaEstoqueAux.Cu = !string.IsNullOrEmpty(txtCu.Text) ? decimal.Parse(txtCu.Text) : 0;
            lstItemEntradaEstoqueAux.Ti = !string.IsNullOrEmpty(txtTi.Text) ? decimal.Parse(txtTi.Text) : 0;
            lstItemEntradaEstoqueAux.N2 = !string.IsNullOrEmpty(txtN2.Text) ? decimal.Parse(txtN2.Text) : 0;
            lstItemEntradaEstoqueAux.Co = !string.IsNullOrEmpty(txtCo.Text) ? decimal.Parse(txtCo.Text) : 0;
            lstItemEntradaEstoqueAux.Al = !string.IsNullOrEmpty(txtAl.Text) ? decimal.Parse(txtAl.Text) : 0;
            lstItemEntradaEstoqueAux.Resistencia = !string.IsNullOrEmpty(txtResistenciaTracao.Text) ? decimal.Parse(txtResistenciaTracao.Text) : 0;
            lstItemEntradaEstoqueAux.Dureza = !string.IsNullOrEmpty(txtDureza.Text) ? decimal.Parse(txtDureza.Text) : 0;
            lstItemEntradaEstoqueAux.Nota = !string.IsNullOrEmpty(txtNota.Text) ? decimal.Parse(txtNota.Text) : 0;
            lstItemEntradaEstoqueAux.CertificadoScanneado = NissiSession.ArquivoPdf;

            newlstItemEntradaEstoque.Add(lstItemEntradaEstoqueAux);
        }
        else
        {
            /************************************************************************
            Se a ação for alteração, verifica se o ítem já está cadastrado, se já estiver
            será impedido, desde que não seja ele mesmo
            /***********************************************************************/
            int linha = Convert.ToInt32(ViewState["LinhaSelecionadaItemEntradaEstoque"]);
            if (linha != codMateriaPrima)
            {
                var item1 =
                    newlstItemEntradaEstoque.Where(r => r.MateriaPrimaVo.CodMateriaPrima == codMateriaPrima).Select(r => r).
                        FirstOrDefault();
                if (item1 != null)
                {
                    MensagemCliente(updCadastroItem, "Produto já cadastrado!");
                    return;
                }
            }

            /************************************************************************
            Atualiza o item do grid        
            /***********************************************************************/
            var item =
                newlstItemEntradaEstoque.Where(r => r.MateriaPrimaVo.CodMateriaPrima == linha && r.BitolaVo.CodBitola == codBitola).Select(r => r).
                    FirstOrDefault();
            item.MateriaPrimaVo.CodMateriaPrima = codMateriaPrima;
            item.MateriaPrimaVo.NormaVo.Descricao = norma;
            item.BitolaVo.CodBitola = codBitola;
            item.BitolaVo.Bitola = bitola;
            item.UnidadeVo.CodUnidade = codUnidade;
            item.Lote = !string.IsNullOrEmpty(txtLote.Text)? int.Parse(txtLote.Text):0;
            item.Certificado = txtCertificado.Text;
            item.Corrida = txtCorrida.Text;
            item.Qtd = qtde;
            item.UnidadeVo.TipoUnidade = unidade;
            item.Especificacao = especificacao;
            item.Ipi = Ipi;
            item.Valor = valor;
            item.C = !string.IsNullOrEmpty(txtC.Text) ? decimal.Parse(txtC.Text) : 0;
            item.Si = !string.IsNullOrEmpty(txtSi.Text) ? decimal.Parse(txtSi.Text) : 0;
            item.Mn = !string.IsNullOrEmpty(txtMn.Text) ? decimal.Parse(txtMn.Text) : 0;
            item.P = !string.IsNullOrEmpty(txtP.Text) ? decimal.Parse(txtP.Text) : 0;
            item.S = !string.IsNullOrEmpty(txtS.Text) ? decimal.Parse(txtS.Text) : 0;
            item.Cr = !string.IsNullOrEmpty(txtCr.Text) ? decimal.Parse(txtCr.Text) : 0;
            item.Ni = !string.IsNullOrEmpty(txtNi.Text) ? decimal.Parse(txtNi.Text) : 0;
            item.Mo = !string.IsNullOrEmpty(txtMo.Text) ? decimal.Parse(txtMo.Text) : 0;
            item.Cu = !string.IsNullOrEmpty(txtCu.Text) ? decimal.Parse(txtCu.Text) : 0;
            item.Ti = !string.IsNullOrEmpty(txtTi.Text) ? decimal.Parse(txtTi.Text) : 0;
            item.N2 = !string.IsNullOrEmpty(txtN2.Text) ? decimal.Parse(txtN2.Text) : 0;
            item.Co = !string.IsNullOrEmpty(txtCo.Text) ? decimal.Parse(txtCo.Text) : 0;
            item.Al = !string.IsNullOrEmpty(txtAl.Text) ? decimal.Parse(txtAl.Text) : 0;
            item.Resistencia = !string.IsNullOrEmpty(txtResistenciaTracao.Text) ? decimal.Parse(txtResistenciaTracao.Text) : 0;
            item.Dureza = !string.IsNullOrEmpty(txtDureza.Text) ? decimal.Parse(txtDureza.Text) : 0;
            item.Nota = !string.IsNullOrEmpty(txtNota.Text) ? decimal.Parse(txtNota.Text) : 0;
            item.CertificadoScanneado = NissiSession.ArquivoPdf;

            //sai do for
        }
        grdProduto.DataSource = newlstItemEntradaEstoque;
        grdProduto.DataBind();
        //atualiza viewstate
        NissiSession.ItemEntradaEstoques = newlstItemEntradaEstoque;
        LimparCamposItemEntradaEstoque();        
        mpeIncluirItem.Hide();
    }
 private List<ItemEntradaEstoqueVO> ConvertToItemEntradaEstoque(List<ItemPedidoCompraVO> itemPedidoCompraVos)
 {
     List<ItemEntradaEstoqueVO> itemEntradaEstoqueVos = new List<ItemEntradaEstoqueVO>();
     foreach (var itemPedidoCompraVo in itemPedidoCompraVos)
     {
         var itemEntradaEstoque = new ItemEntradaEstoqueVO();
         itemEntradaEstoque.MateriaPrimaVo = itemPedidoCompraVo.MateriaPrimaVo;
         itemEntradaEstoque.BitolaVo = itemPedidoCompraVo.BitolaVo;
         itemEntradaEstoque.QtdPedidoCompra = itemPedidoCompraVo.Saldo;
         itemEntradaEstoque.Valor = itemPedidoCompraVo.Valor;
         //itemEntradaEstoque.Resistencia = itemPedidoCompraVo.ResistenciaTracao;
         itemEntradaEstoque.Especificacao = itemPedidoCompraVo.Especificacao;
         itemEntradaEstoque.UnidadeVo.CodUnidade = itemPedidoCompraVo.UnidadeVo.CodUnidade;
         itemEntradaEstoque.UnidadeVo.TipoUnidade = itemPedidoCompraVo.UnidadeVo.TipoUnidade;
         itemEntradaEstoque.Ipi = itemPedidoCompraVo.Ipi;
         itemEntradaEstoqueVos.Add(itemEntradaEstoque);
     }
     NissiSession.ItemEntradaEstoques = itemEntradaEstoqueVos;
     return itemEntradaEstoqueVos;
 }
        protected void grdListaResultado_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (!e.CommandName.Equals("Page"))
            {
                ItemEntradaEstoqueVO itemEntradaEstoqueVo = new ItemEntradaEstoqueVO();
                string[] args = e.CommandArgument.ToString().Split('|');
                itemEntradaEstoqueVo.EntradaEstoqueVo.CodEntradaEstoque = int.Parse(args[0]);
                switch (e.CommandName)
                {
                        //Modulo de Edicao
                    case "Editar":
                        if (rbEntradaEstoque.Checked && !string.IsNullOrEmpty(txtEntradaEstoque.Text))
                        {
                            hdfValor.Value = txtEntradaEstoque.Text;
                            hdfOpcao.Value = "EntradaEstoque";
                        }
                        if (rbLote.Checked && !string.IsNullOrEmpty(txtLote.Text))
                        {
                            hdfValor.Value = txtLote.Text;
                            hdfOpcao.Value = "Lote";
                        }
                        if (rbRazaoSocial.Checked && !string.IsNullOrEmpty(txtRazaoSocial.Text))
                        {
                            hdfValor.Value = txtRazaoSocial.Text;
                            hdfOpcao.Value = "RazaoSocial";
                        }
                        if (rbCorrida.Checked && !string.IsNullOrEmpty(txtCorrida.Text))
                        {
                            hdfValor.Value = txtCorrida.Text;
                            hdfOpcao.Value = "Corrida";
                        }
                        if (rbCertificado.Checked && !string.IsNullOrEmpty(txtCertificado.Text))
                        {
                            hdfValor.Value = txtCertificado.Text;
                            hdfOpcao.Value = "Certificado";
                        }
                        Response.Redirect("CadastraEntradaEstoque.aspx?acao=Editar&CodEntradaEstoque=" +
                                          itemEntradaEstoqueVo.EntradaEstoqueVo.CodEntradaEstoque + "&tipo=" + args[1] +
                                          "&valor=" + hdfValor.Value + "&opcao=" + hdfOpcao.Value);
                        break;
                        //Modulo de Excluir
                    case "Excluir":
                        new Business.EntradaEstoque().Excluir(itemEntradaEstoqueVo.EntradaEstoqueVo.CodEntradaEstoque);
                        //Atualizar Lista
                        Pesquisar();
                        break;
                        //Modulo de Imprimir
                    case "Imprimir":
                        break;
                        //Modulo de Enviar
                    case "Enviar":
                        break;
                }
            }

        }