Count supporters rather than use all ids returned.
We actually can't rely on a call to $sp->findDonor({}) to give us *just*
Supporters, as eventually, this may be a donor database too.  So, count
them.
Really, $sp->findDonor() should be able to take { isSupporter => 1 }
instead.
			
			
This commit is contained in:
		
							parent
							
								
									522df6bbfa
								
							
						
					
					
						commit
						fb9c43d119
					
				
					 1 changed files with 8 additions and 5 deletions
				
			
		|  | @ -54,7 +54,10 @@ my(%activeCounter, %lapsedCounter); | ||||||
| 
 | 
 | ||||||
| my %monthExpirations; | my %monthExpirations; | ||||||
| 
 | 
 | ||||||
|  | my $totalSupporters = 0; | ||||||
| foreach my $supporterId (@supporterIds) { | foreach my $supporterId (@supporterIds) { | ||||||
|  |   next unless $sp->isSupporter($supporterId); | ||||||
|  |   $totalSupporters++; | ||||||
|   my $expiresOn = $sp->supporterExpirationDate($supporterId); |   my $expiresOn = $sp->supporterExpirationDate($supporterId); | ||||||
|   my $expiresOnMonth = UnixDate(ParseDate($expiresOn), '%Y-%m'); |   my $expiresOnMonth = UnixDate(ParseDate($expiresOn), '%Y-%m'); | ||||||
|   { no warnings 'uninitialized';  $monthExpirations{$expiresOnMonth}++; } |   { no warnings 'uninitialized';  $monthExpirations{$expiresOnMonth}++; } | ||||||
|  | @ -142,13 +145,13 @@ foreach my $supporterId (@supporterIds) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| my $subject = "Supporter lapsed report for $TODAY"; | my $subject = "Supporter lapsed report for $TODAY"; | ||||||
| my $per = ( ($lapsedCount / scalar(@supporterIds)) * 100.00); | my $per = ( ($lapsedCount / $totalSuppporters) * 100.00); | ||||||
| my $headerInfo = "$subject\n" . ("=" x length($subject)) . | my $headerInfo = "$subject\n" . ("=" x length($subject)) . | ||||||
|   "\n\nWe have " . scalar(@supporterIds) . " supporters and $lapsedCount are lapsed.  That's " . |   "\n\nWe have " . $totalSuppporters . " supporters and $lapsedCount are lapsed.  That's " . | ||||||
|   sprintf("%.2f", $per) . "%.\nActive supporter count: " . (scalar(@supporterIds) - $lapsedCount) . "\n" . |   sprintf("%.2f", $per) . "%.\nActive supporter count: " . ($totalSuppporters - $lapsedCount) . "\n" . | ||||||
|   sprintf("    Of the active supporters, %.2f%% are monthly and %.2f%% are annual", |   sprintf("    Of the active supporters, %.2f%% are monthly and %.2f%% are annual", | ||||||
|           ( ($activeCounter{Monthly} / (scalar(@supporterIds) - $lapsedCount)) * 100.00), |           ( ($activeCounter{Monthly} / ($totalSuppporters - $lapsedCount)) * 100.00), | ||||||
|           ( ($activeCounter{Annual} / (scalar(@supporterIds) - $lapsedCount)) * 100.00)) . ".\n\n"; |           ( ($activeCounter{Annual} / ($totalSuppporters - $lapsedCount)) * 100.00)) . ".\n\n"; | ||||||
| 
 | 
 | ||||||
| foreach my $type (keys %lapsedCounter) { | foreach my $type (keys %lapsedCounter) { | ||||||
|   $headerInfo .= sprintf("%7s:    Lapsed Count: %3d   Active Count: %3d\n", |   $headerInfo .= sprintf("%7s:    Lapsed Count: %3d   Active Count: %3d\n", | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn