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>
This commit is contained in:
parent
b002a84a2c
commit
ad5699ea1d
|
|
@ -356,21 +356,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