Bug 21289: Fix "isa" bug during partner request
authorAndrew Isherwood <andrew.isherwood@ptfs-europe.com>
Thu, 30 Aug 2018 09:52:43 +0000 (10:52 +0100)
committerNick Clemens <nick@bywatersolutions.com>
Mon, 1 Oct 2018 11:03:48 +0000 (11:03 +0000)
We cannot call 'handle_commit_maybe' inside a 'try' block.
handle_commit_maybe redirects the client then calls 'exit', this is
interpreted as an error and the 'catch' block is erroneously called.

This patch moves the calling of 'handle_commit_maybe' outside the try
block, it will only be reached if everything inside the try block
suceeds.

To test:
1) Enable ILL and have the FreeForm backend available
2) Create a patron category to hold ILL "partners" to whom requests can
be sent. The category can be called anything, you should note the code
you assign
3) Create a patron that belongs to your new category, the patron must
have a primary email defined.
4) In your <interlibrary_loans> block in koha-conf.xml, ensure you have
a <partner_code> element, it should contain the code you assigned in
step 2
5) Create an ILL request using the FreeForm backend
6) Once the request is created, select the "Place request with partners"
button
7) Select your "partner" from the "Select partner libraries" box
8) Click "Send email"
9) TEST: Observe no errors are displayed in the UI

Signed-off-by: Barry Cannon <bc@interleaf.ie>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

ill/ill-requests.pl

index 47cfc97..48190b6 100755 (executable)
@@ -184,19 +184,18 @@ if ( $backends_available ) {
         handle_commit_maybe($backend_result, $request);
 
     } elsif ( $op eq 'generic_confirm' ) {
+        my $backend_result;
+        my $request;
         try {
-            my $request = Koha::Illrequests->find($params->{illrequest_id});
+            $request = Koha::Illrequests->find($params->{illrequest_id});
             $params->{current_branchcode} = C4::Context->mybranch;
-            my $backend_result = $request->generic_confirm($params);
+            $backend_result = $request->generic_confirm($params);
             $template->param(
                 whole => $backend_result,
                 request => $request,
             );
             $template->param( error => $params->{error} )
                 if $params->{error};
-
-            # handle special commit rules & update type
-            handle_commit_maybe($backend_result, $request);
         }
         catch {
             my $error;
@@ -216,6 +215,9 @@ if ( $backends_available ) {
                 "&error=$error" );
             exit;
         };
+
+        # handle special commit rules & update type
+        handle_commit_maybe($backend_result, $request);
     } elsif ( $op eq 'illlist') {
 
         # If we receive a pre-filter, make it available to the template