From: Moritz Bunkus Date: Mon, 9 Nov 2009 14:18:44 +0000 (+0100) Subject: Zum Vergleich des Buchabschlusses das höchste Zahlungsdatum heranziehen. X-Git-Tag: release-2.6.1beta1~102 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=d03b28772dce973bf100e338e0d09112f06eb328;p=kivitendo-erp.git Zum Vergleich des Buchabschlusses das höchste Zahlungsdatum heranziehen. Fix für Bug 1229. Hintergrund: $form->{"datepaid_" . $form->{rowcount}} muss nicht zwangsläufig gesetzt sein, je nachdem, ob vor dem "Buchen" erneurt wird oder nicht. Deshalb gab es den SQL-Fehler. Zusätzlich ist auch die Überprüfung streng genommen nicht korrekt gewesen, weil niemand den Benutzer zwingt, die Zahlung mit dem maximalen Datum auch als letzte in der Liste zu haben. --- diff --git a/bin/mozilla/ir.pl b/bin/mozilla/ir.pl index c599c8325..bbf8340ea 100644 --- a/bin/mozilla/ir.pl +++ b/bin/mozilla/ir.pl @@ -1136,6 +1136,19 @@ sub post_payment { $main::lxdebug->leave_sub(); } +sub _max_datepaid { + my $form = $main::form; + + my @dates = sort { $b->[1] cmp $a->[1] } + map { [ $_, $main::locale->reformat_date(\%main::myconfig, $_, 'yyyy-mm-dd') ] } + grep { $_ } + map { $form->{"datepaid_${_}"} } + (1..$form->{rowcount}); + + return @dates ? $dates[0]->[0] : undef; +} + + sub post { $main::lxdebug->enter_sub(); @@ -1162,16 +1175,16 @@ sub post { &validate_items; - my $closedto = $form->datetonum($form->{closedto}, \%myconfig); - my $invdate = $form->datetonum($form->{invdate}, \%myconfig); - my $i = $form->{rowcount}; + my $closedto = $form->datetonum($form->{closedto}, \%myconfig); + my $invdate = $form->datetonum($form->{invdate}, \%myconfig); + my $max_datepaid = _max_datepaid(); - $form->error($locale->text('Cannot post invoice for a closed period!')) - if ($form->date_closed($form->{"datepaid_$i"}, \%myconfig)); + $form->error($locale->text('Cannot post invoice for a closed period!')) if $max_datepaid && $form->date_closed($max_datepaid, \%myconfig); $form->isblank("exchangerate", $locale->text('Exchangerate missing!')) if ($form->{currency} ne $form->{defaultcurrency}); + my $i; for $i (1 .. $form->{paidaccounts}) { if ($form->parse_amount(\%myconfig, $form->{"paid_$i"})) { my $datepaid = $form->datetonum($form->{"datepaid_$i"}, \%myconfig);