$issuingimpossible{RETURN_IMPOSSIBLE} = 1;
$issuingimpossible{branch_to_return} = $message;
} else {
+ if ( C4::Context->preference('AutoReturnCheckedOutItems') ) {
+ $alerts{RETURNED_FROM_ANOTHER} = { patron => $patron };
+ } else {
$needsconfirmation{ISSUED_TO_ANOTHER} = 1;
$needsconfirmation{issued_firstname} = $patron->firstname;
$needsconfirmation{issued_surname} = $patron->surname;
$needsconfirmation{issued_cardnumber} = $patron->cardnumber;
$needsconfirmation{issued_borrowernumber} = $patron->borrowernumber;
+ }
}
}
--- /dev/null
+$DBversion = 'XXX'; # will be replaced by the RM
+if( CheckVersion( $DBversion ) ) {
+ $dbh->do(q{
+ INSERT IGNORE INTO `systempreferences` (`variable`, `value`, `options`, `explanation`, `type`) VALUES
+ ('AutoReturnCheckedOutItems', '0', '', 'If disabled, librarian must confirm return of checked out item when checking out to another.', 'YesNo');
+ });
+
+ SetVersion( $DBversion );
+ print "Upgrade to $DBversion done (Bug 17171 - Add a syspref to allow currently issued items to be issued to a new patron without staff confirmation)\n";
+}
('autoMemberNum','0','','If ON, patron number is auto-calculated','YesNo'),
('AutoRemoveOverduesRestrictions','0',NULL,'Defines whether an OVERDUES debarment should be lifted automatically if all overdue items are returned by the patron.','YesNo'),
('AutoResumeSuspendedHolds','1',NULL,'Allow suspended holds to be automatically resumed by a set date.','YesNo'),
+('AutoReturnCheckedOutItems', '0', '', 'If disabled, librarian must confirm return of checked out item when checking out to another.', 'YesNo'),
('AutoSelfCheckAllowed','0','','For corporate and special libraries which want web-based self-check available from any PC without the need for a manual staff login. Most libraries will want to leave this turned off. If on, requires self-check ID and password to be entered in AutoSelfCheckID and AutoSelfCheckPass sysprefs.','YesNo'),
('AutoSelfCheckID','','','Staff ID with circulation rights to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','free'),
('AutoSelfCheckPass','','','Password to be used for automatic web-based self-check. Only applies if AutoSelfCheckAllowed syspref is turned on.','free'),
Checkout Policy:
-
+ - pref: AutoReturnCheckedOutItems
+ choices:
+ yes: Don't
+ no: Do
+ - require librarians to manually confirm a checkout where the item is already checked out to another patron.
+ -
- pref: AllowTooManyOverride
choices:
yes: Allow
<div class="dialog message">High demand item. <b>Loan period was not shortened due to override.</b> Shortened due date would have been [% alert.HIGHHOLDS.returndate | $KohaDates %] ([% alert.HIGHHOLDS.duration | html %] days).</div>
[% END %]
+[% IF alert.RETURNED_FROM_ANOTHER %]
+ <div class="dialog alert">Item was checked out to [% alert.RETURNED_FROM_ANOTHER.patron.firstname %] [% alert.RETURNED_FROM_ANOTHER.patron.surname %] ([% alert.RETURNED_FROM_ANOTHER.patron.cardnumber %]) and was returned automatically.</div>
+[% END %]
+
[% IF ( nopermission ) %]
<div class="dialog alert">Staff members are not allowed to discharge borrowers, nor borrowers to request a discharge.</div>
[% END %]
use Modern::Perl;
use utf8;
-use Test::More tests => 127;
+use Test::More tests => 128;
use Test::MockModule;
use Data::Dumper;
branchcode => $library2->{branchcode}
};
+t::lib::Mocks::mock_preference('AutoReturnCheckedOutItems', 0);
+
# No userenv, PickupLibrary
t::lib::Mocks::mock_preference('IndependentBranches', '0');
t::lib::Mocks::mock_preference('CircControl', 'PickupLibrary');
);
};
+subtest 'CanBookBeIssued + AutoReturnCheckedOutItems' => sub {
+ plan tests => 2;
+
+ my $library = $builder->build( { source => 'Branch' } );
+ my $patron1 = $builder->build_object(
+ {
+ class => 'Koha::Patrons',
+ value => {
+ branchcode => $library->{branchcode},
+ firstname => "Happy",
+ surname => "Gilmore",
+ }
+ }
+ );
+ my $patron2 = $builder->build_object(
+ {
+ class => 'Koha::Patrons',
+ value => {
+ branchcode => $library->{branchcode},
+ firstname => "Billy",
+ surname => "Madison",
+ }
+ }
+ );
+
+ C4::Context->_new_userenv('xxx');
+ C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, 'Random Library', '', '', '');
+
+ my $biblioitem = $builder->build( { source => 'Biblioitem' } );
+ my $biblionumber = $biblioitem->{biblionumber};
+ my $item = $builder->build(
+ { source => 'Item',
+ value => {
+ homebranch => $library->{branchcode},
+ holdingbranch => $library->{branchcode},
+ notforloan => 0,
+ itemlost => 0,
+ withdrawn => 0,
+ biblionumber => $biblionumber,
+ }
+ }
+ );
+
+ my ( $error, $question, $alerts );
+ my $issue = AddIssue( $patron1->unblessed, $item->{barcode} );
+
+ t::lib::Mocks::mock_preference('AutoReturnCheckedOutItems', 0);
+ ( $error, $question, $alerts ) = CanBookBeIssued( $patron2, $item->{barcode} );
+ is( $question->{ISSUED_TO_ANOTHER}, 1, 'ISSUED_TO_ANOTHER question flag should be set if AutoReturnCheckedOutItems is disabled and item is checked out to another' );
+
+ t::lib::Mocks::mock_preference('AutoReturnCheckedOutItems', 1);
+ ( $error, $question, $alerts ) = CanBookBeIssued( $patron2, $item->{barcode} );
+ is( $alerts->{RETURNED_FROM_ANOTHER}->{patron}->borrowernumber, $patron1->borrowernumber, 'RETURNED_FROM_ANOTHER alert flag should be set if AutoReturnCheckedOutItems is enabled and item is checked out to another' );
+
+ t::lib::Mocks::mock_preference('AutoReturnCheckedOutItems', 0);
+};
+
+
subtest 'AddReturn | is_overdue' => sub {
plan tests => 5;