From f4aee207be4b336151c107086d54b2d4e92a8789 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Mon, 12 May 2014 12:24:48 +0300 Subject: [PATCH] Bug 12224: Allow easy printing of patron check-ins for today This adds a printing option to the staff client patron details page to print a list of items the patron returned today at this branch. To test: 1) Apply patch. 2) Check in tools > Notices & Slips that you have CHECKINSLIP slip, and have print message there. If not, run updatedatabase.pl 3) Check-in items for a patron. 4) Go to that patron's detail page, and from the Print-menu in the toolbar, select "Print checked-in today -slip" 5) You should get a slip of the patron's checked-in items. 6) Optionally, test Check-ins for the same patron, but in different branches - should only print items for the current branch. 7) Optionally, test Check-ins for the same patron, but returned in different day - should only print items for today. Signed-off-by: Aleisha --- C4/Members.pm | 66 ++++++++++++++++++++++ .../data/mysql/en/mandatory/sample_notices.sql | 12 ++++ installer/data/mysql/updatedatabase.pl | 18 ++++++ .../prog/en/includes/members-toolbar.inc | 6 ++ members/printslip.pl | 7 ++- 5 files changed, 108 insertions(+), 1 deletion(-) diff --git a/C4/Members.pm b/C4/Members.pm index 171f3c0..6246db2 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -105,6 +105,7 @@ BEGIN { &GetMessagesCount &IssueSlip + &CheckInSlip GetBorrowersWithEmail HasOverdues @@ -2448,6 +2449,71 @@ sub IssueSlip { ); } +=head2 GetTodaysReturnsForBorrower + + $returns = GetTodaysReturnsForBorrower($borrowernumber, $branch); + +Return a list of items borrower has checked-in today in branch. + +=cut + +sub GetTodaysReturnsForBorrower { + my ($borrowernumber, $branch) = @_; + my $dbh = C4::Context->dbh; + my $date = POSIX::strftime("%Y-%m-%d",localtime()); + + my $query = " + SELECT itemnumber + FROM old_issues + WHERE DATE(returndate) = ? + AND borrowernumber = ? + AND branchcode = ? + "; + + my $sth = $dbh->prepare($query); + $sth->execute($date, $borrowernumber, $branch); + my @results; + + while ( my $data = $sth->fetchrow_hashref ) { + my $bibdata = GetBiblioFromItemNumber($data->{itemnumber}); + push @results, $bibdata; + } + return \@results; +} + +=head2 CheckInSlip + + $letter = CheckInSlip($borrowernumber, $branch [, $message_transport_type ] ); + +Returns the prepared letter data for items patron checked-in today in branch. +message_transport_type defaults to 'print'. + +=cut + +sub CheckInSlip { + my ($borrowernumber, $branch, $mtt) = @_; + my $issues = GetTodaysReturnsForBorrower($borrowernumber, $branch); + my %repeat = ( + 'checkedin' => [ map { + 'biblio' => $_, + 'items' => $_, + 'issues' => $_, + }, @$issues ], + ); + + return C4::Letters::GetPreparedLetter ( + module => 'circulation', + letter_code => 'CHECKINSLIP', + branchcode => $branch, + tables => { + 'branches' => $branch, + 'borrowers' => $borrowernumber, + }, + repeat => \%repeat, + message_transport_type => $mtt || 'print', + ); +} + =head2 GetBorrowersWithEmail ([$borrnum,$userid], ...) = GetBorrowersWithEmail('me@example.com'); diff --git a/installer/data/mysql/en/mandatory/sample_notices.sql b/installer/data/mysql/en/mandatory/sample_notices.sql index 14c5634..cfc6ba3 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.sql +++ b/installer/data/mysql/en/mandatory/sample_notices.sql @@ -162,3 +162,15 @@ VALUES ( 'circulation', 'OVERDUES_SLIP', '', 'Overdues Slip', '0', 'OVERDUES_SLI "<>" by <>, <>, Barcode: <> Fine: <> ', 'print' ); + +INSERT INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type) +VALUES ( 'circulation', 'CHECKINSLIP', '', 'Printed check-in slip', '1', 'Items returned today', '<> <>
+<>, <>
+You returned these items today: +
    + +
  • <>: <>
    +Barcode: <>
    + +
', 'print' +); diff --git a/installer/data/mysql/updatedatabase.pl b/installer/data/mysql/updatedatabase.pl index 8a1d1b0..47a3efc 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -11341,6 +11341,24 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.21.00.054"; +if ( CheckVersion($DBversion) ) { + $dbh->do(" +INSERT INTO letter (module, code, branchcode, name, is_html, title, content, message_transport_type) +VALUES ( 'circulation', 'CHECKINSLIP', '', 'Printed check-in slip', '1', 'Items returned today', '<> <>
+<>, <>
+You returned these items today: +
    + +
  • <>: <>
    +Barcode: <>
    + +
', 'print' +);"); + print "Upgrade to $DBversion done (Bug 12224 - Easy printing of patron check-in slip)\n"; + SetVersion($DBversion); +} + # DEVELOPER PROCESS, search for anything to execute in the db_update directory # SEE bug 13068 # if there is anything in the atomicupdate, read and execute it. diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc index 641bbad..e1f1e47 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc @@ -64,6 +64,11 @@ $(document).ready(function(){ $(".btn-group").removeClass("open"); return false; }); + $("#printcheckinslip").click(function(){ + printx_window("checkinslip"); + $(".btn-group").removeClass("open"); + return false; + }); $("#searchtohold").click(function(){ searchToHold(); return false; @@ -163,6 +168,7 @@ function searchToHold(){ [% IF Borrowers.HasOverdues( borrowernumber ) %]
  • Print overdues
  • [% END %] +
  • Print checked-in today -slip
  • Search to hold diff --git a/members/printslip.pl b/members/printslip.pl index dfe93d7..0224893 100755 --- a/members/printslip.pl +++ b/members/printslip.pl @@ -76,7 +76,12 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( my $borrowernumber = $input->param('borrowernumber'); my $branch=C4::Context->userenv->{'branch'}; my ($slip, $is_html); -if (my $letter = IssueSlip ($session->param('branch') || $branch, $borrowernumber, $print eq "qslip")) { +if ($print eq 'checkinslip') { + if (my $letter = CheckInSlip($borrowernumber, $session->param('branch') || $branch)) { + $slip = $letter->{content}; + $is_html = $letter->{is_html}; + } +} elsif (my $letter = IssueSlip ($session->param('branch') || $branch, $borrowernumber, $print eq "qslip")) { $slip = $letter->{content}; $is_html = $letter->{is_html}; } -- 1.9.1