Cmenu

 view release on metacpan or  search on metacpan

contrib/sqlmenu  view on Meta::CPAN

		# now set new values
		if($#hacks>0) {
		  for($i=1;$i<=$#hacks;$i++) {
		    $result=$conn->exec("UPDATE food SET buy = 1 WHERE foodid = $hacks[$i]");
		  }
		}
	      }
	    }
	  }
	} until(($sel eq "%EMPTY%")||($sel eq "%UP%"));
	if($sel eq "%UP%") { $sel= ""; }
	$last_option=0;
	last SUB_MENU;
      };
      /shopshow/ && do {
	$result=$conn->exec("SELECT * FROM food WHERE buy > 0");
	$numrows=$result->ntuples();
	if($numrows<=0) {
	  &menu_show("No Records","No items have been flagged for purchase","HELP");
	} else {
	  $cat=0;
	  &menu_init("Shopping List","Buy these items");
	  for($i=0;$i<$numrows;$i++) {
	    @row=$result->fetchrow;
	    if($row[1]!=$cat) {
	      $head=&getcat($row[1]);
	      $cat=$row[1];
	    }
	    &menu_item($row[2],$head,4);
	  }
	  &menu_display("");
	}
	$last_option=1;
	last SUB_MENU;
      };
      /shopprint/ && do {
	$result=$conn->exec("SELECT * FROM food WHERE buy > 0 ORDER BY foodcat");
	$numrows=$result->ntuples();
	if($numrows<=0) {
	  &menu_show("No Records","No items have been flagged for purchase","HELP");
	} else {
	  open(OUT,">/tmp/foodout");
	  print OUT "Shopping List\n-------------\n";
	  $cat=0;
	  &menu_init("Shopping List","Buy these items");
	  for($i=0;$i<$numrows;$i++) {
	    @row=$result->fetchrow;
	    if($row[1]!=$cat) {
	      $head=&getcat($row[1]);
	      $cat=$row[1];
	    }
	    &menu_item($row[2],$head);
	    printf(OUT "%d %s %s\n",$i,$head,$row[2]);
	  }
	  close(OUT);
	  $sel=&menu_display("Press OK to Print");
	  chop($sel);
	  if(($sel eq "%EMPTY%")||($sel eq "%UP%")) {
	    $sel="";
	  } else {
	    &menu_popup("Printing","Sending Data to Printer");
	    system("lpr -Pbj /tmp/foodout");
	    system("rm /tmp/foodout");
	    &menu_popup();
	  }
	}
	$last_option=2;
	last SUB_MENU;
      };
      /shopclear/ && do {
	&menu_popup("Removing all Flagged Items","Clearing Shopping List");
	$result=$conn->exec("SELECT * FROM food WHERE buy > 0");
	$numrows=$result->ntuples();
	for($i=0;$i<$numrows;$i++) {
	  @row=$result->fetchrow;
	  $clear=$conn->exec("UPDATE food SET buy = 0, update = CURRENT_TIMESTAMP WHERE foodid = $row[0]");
	}
	$last_option=3;
	&menu_popup();
	last SUB_MENU;
      };
      /foodadd/ && do {
	$cat=&fooditem();
	if($cat>0) {
	  $head=getcat($cat);
	  &menu_init("New Item","Add new item to category $head");
	  &menu_item($cat,"Category",4);
	  &menu_item($food,"Item",6,$cat,"20 0 0");
	  $sel=&menu_display("Edit Item",2);
	  chop($sel);
	  @hacks=split(/$Cmenu::menu_sep/,$sel);
	  if($hacks[0] ne "%EMPTY%") {
	    (undef,$head)=split(/$Cmenu::menu_sepn/,$hacks[1]);
	    $result=$conn->exec("INSERT INTO food VALUES(NEXTVAL('food_foodid_seq'),$cat,'$head')");
	  }
	}
	$sel="";
	$last_option=4;
	last SUB_MENU;
      };
    };
  } until(($sel eq "%EMPTY%")||($sel eq "%UP%"));
  return($sel);
}

# ---< fooditem >----------------------------------------------------
sub fooditem {
  my($class,$classt);

  &menu_init("Query Database","Select Food Category");
  $result=$conn->exec("SELECT * FROM foodcat WHERE foodcat < 10");
  $numrows=$result->ntuples();
  for($i=0;$i<$numrows;$i++) {
    @row=$result->fetchrow;
    &menu_item($row[1],$row[0]);
  }
  $sel=&menu_display("Choose a Category");
  chop($sel);

  if(($sel ne "%EMPTY%")&&($sel ne "%UP%")) {
    $class=$sel;
    $result=$conn->exec("SELECT * FROM foodcat WHERE foodcat =$sel");
    @row=$result->fetchrow;
    $classt=@row[1];
    
    $sel=$sel*10;
    &menu_init("Query Database","Select from $classt");
    $result=$conn->exec("SELECT * FROM foodcat WHERE foodcat >= $sel AND foodcat < ($sel+10)");
    $numrows=$result->ntuples();
    for($i=0;$i<$numrows;$i++) {
      @row=$result->fetchrow;
      &menu_item(@row[1],@row[0]);
    }
    
    $sel=&menu_display("Choose a Category");
    chop($sel);
  }
  return($sel);
}



( run in 1.839 second using v1.01-cache-2.11-cpan-364913b4093 )