=head4 set_stunde_art

C<set_stunde_art( ID [Prompt] [Wert] )>

Ändert die einem Stundeneintrag zugeordnete Art.

=cut

use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(line_in log_update update_hotline_cache);
use Dbase::Help qw(Do DoSeq DoFn qquote DoTrans DoSelect);
use Dbase::Globals qw(content flush_std_cache is_hotline);

sub set_stunde_art($;$$) {
	my($id,$kn,$art) = @_;

	my($pers,$oart,$beg,$dau) = DoFn("select person,art,beginn,dauer from stunden where id=$id");

	while(not defined $art) {
		$art = line_in "Art: ";
		return undef unless content $art;
		if($art eq "l") {
			DoSelect {
				my($i,$n) = @_;
				printf "%2d %s\n",$i,$n;
			} "select id,name from stunden_art order by id";
			redo;
		}
		if($art =~ /^\d+$/) {
			$art = DoFn("select id from stunden_art where id=$art");
		} else {
			$art = DoFn("select id from stunden_art where name=${\qquote $art}");
		}
		unless($art) {
			print STDERR "... nicht gefunden\n";
			redo;
		}
	}

	DoTrans {
		log_update("stunden","id",$id,undef,"art",undef,
			DoFn("select name from stunden_art where id=$oart"));

		Do("update stunden set art=$art,zeit=NULL where id=$id");
		flush_std_cache( $pers, $beg, $dau );
		update_hotline_cache( $pers, $beg, $dau )
		  if is_hotline($art) || is_hotline($oart);

		DoSeq("stdupdate");
	};
	1;
}
1;
