From f69edf19e528761b0e6ad22b63d36cd31dd14ecc Mon Sep 17 00:00:00 2001 From: Josef Moravec Date: Sun, 17 Dec 2017 08:53:18 +0000 Subject: [PATCH] Bug 19771: Fix crashing in pending offline circulation actions list When the barcode is empty or invalid, an "Internal Server Error" is triggered on the kohadev box. TEST PLAN --------- 0) back up your database if you care about it. 1) Run the following commands: git checkout master git pull git checkout -b bug_19771 origin/master git bz apply 19771 -- This should be quite uneventful. Standard promptings. 2) Continue to run the following commands: git checkout master reset_all sudo koha-shell -c bash kohadev ./misc/cronjobs/create_te_koc_db.pl --sqlite3 -- This will create a borrowers.db in your current directory. 3) On the host where you intend on running the koct install it. -- https://sourceforge.net/projects/koha-oc/files/ download and install. 4) get the borrowers.db file to your host where you installed koct 5) point koct at the file you downloaded Database -> Select Borrowers DB File 6) Create a .koc file with the following transactions. check in, check out, check in (bad barcode), pay fines (any non-zero amount). 7) Run the following commands: restart_all -- we want to make sure caching for plack isn't in the way. 8) In the staff client: Home -> Circulation -> Upload offline circulation file (.koc) 9) Choose the file created and click 'Upload file'. 10) Add to offline circulation queue. 11) View pending offline circulation actions -- This should die. Reading /var/log/koha/kohadev/plack-error.log should be the same error as comment #0. However, this was only the bad biblio error. 12) Run the following commands: git checkout bug_19771 restart_all 13) Refresh staff client page. -- it should all come up. 14) Select the bad biblio line, and delete it. 15) Run the following commands: git checkout master restart_all 16) Refresh the staff client page. -- it should die. Same error as comment #0. This confirms the fine payment issue. 17) Run the following commands git checkout bug_19771 restart_all 18) Refresh the staff client page. -- it should all come up. 19) run the koha qa test tools 20) if you backed up your database, restore it. :) Signed-off-by: Mark Tompsett --- offline_circ/list.pl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/offline_circ/list.pl b/offline_circ/list.pl index 5981f35..0641629 100755 --- a/offline_circ/list.pl +++ b/offline_circ/list.pl @@ -46,10 +46,12 @@ my ($template, $loggedinuser, $cookie) = get_template_and_user({ my $operations = GetOfflineOperations; for (@$operations) { - my $item = Koha::Items->find({ barcode => $_->{barcode} }); - my $biblio = $item->biblio; - $_->{'bibliotitle'} = $biblio->title; - $_->{'biblionumber'} = $biblio->biblionumber; + my $item = $_->{barcode} ? Koha::Items->find({ barcode => $_->{barcode} }) : undef; + if ($item) { + my $biblio = $item->biblio; + $_->{'bibliotitle'} = $biblio->title; + $_->{'biblionumber'} = $biblio->biblionumber; + } my $patron = $_->{cardnumber} ? Koha::Patrons->find( { cardnumber => $_->{cardnumber} } ) : undef; if ($patron) { $_->{'borrowernumber'} = $patron->borrowernumber; -- 2.1.4