public bool InserirBL(MovimentosEstoque movEst)
        {
            /*criar as regras de negocio*/
            MovimentosEstoqueDA MovimentosEstoqueDA = new MovimentosEstoqueDA();

            return MovimentosEstoqueDA.InserirDA(movEst);
        }
        public DataSet PesquisarDataSetBL(MovimentosEstoque movestoque, string coditens, string codUsuarios, string dtIni, string dtFim)
        {
            /*criar as regras de negocio*/
            MovimentosEstoqueDA movimentosestoqueDA = new MovimentosEstoqueDA();

            return movimentosestoqueDA.PesquisarDataSetDA(movestoque, coditens, codUsuarios, dtIni, dtFim);
        }
        public bool ExcluirDA(MovimentosEstoque movEst)
        {
            SqlParameter[] paramsToSP = new SqlParameter[1];

            paramsToSP[0] = new SqlParameter("@id", movEst.Id);

            try
            {
                SqlHelper.ExecuteNonQuery(ConfigurationManager.ConnectionStrings["conexao"].ToString(), CommandType.StoredProcedure, "stp_delete_MovimentosEstoque", paramsToSP);

                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }
        public bool InserirDA(MovimentosEstoque movEst)
        {
            SqlParameter[] paramsToSP = new SqlParameter[7];

            paramsToSP[0] = new SqlParameter("@vendaItensId", movEst.VendaItensId);
            paramsToSP[1] = new SqlParameter("@usuarioid", movEst.UsuarioId);
            paramsToSP[2] = new SqlParameter("@itemestoqueid", movEst.ItemEstoqueId);
            paramsToSP[3] = new SqlParameter("@quantidade", movEst.Quantidade);
            paramsToSP[4] = new SqlParameter("@notaentradaitensid", movEst.NotaEntradaId);
            paramsToSP[5] = new SqlParameter("@tipo", movEst.Tipo);
            paramsToSP[6] = new SqlParameter("@data", movEst.Data);

            try
            {
                SqlHelper.ExecuteNonQuery(ConfigurationManager.ConnectionStrings["conexao"].ToString(), CommandType.StoredProcedure, "stp_insert_MovimentosEstoque", paramsToSP);

                return true;
            }
            catch (Exception e)
            {
                return false;
            }
        }
        protected void btnFinalizar_Click(object sender, EventArgs e)
        {
            VendasBL venEBL = new VendasBL();
            Vendas vendas = new Vendas();
            VendaItensBL venItBL = new VendaItensBL();
            VendaItens vendaItens = new VendaItens();
            MovimentosEstoqueBL movEstBL = new MovimentosEstoqueBL();
            MovimentosEstoque movEstoque = new MovimentosEstoque();
            int usu_id = 0;

            vendas.Data = DateTime.Now;
            vendas.Situacao = "A";
            vendas.PessoaId = utils.ComparaIntComZero(hfIdPessoa.Value);

            if (Session["usuario"] != null)
            {
                List<Usuarios> usuarios;
                usuarios = (List<Usuarios>)Session["usuario"];

                foreach (Usuarios usu in usuarios)
                {
                    usu_id = usu.Id;
                }

                vendas.UsuarioId = usu_id;
            }

            if (Session["dtItens"] != null)
                dtItens = (DataTable)Session["dtItens"];

            if (dtItens.Rows.Count > 0)
            {
                int id = venEBL.InserirBL(vendas);

                if (id > 0)
                {
                    foreach (DataRow linha in dtItens.Rows)
                    {
                        vendaItens.VendaId = id;
                        vendaItens.ItemEstoqueId = utils.ComparaIntComZero(linha["ITEMESTOQUEID"].ToString());
                        vendaItens.Quantidade = utils.ComparaIntComZero(linha["QUANTIDADE"].ToString());
                        vendaItens.Valor = utils.ComparaDecimalComZero(linha["VALORUNI"].ToString());
                        vendaItens.Situacao = "A";
                        vendaItens.Desconto = utils.ComparaDecimalComZero(linha["DESCONTO"].ToString());

                        venItBL.InserirBL(vendaItens, usu_id);

                    }

                    if (id > 0)
                    {
                        if (chkImprimirRec.Checked)                                                                                                                                                                                                                                                                                                                                                                                                                                           //l//c
                            ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "WinOpen('/Relatorios/RelReciboVenda.aspx?vendaid=" + id + "','',600,850);", true);

                        ExibirMensagem("Venda gravada com sucesso !");
                        LimparCamposGeral();
                        txtCliente.Focus();
                    }
                    else
                        ExibirMensagem("Não foi possível gravar a venda. Revise as informações!");
                }
                else
                    ExibirMensagem("Não foi possível gravar a venda. Revise as informações!");
            }
        }
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            MovimentosEstoqueBL mvEstBL = new MovimentosEstoqueBL();
            MovimentosEstoque movEstoque = new MovimentosEstoque();

            if (Session["usuario"] != null)
            {
                List<Usuarios> usuarios;
                usuarios = (List<Usuarios>)Session["usuario"];

                foreach (Usuarios usu in usuarios)
                {
                    movEstoque.UsuarioId = usu.Id;
                }
            }

            movEstoque.ItemEstoqueId = utils.ComparaIntComZero(hfIdItem.Value);
            movEstoque.Quantidade = utils.ComparaIntComZero(txtQtde.Text);
            movEstoque.Data = Convert.ToDateTime(txtData.Text);
            movEstoque.Tipo = rblTipoMov.SelectedValue;

            if (movEstoque.ItemEstoqueId > 0 && movEstoque.UsuarioId > 0)
            {

                if (mvEstBL.InserirBL(movEstoque))
                    ExibirMensagem("Estoque atualizado com sucesso!");
                else
                    ExibirMensagem("Não foi possível gravar o movimento. Revise as informações !");

            }

            txtQtde.Text = "";
            LimparCampos();
        }
        private List<MovimentosEstoque> CarregarObjMovimentoEstoque(SqlDataReader dr)
        {
            List<MovimentosEstoque> movEstoque = new List<MovimentosEstoque>();

            while (dr.Read())
            {
                MovimentosEstoque movEst = new MovimentosEstoque();
                movEst.Id = int.Parse(dr["ID"].ToString());
                movEst.VendaItensId = utils.ComparaIntComNull(dr["VENDAITENSID"].ToString());
                movEst.UsuarioId = utils.ComparaIntComZero(dr["USUARIOID"].ToString());
                movEst.VlrVenda = utils.ComparaDecimalComZero(dr["VLRVENDA"].ToString());
                movEst.VlrCusto = utils.ComparaDecimalComZero(dr["VLRCUSTO"].ToString());
                movEst.ItemEstoqueId = int.Parse(dr["ITEMESTOQUEID"].ToString());
                movEst.Quantidade = utils.ComparaIntComZero(dr["QUANTIDADE"].ToString());
                movEst.NotaEntradaId = utils.ComparaIntComNull(dr["NOTAENTRADAITENSID"].ToString());
                movEst.Tipo = dr["TIPO"].ToString();
                movEst.Data = Convert.ToDateTime(dr["DATA"].ToString());
                movEst.NumeroVenda = utils.ComparaIntComNull(dr["NUMERO"].ToString());
                movEst.Numnota = utils.ComparaIntComNull(dr["NUMNOTA"].ToString());
                movEst.Serie = utils.ComparaShortComNull(dr["SERIE"].ToString());

                Usuarios usuarios = new Usuarios();
                usuarios.Login = dr["LOGIN"].ToString();
                movEst.Usuarios = usuarios;

                Obras obras = new Obras();
                obras.Codigo = Int32.Parse(dr["CODIGO"].ToString());
                obras.Titulo = dr["TITULO"].ToString();

                movEst.Obras = obras;

                movEstoque.Add(movEst);
            }

            return movEstoque;
        }
        public DataSet PesquisarDataSetDA(MovimentosEstoque movestoque, string coditens, string codUsuarios, string dtIni, string dtFim)
        {
            StringBuilder sqlQuery = new StringBuilder();

            sqlQuery.Append(@" SELECT M.*,IE.VLRCUSTO, IE.VLRVENDA, O.CODIGO, O.TITULO, U.LOGIN, V.NUMERO   " +
                        "   FROM MOVIMENTOSESTOQUE M  " +
                        "        INNER JOIN ITENSESTOQUE IE ON IE.ID = M.ITEMESTOQUEID  " +
                        "        INNER JOIN USUARIOS U ON U.ID = M.USUARIOID  " +
                        "        INNER JOIN OBRAS O ON O.ID = IE.OBRAID  " +
                        "        LEFT JOIN VENDAITENS VI ON VI.ID = M.VENDAITENSID  " +
                        "        LEFT JOIN VENDAS V ON V.ID = VI.VENDAID  " +
                        "  WHERE 1 = 1 ");

            if(codUsuarios != string.Empty)
                sqlQuery.Append(@" AND m.usuarioid IN (" + codUsuarios + ")");

            if (coditens != string.Empty)
                sqlQuery.Append(@" AND O.CODIGO IN (" + coditens + ")");

            if (movestoque.Quantidade != 0)
                sqlQuery.Append(@" AND m.quantidade = " + movestoque.Quantidade);

            if (movestoque.Tipo != null)
                sqlQuery.Append(@" AND m.tipo = '" + movestoque.Tipo +"'");

            if ((dtIni != string.Empty) && (dtFim != string.Empty))
                sqlQuery.Append(@" AND CONVERT(DATE,M.data,103)  BETWEEN CONVERT(DATE,'" + dtIni + "',103) AND CONVERT(DATE,'" + dtFim + "',103)");

            DataSet ds = SqlHelper.ExecuteDataset(ConfigurationManager.ConnectionStrings["conexao"].ToString(),
                                                                CommandType.Text, sqlQuery.ToString());

            return ds;
        }
        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            NotasEntradaBL ntEBL = new NotasEntradaBL();
            NotasEntrada notaEntrada = new NotasEntrada();
            NotasEntradaItensBL ntEiBL = new NotasEntradaItensBL();
            NotasEntradaItens notaEntradaItens = new NotasEntradaItens();
            MovimentosEstoqueBL movEstBL = new MovimentosEstoqueBL();
            MovimentosEstoque movEstoque = new MovimentosEstoque();

            notaEntrada.Id = utils.ComparaIntComZero(hfId.Value);
            notaEntrada.Numero = utils.ComparaIntComZero(txtNumero.Text);
            notaEntrada.Serie = utils.ComparaShortComZero(txtSerie.Text);
            notaEntrada.Data = Convert.ToDateTime(txtData.Text);
            int usu_id = 0;

            if (Session["dtItens"] != null)
                dtItens = (DataTable)Session["dtItens"];

            if (dtItens.Rows.Count > 0)
            {

                if (Session["usuario"] != null)
                {
                    List<Usuarios> usuarios;
                    usuarios = (List<Usuarios>)Session["usuario"];

                    foreach (Usuarios usu in usuarios)
                    {
                        usu_id = usu.Id;
                    }
                }

                if (notaEntrada.Id == 0)
                {

                    if (dtItens.Rows.Count > 0)
                    {
                        int id = ntEBL.InserirBL(notaEntrada);

                        if (id > 0)
                        {
                            foreach (DataRow linha in dtItens.Rows)
                            {
                                notaEntradaItens.NotaEntradaId = id;
                                notaEntradaItens.ItemEstoqueId = utils.ComparaIntComZero(linha["ITEMESTOQUEID"].ToString());
                                notaEntradaItens.Quantidade = utils.ComparaIntComZero(linha["QUANTIDADE"].ToString());
                                notaEntradaItens.Valor = utils.ComparaDecimalComZero(linha["VALOR"].ToString());
                                notaEntradaItens.UsuarioId = usu_id;
                                notaEntradaItens.ValorVenda = utils.ComparaDecimalComZero(linha["VALORVENDA"].ToString());

                                ntEiBL.InserirBL(notaEntradaItens);
                            }
                        }

                        LimparCampos();
                        ExibirMensagem("Nota de Entrada gravada com sucesso !");
                    }

                }
                else
                {

                    ExcluirItens();
                    if (dtItens.Rows.Count > 0)
                    {
                        ntEBL.EditarBL(notaEntrada);

                        foreach (DataRow linha in dtItens.Rows)
                        {
                            notaEntradaItens.NotaEntradaId = notaEntrada.Id;
                            notaEntradaItens.Id = utils.ComparaIntComZero(linha["ID"].ToString());
                            notaEntradaItens.ItemEstoqueId = utils.ComparaIntComZero(linha["ITEMESTOQUEID"].ToString());
                            notaEntradaItens.Quantidade = utils.ComparaIntComZero(linha["QUANTIDADE"].ToString());
                            notaEntradaItens.Valor = utils.ComparaDecimalComZero(linha["VALOR"].ToString());
                            notaEntradaItens.UsuarioId = usu_id;
                            notaEntradaItens.ValorVenda = utils.ComparaDecimalComZero(linha["VALORVENDA"].ToString());

                            if (notaEntradaItens.Id > 0)
                                ntEiBL.EditarBL(notaEntradaItens);
                            else
                                ntEiBL.InserirBL(notaEntradaItens);

                        }
                    }

                    ExibirMensagem("Nota de Entrada atualizada com sucesso !");

                }
            }
            else
                ExibirMensagem("Não é possível salvar uma nota sem o(s) item(es) !");
        }
        protected void btnRelatorio_Click(object sender, EventArgs e)
        {
            MovimentosEstoqueBL movimentosEstoqueBL = new MovimentosEstoqueBL();
            MovimentosEstoque movimentosEstoque = new MovimentosEstoque();

            if (txtQuantidade.Text != string.Empty)
                movimentosEstoque.Quantidade = Convert.ToInt32(txtQuantidade.Text);

            if (utils.ComparaIntComZero(ddlTipoMov.SelectedValue) == 2 )
                movimentosEstoque.Tipo = "S";
            else if (utils.ComparaIntComZero(ddlTipoMov.SelectedValue) == 1 )
                movimentosEstoque.Tipo = "E";

            Session["ldsRel"] = movimentosEstoqueBL.PesquisarDataSetBL(movimentosEstoque, txtItem.Text, txtUsuario.Text, txtDataIni.Text, txtDataFim.Text).Tables[0];
            if (((DataTable)Session["ldsRel"]).Rows.Count != 0)
            {
                string periodo = "Todos";
                if ((txtDataIni.Text != string.Empty) && (txtDataFim.Text != string.Empty))
                {
                    periodo = txtDataIni.Text + " a " + txtDataFim.Text;
                }
                ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "WinOpen('/Relatorios/RelMovimentacaoEstoque.aspx?periodo=" + periodo + "','',590,805);", true);
            }
            else
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "alert('Sua pesquisa não retornou dados.');", true);
            }
        }