View | Details | Raw Unified | Return to bug 21572
Collapse All | Expand All

(-)a/C4/Circulation.pm (-33 / +29 lines)
Lines 556-562 sub TooMany { Link Here
556
=head2 CanBookBeIssued
556
=head2 CanBookBeIssued
557
557
558
  ( $issuingimpossible, $needsconfirmation, [ $alerts ] ) =  CanBookBeIssued( $patron,
558
  ( $issuingimpossible, $needsconfirmation, [ $alerts ] ) =  CanBookBeIssued( $patron,
559
                      $barcode, $duedate, $inprocess, $ignore_reserves, $params );
559
                      $barcode, $duedate, $inprocess, $params );
560
560
561
Check if a book can be issued.
561
Check if a book can be issued.
562
562
Lines 576-583 data is keyed in lower case! Link Here
576
576
577
=item C<$inprocess> boolean switch
577
=item C<$inprocess> boolean switch
578
578
579
=item C<$ignore_reserves> boolean switch
580
581
=item C<$params> Hashref of additional parameters
579
=item C<$params> Hashref of additional parameters
582
580
583
Available keys:
581
Available keys:
Lines 659-665 if the borrower borrows to much things Link Here
659
=cut
657
=cut
660
658
661
sub CanBookBeIssued {
659
sub CanBookBeIssued {
662
    my ( $patron, $barcode, $duedate, $inprocess, $ignore_reserves, $params ) = @_;
660
    my ( $patron, $barcode, $duedate, $inprocess, $params ) = @_;
663
    my %needsconfirmation;    # filled with problems that needs confirmations
661
    my %needsconfirmation;    # filled with problems that needs confirmations
664
    my %issuingimpossible;    # filled with problems that causes the issue to be IMPOSSIBLE
662
    my %issuingimpossible;    # filled with problems that causes the issue to be IMPOSSIBLE
665
    my %alerts;               # filled with messages that shouldn't stop issuing, but the librarian should be aware of.
663
    my %alerts;               # filled with messages that shouldn't stop issuing, but the librarian should be aware of.
Lines 980-1014 sub CanBookBeIssued { Link Here
980
        }
978
        }
981
    }
979
    }
982
980
983
    unless ( $ignore_reserves ) {
981
    # See if the item is on reserve.
984
        # See if the item is on reserve.
982
    my ( $restype, $res ) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
985
        my ( $restype, $res ) = C4::Reserves::CheckReserves( $item->{'itemnumber'} );
983
    if ($restype) {
986
        if ($restype) {
984
        my $resbor = $res->{'borrowernumber'};
987
            my $resbor = $res->{'borrowernumber'};
985
        if ( $resbor ne $patron->borrowernumber ) {
988
            if ( $resbor ne $patron->borrowernumber ) {
986
            my $patron = Koha::Patrons->find( $resbor );
989
                my $patron = Koha::Patrons->find( $resbor );
987
            if ( $restype eq "Waiting" )
990
                if ( $restype eq "Waiting" )
988
            {
991
                {
989
                # The item is on reserve and waiting, but has been
992
                    # The item is on reserve and waiting, but has been
990
                # reserved by some other patron.
993
                    # reserved by some other patron.
991
                $needsconfirmation{RESERVE_WAITING} = 1;
994
                    $needsconfirmation{RESERVE_WAITING} = 1;
992
                $needsconfirmation{'resfirstname'} = $patron->firstname;
995
                    $needsconfirmation{'resfirstname'} = $patron->firstname;
993
                $needsconfirmation{'ressurname'} = $patron->surname;
996
                    $needsconfirmation{'ressurname'} = $patron->surname;
994
                $needsconfirmation{'rescardnumber'} = $patron->cardnumber;
997
                    $needsconfirmation{'rescardnumber'} = $patron->cardnumber;
995
                $needsconfirmation{'resborrowernumber'} = $patron->borrowernumber;
998
                    $needsconfirmation{'resborrowernumber'} = $patron->borrowernumber;
996
                $needsconfirmation{'resbranchcode'} = $res->{branchcode};
999
                    $needsconfirmation{'resbranchcode'} = $res->{branchcode};
997
                $needsconfirmation{'reswaitingdate'} = $res->{'waitingdate'};
1000
                    $needsconfirmation{'reswaitingdate'} = $res->{'waitingdate'};
998
            }
1001
                }
999
            elsif ( $restype eq "Reserved" && !C4::Context->preference("AllowItemsOnHoldCheckout") ) {
1002
                elsif ( $restype eq "Reserved" ) {
1000
                # The item is on reserve for someone else.
1003
                    # The item is on reserve for someone else.
1001
                $needsconfirmation{RESERVED} = 1;
1004
                    $needsconfirmation{RESERVED} = 1;
1002
                $needsconfirmation{'resfirstname'} = $patron->firstname;
1005
                    $needsconfirmation{'resfirstname'} = $patron->firstname;
1003
                $needsconfirmation{'ressurname'} = $patron->surname;
1006
                    $needsconfirmation{'ressurname'} = $patron->surname;
1004
                $needsconfirmation{'rescardnumber'} = $patron->cardnumber;
1007
                    $needsconfirmation{'rescardnumber'} = $patron->cardnumber;
1005
                $needsconfirmation{'resborrowernumber'} = $patron->borrowernumber;
1008
                    $needsconfirmation{'resborrowernumber'} = $patron->borrowernumber;
1006
                $needsconfirmation{'resbranchcode'} = $patron->branchcode;
1009
                    $needsconfirmation{'resbranchcode'} = $patron->branchcode;
1007
                $needsconfirmation{'resreservedate'} = $res->{reservedate};
1010
                    $needsconfirmation{'resreservedate'} = $res->{reservedate};
1011
                }
1012
            }
1008
            }
1013
        }
1009
        }
1014
    }
1010
    }
(-)a/C4/SIP/ILS/Transaction/Checkout.pm (-5 / +3 lines)
Lines 57-65 sub do_checkout { Link Here
57
    my $patron = Koha::Patrons->find( { cardnumber => $patron_barcode } );
57
    my $patron = Koha::Patrons->find( { cardnumber => $patron_barcode } );
58
    my $borrower = $patron->unblessed;
58
    my $borrower = $patron->unblessed;
59
	$debug and warn "do_checkout borrower: . " . Dumper $borrower;
59
	$debug and warn "do_checkout borrower: . " . Dumper $borrower;
60
    my ($issuingimpossible, $needsconfirmation) = _can_we_issue($patron, $barcode,
60
    my ($issuingimpossible, $needsconfirmation) = _can_we_issue($patron, $barcode );
61
        C4::Context->preference("AllowItemsOnHoldCheckout")
62
    );
63
61
64
    my $noerror=1;  # If set to zero we block the issue
62
    my $noerror=1;  # If set to zero we block the issue
65
    if (keys %{$issuingimpossible}) {
63
    if (keys %{$issuingimpossible}) {
Lines 150-159 sub do_checkout { Link Here
150
}
148
}
151
149
152
sub _can_we_issue {
150
sub _can_we_issue {
153
    my ( $patron, $barcode, $pref ) = @_;
151
    my ( $patron, $barcode ) = @_;
154
152
155
    my ( $issuingimpossible, $needsconfirmation, $alerts ) =
153
    my ( $issuingimpossible, $needsconfirmation, $alerts ) =
156
      CanBookBeIssued( $patron, $barcode, undef, 0, $pref );
154
      CanBookBeIssued( $patron, $barcode, undef, 0 );
157
    for my $href ( $issuingimpossible, $needsconfirmation ) {
155
    for my $href ( $issuingimpossible, $needsconfirmation ) {
158
156
159
        # some data is returned using lc keys we only
157
        # some data is returned using lc keys we only
(-)a/C4/UsageStats.pm (-1 lines)
Lines 135-141 sub BuildReport { Link Here
135
        AllFinesNeedOverride
135
        AllFinesNeedOverride
136
        AllowFineOverride
136
        AllowFineOverride
137
        AllowItemsOnHoldCheckout
137
        AllowItemsOnHoldCheckout
138
        AllowItemsOnHoldCheckoutSCO
139
        AllowNotForLoanOverride
138
        AllowNotForLoanOverride
140
        AllowRenewalLimitOverride
139
        AllowRenewalLimitOverride
141
        AllowReturnToBranch
140
        AllowReturnToBranch
(-)a/circ/circulation.pl (-1 lines)
Lines 335-341 if (@$barcodes) { Link Here
335
        $patron,
335
        $patron,
336
        $barcode, $datedue,
336
        $barcode, $datedue,
337
        $inprocess,
337
        $inprocess,
338
        undef,
339
        {
338
        {
340
            onsite_checkout     => $onsite_checkout,
339
            onsite_checkout     => $onsite_checkout,
341
            override_high_holds => $override_high_holds || $override_high_holds_tmp || 0,
340
            override_high_holds => $override_high_holds || $override_high_holds_tmp || 0,
(-)a/installer/data/mysql/atomicupdate/bug_21572.perl (+15 lines)
Line 0 Link Here
1
$DBversion = 'XXX';  # will be replaced by the RM
2
if( CheckVersion( $DBversion ) ) {
3
    my ( $SCOvalue ) = $dbh->selectrow_array(q|
4
        SELECT value FROM systempreferences WHERE variable = 'AllowItemsOnHoldCheckoutSCO'
5
    |);
6
7
    if ( $SCOvalue ) {
8
        $dbh->do("UPDATE systempreferences SET value = 1 WHERE variable = 'AllowItemsOnHoldCheckout'");
9
    }
10
11
    $dbh->do("DELETE FROM systempreferences WHERE variable = 'AllowItemsOnHoldCheckoutSCO'");
12
13
    SetVersion( $DBversion );
14
    print "Upgrade to $DBversion done (Bug 21572 - Allow checkout an item with reserve that is not yet in waiting state)\n";
15
}
(-)a/installer/data/mysql/sysprefs.sql (-1 lines)
Lines 25-31 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
25
('AllowHoldsOnPatronsPossessions','1',NULL,'Allow holds on records that patron have items of it','YesNo'),
25
('AllowHoldsOnPatronsPossessions','1',NULL,'Allow holds on records that patron have items of it','YesNo'),
26
('AllowCheckoutNotes', '0', NULL, 'Allow patrons to submit notes about checked out items.','YesNo'),
26
('AllowCheckoutNotes', '0', NULL, 'Allow patrons to submit notes about checked out items.','YesNo'),
27
('AllowItemsOnHoldCheckout','0','','Do not generate RESERVE_WAITING and RESERVED warning when checking out items reserved to someone else. This allows self checkouts for those items.','YesNo'),
27
('AllowItemsOnHoldCheckout','0','','Do not generate RESERVE_WAITING and RESERVED warning when checking out items reserved to someone else. This allows self checkouts for those items.','YesNo'),
28
('AllowItemsOnHoldCheckoutSCO','0','','Do not generate RESERVE_WAITING and RESERVED warning in the SCO module when checking out items reserved to someone else. This allows self checkouts for those items.','YesNo'),
29
('AllowMultipleCovers','0','1','Allow multiple cover images to be attached to each bibliographic record.','YesNo'),
28
('AllowMultipleCovers','0','1','Allow multiple cover images to be attached to each bibliographic record.','YesNo'),
30
('AllowMultipleIssuesOnABiblio',1,'Allow/Don\'t allow patrons to check out multiple items from one biblio','','YesNo'),
29
('AllowMultipleIssuesOnABiblio',1,'Allow/Don\'t allow patrons to check out multiple items from one biblio','','YesNo'),
31
('AllowNotForLoanOverride','0','','If ON, Koha will allow the librarian to loan a not for loan item.','YesNo'),
30
('AllowNotForLoanOverride','0','','If ON, Koha will allow the librarian to loan a not for loan item.','YesNo'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (-7 / +1 lines)
Lines 188-200 Circulation: Link Here
188
              choices:
188
              choices:
189
                  yes: Allow
189
                  yes: Allow
190
                  no: "Don't allow"
190
                  no: "Don't allow"
191
            - checkouts of items reserved to someone else. If allowed do not generate RESERVE_WAITING and RESERVED warning. This allows self checkouts for those items.
191
            - checkouts of items reserved to someone else. If allowed do not generate RESERVED warning. This allows self checkouts for those items.
192
        -
193
            - pref: AllowItemsOnHoldCheckoutSCO
194
              choices:
195
                  yes: Allow
196
                  no: "Don't allow"
197
            - checkouts of items reserved to someone else in the SCO module. If allowed do not generate RESERVE_WAITING and RESERVED warning. This allows self checkouts for those items.
198
        -
192
        -
199
            - pref: AllFinesNeedOverride
193
            - pref: AllFinesNeedOverride
200
              choices:
194
              choices:
(-)a/opac/sco/sco-main.pl (-3 / +2 lines)
Lines 135-146 elsif ( $patron and $op eq "checkout" ) { Link Here
135
        $patron,
135
        $patron,
136
        $barcode,
136
        $barcode,
137
        undef,
137
        undef,
138
        0,
138
        0
139
        C4::Context->preference("AllowItemsOnHoldCheckoutSCO")
140
    );
139
    );
141
    my $issue_error;
140
    my $issue_error;
142
    if ( $confirm_required = scalar keys %$needconfirm ) {
141
    if ( $confirm_required = scalar keys %$needconfirm ) {
143
        for my $error ( qw( UNKNOWN_BARCODE max_loans_allowed ISSUED_TO_ANOTHER NO_MORE_RENEWALS NOT_FOR_LOAN DEBT WTHDRAWN RESTRICTED RESERVED ITEMNOTSAMEBRANCH EXPIRED DEBARRED CARD_LOST GNA INVALID_DATE UNKNOWN_BARCODE TOO_MANY DEBT_GUARANTEES USERBLOCKEDOVERDUE PATRON_CANT PREVISSUE NOT_FOR_LOAN_FORCING ITEM_LOST) ) {
142
        for my $error ( qw( UNKNOWN_BARCODE max_loans_allowed ISSUED_TO_ANOTHER NO_MORE_RENEWALS NOT_FOR_LOAN DEBT WTHDRAWN RESTRICTED RESERVED RESERVE_WAITING ITEMNOTSAMEBRANCH EXPIRED DEBARRED CARD_LOST GNA INVALID_DATE UNKNOWN_BARCODE TOO_MANY DEBT_GUARANTEES USERBLOCKEDOVERDUE PATRON_CANT PREVISSUE NOT_FOR_LOAN_FORCING ITEM_LOST) ) {
144
            if ( $needconfirm->{$error} ) {
143
            if ( $needconfirm->{$error} ) {
145
                $issue_error = $error;
144
                $issue_error = $error;
146
                $confirmed = 0;
145
                $confirmed = 0;
(-)a/t/db_dependent/Circulation.t (-8 / +8 lines)
Lines 2206-2212 subtest 'CanBookBeIssued | is_overdue' => sub { Link Here
2206
    my $issue = AddIssue( $patron->unblessed, $item->{barcode}, $five_days_go ); # date due was 10d ago
2206
    my $issue = AddIssue( $patron->unblessed, $item->{barcode}, $five_days_go ); # date due was 10d ago
2207
    my $actualissue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
2207
    my $actualissue = Koha::Checkouts->find( { itemnumber => $item->{itemnumber} } );
2208
    is( output_pref({ str => $actualissue->date_due, dateonly => 1}), $five_days_go, "First issue works");
2208
    is( output_pref({ str => $actualissue->date_due, dateonly => 1}), $five_days_go, "First issue works");
2209
    my ($issuingimpossible, $needsconfirmation) = CanBookBeIssued($patron,$item->{barcode},$ten_days_go, undef, undef, undef);
2209
    my ($issuingimpossible, $needsconfirmation) = CanBookBeIssued($patron,$item->{barcode},$ten_days_go, undef, undef);
2210
    is( $needsconfirmation->{RENEW_ISSUE}, 1, "This is a renewal");
2210
    is( $needsconfirmation->{RENEW_ISSUE}, 1, "This is a renewal");
2211
    is( $needsconfirmation->{TOO_MANY}, undef, "Not too many, is a renewal");
2211
    is( $needsconfirmation->{TOO_MANY}, undef, "Not too many, is a renewal");
2212
2212
Lines 2242-2248 subtest 'CanBookBeIssued | item-level_itypes=biblio' => sub { Link Here
2242
        }
2242
        }
2243
    )->store;
2243
    )->store;
2244
2244
2245
    my ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2245
    my ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef );
2246
    is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2246
    is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2247
    is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2247
    is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2248
};
2248
};
Lines 2287-2299 subtest 'CanBookBeIssued | notforloan' => sub { Link Here
2287
2287
2288
        t::lib::Mocks::mock_preference('item-level_itypes', 1); # item
2288
        t::lib::Mocks::mock_preference('item-level_itypes', 1); # item
2289
        # Is for loan at item type and item level
2289
        # Is for loan at item type and item level
2290
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2290
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef );
2291
        is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2291
        is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2292
        is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2292
        is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2293
2293
2294
        # not for loan at item type level
2294
        # not for loan at item type level
2295
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(1)->store;
2295
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(1)->store;
2296
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2296
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef );
2297
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2297
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2298
        is_deeply(
2298
        is_deeply(
2299
            $issuingimpossible,
2299
            $issuingimpossible,
Lines 2304-2310 subtest 'CanBookBeIssued | notforloan' => sub { Link Here
2304
        # not for loan at item level
2304
        # not for loan at item level
2305
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(undef)->store;
2305
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(undef)->store;
2306
        $item->notforloan( 1 )->store;
2306
        $item->notforloan( 1 )->store;
2307
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2307
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef );
2308
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2308
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2309
        is_deeply(
2309
        is_deeply(
2310
            $issuingimpossible,
2310
            $issuingimpossible,
Lines 2329-2341 subtest 'CanBookBeIssued | notforloan' => sub { Link Here
2329
        # for loan at item type and item level
2329
        # for loan at item type and item level
2330
        $item->notforloan(undef)->store;
2330
        $item->notforloan(undef)->store;
2331
        $item->biblioitem->itemtype($itemtype->{itemtype})->store;
2331
        $item->biblioitem->itemtype($itemtype->{itemtype})->store;
2332
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2332
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef );
2333
        is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2333
        is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2334
        is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2334
        is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2335
2335
2336
        # not for loan at item type level
2336
        # not for loan at item type level
2337
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(1)->store;
2337
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(1)->store;
2338
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2338
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef );
2339
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2339
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2340
        is_deeply(
2340
        is_deeply(
2341
            $issuingimpossible,
2341
            $issuingimpossible,
Lines 2346-2352 subtest 'CanBookBeIssued | notforloan' => sub { Link Here
2346
        # not for loan at item level
2346
        # not for loan at item level
2347
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(undef)->store;
2347
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(undef)->store;
2348
        $item->notforloan( 1 )->store;
2348
        $item->notforloan( 1 )->store;
2349
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2349
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef );
2350
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2350
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2351
        is_deeply(
2351
        is_deeply(
2352
            $issuingimpossible,
2352
            $issuingimpossible,
(-)a/t/db_dependent/DecreaseLoanHighHolds.t (-1 / +1 lines)
Lines 193-199 my $patron_object = Koha::Patrons->find( $patron_hr->{borrowernumber} ); Link Here
193
my ( undef, $needsconfirmation ) = CanBookBeIssued( $patron_object, $item->barcode );
193
my ( undef, $needsconfirmation ) = CanBookBeIssued( $patron_object, $item->barcode );
194
ok( $needsconfirmation->{HIGHHOLDS}, "High holds checkout needs confirmation" );
194
ok( $needsconfirmation->{HIGHHOLDS}, "High holds checkout needs confirmation" );
195
195
196
( undef, $needsconfirmation ) = CanBookBeIssued( $patron_object, $item->barcode, undef, undef, undef, { override_high_holds => 1 } );
196
( undef, $needsconfirmation ) = CanBookBeIssued( $patron_object, $item->barcode, undef, undef, { override_high_holds => 1 } );
197
ok( !$needsconfirmation->{HIGHHOLDS}, "High holds checkout does not need confirmation" );
197
ok( !$needsconfirmation->{HIGHHOLDS}, "High holds checkout does not need confirmation" );
198
198
199
$schema->storage->txn_rollback();
199
$schema->storage->txn_rollback();
(-)a/t/db_dependent/UsageStats.t (-2 lines)
Lines 387-393 sub mocking_systempreferences_to_a_set_value { Link Here
387
        AllFinesNeedOverride
387
        AllFinesNeedOverride
388
        AllowFineOverride
388
        AllowFineOverride
389
        AllowItemsOnHoldCheckout
389
        AllowItemsOnHoldCheckout
390
        AllowItemsOnHoldCheckoutSCO
391
        AllowNotForLoanOverride
390
        AllowNotForLoanOverride
392
        AllowRenewalLimitOverride
391
        AllowRenewalLimitOverride
393
        AllowReturnToBranch
392
        AllowReturnToBranch
394
- 

Return to bug 21572