From 64ed62b8063d3b6a6b94f3ff2d2cd38ca9587b21 Mon Sep 17 00:00:00 2001
From: Nick Clemens <nick@bywatersolutions.com>
Date: Tue, 14 Mar 2017 14:16:09 +0000
Subject: [PATCH] Bug 18264 - Course reserves - use itemnumber for editing
 existing reserve items
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This patch alters the crouse reserves module to use itemnumber as the
lookup method for existing reserves as opposed to barcode

To test:
1 - Apply patch
2 - Add some items to a course reserves - all should work as expected
3 - Delete the barcode for an item on reserve
4 - Note the edit link still resolves to the correct item

Followed test plan, works as expected.
Signed-off-by: Marc Véron <veron@veron.ch>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
---
 course_reserves/add_items.pl                             | 16 +++++++++-------
 .../prog/en/modules/course_reserves/course-details.tt    |  2 +-
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/course_reserves/add_items.pl b/course_reserves/add_items.pl
index bcfadc7..ef8605f 100755
--- a/course_reserves/add_items.pl
+++ b/course_reserves/add_items.pl
@@ -31,12 +31,13 @@ use C4::CourseReserves qw(GetCourse GetCourseItem GetCourseReserve ModCourseItem
 
 my $cgi = new CGI;
 
-my $action    = $cgi->param('action')    || '';
-my $course_id = $cgi->param('course_id') || '';
-my $barcode   = $cgi->param('barcode')   || '';
-my $return    = $cgi->param('return')    || '';
+my $action       = $cgi->param('action')       || '';
+my $course_id    = $cgi->param('course_id')    || '';
+my $barcode      = $cgi->param('barcode')      || '';
+my $return       = $cgi->param('return')       || '';
+my $itemnumber   = ($cgi->param('itemnumber') && $action eq 'lookup') ? $cgi->param('itemnumber') : '';
 
-my $item = GetBiblioFromItemNumber( undef, $barcode );
+my $item = GetBiblioFromItemNumber( $itemnumber, $barcode );
 
 my $step = ( $action eq 'lookup' && $item ) ? '2' : '1';
 
@@ -49,8 +50,9 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         flagsrequired   => { coursereserves => 'add_reserves' },
     }
 );
-$template->param( ERROR_BARCODE_NOT_FOUND => $barcode )
-  unless ( $barcode && $item && $action eq 'lookup' );
+my $inumber = $itemnumber ? "<blank> (itemnumber:$itemnumber)" : "";
+$template->param( ERROR_BARCODE_NOT_FOUND => $barcode . $inumber )
+  unless ( $barcode && !$itemnumber && $item && $action eq 'lookup' );
 
 $template->param( course => GetCourse($course_id) );
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt
index 9360706..7ab27d8 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/course_reserves/course-details.tt
@@ -202,7 +202,7 @@
                             [% IF CAN_user_coursereserves_add_reserves || CAN_user_coursereserves_delete_reserves %]
                                 <td class="actions">
                                     [% IF CAN_user_coursereserves_add_reserves %]
-                                        <a class="btn btn-default btn-xs" href="add_items.pl?course_id=[% course.course_id %]&amp;barcode=[% cr.item.barcode %]&amp;action=lookup&amp;return=[% course.course_id %]"><i class="fa fa-pencil"></i> Edit</a>
+                                        <a class="btn btn-default btn-xs" href="add_items.pl?course_id=[% course.course_id %]&amp;itemnumber=[% cr.item.itemnumber %]&amp;action=lookup&amp;return=[% course.course_id %]"><i class="fa fa-pencil"></i> Edit</a>
                                     [% END %]
 
                                     [% IF CAN_user_coursereserves_delete_reserves %]
-- 
2.9.3