Endlosschleife bei der Berechnung des nächsten Lastschrifteinzugs eines Mitglieds...
authorPascal Hofmann <mail@pascalhofmann.de>
Tue, 21 Sep 2010 06:54:33 +0000 (08:54 +0200)
committerPascal Hofmann <mail@pascalhofmann.de>
Tue, 21 Sep 2010 06:54:33 +0000 (08:54 +0200)
include/fees.php

index b58122d..7551a91 100644 (file)
@@ -154,18 +154,19 @@ function fees_get_list_for_month($year, $month) {
 function fee_next_directdebit_for_member($member_id, $max_date = NULL) {
 
     $member = db_get_member_with_id($member_id);
-    if (!$member['directdebit']) return;
+    if (!$member['directdebit']) return NULL;
 
     $sum_old_fees   = fees_sum_for_member($member_id, DIRECTDEBIT_DATE - 86400);
     $sum_new_paid   = finance_get_paid_fees_for_member($member_id);
     $year   = date('Y', DIRECTDEBIT_DATE);
     $month  = date('n', DIRECTDEBIT_DATE);
+    $day    = 1;
    
 
 
     while (true) {
-        $start_date = mktime(0, 0, 0, $month, 1, $year);
-        if (isset($max_date) && $start_date > $max_date) return;
+        $start_date = mktime(0, 0, 0, $month, $day, $year);
+        if (isset($max_date) && $start_date > $max_date) return NULL;
 
         // check if fee is zero at the moment and skip to next event
         // quit searching if theres no event in future
@@ -174,6 +175,7 @@ function fee_next_directdebit_for_member($member_id, $max_date = NULL) {
             $events = db_get_events_for_member($member_id, $start_date + 86400);
             if (empty($events)) return NULL;
             $start_date = db_date2unixtime($events[0]['event_date']);
+            $day   = date('j', $start_date);
             $month = date('n', $start_date);
             $year  = date('Y', $start_date);
             continue;
@@ -205,6 +207,7 @@ function fee_next_directdebit_for_member($member_id, $max_date = NULL) {
             $ret['info'] = dtaus_string(sprintf('CCCFFM %d, %s-%s', $member['number'], format_month($start_date), format_month($end_date)));
             return $ret;
         }
+        $day = 1;
         $month++;
         if ($month == 13) { $month = 1; $year++; }
     }