Revision b4044501
Von Jan Büren vor etwa 12 Jahren hinzugefügt
SL/RP.pm | ||
---|---|---|
1171 | 1171 |
|
1172 | 1172 |
my ($invoice, $arap, $buysell, $ct, $ct_id, $ml); |
1173 | 1173 |
|
1174 |
# falls customer ziehen wir die offene forderungsliste |
|
1175 |
# anderfalls für die lieferanten die offenen verbindlichkeitne |
|
1174 | 1176 |
if ($form->{ct} eq "customer") { |
1175 | 1177 |
$invoice = "is"; |
1176 | 1178 |
$arap = "ar"; |
... | ... | |
1186 | 1188 |
} |
1187 | 1189 |
$ct_id = "${ct}_id"; |
1188 | 1190 |
|
1189 |
$form->{todate} = $form->current_date($myconfig) unless ($form->{todate}); |
|
1190 |
my $todate = conv_dateq($form->{todate}); |
|
1191 |
my $fromdate = conv_dateq($form->{fromdate}); |
|
1191 |
# erweiterung um einen freien zeitraum oder einen stichtag |
|
1192 |
# mit entsprechender altersstrukturliste (s.a. Bug 1842) |
|
1193 |
# eine neue variable an der oberfläche eingeführt, somit ist |
|
1194 |
# todate == freier zeitrau und fordate == stichtag |
|
1192 | 1195 |
|
1193 |
my $fromwhere = ($form->{fromdate} ne "") ? " AND (transdate >= (date $fromdate)) " : "";
|
|
1196 |
my ($review_of_aging_list, $todate, $fromdate, $fromwhere, $fordate);
|
|
1194 | 1197 |
|
1198 |
if ($form->{reporttype} eq 'custom') { # altersstrukturliste |
|
1199 |
|
|
1200 |
# explizit rausschmeissen was man für diesen bericht nicht braucht |
|
1201 |
delete $form->{fromdate}; |
|
1202 |
delete $form->{todate}; |
|
1203 |
|
|
1204 |
# an der oberfläche ist das tagesaktuelle datum vorausgewählt |
|
1205 |
# falls es dennoch per Benutzereingabe gelöscht wird, lieber wieder vorbelegen |
|
1206 |
# ferner muss für die spätere DB-Abfrage muss todate gesetzt sein. |
|
1207 |
$form->{fordate} = $form->current_date($myconfig) unless ($form->{fordate}); |
|
1208 |
$fordate = conv_dateq($form->{fordate}); |
|
1209 |
$todate = $fordate; |
|
1210 |
|
|
1211 |
if ($form->{review_of_aging_list}) { # falls die liste leer ist, alles anzeigen |
|
1212 |
if ($form->{review_of_aging_list} =~ m "-") { # .. periode von bis |
|
1213 |
my @period = split(/-/, $form->{review_of_aging_list}); # ... von periode bis periode |
|
1214 |
$review_of_aging_list = " AND $period[0] < (date $fordate) - duedate |
|
1215 |
AND (date $fordate) - duedate < $period[1]"; |
|
1216 |
} else { |
|
1217 |
$form->{review_of_aging_list} =~ s/[^0-9]//g; # größer 120 das substitute ist nur für das '>' zeichen |
|
1218 |
$review_of_aging_list = " AND $form->{review_of_aging_list} < (date $fordate) - duedate"; |
|
1219 |
} |
|
1220 |
} |
|
1221 |
} else { # freier zeitraum OHNE review_of_aging_list |
|
1222 |
$form->{todate} = $form->current_date($myconfig) unless ($form->{todate}); |
|
1223 |
$todate = conv_dateq($form->{todate}); |
|
1224 |
$fromdate = conv_dateq($form->{fromdate}); |
|
1225 |
$fromwhere = ($form->{fromdate} ne "") ? " AND (transdate >= (date $fromdate)) " : ""; |
|
1226 |
} |
|
1195 | 1227 |
my $where = " 1 = 1 "; |
1196 | 1228 |
my ($name, $null); |
1197 | 1229 |
|
... | ... | |
1209 | 1241 |
$where .= qq| AND (a.department_id = | . conv_i($department_id, 'NULL') . qq|)|; |
1210 | 1242 |
$where_dpt = qq| AND (${arap}.department_id = | . conv_i($department_id, 'NULL') . qq|)|; |
1211 | 1243 |
} |
1212 |
my $review_of_aging_list; |
|
1213 |
if ($form->{review_of_aging_list}) { |
|
1214 |
if ($form->{review_of_aging_list} =~ m "-"){ |
|
1215 |
my @period = split(/-/, $form->{review_of_aging_list}); |
|
1216 |
$review_of_aging_list = " AND $period[0] < date_part('days', now() - duedate) |
|
1217 |
AND date_part('days', now() - duedate) < $period[1]"; |
|
1218 |
} else { |
|
1219 |
$form->{review_of_aging_list} =~ s/[^0-9]//g; |
|
1220 |
$review_of_aging_list = " AND $form->{review_of_aging_list} < date_part('days', now() - duedate)"; |
|
1221 |
} |
|
1222 |
} |
|
1223 |
|
|
1224 |
my $q_details = qq| |
|
1244 |
my $q_details = qq| |
|
1225 | 1245 |
|
1226 | 1246 |
SELECT ${ct}.id AS ctid, ${ct}.name, |
1227 | 1247 |
street, zipcode, city, country, contact, email, |
Auch abrufbar als: Unified diff
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.