Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision b4044501

Von Jan Büren vor etwa 12 Jahren hinzugefügt

  • ID b404450189bc6a99c69fbf9f8b3e89c10dbcfda5
  • Vorgänger 5d376151
  • Nachfolger 4a6f0b74

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.

Unterschiede anzeigen:

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&uuml;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>&nbsp; </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>&gt; 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>&nbsp; </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