From 913c0171fc4d13c4f77450deb6ddf9065b10d07f 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 95fb4e7..201e79c 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -104,6 +104,7 @@ BEGIN { &GetMessagesCount &IssueSlip + &CheckInSlip GetBorrowersWithEmail HasOverdues @@ -2432,6 +2433,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 35625dd..4d384d3 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.sql +++ b/installer/data/mysql/en/mandatory/sample_notices.sql @@ -155,3 +155,15 @@ Your library.' INSERT INTO letter(module, code, branchcode, name, title, content, message_transport_type) VALUES ('acquisition', 'ACQ_NOTIF_ON_RECEIV', '', 'Notification on receiving', 'Order received', 'Dear <> <>,\n\n The order <> (<>) has been received.\n\nYour library.', 'email') + +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 10809a1..d7eed84 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -10761,6 +10761,24 @@ if ( CheckVersion($DBversion) ) { SetVersion ($DBversion); } +$DBversion = "3.21.00.019"; +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 70edbc0..4668e48 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc @@ -58,6 +58,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; @@ -154,6 +159,7 @@ function searchToHold(){ [% IF ( CAN_user_borrowers ) %]
  • Print summary
  • [% END %]
  • Print slip
  • Print quick slip
  • +
  • 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