[Koha-patches] [PATCH] Adding Registration Date filter in Patron Statistics Report

Amit Gupta amit.gupta at osslabs.biz
Thu Jul 9 05:54:00 CEST 2009


---
 .../prog/en/modules/reports/borrowers_stats.tmpl   |   68 ++++++++++++++++++++
 reports/borrowers_stats.pl                         |   17 ++++-
 2 files changed, 81 insertions(+), 4 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tmpl
index ba246ae..ead92ba 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tmpl
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reports/borrowers_stats.tmpl
@@ -250,6 +250,74 @@
 				</td>
 				</tr>
 			<!-- /TMPL_IF -->
+<tr>
+				<td>Registration Date</td>
+				<td><input type="radio" name="Line" value="dateenrolled" /></td>
+				<td><input type="radio" name="Column" value="dateenrolled" /></td>
+				<td> From <input type="text" size="10" id="fromRO" name="Filter" value="" />
+							<img src="<!-- TMPL_VAR Name="themelang" -->/lib/calendar/cal.gif" alt="Show Calendar" border="0" id="openCalendarFromRO" style="cursor: pointer;" />
+									<script type="text/javascript">
+									//<![CDATA[
+									function validate1(date) {
+										var day = date.getDate();
+										var month = date.getMonth() + 1;
+										var year = date.getFullYear();
+										var weekDay = date.getDay();
+										var dayMonth = month + '-' + day;
+										var dateString = year + '-' + month + '-' + day;
+										var dateTo = document.getElementById('toRO').value.split("-");
+										var limitDate = new Date(dateTo[0], (dateTo[1] - 1), dateTo[2]);
+										if (date > limitDate) {
+											return true;
+										} else {
+											return false;
+										}
+									}
+					
+									Calendar.setup(
+										{
+											inputField : "fromRO",
+											ifFormat : "<!-- TMPL_VAR NAME="DHTMLcalendar_dateformat" -->",
+											button : "openCalendarFromRO",
+											disableFunc : validate1,
+											dateStatusFunc : validate1
+										}
+									);
+									//]]>
+									</script>
+					To <input type="text" size="10" id="toRO" name="Filter" value="" />
+						<img src="<!-- TMPL_VAR Name="themelang" -->/lib/calendar/cal.gif" alt="Show Calendar" id="openCalendarToRO" style="cursor: pointer;" border="0" />
+								<script type="text/javascript">
+								//<![CDATA[
+								function validate2(date) {
+									var day = date.getDate();
+									var month = date.getMonth() + 1;
+									var year = date.getFullYear();
+									var weekDay = date.getDay();
+									var dayMonth = month + '-' + day;
+									var dateString = year + '-' + month + '-' + day;
+									var dateFrom = document.getElementById('fromRO').value.split("-");
+									var limitDate = new Date(dateFrom[0], (dateFrom[1] - 1), dateFrom[2]);
+									if (limitDate > date) {
+										return true;
+									} else {
+										return false;
+									}
+								}
+		
+								Calendar.setup(
+									{
+										inputField : "toRO",
+										ifFormat : "<!-- TMPL_VAR NAME="DHTMLcalendar_dateformat" -->",
+										button : "openCalendarToRO",
+										disableFunc : validate2,
+										dateStatusFunc : validate2
+									}
+								);
+								//]]>
+								</script>
+				</td>
+			</tr>
 		</tbody>
 	</table><br /></fieldset>
 	
diff --git a/reports/borrowers_stats.pl b/reports/borrowers_stats.pl
index ed062cb..0dbee00 100755
--- a/reports/borrowers_stats.pl
+++ b/reports/borrowers_stats.pl
@@ -28,6 +28,7 @@ use C4::Acquisition;
 use C4::Output;
 use C4::Reports;
 use C4::Circulation;
+use C4::Dates qw/format_date format_date_in_iso/;
 use Date::Calc qw(
   Today
   Add_Delta_YM
@@ -49,6 +50,8 @@ my $fullreportname = "reports/borrowers_stats.tmpl";
 my $line = $input->param("Line");
 my $column = $input->param("Column");
 my @filters = $input->param("Filter");
+$filters[8]=format_date_in_iso($filters[8]);
+$filters[9]=format_date_in_iso($filters[9]);
 my $digits = $input->param("digits");
 my $period = $input->param("period");
 my $borstat = $input->param("status");
@@ -194,7 +197,7 @@ sub calculate {
  	$colfilter = @$filters[7] if ($column =~ /sort2/);
 
 	my @loopfilter;
-	for (my $i=0;$i<=7;$i++) {
+	for (my $i=0;$i<=9;$i++) {
 		my %cell;
 		if ( @$filters[$i] ) {
 			$cell{filter} .= @$filters[$i];
@@ -206,6 +209,8 @@ sub calculate {
             $cell{crit} .="Sex" if ($i==5);
 			$cell{crit} .="Sort1" if ($i==6);
 			$cell{crit} .="Sort2" if ($i==7);
+			$cell{crit} .="Date Enrolled" if ($i==8);
+			$cell{crit} .="Date Enrolled" if ($i==9);
 			push @loopfilter, \%cell;
 		}
 	}
@@ -309,12 +314,16 @@ sub calculate {
 	$strcalc .= " AND dateofbirth > '" . @$filters[3] ."'" if ( @$filters[3] );
 	@$filters[4]=~ s/\*/%/g if (@$filters[4]);
 	$strcalc .= " AND dateofbirth < '" . @$filters[4] ."'" if ( @$filters[4] );
-    @$filters[5]=~ s/\*/%/g if (@$filters[5]);
-    $strcalc .= " AND sex like '" . @$filters[5] ."'" if ( @$filters[5] );
-    @$filters[6]=~ s/\*/%/g if (@$filters[6]);
+        @$filters[5]=~ s/\*/%/g if (@$filters[5]);
+    	$strcalc .= " AND sex like '" . @$filters[5] ."'" if ( @$filters[5] );
+	@$filters[6]=~ s/\*/%/g if (@$filters[6]);
 	$strcalc .= " AND sort1 like '" . @$filters[6] ."'" if ( @$filters[6] );
 	@$filters[7]=~ s/\*/%/g if (@$filters[7]);
 	$strcalc .= " AND sort2 like '" . @$filters[7] ."'" if ( @$filters[7] );
+	@$filters[8]=~ s/\*/%/g if (@$filters[8]);
+	$strcalc .= " AND dateenrolled  > '" . @$filters[8] ."'" if ( @$filters[8] );
+	@$filters[9]=~ s/\*/%/g if (@$filters[9]);
+	$strcalc .= " AND dateenrolled <  '" . @$filters[9] ."'" if ( @$filters[9] );
 	$strcalc .= " AND borrowernumber in (select distinct(borrowernumber) from old_issues where issuedate > '" . $newperioddate . "')" if ($activity eq 'active');
 	$strcalc .= " AND borrowernumber not in (select distinct(borrowernumber) from old_issues where issuedate > '" . $newperioddate . "')" if ($activity eq 'nonactive');
 	$strcalc .= " AND $status='1' " if ($status);
-- 
1.5.6




More information about the Koha-patches mailing list