From: Jan Büren Date: Thu, 8 Nov 2012 15:04:27 +0000 (+0100) Subject: Bugfix 1842 Offene Posten Alterstrukturliste prüft nur auf tagesaktuellem Datum X-Git-Tag: release-3.0.0beta1~14^2~3 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=b404450189bc6a99c69fbf9f8b3e89c10dbcfda5;p=kivitendo-erp.git Bugfix 1842 Offene Posten Alterstrukturliste prüft nur auf tagesaktuellem Datum Wie in #1842. beschrieben, ist jetzt eindeutiger, wann ein freier Zeitraum ausgewählt ist oder eine Altersstrukturliste zum Stichtag. Testfall 1: Datumsfelder leer oder gefüllt Testfall 2: Vergleich der offenen Posten mit Werten aus der vorherigen Version für Forderungen Testfall 3: Vergleich der offenen Posten mit Werten aus der vorherigen Version für Verbindlichkeiten Variante I. freier Zeitraum Test 1 Test 2 Test 3 Von gefüllt, Bis leer | i.O. | i.O. | i.O. Von leer, Bis gefüllt | i.O. | i.O. | i.O. Von leer, Bis < heute | x | i.O. | i.O. Zwischenzeitraum | x | i.O. | i.O. Variante II. Altersstrukturliste Test 1 Test 2 Test 3 Auswahl leer | i.O. | i.O. | i.O. Auswahl 0-30 | x | i.O. | i.O. Auswahl > 120 | x | i.O. | i.O. | i.O. --- diff --git a/SL/RP.pm b/SL/RP.pm index bbfb09866..01f0be929 100644 --- a/SL/RP.pm +++ b/SL/RP.pm @@ -1171,6 +1171,8 @@ sub aging { my ($invoice, $arap, $buysell, $ct, $ct_id, $ml); + # falls customer ziehen wir die offene forderungsliste + # anderfalls für die lieferanten die offenen verbindlichkeitne if ($form->{ct} eq "customer") { $invoice = "is"; $arap = "ar"; @@ -1186,12 +1188,42 @@ sub aging { } $ct_id = "${ct}_id"; - $form->{todate} = $form->current_date($myconfig) unless ($form->{todate}); - my $todate = conv_dateq($form->{todate}); - my $fromdate = conv_dateq($form->{fromdate}); + # erweiterung um einen freien zeitraum oder einen stichtag + # mit entsprechender altersstrukturliste (s.a. Bug 1842) + # eine neue variable an der oberfläche eingeführt, somit ist + # todate == freier zeitrau und fordate == stichtag - my $fromwhere = ($form->{fromdate} ne "") ? " AND (transdate >= (date $fromdate)) " : ""; + my ($review_of_aging_list, $todate, $fromdate, $fromwhere, $fordate); + if ($form->{reporttype} eq 'custom') { # altersstrukturliste + + # explizit rausschmeissen was man für diesen bericht nicht braucht + delete $form->{fromdate}; + delete $form->{todate}; + + # an der oberfläche ist das tagesaktuelle datum vorausgewählt + # falls es dennoch per Benutzereingabe gelöscht wird, lieber wieder vorbelegen + # ferner muss für die spätere DB-Abfrage muss todate gesetzt sein. + $form->{fordate} = $form->current_date($myconfig) unless ($form->{fordate}); + $fordate = conv_dateq($form->{fordate}); + $todate = $fordate; + + if ($form->{review_of_aging_list}) { # falls die liste leer ist, alles anzeigen + if ($form->{review_of_aging_list} =~ m "-") { # .. periode von bis + my @period = split(/-/, $form->{review_of_aging_list}); # ... von periode bis periode + $review_of_aging_list = " AND $period[0] < (date $fordate) - duedate + AND (date $fordate) - duedate < $period[1]"; + } else { + $form->{review_of_aging_list} =~ s/[^0-9]//g; # größer 120 das substitute ist nur für das '>' zeichen + $review_of_aging_list = " AND $form->{review_of_aging_list} < (date $fordate) - duedate"; + } + } + } else { # freier zeitraum OHNE review_of_aging_list + $form->{todate} = $form->current_date($myconfig) unless ($form->{todate}); + $todate = conv_dateq($form->{todate}); + $fromdate = conv_dateq($form->{fromdate}); + $fromwhere = ($form->{fromdate} ne "") ? " AND (transdate >= (date $fromdate)) " : ""; + } my $where = " 1 = 1 "; my ($name, $null); @@ -1209,19 +1241,7 @@ sub aging { $where .= qq| AND (a.department_id = | . conv_i($department_id, 'NULL') . qq|)|; $where_dpt = qq| AND (${arap}.department_id = | . conv_i($department_id, 'NULL') . qq|)|; } - my $review_of_aging_list; - if ($form->{review_of_aging_list}) { - if ($form->{review_of_aging_list} =~ m "-"){ - my @period = split(/-/, $form->{review_of_aging_list}); - $review_of_aging_list = " AND $period[0] < date_part('days', now() - duedate) - AND date_part('days', now() - duedate) < $period[1]"; - } else { - $form->{review_of_aging_list} =~ s/[^0-9]//g; - $review_of_aging_list = " AND $form->{review_of_aging_list} < date_part('days', now() - duedate)"; - } - } - - my $q_details = qq| + my $q_details = qq| SELECT ${ct}.id AS ctid, ${ct}.name, street, zipcode, city, country, contact, email, diff --git a/bin/mozilla/rp.pl b/bin/mozilla/rp.pl index 1068da749..bc2eab6e2 100644 --- a/bin/mozilla/rp.pl +++ b/bin/mozilla/rp.pl @@ -196,6 +196,7 @@ sub report { vc => $vc, label => $label, year => DateTime->today->year, + today => DateTime->today, nextsub => $nextsub, accrual => $::instance_conf->get_accounting_method ne 'cash', cash => $::instance_conf->get_accounting_method eq 'cash', diff --git a/locale/de/all b/locale/de/all index 604ae2eb8..0ac77a87c 100644 --- a/locale/de/all +++ b/locale/de/all @@ -1557,6 +1557,7 @@ $self->{texts} = { 'Recorded taxkey' => 'Gespeicherter Steuerschlüssel', 'Reference' => 'Referenz', 'Reference / Invoice Number' => 'Referenz / Rechnungsnummer', + 'Reference day' => 'Stichtag', 'Reference missing!' => 'Referenz fehlt!', 'Release From Stock' => 'Lagerausgang', 'Remaining' => 'Rest', @@ -2347,6 +2348,7 @@ $self->{texts} = { 'follow_up_list' => 'wiedervorlageliste', 'for' => 'für', 'for Period' => 'für den Zeitraum', + 'for date' => 'zum Stichtag', 'found' => 'Gefunden', 'from (time)' => 'von', 'general_ledger_list' => 'buchungsjournal', diff --git a/templates/webpages/rp/report.html b/templates/webpages/rp/report.html index cf755d6b7..807885cdb 100644 --- a/templates/webpages/rp/report.html +++ b/templates/webpages/rp/report.html @@ -83,7 +83,7 @@ [%- IF selectdepartment %] - + [%- END %] @@ -182,23 +182,32 @@ [%- IF is_aging %] - + +
[% 'Department' | $T8 %][% 'Department' | $T8 %]
[% label %][% label %] [% vc %]
+ + + + - - + - + + + +

[% 'Review of Aging list' | $T8 %][% 'Reference day' | $T8 %]  [% 'Review of Aging list' | $T8 %] + [% 'for date' | $T8 %] [% L.date_tag('fordate', today) %]
+
[% 'Free report period' | $T8 %]  [% 'From' | $T8 %] [% L.date_tag('fromdate', fromdate) %] [% 'Bis' | $T8 %] [% L.date_tag('todate') %]