From 8ffa67a0fb434f75002022712a3f2caec43c7310 Mon Sep 17 00:00:00 2001 From: PTFS Date: Tue, 3 Mar 2009 05:51:37 -0500 Subject: [PATCH 1/6] Previous Cardnumber Tracking Tracks previous cardnumbers and adds to ability to quickly revert a borrower to a previous cardnumber from the borrower details page. TODO: Allow searching on previous cardnumbers --- C4/Members.pm | 7 +++ C4/Stats.pm | 22 ++++++++ .../prog/en/modules/members/moremember.tmpl | 23 +++++++++ members/moremember.pl | 11 +++- members/restore_cardnumber.pl | 50 +++++++++++++++++++ 5 files changed, 112 insertions(+), 1 deletion(-) create mode 100755 members/restore_cardnumber.pl diff --git a/C4/Members.pm b/C4/Members.pm index a76e078a71..bd5f99220d 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -573,6 +573,13 @@ true on success, or false on failure sub ModMember { my (%data) = @_; my $dbh = C4::Context->dbh; + + my $member = GetMemberDetails( $data{'borrowernumber'} ); + + if ( $member->{'cardnumber'} ne $data{'cardnumber'} ) { + C4::Stats::UpdateStats( C4::Context->userenv->{branch}, 'card_replaced', '', $member->{'cardnumber'}, '', '', $data{'borrowernumber'} ); + } + my $iso_re = C4::Dates->new()->regexp('iso'); foreach (qw(dateofbirth dateexpiry dateenrolled)) { if (my $tempdate = $data{$_}) { # assignment, not comparison diff --git a/C4/Stats.pm b/C4/Stats.pm index b4875aa780..fcb3219005 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -118,6 +118,28 @@ sub TotalPaid { return @{$sth->fetchall_arrayref({})}; } +sub GetPreviousCardnumbers { + my ( $borrowernumber ) = @_; + my $dbh = C4::Context->dbh; + + my $member = C4::Members::GetMember( $borrowernumber ); + my $cardnumber = $member->{'cardnumber'}; + + my $query = "SELECT DISTINCT(other) AS previous_cardnumber FROM statistics WHERE borrowernumber = ? AND other != ? AND other !='' "; + my $sth = $dbh->prepare( $query ); + $sth->execute( $borrowernumber, $cardnumber ); + + my @results; + while ( my $data = $sth->fetchrow_hashref ) { + +warn "Found Previous Number: " . $data->{'previous_cardnumber'}; + push( @results, $data ); + } + $sth->finish; + + return @results; +} + 1; __END__ diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl index 9884930e6f..4c91bac639 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl @@ -330,6 +330,27 @@ if (nodename =="barcodes[]"){
&step=3">Edit
+ +
+

Previous Cardnumbers

+ +
+ +

Alternate Address

@@ -358,6 +379,7 @@ if (nodename =="barcodes[]"){
&step=2">Edit
+ @@ -377,6 +399,7 @@ if (nodename =="barcodes[]"){ +

Checked Out

diff --git a/members/moremember.pl b/members/moremember.pl index 494121f643..deda3067d4 100755 --- a/members/moremember.pl +++ b/members/moremember.pl @@ -50,7 +50,7 @@ =head1 moremember.pl use C4::Form::MessagingPreferences; #use Smart::Comments; -#use Data::Dumper; +use Data::Dumper; use vars qw($debug); @@ -352,6 +352,15 @@ BEGIN $template->param(SMSnumber => defined $data->{'smsalertnumber'} ? $data->{'smsalertnumber'} : $data->{'mobile'}); } +my @previousCardnumbers = C4::Stats::GetPreviousCardnumbers( $borrowernumber ); + +if ( @previousCardnumbers ) { + $template->param( + previousCardnumbersLoop => \@previousCardnumbers, + previousCardnumbersCount => scalar( @previousCardnumbers ) + ); +} + $template->param( detailview => 1, AllowRenewalLimitOverride => C4::Context->preference("AllowRenewalLimitOverride"), diff --git a/members/restore_cardnumber.pl b/members/restore_cardnumber.pl new file mode 100755 index 0000000000..1b3ea75ae8 --- /dev/null +++ b/members/restore_cardnumber.pl @@ -0,0 +1,50 @@ +#!/usr/bin/perl + +#script to delete items +#written 2/5/00 +#by chris@katipo.co.nz + +# Copyright 2000-2002 Katipo Communications +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + +use strict; + +use CGI; +use C4::Context; +use C4::Output; +use C4::Auth; +use C4::Members; + +my $input = new CGI; + +my ($template, $borrowernumber, $cookie) + = get_template_and_user({template_name => "members/deletemem.tmpl", + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {borrowers => 1}, + debug => 1, + }); + +my $borrowernumber = $input->param('borrowernumber'); +my $previous_cardnumber = $input->param('previous_cardnumber'); + +ModMember( borrowernumber => $borrowernumber, cardnumber => $previous_cardnumber ); + +print $input->redirect("/cgi-bin/koha/members/moremember.pl?borrowernumber=$borrowernumber"); + + From 6a06671ea98c04b049ee056eb16aba93c0949bbc Mon Sep 17 00:00:00 2001 From: PTFS Date: Fri, 8 May 2009 17:41:42 -0400 Subject: [PATCH 2/6] 1-1 Added ability to search on previous cardnumbers. --- C4/Members.pm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/C4/Members.pm b/C4/Members.pm index bd5f99220d..89c355b0cf 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -245,6 +245,16 @@ AND attribute like ? $data = $sth->fetchall_arrayref({}); $sth->finish; + + $query = "SELECT borrowers.*, categories.* FROM borrowers + LEFT JOIN categories ON borrowers.categorycode=categories.categorycode + LEFT JOIN statistics ON borrowers.borrowernumber = statistics.borrowernumber + WHERE statistics.type = 'card_replaced' AND statistics.other = ? GROUP BY statistics.other"; + $sth = $dbh->prepare( $query ); + $sth->execute( $searchstring ); + my $prevcards_data = $sth->fetchall_arrayref({}); + my $data = [ @$prevcards_data, @$data ]; + return ( scalar(@$data), $data ); } From 4bdb473ab21ddb72af202a82b5b6fa1164afea7a Mon Sep 17 00:00:00 2001 From: PTFS Date: Sat, 13 Jun 2009 15:02:47 -0400 Subject: [PATCH 3/6] Added date to the previous cardnumber list. --- C4/Stats.pm | 4 +--- .../intranet-tmpl/prog/en/modules/members/moremember.tmpl | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/C4/Stats.pm b/C4/Stats.pm index fcb3219005..9b0dc69d17 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -125,14 +125,12 @@ sub GetPreviousCardnumbers { my $member = C4::Members::GetMember( $borrowernumber ); my $cardnumber = $member->{'cardnumber'}; - my $query = "SELECT DISTINCT(other) AS previous_cardnumber FROM statistics WHERE borrowernumber = ? AND other != ? AND other !='' "; + my $query = "SELECT DISTINCT(other) AS previous_cardnumber, DATE_FORMAT( datetime, '%m/%e/%Y') as previous_cardnumber_date FROM statistics WHERE borrowernumber = ? AND other != ? AND other !='' "; my $sth = $dbh->prepare( $query ); $sth->execute( $borrowernumber, $cardnumber ); my @results; while ( my $data = $sth->fetchrow_hashref ) { - -warn "Found Previous Number: " . $data->{'previous_cardnumber'}; push( @results, $data ); } $sth->finish; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl index 4c91bac639..bf063e1b87 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tmpl @@ -339,7 +339,7 @@ if (nodename =="barcodes[]"){ From 2bfdea766fd4470ec307d0c7adfecb1a70a321cb Mon Sep 17 00:00:00 2001 From: "J. David Bavousett" Date: Sat, 20 Jun 2009 11:36:41 -0400 Subject: [PATCH 4/6] Removed extra "my" in routine causing warning on run. --- C4/Members.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C4/Members.pm b/C4/Members.pm index 89c355b0cf..c483459d7c 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -253,7 +253,7 @@ AND attribute like ? $sth = $dbh->prepare( $query ); $sth->execute( $searchstring ); my $prevcards_data = $sth->fetchall_arrayref({}); - my $data = [ @$prevcards_data, @$data ]; + $data = [ @$prevcards_data, @$data ]; return ( scalar(@$data), $data ); } From 4424cdcce3f2fe28b4fabc11e9262751d8835768 Mon Sep 17 00:00:00 2001 From: PTFS Date: Mon, 29 Jun 2009 08:28:51 -0400 Subject: [PATCH 5/6] Bugfix for non-cardnumbers being pulled as previous cardnumbers. --- C4/Stats.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C4/Stats.pm b/C4/Stats.pm index 9b0dc69d17..f5a586fe77 100644 --- a/C4/Stats.pm +++ b/C4/Stats.pm @@ -125,7 +125,7 @@ sub GetPreviousCardnumbers { my $member = C4::Members::GetMember( $borrowernumber ); my $cardnumber = $member->{'cardnumber'}; - my $query = "SELECT DISTINCT(other) AS previous_cardnumber, DATE_FORMAT( datetime, '%m/%e/%Y') as previous_cardnumber_date FROM statistics WHERE borrowernumber = ? AND other != ? AND other !='' "; + my $query = "SELECT DISTINCT(other) AS previous_cardnumber, DATE_FORMAT( datetime, '%m/%e/%Y') as previous_cardnumber_date FROM statistics WHERE type = 'card_replaced' AND borrowernumber = ? AND other != ? AND other !='' "; my $sth = $dbh->prepare( $query ); $sth->execute( $borrowernumber, $cardnumber ); From 2b4a8fec8966f76c9319d3cbf2c60adceece833d Mon Sep 17 00:00:00 2001 From: PTFS Date: Fri, 7 Aug 2009 08:30:33 -0400 Subject: [PATCH 6/6] Added warnings so librarians will know that a borrower was found by searching on a previous cardnumber. --- C4/Members.pm | 4 ++++ circ/circulation.pl | 3 ++- .../intranet-tmpl/prog/en/modules/circ/circulation.tmpl | 1 + koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tmpl | 5 ++++- members/member.pl | 1 + 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/C4/Members.pm b/C4/Members.pm index c483459d7c..f2f5dde7ce 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -253,6 +253,10 @@ AND attribute like ? $sth = $dbh->prepare( $query ); $sth->execute( $searchstring ); my $prevcards_data = $sth->fetchall_arrayref({}); + foreach my $row ( @$prevcards_data ) { + $row->{'PreviousCardnumber'} = 1; + } + $data = [ @$prevcards_data, @$data ]; return ( scalar(@$data), $data ); diff --git a/circ/circulation.pl b/circ/circulation.pl index 986b10cf20..652145dd4a 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -217,8 +217,9 @@ } elsif ( $#borrowers == 0 ) { $query->param( 'borrowernumber', $borrowers[0]->{'borrowernumber'} ); - $query->param( 'barcode', '' ); + $query->param( 'barcode', '' ); $borrowernumber = $borrowers[0]->{'borrowernumber'}; + $template->param( PreviousCardnumber => $borrowers[0]->{'PreviousCardnumber'} ); } else { $borrowerslist = \@borrowers; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl index f48f9c5a0f..e74049d2c7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tmpl @@ -262,6 +262,7 @@ No patron matched
+
Warning: Scanned Old Card
Enter item barcode:
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tmpl index 08739832c2..2d9389a00e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tmpl @@ -74,7 +74,10 @@ - + + +

Warning: Found With Previous Cardnumber

+ ">,


() diff --git a/members/member.pl b/members/member.pl index b43b30b6e5..5cadfbd39c 100755 --- a/members/member.pl +++ b/members/member.pl @@ -100,6 +100,7 @@ count => $i+1, borrowernumber => $results->[$i]{'borrowernumber'}, cardnumber => $results->[$i]{'cardnumber'}, + PreviousCardnumber => $results->[$i]{'PreviousCardnumber'}, surname => $results->[$i]{'surname'}, firstname => $results->[$i]{'firstname'}, categorycode => $results->[$i]{'categorycode'},