@@ -, +, @@ needing confirmation 1) Create bib level hold to an item for patron A 2) Check-in that item via SIP2, now the hold state should be "In processing" 3) Apply patch 4) Try to checkout the item to patron B via staff interface and notice we get now confirmation prompt do we really want to do it because it is in processing. In order to not have to setup SIP2 server, alternatively steps 1) and 2) can be done so that you check-in the item in staff interface and make it Waiting, and then with SQL change it to "In processing": UPDATE reserves SET found = "P" WHERE reserve_id = XXX; UPDATE reserves SET waitingdate = NULL WHERE reserve_id = XX UPDATE reserves SET expirationdate = NULL WHERE reserve_id = XXX; --- C4/Circulation.pm | 11 +++++++++++ C4/SIP/ILS/Transaction/Checkout.pm | 4 +++- circ/branchtransfers.pl | 12 ++++++------ circ/circulation.pl | 2 +- .../prog/en/modules/circ/branchtransfers.tt | 2 +- .../prog/en/modules/circ/circulation.tt | 15 ++++++++++++++- .../modules/circ/circulation_batch_checkouts.tt | 5 ++++- 7 files changed, 40 insertions(+), 11 deletions(-) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -1146,6 +1146,17 @@ sub CanBookBeIssued { $needsconfirmation{'resreservedate'} = $res->{reservedate}; $needsconfirmation{'reserve_id'} = $res->{reserve_id}; } + elsif ( $restype eq "Processing" ) { + # The item is determined hold being processed for someone else. + $needsconfirmation{PROCESSED} = 1; + $needsconfirmation{'resfirstname'} = $patron->firstname; + $needsconfirmation{'ressurname'} = $patron->surname; + $needsconfirmation{'rescardnumber'} = $patron->cardnumber; + $needsconfirmation{'resborrowernumber'} = $patron->borrowernumber; + $needsconfirmation{'resbranchcode'} = $patron->branchcode; + $needsconfirmation{'resreservedate'} = $res->{reservedate}; + $needsconfirmation{'reserve_id'} = $res->{reserve_id}; + } } } } --- a/C4/SIP/ILS/Transaction/Checkout.pm +++ a/C4/SIP/ILS/Transaction/Checkout.pm @@ -72,7 +72,9 @@ sub do_checkout { $noerror = 0; } elsif ($confirmation eq 'RESERVED' and C4::Context->preference("AllowItemsOnHoldCheckoutSIP")) { next; - } elsif ($confirmation eq 'RESERVE_WAITING' or $confirmation eq 'TRANSFERRED') { + } elsif ($confirmation eq 'RESERVE_WAITING' + or $confirmation eq 'TRANSFERRED' + or $confirmation eq 'PROCESSED') { $debug and warn "Item is on hold for another patron."; $self->screen_msg("Item is on hold for another patron."); $noerror = 0; --- a/circ/branchtransfers.pl +++ a/circ/branchtransfers.pl @@ -74,6 +74,7 @@ my $found; my $reserved; my $waiting; my $hold_transferred; +my $hold_processed; my $reqmessage; my $cancelled; my $setwaiting; @@ -176,13 +177,11 @@ if ($found) { if ( $res->{'ResFound'} eq "Waiting" ) { $waiting = 1; - } - - if ( $res->{'ResFound'} eq "Transferred" ) { + } elsif ( $res->{'ResFound'} eq "Transferred" ) { $hold_transferred = 1; - } - - elsif ( $res->{'ResFound'} eq "Reserved" ) { + } elsif ( $res->{'ResFound'} eq "Processing" ) { + $hold_processed = 1; + } elsif ( $res->{'ResFound'} eq "Reserved" ) { $reserved = 1; $biblionumber = $res->{'biblionumber'}; } @@ -225,6 +224,7 @@ $template->param( reserved => $reserved, waiting => $waiting, transferred => $hold_transferred, + processed => $hold_processed, borrowernumber => $borrowernumber, itemnumber => $itemnumber, barcode => $barcode, --- a/circ/circulation.pl +++ a/circ/circulation.pl @@ -422,7 +422,7 @@ if (@$barcodes) { } } - if ($question->{RESERVE_WAITING} or $question->{RESERVED} or $question->{TRANSFERRED}){ + if ($question->{RESERVE_WAITING} or $question->{RESERVED} or $question->{TRANSFERRED} or $question->{PROCESSING}){ $template->param( reserveborrowernumber => $question->{'resborrowernumber'}, reserve_id => $question->{reserve_id}, --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/branchtransfers.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/branchtransfers.tt @@ -50,7 +50,7 @@ - [% IF ( waiting or transferred ) %] + [% IF ( waiting or transferred or processed ) %] --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -126,6 +126,10 @@
  • Item [% getTitleMessageIteminfo | html %] ([% getBarcodeMessageIteminfo | html %]) is on hold for [% resfirstname | html %] [% ressurname | html %] ([% rescardnumber | html %]) and being transferred to [% Branches.GetName( resbranchcode ) | html %]
  • [% END %] + [% IF ( PROCESSED ) %] +
  • Item [% getTitleMessageIteminfo | html %] ([% getBarcodeMessageIteminfo | html %]) is being processed for [% resfirstname | html %] [% ressurname | html %] ([% rescardnumber | html %]) at [% Branches.GetName( resbranchcode ) | html %]
  • + [% END %] + [% IF ( RESERVED ) %]
  • Item [% getTitleMessageIteminfo | html %] ([% getBarcodeMessageIteminfo | html %]) has been on hold for [% resfirstname | html %] [% ressurname | html %] ([% rescardnumber | html %]) at [% Branches.GetName( resbranchcode ) | html %] since [% resreservedate | $KohaDates %]
  • [% END %] @@ -250,6 +254,15 @@

    [% END %] + [% IF ( PROCESSED ) %] +

    + +
    + + +

    + [% END %] + @@ -280,7 +293,7 @@ [% END # /IF CAN_user_circulate_force_checkout or HIGHHOLDS %] - [% IF ( RESERVED or RESERVE_WAITING or TRANSFERRED ) %] + [% IF ( RESERVED or RESERVE_WAITING or TRANSFERRED or PROCESSING ) %]
    --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation_batch_checkouts.tt +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation_batch_checkouts.tt @@ -150,6 +150,9 @@ [% IF checkout_info.TRANSFERRED %]
  • This item is on hold and being transferred to another patron.
  • [% END %] + [% IF checkout_info.PROCESSED %] +
  • This item is on hold and being processed for another patron.
  • + [% END %] [% IF checkout_info.ISSUED_TO_ANOTHER %]
  • This item is checked out to another patron. [% IF CAN_user_circulate_force_checkout %] @@ -190,7 +193,7 @@ [% END %] - [% IF NOT checkout_info.IMPOSSIBLE && ( CAN_user_circulate_force_checkout || checkout_info.HIGHHOLDS ) && ( checkout_info.RESERVED || checkout_info.RESERVE_WAITING || checkout_info.TRANSFERRED ) %] + [% IF NOT checkout_info.IMPOSSIBLE && ( CAN_user_circulate_force_checkout || checkout_info.HIGHHOLDS ) && ( checkout_info.RESERVED || checkout_info.RESERVE_WAITING || checkout_info.TRANSFERRED || checkout_info.PROCESSED ) %]
  • This item is on hold for another patron. The hold will be overridden, but not cancelled.
  • [% ELSIF checkout_info.RESERVED %]
  • This item is on hold for another patron.
  • --