=head2 Flags

1 manuelle Rechnung

=cut

use utf8;
use warnings; no warnings "redefine";
use strict;
use Loader qw(get_free_rnr edit_arechnung add_buchung strip_kn
	log_update
	set_arechnung_betrag set_arechnung_datum set_arechnung_inhalt
	valid_kunde);
use Dbase::Help qw(Do qquote);
use Dbase::Globals qw(find_descr bignum content);
use Fehler qw(fehler ffehler problem);

sub add_arechnung($;$$) {
	my($id,$kn,$flags) = @_;
	my($ret);

	return undef unless valid_kunde($id);

	my $rech = get_free_rnr(8,$kn);
	return undef unless $rech;
	$flags=0 unless defined $flags;
	my $kkn = strip_kn($kn)."Rechnung_$rech";

	content ( my $inhalt = set_arechnung_inhalt(undef,"",$kkn) )
		or return problem "kein Inhalt angegeben";
	my $datum = set_arechnung_datum(undef,"",$kkn,1)
		or return problem "kein Datum angegeben";
	Do("insert into rechnungen set rnr=$rech, kunde=$id, datum=$datum, infotext=${\qquote $inhalt}");
	
	ffehler {
		if($flags & 1) {
			my $f1 = bignum(1)<<find_descr("rstatus","manuell");
			log_update("rechnungen","rnr",$rech,undef,"flags",undef,"?manuell");
			Do("update rechnungen set flags=flags|$f1 where rnr=$rech");
		} else {
			set_arechnung_betrag($rech,$id,$kkn)
				or fehler "kein Betrag angegeben";
		}
	} sub {
		Do("delete from rechnungen where rnr = $rech");
		$rech = undef;
	};
	return undef unless $rech;
	while(1) {
		print "\n...neuer Buchungssatz...\n";
		my $res = add_buchung($rech,$kn,1);
		last unless defined $res;
	}
	edit_arechnung($rech,$id,$kn);
}

1;
