private void EventoModificarProducto()
        {
            EventoLlenarLista();
            EventoLlenarListaProveedores();

            int linProCodigo;
            linProCodigo = (int)LeerVariableSesion("proCodigo");

            DataRow drArticulo;
            CArticulo objArticulo = new CArticulo();
            drArticulo = objArticulo.fnDatosArticulo(linProCodigo);

            Articulos oArticulo = new Articulos();
            clsArticulos lstArticulos = new clsArticulos();

            oArticulo = lstArticulos.GetArticulo(linProCodigo);
            this.AgregarVariableSession("oArticulo", oArticulo);

            if (drArticulo != null)
            {
                txtCodigo.Text = drArticulo["artCod"].ToString();
                txtDescripcion.Text = drArticulo["artDescripcion"].ToString();

                //grabamos el stock del producto
                decimal ldeStockProducto = 0;
                if (drArticulo["artStock"] != null)
                    ldeStockProducto = Convert.ToDecimal( drArticulo["artStock"]);

                txtStock.Text = ldeStockProducto.ToString();
                this.AgregarVariableSession("stockProducto", ldeStockProducto);

                //txtStockMax.Text = drArticulo["artStockMax"].ToString();
                //txtStockMin.Text = drArticulo["artStockMin"].ToString();
                txtFecVencimiento.Text = drArticulo["artFecVen"].ToString();
                txtCostoPromedio.Text = drArticulo["artCostoProm"].ToString();
                txtPeso.Text = drArticulo["artPeso"].ToString();
                chkestado.Checked = Convert.ToBoolean( drArticulo["artEstado"]);

                ListItem liElegido;
                //si DropDownList está visible
                if (ddlUnidadMedida.Items.Count > 0)
                {
                    liElegido = ddlUnidadMedida.Items.FindByValue(drArticulo["UniCod"].ToString());
                    ddlUnidadMedida.SelectedIndex = ddlUnidadMedida.Items.IndexOf(liElegido);
                }

                ListItem liElegidoProveedor;
                //si DropDownList está visible
                if (ddlProveedor.Items.Count > 0)
                {
                    liElegidoProveedor = ddlProveedor.Items.FindByValue(drArticulo["PrvCod"].ToString());
                    ddlProveedor.SelectedIndex = ddlProveedor.Items.IndexOf(liElegidoProveedor);
                }

                //CONSULTAR PRECIOS Y LOTES DEL PRODUCTO
                MostrarPreciosLotes(linProCodigo);

                //MODIFICAR , se guarda en variable cache
                AgregarVariableSession("operacion", 2);
                pnlBusqueda.Visible = false;
                pnlProductos.Visible = false;
                pnlEditProductos.Visible = true;
                pnlListaPrecios.Visible = true;
                pnlDetallePrecio.Visible = false;
                lblMensajes.Visible = false;

                btnNuevoPrecio.Visible = true;
            }
        }
        private void EventoGuardar()
        {
            int nResp;
            int linOperacion = (int)LeerVariableSesion("operacion");
            CArticulo oArticulo = new CArticulo();
            if (string.IsNullOrEmpty(txtCodigo.Text))
                oArticulo.ArtCod = 0;
            else
                oArticulo.ArtCod = Convert.ToInt32(txtCodigo.Text);

            oArticulo.ArtDescripcion = txtDescripcion.Text.ToUpper();
            oArticulo.ArtStock = Convert.ToDecimal(txtStock.Text);
            //oArticulo.ArtStockMax = Convert.ToDecimal(txtStockMax.Text);
            //oArticulo.ArtStockMin = Convert.ToDecimal(txtStockMin.Text);
            oArticulo.ArtCostoProm = Convert.ToDecimal(txtCostoPromedio.Text);
            if (linOperacion == 1)        //NUEVO
                oArticulo.ArtFecRegis = DateTime.Today;
            oArticulo.ArtFecVen = Convert.ToDateTime(txtFecVencimiento.Text);
            oArticulo.ArtFecModi = DateTime.Today;
            oArticulo.UniCod = Convert.ToInt32(ddlUnidadMedida.SelectedItem.Value);
            oArticulo.ArtEstado = chkestado.Checked;
            oArticulo.ArtPeso = Convert.ToDecimal(txtPeso.Text);
            oArticulo.ArtEstado = chkestado.Checked;

            if (ddlProveedor.Items.Count > 0)
                oArticulo.PrvCod = Convert.ToInt32(ddlProveedor.SelectedItem.Value);
            else
                oArticulo.PrvCod = 0;

            if (linOperacion == 1)        //NUEVO
            {
                nResp = oArticulo.fnArticuloInsert();
                btnNuevoPrecio.Visible = true;
            }
            else                        // MODIFICAR
                nResp = oArticulo.fnArticuloUpdate();

            if (nResp <= 0)
            {
                lblMensajes.Visible = true;
                lblMensajes.Text = oArticulo.DescripcionError;
                this.MessageBox(oArticulo.DescripcionError);
            }
            else
            {
                lblMensajes.Visible = true;
                lblMensajes.Text = "El registro se Grabo Satisfactoriamente.";
                pnlEditProductos.Visible = false;
                this.MessageBox("El registro se Grabo Satisfactoriamente.");
                pnlBusqueda.Visible = true;
                pnlListaPrecios.Visible = false;
                pnlEditProductos.Visible = false;
                pnlTipoProductos.Visible = true;
                pnlProductos.Visible = true;

                string sBuscado = this.LeerVariableSesion("sBuscado").ToString();
                EventoBuscarProductos(sBuscado);
            }
        }
        private void EventoEliminar(int proCodigo)
        {
            CArticulo oArticulo = new CArticulo();
            int nResp = oArticulo.fnArticuloDelete(proCodigo);
            if (nResp <= 0)
            {
                lblMensajes.Visible = true;
                lblMensajes.Text = oArticulo.DescripcionError;
                this.MessageBox(oArticulo.DescripcionError);
            }
            else
            {
                lblMensajes.Visible = true;
                lblMensajes.Text = "El registro se Eliminó Satisfactoriamente.";
                this.MessageBox("El registro se Eliminó Satisfactoriamente.");

                string sBuscado = this.LeerVariableSesion("sBuscado").ToString();
                EventoBuscarProductos(sBuscado);

            }
        }
        private void EventoBuscarProductos(string pBuscado)
        {
            //string sBuscado = txtBusqueda.Text.ToUpper();
            string sCadenaFiltro = "artDescripcion like '%" + pBuscado + "%'";
            //DataTable con todos los productos
            CArticulo objArticulo = new CArticulo();

            DataTable dtProductos = (DataTable) objArticulo.fnListaArticulos();
            DataTable dtResultado;
            //DataTable con los productos ya filtrados
            DataView oDataView = new DataView(dtProductos);
            oDataView.RowFilter = sCadenaFiltro;
            dtResultado = oDataView.ToTable();

            gvwProductos.DataSource = dtResultado;
            gvwProductos.DataBind();
        }
        private void CargarProductoNuevo(CArticulo pObjArticulo)
        {
            txtCodigo.Text = pObjArticulo.ArtCod.ToString();
            txtDescripcion.Text = pObjArticulo.ArtDescripcion;
            txtStock.Text = pObjArticulo.ArtStock.ToString();
            //txtStockMax.Text = pObjArticulo.ArtStockMax.ToString();
            //txtStockMin.Text = pObjArticulo.ArtStockMin.ToString();
            txtFecVencimiento.Text = pObjArticulo.ArtFecRegis.ToString();
            txtCostoPromedio.Text = pObjArticulo.ArtCostoProm.ToString();
            txtPeso.Text = pObjArticulo.ArtPeso.ToString();

            txtDescripcion.Focus();
        }
        private void EventoEliminar(int proCodigo)
        {
            clsLotesArt oLotesArtLst = new clsLotesArt();
            var lstPreciosLotes = oLotesArtLst.GetListaLotes(proCodigo);

            if (lstPreciosLotes.Count > 0)
            {
                lblMensajes.Text = "No se pudo ELIMINAR el registro, tiene Precios Asignados.";
                this.MessageBox("No se pudo ELIMINAR el registro, tiene Precios Asignados.");
            }
            else
            {

                CArticulo oArticulo = new CArticulo();
                int nResp = oArticulo.fnArticuloDelete(proCodigo);
                if (nResp <= 0)
                {
                    lblMensajes.Visible = true;
                    if (oArticulo.NroError == 547)
                    {
                        lblMensajes.Text = "No se pudo ELIMINAR el registro, tiene Precios Asignados.";
                        this.MessageBox("No se pudo ELIMINAR el registro, tiene Precios Asignados.");
                    }
                    else
                    {
                        lblMensajes.Text = oArticulo.DescripcionError;
                        this.MessageBox(oArticulo.DescripcionError);
                    }
                }
                else
                {
                    lblMensajes.Visible = true;
                    lblMensajes.Text = "El registro se Eliminó Satisfactoriamente.";
                    this.MessageBox("El registro se Eliminó Satisfactoriamente.");

                    string sBuscado = this.LeerVariableSesion("sBuscado").ToString();
                    EventoBuscarProductos(sBuscado);

                }
            }
        }