public List<DetalleProductoVenta> BuscarProducto(String codigo = null, int idLinea = -1, int idSubLinea = -1, int idTienda = -1)
        {
            List<DetalleProductoVenta> listaProductos = null;

            string where = "WHERE 1=1 ";
            string from = "SELECT p.* , L.nombre linea, S.nombre sublinea pt.precioVenta precioVenta FROM Producto p" +
                        " JOIN LineaProducto L " +
                        " ON (P.idLinea=L.idLinea) " +
                        " JOIN SubLineaProducto S " +
                        " ON (P.idSubLinea=S.idSubLinea) " +
                        " JOIN ProductoxTienda pt " +
                        " ON (P.idProducto=PT.idProducto) ";

            if (!String.IsNullOrEmpty(codigo))
            {
                where = where + " AND codProducto = @codigo ";
                db.cmd.Parameters.AddWithValue("@codigo", codigo);
            }

            if (idLinea > 0)
            {
                where = where + " AND p.idLinea=@idLinea ";
                db.cmd.Parameters.AddWithValue("@idLinea", idLinea);
            }
            if (idSubLinea > 0)
            {
                where = where + " AND p.idSubLinea=@idSubLinea ";
                db.cmd.Parameters.AddWithValue("@idSubLinea", idSubLinea);
            }
            if (idTienda > 0)
            {
                from = "SELECT p.*, pt.precioVenta , L.nombre linea, S.nombre sublinea" +
                        " FROM Producto p " +
                        " JOIN LineaProducto L " +
                        " ON (P.idLinea=L.idLinea) " +
                        " JOIN SubLineaProducto S " +
                        " ON (P.idSubLinea=S.idSubLinea) " +
                        " JOIN ProductoxTienda pt ON ( p.idProducto = pt.idProducto) ";
                where += " AND  pt.idTienda = @idTienda AND vigente=1 ";
                db.cmd.Parameters.AddWithValue("@idTienda", idTienda);
            }

            db.cmd.CommandText = from + where;
            try
            {
                db.conn.Open();
                SqlDataReader reader = db.cmd.ExecuteReader();

                while (reader.Read())
                {
                    if (listaProductos == null) listaProductos = new List<DetalleProductoVenta>();
                    DetalleProductoVenta p = new DetalleProductoVenta();
                    p.IdProducto = Int32.Parse(reader["idProducto"].ToString());
                    p.CodigoProd = reader.IsDBNull(reader.GetOrdinal("codProducto")) ? null : reader["codProducto"].ToString();
                    p.Nombre = reader.IsDBNull(reader.GetOrdinal("nombre")) ? null : reader["nombre"].ToString();

                    LineaProducto lp = new LineaProducto();
                    lp.IdLinea = reader.IsDBNull(reader.GetOrdinal("idLinea")) ? -1 : (int)reader["idLinea"];
                    lp.Nombre = reader.IsDBNull(reader.GetOrdinal("linea")) ? null : reader["linea"].ToString();
                    p.Linea = lp;

                    SubLineaProducto slp = new SubLineaProducto();
                    slp.IdSubLinea = reader.IsDBNull(reader.GetOrdinal("idSubLinea")) ? -1 : (int)reader["idSubLinea"];
                    slp.Nombre = reader.IsDBNull(reader.GetOrdinal("sublinea")) ? null : reader["sublinea"].ToString();
                    p.Sublinea = slp;

                    if (idTienda > 0)
                    {
                        p.PrecioVenta = reader.IsDBNull(reader.GetOrdinal("precioVenta")) ? -1 : float.Parse(reader["precioVenta"].ToString());
                    }

                    listaProductos.Add(p);
                }
                db.cmd.Parameters.Clear();
                reader.Close();
                db.conn.Close();
            }
            catch (SqlException e)
            {
                Console.WriteLine(e);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace.ToString());
            }

            return listaProductos;
        }
 public void SelectedItemChanged(object sender)
 {
     productoSel = ((sender as DataGrid). SelectedItem as DetalleProductoVenta);
 }