From 1cf908105a1caa8a04f4d13d9d317edf3db39eb6 Mon Sep 17 00:00:00 2001 From: Agustin Moyano Date: Thu, 3 Jun 2021 17:41:22 -0300 Subject: [PATCH] Bug 27949: Allow multiple article requests print slip This bug allows for batch printing of multiple article requests slips To test: 1. apply this patch 2. restart_all 3. enable ArticleRequests preference 4. create multiple article requests 5. go to circ/article-requests.pl in staff interface 6. print a single slip from a row CHECK => it works as expected 7. select all rows and print slip from general actions menu (above the table) SUCCESS => all article requests slips are printed 8. select multiple rows (not all) and print slip from general actions menu (above the table) SUCCESS => only selected article requests slips are printed Signed-off-by: Marcel de Rooy Signed-off-by: Nick Clemens JD amended patch: Perltidy! --- circ/article-request-slip.pl | 52 ++++++++++++------- .../prog/en/modules/circ/article-requests.tt | 16 ++++++ 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/circ/article-request-slip.pl b/circ/article-request-slip.pl index 18d03bb5f0d..2efd4953f7a 100755 --- a/circ/article-request-slip.pl +++ b/circ/article-request-slip.pl @@ -30,7 +30,7 @@ use Koha::Patrons; my $cgi = CGI->new; -my $id = $cgi->param('id'); +my @ids = split( ',', $cgi->param('id') ); my ( $template, $loggedinuser, $cookie ) = get_template_and_user( { @@ -41,30 +41,42 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -my $ar = Koha::ArticleRequests->find($id); +my $ars = Koha::ArticleRequests->search( { id => { '-in' => \@ids } } ); +my $slipContent = ''; +my $first = 1; +while ( my $ar = $ars->next ) { + if ( !$first ) { + $slipContent .= "
"; + } + $first = 0; + $template->param( article_request => $ar ); + my $patron = Koha::Patrons->find( $ar->borrowernumber ); -$template->param( article_request => $ar ); -my $patron = Koha::Patrons->find( $ar->borrowernumber ); + my $slip = C4::Letters::GetPreparedLetter( + module => 'circulation', + letter_code => 'AR_SLIP', + message_transport_type => 'print', + lang => $patron->lang, + tables => { + article_requests => $ar->id, + borrowers => $ar->borrowernumber, + biblio => $ar->biblionumber, + biblioitems => $ar->biblionumber, + items => $ar->itemnumber, + branches => $ar->branchcode, + }, + ); -my $slip = C4::Letters::GetPreparedLetter( - module => 'circulation', - letter_code => 'AR_SLIP', - message_transport_type => 'print', - lang => $patron->lang, - tables => { - article_requests => $ar->id, - borrowers => $ar->borrowernumber, - biblio => $ar->biblionumber, - biblioitems => $ar->biblionumber, - items => $ar->itemnumber, - branches => $ar->branchcode, - }, -); + $slipContent .= + $slip->{is_html} + ? $slip->{content} + : '
' . $slip->{content} . '
'; +} $template->param( - slip => $slip->{content}, + slip => $slipContent, caller => 'article-request', - plain => !$slip->{is_html}, + plain => 0, ); output_html_with_http_headers $cgi, $cookie, $template->output; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/article-requests.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/article-requests.tt index 0e4301e860a..07940dd439a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/article-requests.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/article-requests.tt @@ -52,7 +52,13 @@ Print slip + [% ELSE %] + + + Print slip + [% END %] + @@ -645,6 +651,16 @@ }, cancel_id, cancel_a) }); + function PrintMultipleSlip() { + var ids = []; + $( active_tab + " input[type='checkbox']:checked").each(function() { + ids.push($(this).attr('reqid')); + }); + var link = 'article-request-slip.pl?multi=1&id='+ids.join(','); + window.open(link, 'popup', 'width=600,height=400,resizable=1,toolbar=0,scrollbars=1,top'); + + } + function Cancel( id, a ) { cancel_id = id; cancel_a = a; -- 2.25.1