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, |
bin/mozilla/rp.pl | ||
---|---|---|
196 | 196 |
vc => $vc, |
197 | 197 |
label => $label, |
198 | 198 |
year => DateTime->today->year, |
199 |
today => DateTime->today, |
|
199 | 200 |
nextsub => $nextsub, |
200 | 201 |
accrual => $::instance_conf->get_accounting_method ne 'cash', |
201 | 202 |
cash => $::instance_conf->get_accounting_method eq 'cash', |
locale/de/all | ||
---|---|---|
1557 | 1557 |
'Recorded taxkey' => 'Gespeicherter Steuerschlüssel', |
1558 | 1558 |
'Reference' => 'Referenz', |
1559 | 1559 |
'Reference / Invoice Number' => 'Referenz / Rechnungsnummer', |
1560 |
'Reference day' => 'Stichtag', |
|
1560 | 1561 |
'Reference missing!' => 'Referenz fehlt!', |
1561 | 1562 |
'Release From Stock' => 'Lagerausgang', |
1562 | 1563 |
'Remaining' => 'Rest', |
... | ... | |
2347 | 2348 |
'follow_up_list' => 'wiedervorlageliste', |
2348 | 2349 |
'for' => 'für', |
2349 | 2350 |
'for Period' => 'für den Zeitraum', |
2351 |
'for date' => 'zum Stichtag', |
|
2350 | 2352 |
'found' => 'Gefunden', |
2351 | 2353 |
'from (time)' => 'von', |
2352 | 2354 |
'general_ledger_list' => 'buchungsjournal', |
templates/webpages/rp/report.html | ||
---|---|---|
83 | 83 |
<table border="0"> |
84 | 84 |
[%- IF selectdepartment %] |
85 | 85 |
<tr> |
86 |
<th align=right nowrap>[% 'Department' | $T8 %]</th>
|
|
86 |
<th align="left" nowrap>[% 'Department' | $T8 %]</th>
|
|
87 | 87 |
<td colspan=3><select name=department>[% selectdepartment %]</select></td> |
88 | 88 |
</tr> |
89 | 89 |
[%- END %] |
... | ... | |
182 | 182 |
|
183 | 183 |
[%- IF is_aging %] |
184 | 184 |
<tr> |
185 |
<th align=right>[% label %]</th>
|
|
185 |
<th align=left>[% label %]</th>
|
|
186 | 186 |
<td>[% vc %]</td> |
187 | 187 |
</tr> |
188 |
</table> |
|
189 |
<table border="0"> |
|
190 |
<tr> |
|
191 |
<td colspan=5><hr size=1 noshade></td> |
|
192 |
</tr> |
|
188 | 193 |
<tr> |
189 |
<td>[% 'Review of Aging list' | $T8 %]</td>
|
|
190 |
<td><select name="review_of_aging_list">
|
|
194 |
<th align=left><input name=reporttype class=radio type=radio value="custom" checked><b>[% 'Reference day' | $T8 %]</b> </th>
|
|
195 |
<td align="right" colspan="4">[% 'Review of Aging list' | $T8 %] <select name="review_of_aging_list">
|
|
191 | 196 |
<option></option> |
192 | 197 |
<option>0-30</option> |
193 | 198 |
<option>30-60</option> |
194 | 199 |
<option>60-90</option> |
195 | 200 |
<option>90-120</option> |
196 | 201 |
<option>> 120</option> |
197 |
</select> |
|
202 |
</select> [% 'for date' | $T8 %] [% L.date_tag('fordate', today) %]
|
|
198 | 203 |
</td> |
199 | 204 |
</tr> |
200 | 205 |
<tr> |
201 |
<td align=left colspan=4> |
|
206 |
<td colspan=5><hr size=3 noshade></td> |
|
207 |
</tr> |
|
208 |
<tr> |
|
209 |
<th align=left><input name=reporttype class=radio type=radio value="free"><b>[% 'Free report period' | $T8 %]</b> </th> |
|
210 |
<td align="right" colspan=4> |
|
202 | 211 |
[% 'From' | $T8 %] [% L.date_tag('fromdate', fromdate) %] |
203 | 212 |
[% 'Bis' | $T8 %] [% L.date_tag('todate') %] |
204 | 213 |
</td> |
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.