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,

Auch abrufbar als: Unified diff