From 68c2aa47cef036e9e5bc42f3cc7b498f1b0f5092 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. --- C4/Members.pm | 66 ++++++++++++++++++++++ .../data/mysql/en/mandatory/sample_notices.sql | 11 ++++ installer/data/mysql/updatedatabase.pl | 19 +++++++ .../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 f832495..f201d1e 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -100,6 +100,7 @@ BEGIN { &GetMessagesCount &IssueSlip + &CheckInSlip GetBorrowersWithEmail HasOverdues @@ -2394,6 +2395,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 2281739..0789bc9 100644 --- a/installer/data/mysql/en/mandatory/sample_notices.sql +++ b/installer/data/mysql/en/mandatory/sample_notices.sql @@ -142,3 +142,14 @@ Thank you. Your library.' ); +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 3b1718c..66bd8d8 100755 --- a/installer/data/mysql/updatedatabase.pl +++ b/installer/data/mysql/updatedatabase.pl @@ -8465,6 +8465,25 @@ if ( CheckVersion($DBversion) ) { SetVersion($DBversion); } +$DBversion = "3.15.00.XXX"; +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); +} + + =head1 FUNCTIONS =head2 TableExists($table) 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 caa2fbf..c9d8a42 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc @@ -38,6 +38,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; @@ -124,6 +129,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 71fdda2..d4283b4 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.8.3.2