use utf8;
use warnings; no warnings "redefine";
use strict;

use Dbase::Help qw(Do DoFn isotime DoTime);
use Fehler qw(problem);
use Loader qw(log_update select_date);

sub set_leitung_datum($;$) {
	my($idi,$kn) = @_;
	my $datum;
	my($id, $beginn, $ende) = DoFn("SELECT kunde,beginn,ende FROM leitung WHERE id = $idi") or return problem "Leitung #$idi nicht gefunden.";
	$ende=0 if not defined $ende;

	my $neu_beginn = select_date( 256, 'Startdatum', undef, qw(= jetzt) );
	unless ( defined $neu_beginn ) { $neu_beginn = $beginn }
	elsif ( $neu_beginn eq '='   ) { $neu_beginn = DoTime  }

	my $neu_ende = select_date(
		16 | 256 | 1024, 'Enddatum', undef,
		'=' => 'jetzt',
		0   => 'Enddatum löschen'
	);
	unless ( defined $neu_ende ) { $neu_ende = $ende  }
	elsif ( $neu_ende eq '='   ) { $neu_ende = DoTime }

	return problem 'Das Enddatum darf nicht vor dem Startdatum liegen.' if $neu_ende and $neu_beginn > $neu_ende;
	if ($neu_beginn != $beginn) {
		log_update('leitung','id',$idi,undef,'beginn',undef,
			scalar isotime $beginn);
		Do("UPDATE leitung SET beginn=$neu_beginn WHERE id=$idi");
	}
	if ($neu_ende != $ende) {
		log_update('leitung','id',$idi,undef,'ende',undef,
			scalar isotime $ende);
		$neu_ende="NULL" if $neu_ende == 0;
		Do("UPDATE leitung SET ende=$neu_ende WHERE id=$idi");
	}
}

1;
