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

(-)a/C4/Circulation.pm (+3 lines)
Lines 1105-1110 sub CanBookBeIssued { Link Here
1105
                    $needsconfirmation{'resreservedate'} = $res->{reservedate};
1105
                    $needsconfirmation{'resreservedate'} = $res->{reservedate};
1106
                    $needsconfirmation{'reserve_id'} = $res->{reserve_id};
1106
                    $needsconfirmation{'reserve_id'} = $res->{reserve_id};
1107
                }
1107
                }
1108
                elsif ( $restype eq "Processing" && C4::Context->interface eq 'sip' ) {
1109
                    $issuingimpossible{PROCESSING} = 1;
1110
                }
1108
            }
1111
            }
1109
        }
1112
        }
1110
    }
1113
    }
(-)a/C4/Reserves.pm (-9 / +16 lines)
Lines 712-717 sub GetReserveStatus { Link Here
712
712
713
    if(defined $found) {
713
    if(defined $found) {
714
        return 'Waiting'  if $found eq 'W' and $priority == 0;
714
        return 'Waiting'  if $found eq 'W' and $priority == 0;
715
        return 'Processing'  if $found eq 'P';
715
        return 'Finished' if $found eq 'F';
716
        return 'Finished' if $found eq 'F';
716
    }
717
    }
717
718
Lines 826-832 sub CheckReserves { Link Here
826
            if ( $res->{'itemnumber'} && $res->{'itemnumber'} == $itemnumber && $res->{'priority'} == 0) {
827
            if ( $res->{'itemnumber'} && $res->{'itemnumber'} == $itemnumber && $res->{'priority'} == 0) {
827
                if ($res->{'found'} eq 'W') {
828
                if ($res->{'found'} eq 'W') {
828
                    return ( "Waiting", $res, \@reserves ); # Found it, it is waiting
829
                    return ( "Waiting", $res, \@reserves ); # Found it, it is waiting
829
                } else {
830
                } elsif ($res->{'found'} eq 'P') {
831
                    return ( "Processing", $res, \@reserves ); # Found determinated hold, e. g. the tranferred one
832
                 } else {
830
                    return ( "Reserved", $res, \@reserves ); # Found determinated hold, e. g. the tranferred one
833
                    return ( "Reserved", $res, \@reserves ); # Found determinated hold, e. g. the tranferred one
831
                }
834
                }
832
            } else {
835
            } else {
Lines 1155-1161 sub ModReserveAffect { Link Here
1155
1158
1156
    $hold->itemnumber($itemnumber);
1159
    $hold->itemnumber($itemnumber);
1157
1160
1158
    if( !$transferToDo ){
1161
    if ($transferToDo) {
1162
        $hold->set_transfer();
1163
    } elsif (C4::Context->preference('HoldsNeedProcessingSIP')
1164
             && C4::Context->interface eq 'sip'
1165
             && !$already_on_shelf) {
1166
        $hold->set_processing();
1167
    } else {
1159
        $hold->set_waiting();
1168
        $hold->set_waiting();
1160
        _koha_notify_reserve( $hold->reserve_id ) unless $already_on_shelf;
1169
        _koha_notify_reserve( $hold->reserve_id ) unless $already_on_shelf;
1161
        my $transfers = Koha::Item::Transfers->search({
1170
        my $transfers = Koha::Item::Transfers->search({
Lines 1165-1173 sub ModReserveAffect { Link Here
1165
        while( my $transfer = $transfers->next ){
1174
        while( my $transfer = $transfers->next ){
1166
            $transfer->datearrived( dt_from_string() )->store;
1175
            $transfer->datearrived( dt_from_string() )->store;
1167
        };
1176
        };
1168
     } else {
1177
    }
1169
        $hold->set_transfer();
1170
     }
1171
1178
1172
1179
1173
    _FixPriority( { biblionumber => $biblionumber } );
1180
    _FixPriority( { biblionumber => $biblionumber } );
Lines 1546-1552 sub _FixPriority { Link Here
1546
            UPDATE reserves
1553
            UPDATE reserves
1547
            SET    priority = 0
1554
            SET    priority = 0
1548
            WHERE reserve_id = ?
1555
            WHERE reserve_id = ?
1549
            AND found IN ('W', 'T')
1556
            AND found IN ('W', 'T', 'P')
1550
        ";
1557
        ";
1551
        my $sth = $dbh->prepare($query);
1558
        my $sth = $dbh->prepare($query);
1552
        $sth->execute( $reserve_id );
1559
        $sth->execute( $reserve_id );
Lines 1558-1564 sub _FixPriority { Link Here
1558
        SELECT reserve_id, borrowernumber, reservedate
1565
        SELECT reserve_id, borrowernumber, reservedate
1559
        FROM   reserves
1566
        FROM   reserves
1560
        WHERE  biblionumber   = ?
1567
        WHERE  biblionumber   = ?
1561
          AND  ((found <> 'W' AND found <> 'T') OR found IS NULL)
1568
          AND  ((found <> 'W' AND found <> 'T' AND found <> 'P') OR found IS NULL)
1562
        ORDER BY priority ASC
1569
        ORDER BY priority ASC
1563
    ";
1570
    ";
1564
    my $sth = $dbh->prepare($query);
1571
    my $sth = $dbh->prepare($query);
Lines 1970-1976 sub MergeHolds { Link Here
1970
"UPDATE reserves SET priority = ? WHERE biblionumber = ? AND borrowernumber = ?
1977
"UPDATE reserves SET priority = ? WHERE biblionumber = ? AND borrowernumber = ?
1971
        AND reservedate = ? AND (itemnumber = ? or itemnumber is NULL) "
1978
        AND reservedate = ? AND (itemnumber = ? or itemnumber is NULL) "
1972
        );
1979
        );
1973
        $sth->execute( $to_biblio, 'W', 'T' );
1980
        $sth->execute( $to_biblio, 'W', 'T', 'P' );
1974
        my $priority = 1;
1981
        my $priority = 1;
1975
        while ( my $reserve = $sth->fetchrow_hashref() ) {
1982
        while ( my $reserve = $sth->fetchrow_hashref() ) {
1976
            $upd_sth->execute(
1983
            $upd_sth->execute(
Lines 2140-2146 sub CalculatePriority { Link Here
2140
        AND   priority > 0
2147
        AND   priority > 0
2141
        AND   (found IS NULL OR found = '')
2148
        AND   (found IS NULL OR found = '')
2142
    };
2149
    };
2143
    #skip found==W or found==T (waiting or transit holds)
2150
    #skip found==W or found==T or found==P (waiting, transit or processing holds)
2144
    if( $resdate ) {
2151
    if( $resdate ) {
2145
        $sql.= ' AND ( reservedate <= ? )';
2152
        $sql.= ' AND ( reservedate <= ? )';
2146
    }
2153
    }
(-)a/C4/RotatingCollections.pm (-1 / +1 lines)
Lines 452-458 sub TransferCollection { Link Here
452
            barcode => $item->{barcode},
452
            barcode => $item->{barcode},
453
            ignore_reserves => 1,
453
            ignore_reserves => 1,
454
            trigger => 'RotatingCollection'
454
            trigger => 'RotatingCollection'
455
        }) unless ( $status eq 'Waiting' || @transfers );
455
        }) unless ( $status eq 'Waiting' || $status eq 'Processing' || @transfers );
456
    }
456
    }
457
457
458
    return 1;
458
    return 1;
(-)a/Koha/Hold.pm (-2 / +33 lines)
Lines 96-101 sub suspend_hold { Link Here
96
        elsif ( $self->is_in_transit ) {
96
        elsif ( $self->is_in_transit ) {
97
            Koha::Exceptions::Hold::CannotSuspendFound->throw( status => 'T' );
97
            Koha::Exceptions::Hold::CannotSuspendFound->throw( status => 'T' );
98
        }
98
        }
99
        elsif ( $self->is_in_processing ) {
100
            Koha::Exceptions::Hold::CannotSuspendFound->throw( status => 'P' );
101
        }
99
        else {
102
        else {
100
            Koha::Exceptions::Hold::CannotSuspendFound->throw(
103
            Koha::Exceptions::Hold::CannotSuspendFound->throw(
101
                      'Unhandled data exception on found hold (id='
104
                      'Unhandled data exception on found hold (id='
Lines 217-225 sub set_waiting { Link Here
217
    return $self;
220
    return $self;
218
}
221
}
219
222
223
=head3 set_processing
224
225
=cut
226
227
sub set_processing {
228
    my ( $self ) = @_;
229
230
    $self->priority(0);
231
    $self->found('P');
232
    $self->store();
233
234
    return $self;
235
}
236
220
=head3 is_found
237
=head3 is_found
221
238
222
Returns true if hold is a waiting or in transit
239
Returns true if hold is waiting, in transit or in processing
223
240
224
=cut
241
=cut
225
242
Lines 229-234 sub is_found { Link Here
229
    return 0 unless $self->found();
246
    return 0 unless $self->found();
230
    return 1 if $self->found() eq 'W';
247
    return 1 if $self->found() eq 'W';
231
    return 1 if $self->found() eq 'T';
248
    return 1 if $self->found() eq 'T';
249
    return 1 if $self->found() eq 'P';
232
}
250
}
233
251
234
=head3 is_waiting
252
=head3 is_waiting
Lines 257-262 sub is_in_transit { Link Here
257
    return $self->found() eq 'T';
275
    return $self->found() eq 'T';
258
}
276
}
259
277
278
=head3 is_in_processing
279
280
Returns true if hold is a in_processing hold
281
282
=cut
283
284
sub is_in_processing {
285
    my ($self) = @_;
286
287
    return 0 unless $self->found();
288
    return $self->found() eq 'P';
289
}
290
260
=head3 is_cancelable_from_opac
291
=head3 is_cancelable_from_opac
261
292
262
Returns true if hold is a cancelable hold
293
Returns true if hold is a cancelable hold
Lines 271-277 sub is_cancelable_from_opac { Link Here
271
    my ($self) = @_;
302
    my ($self) = @_;
272
303
273
    return 1 unless $self->is_found();
304
    return 1 unless $self->is_found();
274
    return 0; # if ->is_in_transit or if ->is_waiting
305
    return 0; # if ->is_in_transit or if ->is_waiting or ->is_in_processing
275
}
306
}
276
307
277
=head3 is_at_destination
308
=head3 is_at_destination
(-)a/circ/returns.pl (-15 / +11 lines)
Lines 432-452 if ( $messages->{'ResFound'}) { Link Here
432
                diffbranch     => 1,
432
                diffbranch     => 1,
433
            );
433
            );
434
        }
434
        }
435
    }
435
    } elsif ( $reserve->{'ResFound'} eq "Waiting" ) {
436
    elsif ( $reserve->{'ResFound'} eq "Waiting" or $reserve->{'ResFound'} eq "Reserved" ) {
436
        $template->param(
437
        if ( $reserve->{'ResFound'} eq "Waiting" ) {
437
            waiting      => $branchCheck ? 1 : undef,
438
            $template->param(
438
        );
439
                waiting      => $branchCheck ? 1 : undef,
439
    } elsif ( $reserve->{'ResFound'} eq "Reserved" || $reserve->{'ResFound'} eq "Processing" ) {
440
            );
440
        $template->param(
441
        } elsif ( $reserve->{'ResFound'} eq "Reserved" ) {
441
            intransit    => $branchCheck ? undef : 1,
442
            $template->param(
442
            transfertodo => $branchCheck ? undef : 1,
443
                intransit    => $branchCheck ? undef : 1,
443
            reserve_id   => $reserve->{reserve_id},
444
                transfertodo => $branchCheck ? undef : 1,
444
            reserved     => 1,
445
                reserve_id   => $reserve->{reserve_id},
445
        );
446
                reserved     => 1,
447
            );
448
        }
449
450
    } # else { ; }  # error?
446
    } # else { ; }  # error?
451
447
452
    # same params for Waiting or Reserved
448
    # same params for Waiting or Reserved
(-)a/installer/data/mysql/atomicupdate/bug_12556.perl (+8 lines)
Line 0 Link Here
1
$DBversion = 'XXX'; # will be replaced by the RM
2
if( CheckVersion( $DBversion ) ) {
3
    $dbh->do(q{
4
        INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) VALUES
5
        ('HoldsNeedProcessingSIP', '0', NULL, 'Require staff to check-in before hold is set to waiting state', 'YesNo' )
6
    });
7
    NewVersion( $DBversion, 12556, "Add new syspref HoldsNeedProcessingSIP");
8
}
(-)a/installer/data/mysql/sysprefs.sql (+1 lines)
Lines 226-231 INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` Link Here
226
('HoldsAutoFill','0',NULL,'If on, librarian will not be asked if hold should be filled, it will be filled automatically','YesNo'),
226
('HoldsAutoFill','0',NULL,'If on, librarian will not be asked if hold should be filled, it will be filled automatically','YesNo'),
227
('HoldsAutoFillPrintSlip','0',NULL,'If on, hold slip print dialog will be displayed automatically','YesNo'),
227
('HoldsAutoFillPrintSlip','0',NULL,'If on, hold slip print dialog will be displayed automatically','YesNo'),
228
('HoldsLog','0',NULL,'If ON, log create/cancel/suspend/resume actions on holds.','YesNo'),
228
('HoldsLog','0',NULL,'If ON, log create/cancel/suspend/resume actions on holds.','YesNo'),
229
('HoldsNeedProcessingSIP', '0', NULL, 'Require staff to check-in before hold is set to waiting state', 'YesNo' ),
229
('HoldsQueueSkipClosed', '0', NULL, 'If enabled, any libraries that are closed when the holds queue is built will be ignored for the purpose of filling holds.', 'YesNo'),
230
('HoldsQueueSkipClosed', '0', NULL, 'If enabled, any libraries that are closed when the holds queue is built will be ignored for the purpose of filling holds.', 'YesNo'),
230
('HoldsSplitQueue','nothing','nothing|branch|itemtype|branch_itemtype','In the staff client, split the holds view by the given criteria','Choice'),
231
('HoldsSplitQueue','nothing','nothing|branch|itemtype|branch_itemtype','In the staff client, split the holds view by the given criteria','Choice'),
231
('HoldsToPullStartDate','2',NULL,'Set the default start date for the Holds to pull list to this many days ago','Integer'),
232
('HoldsToPullStartDate','2',NULL,'Set the default start date for the Holds to pull list to this many days ago','Integer'),
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc (-5 / +5 lines)
Lines 41-46 Link Here
41
                    [% IF ( hold.found ) %]
41
                    [% IF ( hold.found ) %]
42
                        [% IF ( hold.intransit ) %]
42
                        [% IF ( hold.intransit ) %]
43
                            <option value="T" selected="selected">In transit</option>
43
                            <option value="T" selected="selected">In transit</option>
44
                        [% ELSIF (hold.inprocessing) %]
45
                            <option value="P" selected="selected">In processing</option>
44
                        [% ELSE %]
46
                        [% ELSE %]
45
                            <option value="W" selected="selected">Waiting</option>
47
                            <option value="W" selected="selected">Waiting</option>
46
                        [% END %]
48
                        [% END %]
Lines 120-132 Link Here
120
            <td>
122
            <td>
121
                [% IF ( hold.found ) %]
123
                [% IF ( hold.found ) %]
122
                    [% IF ( hold.atdestination ) %]
124
                    [% IF ( hold.atdestination ) %]
123
                        [% IF ( hold.found ) %]
124
                            Item waiting at <b> [% hold.wbrname | html %]</b> <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" /> since [% hold.waiting_date | $KohaDates %]
125
                            Item waiting at <b> [% hold.wbrname | html %]</b> <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" /> since [% hold.waiting_date | $KohaDates %]
125
                        [% ELSE %]
126
                    [% ELSIF (hold.intransit) %]
126
                            Waiting to be pulled <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" />
127
                        [% END %]
128
                    [% ELSE %]
129
                        Item being transferred to <b> [% hold.wbrname | html %]</b> <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" />
127
                        Item being transferred to <b> [% hold.wbrname | html %]</b> <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" />
128
                    [% ELSIF (hold.inprocessing) %]
129
                        Item being processed at <b> [% hold.wbrname | html %]</b> <input type="hidden" name="pickup" value="[% hold.wbrcode | html %]" />
130
                    [% END %]
130
                    [% END %]
131
                [% ELSE %]
131
                [% ELSE %]
132
                    [% IF Koha.Preference('IndependentBranches') && Branches.all().size == 1 %]
132
                    [% IF Koha.Preference('IndependentBranches') && Branches.all().size == 1 %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (+6 lines)
Lines 545-550 Circulation: Link Here
545
                  no: "Don't"
545
                  no: "Don't"
546
            - automatically fill holds instead of asking the librarian.
546
            - automatically fill holds instead of asking the librarian.
547
        -
547
        -
548
            - pref: HoldsNeedProcessingSIP
549
              choices:
550
                  yes: "Don't fulfill"
551
                  no: Fulfill
552
            - holds automatically if matching item is returned via SIP protocol.
553
        -
548
            - pref: HoldsAutoFillPrintSlip
554
            - pref: HoldsAutoFillPrintSlip
549
              choices:
555
              choices:
550
                  yes: Do
556
                  yes: Do
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/holdshistory.tt (+2 lines)
Lines 99-104 Link Here
99
              Cancelled
99
              Cancelled
100
          [% ELSIF hold.found == 'W' %]
100
          [% ELSIF hold.found == 'W' %]
101
              Waiting
101
              Waiting
102
          [% ELSIF hold.found == 'P' %]
103
              Processing
102
          [% ELSIF hold.found == 'T' %]
104
          [% ELSIF hold.found == 'T' %]
103
              In transit
105
              In transit
104
          [% ELSE %]
106
          [% ELSE %]
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/includes/holds-table.inc (-1 / +3 lines)
Lines 34-40 Link Here
34
            <tbody>
34
            <tbody>
35
                [% SET all_holds_waiting = 1 %]
35
                [% SET all_holds_waiting = 1 %]
36
                [% FOREACH HOLD IN HOLDS %]
36
                [% FOREACH HOLD IN HOLDS %]
37
                    [% UNLESS ( HOLD.is_waiting || HOLD.is_in_transit ) %]
37
                    [% UNLESS ( HOLD.is_waiting || HOLD.is_in_transit || HOLD.is_in_processing) %]
38
                        [% SET all_holds_waiting = 0 %]
38
                        [% SET all_holds_waiting = 0 %]
39
                    [% END %]
39
                    [% END %]
40
                    [% IF ( HOLD.is_at_destination ) %]
40
                    [% IF ( HOLD.is_at_destination ) %]
Lines 114-119 Link Here
114
                                    [% SET transfer = HOLD.item.get_transfer %]
114
                                    [% SET transfer = HOLD.item.get_transfer %]
115
                                    Item in transit from <strong> [% Branches.GetName( transfer.frombranch ) | html %]</strong> since
115
                                    Item in transit from <strong> [% Branches.GetName( transfer.frombranch ) | html %]</strong> since
116
                                    [% transfer.datesent | $KohaDates %]
116
                                    [% transfer.datesent | $KohaDates %]
117
                                [% ELSIF ( HOLD.is_in_processing ) %]
118
                                    Item in processing
117
                                [% ELSIF ( HOLD.suspend ) %]
119
                                [% ELSIF ( HOLD.suspend ) %]
118
                                    Suspended [% IF ( HOLD.suspend_until ) %] until [% HOLD.suspend_until | $KohaDates %] [% END %]
120
                                    Suspended [% IF ( HOLD.suspend_until ) %] until [% HOLD.suspend_until | $KohaDates %] [% END %]
119
                                [% ELSE %]
121
                                [% ELSE %]
(-)a/reserve/request.pl (+1 lines)
Lines 666-671 foreach my $biblionumber (@biblionumbers) { Link Here
666
            $reserve{'wbrname'}       = $res->branch()->branchname();
666
            $reserve{'wbrname'}       = $res->branch()->branchname();
667
            $reserve{'atdestination'} = $res->is_at_destination();
667
            $reserve{'atdestination'} = $res->is_at_destination();
668
            $reserve{'found'}     = $res->is_found();
668
            $reserve{'found'}     = $res->is_found();
669
            $reserve{'inprocessing'} = $res->is_in_processing();
669
            $reserve{'intransit'} = $res->is_in_transit();
670
            $reserve{'intransit'} = $res->is_in_transit();
670
        }
671
        }
671
        elsif ( $res->priority() > 0 ) {
672
        elsif ( $res->priority() > 0 ) {
(-)a/t/db_dependent/Hold.t (-3 / +18 lines)
Lines 29-35 use Koha::Item; Link Here
29
use Koha::DateUtils;
29
use Koha::DateUtils;
30
use t::lib::TestBuilder;
30
use t::lib::TestBuilder;
31
31
32
use Test::More tests => 29;
32
use Test::More tests => 33;
33
use Test::Exception;
33
use Test::Exception;
34
use Test::Warn;
34
use Test::Warn;
35
35
Lines 112-121 isnt( $hold->is_waiting, 1, 'The hold is not waiting (T)' ); Link Here
112
is( $hold->is_found, 1, 'The hold is found');
112
is( $hold->is_found, 1, 'The hold is found');
113
is( $hold->is_in_transit, 1, 'The hold is in transit' );
113
is( $hold->is_in_transit, 1, 'The hold is in transit' );
114
114
115
$hold->found('P');
116
is( $hold->is_found, 1, 'The hold is found');
117
is( $hold->is_in_processing, 1, 'The hold is in processing' );
118
115
$hold->found(q{});
119
$hold->found(q{});
116
isnt( $hold->is_waiting, 1, 'The hold is not waiting (W)' );
120
isnt( $hold->is_waiting, 1, 'The hold is not waiting (W)' );
117
is( $hold->is_found, 0, 'The hold is not found' );
121
is( $hold->is_found, 0, 'The hold is not found' );
118
ok( !$hold->is_in_transit, 'The hold is not in transit' );
122
ok( !$hold->is_in_transit, 'The hold is not in transit' );
123
ok( !$hold->is_in_processing, 'The hold is not in processing' );
119
124
120
# Test method is_cancelable_from_opac
125
# Test method is_cancelable_from_opac
121
$hold->found(undef);
126
$hold->found(undef);
Lines 124-129 $hold->found('W'); Link Here
124
is( $hold->is_cancelable_from_opac, 0, "Waiting hold is not cancelable" );
129
is( $hold->is_cancelable_from_opac, 0, "Waiting hold is not cancelable" );
125
$hold->found('T');
130
$hold->found('T');
126
is( $hold->is_cancelable_from_opac, 0, "In transit hold is not cancelable" );
131
is( $hold->is_cancelable_from_opac, 0, "In transit hold is not cancelable" );
132
$hold->found('P');
133
is( $hold->is_cancelable_from_opac, 0, "In processing hold is not cancelable" );
127
134
128
# Test method is_at_destination
135
# Test method is_at_destination
129
$hold->found(undef);
136
$hold->found(undef);
Lines 178-184 subtest "delete() tests" => sub { Link Here
178
185
179
subtest 'suspend() tests' => sub {
186
subtest 'suspend() tests' => sub {
180
187
181
    plan tests => 16;
188
    plan tests => 18;
182
189
183
    $schema->storage->txn_begin;
190
    $schema->storage->txn_begin;
184
191
Lines 232-237 subtest 'suspend() tests' => sub { Link Here
232
239
233
    is( $@->status, 'T', 'Exception gets the \'status\' parameter set correctly' );
240
    is( $@->status, 'T', 'Exception gets the \'status\' parameter set correctly' );
234
241
242
    # set hold found=T
243
    $hold->set_processing();
244
    throws_ok
245
        { $hold->suspend_hold; }
246
        'Koha::Exceptions::Hold::CannotSuspendFound',
247
        'Exception is thrown when a found hold is tried to suspend';
248
249
    is( $@->status, 'P', 'Exception gets the \'status\' parameter set correctly' );
250
235
    my $holds_module = Test::MockModule->new('Koha::Hold');
251
    my $holds_module = Test::MockModule->new('Koha::Hold');
236
    $holds_module->mock( 'is_found', 1 );
252
    $holds_module->mock( 'is_found', 1 );
237
253
238
- 

Return to bug 12556