From 48378179a304318bcca125a57d88e737014ad75e Mon Sep 17 00:00:00 2001 From: Laura Escamilla Date: Tue, 12 Mar 2024 02:44:05 +0000 Subject: [PATCH] Bug 27753: Added new system preferences for automatically resolving claims MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit To test: 1. Configure Claims returned 1. Go to Administration > Authorized Values > LOST 2. Add a new authorized value with value:6 and description:Claims returned 3. Go to Administration > System Preferences 4. Set ClaimReturnedLostValue to 6 and save 2. Check out an item to a patron. 1. Mark the item as claim returned 2. Check the item in. 3. A message stating that the item has been claimed as returned pops up with an option to resolve. 4. Resolve the claim. 3. Check out the item to the patron again. 1. Mark the item as claim returned. 2. Check out the item to a new patron. Select “Yes, check out” 3. Go back to the previous patron. Notice that their claim was not resolved. 4. Apply the patch. 1. Updatedatabase 2. restart_all 3. Go to the system preferences and set the system preference ‘AutoClaimReturnStatusOnCheckin’ to ‘Returned by patron’ 4. Set ‘AutoClaimReturnStatusOnCheckout’ to ‘Found in library’ 5. Redo step 2 1. When checking the claim returned item in you will now see a message that says “The previously claimed returned item has been found, automatically resolving the associated claim.” 2. View the previous patron. Their claim has automatically been resolved with a status of ‘Returned by patron’ 6. Redo step 3 1. Upon checking the item out to another patron you will see a message that says “The previously claimed returned item has been found, automatically resolving the associated claim.” 2. View the previous patron. Their claim has automatically been resolved with a status of ‘Found in library’. 7. Sign off and have a wonderful day! Sponsored-by: Altadena Library District Signed-off-by: Andrew Fuerste Henry Signed-off-by: Martin Renvoize Signed-off-by: Katrin Fischer --- C4/Circulation.pm | 31 ++++++++++++++----- circ/circulation.pl | 26 ++++++++++++++++ circ/returns.pl | 3 ++ .../data/mysql/atomicupdate/bug_27753.pl | 24 ++++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 2 ++ .../admin/preferences/circulation.pref | 12 +++++++ .../prog/en/modules/circ/circulation.tt | 3 ++ .../prog/en/modules/circ/returns.tt | 6 +++- 8 files changed, 98 insertions(+), 9 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_27753.pl diff --git a/C4/Circulation.pm b/C4/Circulation.pm index df148d9253..5f642c2f90 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2535,15 +2535,30 @@ sub AddReturn { } if ( C4::Context->preference('ClaimReturnedLostValue') ) { - my $claims = Koha::Checkouts::ReturnClaims->search( - { - itemnumber => $item->id, - resolution => undef, - } - ); + my $autoClaimReturnCheckin = C4::Context->preference('AutoClaimReturnStatusOnCheckin'); + + if ($autoClaimReturnCheckin) { + my $claim = Koha::Checkouts::ReturnClaims->find( + { + itemnumber => $item->id, + resolution => undef, + } + ); + + if ($claim) { + my $patron_id = $patron->borrowernumber; + my $resolution = $autoClaimReturnCheckin; - if ( $claims->count ) { - $messages->{ReturnClaims} = $claims; + $claim->resolve( + { + resolution => $resolution, + resolved_by => $patron_id, + } + ); + $messages->{ClaimAutoResolved} = $claim; + } else { + $messages->{ReturnClaims} = $claim if $claim; + } } } diff --git a/circ/circulation.pl b/circ/circulation.pl index 76b2fc99d9..c76571b3fb 100755 --- a/circ/circulation.pl +++ b/circ/circulation.pl @@ -43,6 +43,7 @@ use Koha::Holds; use C4::Context; use CGI::Session; use Koha::AuthorisedValues; +use Koha::Checkouts::ReturnClaims; use Koha::CsvProfiles; use Koha::Patrons; use Koha::DateUtils qw( dt_from_string ); @@ -496,6 +497,31 @@ if (@$barcodes && $op eq 'cud-checkout') { } } + if ( C4::Context->preference('ClaimReturnedLostValue') ) { + my $autoClaimReturnCheckout = C4::Context->preference('AutoClaimReturnStatusOnCheckout'); + + my $claims = Koha::Checkouts::ReturnClaims->search( + { + itemnumber => $item->id, + } + ); + if ( $claims->count ) { + if ($autoClaimReturnCheckout) { + my $claim = $claims->next; + + my $patron_id = $patron->borrowernumber; + my $resolution = $autoClaimReturnCheckout; + + $claim->resolve( + { + resolution => $resolution, + resolved_by => $patron_id, + } + ); + $template_params->{CLAIM_RESOLUTION} = $claim; + } + } + } if ($needsconfirmation->{RESERVE_WAITING} or $needsconfirmation->{RESERVED} or $needsconfirmation->{TRANSFERRED} or $needsconfirmation->{PROCESSING}){ $template->param( reserveborrowernumber => $needsconfirmation->{'resborrowernumber'}, diff --git a/circ/returns.pl b/circ/returns.pl index 6614237e47..f94389cbc9 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -747,6 +747,9 @@ foreach my $code ( keys %$messages ) { } elsif ( $code eq 'ReturnClaims' ) { $template->param( ReturnClaims => $messages->{ReturnClaims} ); + } + elsif ( $code eq 'ClaimAutoResolved' ) { + $template->param( ClaimAutoResolved => $messages->{ClaimAutoResolved} ); } elsif ( $code eq 'RecallFound' ) { ; } elsif ( $code eq 'RecallNeedsTransfer' ) { diff --git a/installer/data/mysql/atomicupdate/bug_27753.pl b/installer/data/mysql/atomicupdate/bug_27753.pl new file mode 100755 index 0000000000..ddfae2063c --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_27753.pl @@ -0,0 +1,24 @@ +use Modern::Perl; + +return { + bug_number => "BUG_27753", + description => "Automate resolution of return claim when checking in an item", + up => sub { + my ($args) = @_; + my ( $dbh, $out ) = @$args{qw(dbh out)}; + + $dbh->do( + q{INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES + ('AutoClaimReturnStatusOnCheckin','','NULL','When in use this system preference will automatically resolve the claim return and will update the lost authorized value upon check in.','Free')} + ); + + say $out "Added new system preference 'AutoClaimReturnStatusOnCheckin'"; + + $dbh->do( + q{INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES + ('AutoClaimReturnStatusOnCheckout','','NULL','When in use this system preference will automatically resolve the claim return and will update the lost authorized value upon check out.','Free')} + ); + + say $out "Added new system preference 'AutoClaimReturnStatusOnCheckout'"; + }, +}; diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index d1afada379..d333de51b4 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -83,6 +83,8 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('AuthSuccessLog','0',NULL,'If enabled, log successful authentications','YesNo'), ('AutoApprovePatronProfileSettings', '0', '', 'Automatically approve patron profile changes from the OPAC.', 'YesNo'), ('autoBarcode','OFF','incremental|annual|hbyymmincr|EAN13|OFF','Used to autogenerate a barcode: incremental will be of the form 1, 2, 3; annual of the form 2007-0001, 2007-0002; hbyymmincr of the form HB08010001 where HB=Home Branch','Choice'), +('AutoClaimReturnStatusOnCheckin','','NULL','When in use this system preference will automatically resolve the claim return and will update the lost authorized value upon check in.','Free'), +('AutoClaimReturnStatusOnCheckout','','NULL','When in use this system preference will automatically resolve the claim return and will update the lost authorized value upon check out.','Free'), ('autoControlNumber','OFF','biblionumber|OFF','Used to autogenerate a Control Number: biblionumber will be as biblionumber, OFF will leave the field as it is;','Choice'), ('AutoCreateAuthorities','0',NULL,'Automatically create authorities that do not exist when cataloging records.','YesNo'), ('AutoCreditNumber', '', '', 'Automatically generate a number for account credits', 'Choice'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref index 0a1bf39d33..6859b75ffc 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -1370,6 +1370,18 @@ Circulation: charge: charge a lost fee no_charge: don't charge a lost fee - . + - + - Automatically resolve the claim and change the resolution to the Return claim resolution authorized value + - pref: AutoClaimReturnStatusOnCheckin + choices: authval + source: RETURN_CLAIM_RESOLUTION + - upon check in. + - + - Automatically resolve the claim and change the resolution to the Return claim resolution authorized value + - pref: AutoClaimReturnStatusOnCheckout + choices: authval + source: RETURN_CLAIM_RESOLUTION + - upon check out. - - Use the LOST authorized value - pref: ClaimReturnedLostValue diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt index f51c70c1d2..75b034763d 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt @@ -79,6 +79,9 @@ [% END %] + [% IF CLAIM_RESOLUTION %] +
The previously claimed returned item has been found, automatically resolving the associated claim.
+ [% END %] [% IF ( alert.ITEM_LOST ) %]
This item has been lost with a status of "[% alert.ITEM_LOST | html %]".
[% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt index 3106d821cd..489400e3c7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -191,7 +191,11 @@ [% END %] - [% IF ( ReturnClaims ) %] + [% IF ( ClaimAutoResolved ) %] +
+

The previously claimed returned item has been found, automatically resolving the associated claim.

+
+ [% ELSIF( ReturnClaims ) %]

This item has been claimed as returned by:

    -- 2.39.5