=head1 set_zustand_flags

Setzt die bei einem Zustandsübergang durchzuführenden Flags (oder
auch nicht).

=head2 Argumente

=over 4

=item $typ

Tabelle.

=item $id

ID des Eintrags.

=item $kn

Standard-Prompt.

=item $tkn

Textform des Tabellennamens ("Domain").

Default: C<lcfirst($typ)>.

=back

=head2 Ergebnis

Nix.

=cut

use utf8;
use warnings; no warnings "redefine";
use strict;
use Dbase::Help qw(Do DoFn);
use Dbase::Globals qw(flag_names);
use Loader qw(log_update line_in select_flags);

sub set_zustand_flags($$;$$) {
	my($typ,$id,$kn,$tkn) = @_;
	$tkn = ucfirst($typ) unless defined $tkn;

	my $oakt = DoFn("select aktionen from ${typ}zustand where id=$id");
	
	my $nakt = select_flags($oakt,"${typ}aktion","Flags","!hide");
	return if not defined $nakt or  $oakt == $nakt;

	my($von,$mail) = DoFn("select von,erkannt from ${typ}zustand where id=$id");
	log_update("${typ}zustand","von",$von,"mail",$mail,undef,"aktionen",undef,
		scalar flag_names($nakt,"${typ}aktion",$oakt));
	Do("update ${typ}zustand set aktionen=$nakt where id=$id");
	$id;
}
1;
