From a3dc24b46d5341cca9b8c6d8a23f9ab00ad44a65 Mon Sep 17 00:00:00 2001 From: Laura Escamilla Date: Tue, 27 Feb 2024 20:03:26 +0000 Subject: [PATCH] Bug 27753: Added two new system preferences for automatically resolving claims. --- C4/Circulation.pm | 50 +++++++++++++++++++ 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/returns.tt | 15 +++++- 6 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_27753.pl diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 109809d4b9..fd1e58e444 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -2248,6 +2248,37 @@ sub AddReturn { } } +if (C4::Context->preference('ClaimReturnedLostValue')) { + my $autoClaimReturnCheckin = C4::Context->preference('AutoClaimReturnStatusOnCheckin'); + + my $claims = Koha::Checkouts::ReturnClaims->search( + { + itemnumber => $item->id, + resolution => undef, + } + ); + + if ($claims->count) { + if ($autoClaimReturnCheckin) { + my $claim = $claims->next; + + my $patron_id = $patron->borrowernumber; + my $resolution = $autoClaimReturnCheckin; # Use the preference value as the resolution + + $claim->resolve( + { + resolution => $resolution, + resolved_by => $patron_id, + } + ); + + $messages->{ClaimAutoResolved} = $claim; + } else { + $messages->{ReturnClaims} = $claims; + } + } +} + # check if the return is allowed at this branch my ($returnallowed, $message) = CanBookBeReturned($item->unblessed, $branch); unless ($returnallowed){ @@ -2547,6 +2578,8 @@ sub AddReturn { } if ( C4::Context->preference('ClaimReturnedLostValue') ) { + my $autoClaimReturnCheckout = C4::Context->preference('AutoClaimReturnStatusOnCheckout'); + my $claims = Koha::Checkouts::ReturnClaims->search( { itemnumber => $item->id, @@ -2555,9 +2588,26 @@ sub AddReturn { ); 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, + } + ); + + $messages->{ClaimAutoResolved} = $claim; + } else { $messages->{ReturnClaims} = $claims; } } + } # Check for bundle status if ( $item->in_bundle ) { diff --git a/circ/returns.pl b/circ/returns.pl index c0df061139..5453e1aa19 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -738,6 +738,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..d2698df01d --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_27753.pl @@ -0,0 +1,20 @@ +use Modern::Perl; + +return { + bug_number => "BUG_27753", + description => "Automate the resoluton of a claim upon return", + 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 syspref 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 syspref 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..6ac6a44ce1 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 syspref will automatically resolve the claim return and will update the lost authorized value upon check in.','Free'), +('AutoClaimReturnStatusOnCheckout','','NULL','When in use this syspref 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 080e8fa494..30031fc468 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 @@ -1335,6 +1335,18 @@ Circulation: no_charge: don't charge a lost fee - . - + - Automatically resolve the claim and change the status 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 status 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 choices: authval 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 6fa85cbb23..7244dff86c 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt @@ -190,7 +190,18 @@ [% END %] - [% IF ( ReturnClaims ) %] + [% IF ( ClaimAutoResolved ) %] +
+

This item has been claimed as returned by:

+ +
+ [% ELSIF ( ReturnClaims ) %]

This item has been claimed as returned by:

-
+ [% END %] -- 2.30.2