Bug 29220: Minor fixes and improved code readability
The current handling of onsite checkouts with OnSiteCheckoutsForce
syspref enabled is confusing and hard to understand. It's also fragile
with a high risk future changes could result in subtle bugs.
Also fix an inconsistency in which errors (DEBT_GUARANTORS) are considered blocking for
forced onsite checkouts.
To test:
1) Enable OnSiteCheckouts, disable OnSiteCheckoutsForce
2) Edit a biblio item and for example set Not for loan to a value
restricting loans
3) Try to check out the item for some patron
4) A message that item is not for loan should be displayed
5) Select "On-site checkout" and try again
6) The same message should be displayed
7) Try to checkout with some invalid barcode
8) A message that barcode was not found should be displayed
9) Now enable OnSiteCheckoutsForce
10) Try to checkout the item for some patron
11) A message that item is not for loan should be displayed
12) Select "On-site checkout" and try again
13) Checkout should now succeed, no messages should be displayed
14) Try to checkout with some invalid barcode
15) A message that barcode was not found should be displayed
16) All of the above steps should produce the same result with and without this patch
Additional:
Before patch:
a) Set NoIssuesChargeGuarantorsWithGuarantees to 1
b) add a guarantee with another guarantor
c) charge a 1.01 fine to other guarantor
d) checkout is blocked due to fines
Apply patch
e) checkout is allowed when onsite checkouts forced
Sponsored-by: Gothenburg University Library
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
(cherry picked from commit ad5699ea1d)
Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
This commit is contained in:
parent
14a77ce99d
commit
68f7dbe2fb
|
|
@ -376,21 +376,21 @@ if (@$barcodes) {
|
|||
}
|
||||
}
|
||||
|
||||
if ( $error->{DEBT_GUARANTORS} ) {
|
||||
$template_params->{DEBT_GUARANTORS} = $error->{DEBT_GUARANTORS};
|
||||
$template_params->{IMPOSSIBLE} = 1;
|
||||
$blocker = 1;
|
||||
}
|
||||
# Only some errors will block when performing forced onsite checkout,
|
||||
# for other cases all errors will block
|
||||
my @blocking_error_codes = ($onsite_checkout and C4::Context->preference("OnSiteCheckoutsForce")) ?
|
||||
qw( UNKNOWN_BARCODE ) : (keys %$error);
|
||||
|
||||
if ( $error->{UNKNOWN_BARCODE} or not $onsite_checkout or not C4::Context->preference("OnSiteCheckoutsForce") ) {
|
||||
delete $question->{'DEBT'} if ($debt_confirmed);
|
||||
foreach my $impossible ( keys %$error ) {
|
||||
$template_params->{$impossible} = $$error{$impossible};
|
||||
foreach my $code ( @blocking_error_codes ) {
|
||||
if ($error->{$code}) {
|
||||
$template_params->{$code} = $error->{$code};
|
||||
$template_params->{IMPOSSIBLE} = 1;
|
||||
$blocker = 1;
|
||||
}
|
||||
}
|
||||
|
||||
delete $question->{'DEBT'} if ($debt_confirmed);
|
||||
|
||||
if( $item and ( !$blocker or $force_allow_issue ) ){
|
||||
my $confirm_required = 0;
|
||||
unless($issueconfirmed){
|
||||
|
|
|
|||
Loading…
Reference in New Issue