From 933d040b9cf088b26b8fc737ed5800a0c0b3adde 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=UTF-8 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! --- C4/Circulation.pm | 31 ++++++++++++++----- circ/circulation.pl | 26 ++++++++++++++++ circ/returns.pl | 3 ++ .../data/mysql/atomicupdate/bug_27753.pl | 20 ++++++++++++ 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, 94 insertions(+), 9 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_27753.pl diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 896dc1d0fe..4116c1900d 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2530,15 +2530,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 d61c4851f2..f02be6b475 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 ); @@ -483,6 +484,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 5b119e3726..77c7f88fd4 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -739,6 +739,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 100644 index 0000000000..f1c0cacd85 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_27753.pl @@ -0,0 +1,20 @@ +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 669074aa50..70c980d316 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -82,6 +82,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 bae185a1f5..d1db705f05 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 @@ -1334,6 +1334,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 54c4da8d89..523e9e337a 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 ab891c58c2..541b834027 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: