Bug 23057: If checked_in_ok is set and item is not checked out, alert flag is supress...
authorDavid Cook <dcook@prosentient.com.au>
Thu, 6 Jun 2019 00:31:13 +0000 (10:31 +1000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Tue, 16 Jul 2019 13:39:49 +0000 (14:39 +0100)
This patch fixes a bug from Bug 15221 and hopefully also makes it so that the alert flag
is suppressed when checked_in_ok is set and an item is not checked out.

To test:

0) Create patron in web interface with a cardnumber and userid of "staff" with a password
that matches the account in SIPconfig.xml. Also set their branch to CPL
(also matching SIPconfig.xml).
1) Create an item with a barcode of 'test'
2) Choose a patron to check out to and record their borrowernumber

In one terminal:
3) cd to your git directory (e.g. /home/koha/koha)
4) perl ./C4/SIP/SIPServer.pm ~/koha-dev/etc/SIPconfig.xml

In another terminal:
5) cd to your git directory (e.g. /home/koha/koha)
6) perl ./misc/sip_cli_emulator.pl -l CPL -su staff -sp <password> --port=6001 --address=localhost --item test -m checkin --patron <borrowernumber>
NOTE: You need to replace <borrowernumber> with the borrowernumber from Step 2, and <password> with the password from Step 0.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Matha Fuerst <mfuerst@hmcpl.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

C4/SIP/ILS.pm
C4/SIP/ILS/Transaction/Checkin.pm

index e6f3794..b543539 100644 (file)
@@ -207,7 +207,7 @@ sub checkin {
 
     my $data;
     if ($item) {
-        $data = $circ->do_checkin( $current_loc, $return_date, $cv_triggers_alert );
+        $data = $circ->do_checkin( $current_loc, $return_date, $cv_triggers_alert, $checked_in_ok );
     }
     else {
         $circ->alert(1);
@@ -229,7 +229,6 @@ sub checkin {
     } elsif ( !$item->{patron} ) {
         if ( $checked_in_ok ) { # Mark checkin ok although book not checked out
             $circ->ok( 1 );
-            $circ->alert( 0 );
             syslog("LOG_DEBUG", "C4::SIP::ILS::Checkin - using checked_in_ok");
         } else {
             $circ->screen_msg("Item not checked out");
index 99a84d1..67d0b1d 100644 (file)
@@ -49,6 +49,7 @@ sub do_checkin {
     my $branch = shift;
     my $return_date = shift;
     my $cv_triggers_alert = shift;
+    my $checked_in_ok = shift;
 
     if (!$branch) {
         $branch = 'SIP2';
@@ -69,7 +70,12 @@ sub do_checkin {
 
     $debug and warn "do_checkin() calling AddReturn($barcode, $branch)";
     my ($return, $messages, $issue, $borrower) = AddReturn($barcode, $branch, undef, dt_from_string($return_date));
-    $self->alert(!$return);
+    if ($checked_in_ok){
+        $debug and warn 'not raising alert when AddReturn() does not return a value for $return due to $checked_in_ok being set to true';
+    }
+    else {
+        $self->alert(!$return);
+    }
     # ignoring messages: NotIssued, WasLost, WasTransfered
 
     # biblionumber, biblioitemnumber, itemnumber