@@ -, +, @@ when an item is automatically checked in. --- Koha/Checkouts.pm | 17 ++++++++++++++--- installer/data/mysql/atomicupdate/bug_33887.pl | 16 ++++++++++++++++ installer/data/mysql/mandatory/sysprefs.sql | 1 + .../modules/admin/preferences/circulation.pref | 7 +++++++ 4 files changed, 38 insertions(+), 3 deletions(-) create mode 100755 installer/data/mysql/atomicupdate/bug_33887.pl --- a/Koha/Checkouts.pm +++ a/Koha/Checkouts.pm @@ -28,6 +28,7 @@ use Koha::DateUtils qw( dt_from_string ); use base qw(Koha::Objects); + =head1 NAME Koha::Checkouts - Koha Checkout object set class @@ -66,7 +67,7 @@ sub calculate_dropbox_date { my $automatic_checkins = Koha::Checkouts->automatic_checkin() -Checks in every due issue which itemtype has automatic_checkin enabled +Checks in every due issue which itemtype has automatic_checkin enabled. Also if the AutoCheckinAutoFill sys. pref. is enabled, the item is trapped for the next patron. =cut @@ -81,10 +82,20 @@ sub automatic_checkin { { prefetch => 'item'} ); + my $autofill_next = C4::Context->preference('AutomaticCheckinAutoFill'); + while ( my $checkout = $due_checkouts->next ) { if ( $checkout->item->itemtype->automatic_checkin ) { - C4::Circulation::AddReturn( $checkout->item->barcode, - $checkout->branchcode, undef, dt_from_string($checkout->date_due) ); + my ( undef, $messages) = C4::Circulation::AddReturn($checkout->item->barcode, $checkout->branchcode, undef, dt_from_string($checkout->date_due) ); + if ( $autofill_next ){ + if ( $messages->{ResFound} ){ + my $is_transfer = $checkout->branchcode ne $messages->{ResFound}->{branchcode}; + C4::Reserves::ModReserveAffect($checkout->item->itemnumber, $checkout->borrowernumber, $is_transfer, $messages->{ResFound}->{reserve_id}, $checkout->{desk_id}, 0); + if( $is_transfer ){ + C4::Items::ModItemTransfer($checkout->item->itemnumber,$checkout->branchcode, $messages->{ResFound}->{branchcode},"Reserve"); + } + } + } } } } --- a/installer/data/mysql/atomicupdate/bug_33887.pl +++ a/installer/data/mysql/atomicupdate/bug_33887.pl @@ -0,0 +1,16 @@ +use Modern::Perl; + +return { + bug_number => "33887", + description => "Automatically fill the next hold with a automatic check in.", + up => sub { + my ($args) = @_; + my ($dbh, $out) = @$args{qw(dbh out)}; + # Do you stuffs here + $dbh->do(q{ + INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES ('AutomaticCheckinAutoFill', '0', NULL,'Automatically fill the next hold with an automatic checkin cronjob.', 'YesNo') }); + # Print useful stuff here + # sysprefs + say $out "Added new system preference 'AutomaticCheckinAutoFill'"; + }, +}; --- a/installer/data/mysql/mandatory/sysprefs.sql +++ a/installer/data/mysql/mandatory/sysprefs.sql @@ -82,6 +82,7 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('AutoEmailNewUser','0',NULL,'Send an email to newly created patrons.','YesNo'), ('AutoShareWithMana','subscription','','defines datas automatically shared with mana','multiple'), ('AutoLocation','0',NULL,'If ON, IP authentication is enabled, blocking access to the staff interface from unauthorized IP addresses','YesNo'), +('AutomaticCheckinAutoFill','0',NULL,'Automatically fill the next hold with an automatic check in.','YesNo'), ('AutomaticItemReturn','1',NULL,'If ON, Koha will automatically set up a transfer of this item to its homebranch','YesNo'), ('AutoLinkBiblios','0',NULL,'If enabled, link biblio to authorities on creation and edit','YesNo'), ('AutomaticConfirmTransfer','0',NULL,'Defines whether transfers should be automatically confirmed at checkin if modal dismissed','YesNo'), --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -976,6 +976,13 @@ Circulation: homebranch: "item's home library" holdingbranch: "item's holding library" - "." + - + - pref: AutomaticCheckinAutoFill + choices: + 1: "Allow" + 0: "Don't allow" + - allow holds to be automatically filled after being automatically checked in. + - '
NOTE: These system preferences require the misc/cronjobs/automatic_checkin.pl cronjob. Ask your system administrator to schedule it.
' Patron restrictions: - - pref: PatronRestrictionTypes --