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

(-)a/Koha/Schema/Result/Reserve.pm (+12 lines)
Lines 377-380 sub koha_objects_class { Link Here
377
    'Koha::Holds';
377
    'Koha::Holds';
378
}
378
}
379
379
380
__PACKAGE__->belongs_to(
381
  "itembib",
382
  "Koha::Schema::Result::Item",
383
  { biblionumber => "biblionumber" },
384
  {
385
    is_deferrable => 1,
386
    join_type     => "LEFT",
387
    on_delete     => "CASCADE",
388
    on_update     => "CASCADE",
389
  },
390
);
391
380
1;
392
1;
(-)a/circ/pendingreserves.pl (-115 / +167 lines)
Lines 152-288 unless ( $enddate ) { Link Here
152
    $enddate = $today + DateTime::Duration->new( days => C4::Context->preference('ConfirmFutureHolds') || 0 );
152
    $enddate = $today + DateTime::Duration->new( days => C4::Context->preference('ConfirmFutureHolds') || 0 );
153
}
153
}
154
154
155
my @reservedata;
155
# building query parameters
156
my $dbh = C4::Context->dbh;
156
my %where = (
157
my $sqldatewhere = "";
157
    'reserve.found' => undef,
158
    'reserve.suspend' => 0,
159
    'itembib.itemlost' => 0,
160
    'itembib.withdrawn' => 0,
161
    'itembib.notforloan' => 0,
162
    'itembib.itemnumber' => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' }
163
);
164
165
# date boundaries
158
my $startdate_iso = output_pref({ dt => $startdate, dateformat => 'iso', dateonly => 1 });
166
my $startdate_iso = output_pref({ dt => $startdate, dateformat => 'iso', dateonly => 1 });
159
my $enddate_iso   = output_pref({ dt => $enddate, dateformat => 'iso', dateonly => 1 });
167
my $enddate_iso   = output_pref({ dt => $enddate, dateformat => 'iso', dateonly => 1 });
160
168
if ( $startdate_iso && $enddate_iso ){
161
$debug and warn $startdate_iso. "\n" . $enddate_iso;
169
    $where{'reserve.reservedate'} = [ -and => { '>=', $startdate_iso }, { '<=', $enddate_iso } ];
162
170
} elsif ( $startdate_iso ){
163
my @query_params = ();
171
    $where{'reserve.reservedate'} = { '>=', $startdate_iso };
164
172
} elsif ( $enddate_iso ){
165
if ($startdate_iso) {
173
    $where{'reserve.reservedate'} = { '<=', $enddate_iso };
166
    $sqldatewhere .= " AND reservedate >= ?";
167
    push @query_params, $startdate_iso;
168
}
169
if ($enddate_iso) {
170
    $sqldatewhere .= " AND reservedate <= ?";
171
    push @query_params, $enddate_iso;
172
}
174
}
173
175
174
my $item_type = C4::Context->preference('item-level_itypes') ? "items.itype" : "biblioitems.itemtype";
175
176
# Bug 21320
176
# Bug 21320
177
if ( ! C4::Context->preference('AllowHoldsOnDamagedItems') ) {
177
if ( !C4::Context->preference('AllowHoldsOnDamagedItems') ){
178
    $sqldatewhere .= " AND damaged = 0";
178
    $where{'itembib.damaged'} = 0;
179
}
179
}
180
180
181
my $strsth =
181
if ( C4::Context->preference('IndependentBranches') ){
182
    "SELECT min(reservedate) as l_reservedate,
182
    $where{'itembib.holdingbranch'} = C4::Context->userenv->{'branch'};
183
            reserves.reserve_id,
184
            reserves.borrowernumber as borrowernumber,
185
186
            GROUP_CONCAT(DISTINCT items.holdingbranch 
187
                    ORDER BY items.itemnumber SEPARATOR '|') l_holdingbranch,
188
            reserves.biblionumber,
189
            reserves.branchcode as l_branch,
190
            reserves.itemnumber,
191
            items.holdingbranch,
192
            items.homebranch,
193
            GROUP_CONCAT(DISTINCT $item_type
194
                    ORDER BY items.itemnumber SEPARATOR '|') l_item_type,
195
            GROUP_CONCAT(DISTINCT items.location 
196
                    ORDER BY items.itemnumber SEPARATOR '|') l_location,
197
            GROUP_CONCAT(DISTINCT items.itemcallnumber 
198
                    ORDER BY items.itemnumber SEPARATOR '|') l_itemcallnumber,
199
            GROUP_CONCAT(DISTINCT items.enumchron
200
                    ORDER BY items.itemnumber SEPARATOR '|') l_enumchron,
201
            GROUP_CONCAT(DISTINCT items.copynumber
202
                    ORDER BY items.itemnumber SEPARATOR '|') l_copynumber,
203
            biblio.title,
204
            biblio.subtitle,
205
            biblio.medium,
206
            biblio.part_number,
207
            biblio.part_name,
208
            biblio.author,
209
            biblioitems.editionstatement,
210
            count(DISTINCT items.itemnumber) as icount,
211
            count(DISTINCT reserves.borrowernumber) as rcount,
212
            borrowers.firstname,
213
            borrowers.surname
214
    FROM  reserves
215
        LEFT JOIN items ON items.biblionumber=reserves.biblionumber 
216
        LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
217
        LEFT JOIN biblioitems ON biblio.biblionumber=biblioitems.biblionumber
218
        LEFT JOIN branchtransfers ON items.itemnumber=branchtransfers.itemnumber
219
        LEFT JOIN issues ON items.itemnumber=issues.itemnumber
220
        LEFT JOIN borrowers ON reserves.borrowernumber=borrowers.borrowernumber
221
        LEFT JOIN circulation_rules ON ( items.itype=circulation_rules.itemtype AND rule_name = 'holdallowed' AND circulation_rules.branchcode IS NULL AND circulation_rules.categorycode IS NULL )
222
    WHERE
223
    reserves.found IS NULL
224
    $sqldatewhere
225
    AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber)
226
    AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL)
227
    AND items.itemnumber NOT IN (select itemnumber FROM reserves where found IS NOT NULL)
228
    AND issues.itemnumber IS NULL
229
    AND reserves.priority <> 0 
230
    AND reserves.suspend = 0
231
    AND notforloan = 0 AND itemlost = 0 AND withdrawn = 0
232
    AND ( circulation_rules.rule_value IS NULL OR circulation_rules.rule_value != 0 )
233
    ";
234
    # GROUP BY reserves.biblionumber allows only items that are not checked out, else multiples occur when 
235
    #    multiple patrons have a hold on an item
236
237
238
if (C4::Context->preference('IndependentBranches')){
239
    $strsth .= " AND items.holdingbranch=? ";
240
    push @query_params, C4::Context->userenv->{'branch'};
241
}
183
}
242
$strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title ";
184
243
185
# get all distinct unfulfilled reserves
244
my $sth = $dbh->prepare($strsth);
186
my @distinct_holds = Koha::Holds->search(
245
$sth->execute(@query_params);
187
    { %where },
246
188
    { join => 'itembib', group_by => 'reserve.biblionumber', alias => 'reserve' }
247
while ( my $data = $sth->fetchrow_hashref ) {
189
);
248
    push(
190
249
        @reservedata, {
191
# make final reserves hash and fill with info
250
            reservedate      => $data->{l_reservedate},
192
my $reserves;
251
            firstname        => $data->{firstname} || '',
193
foreach my $dh ( @distinct_holds ){
252
            surname          => $data->{surname},
194
253
            title            => $data->{title},
195
    my $bibnum = $dh->biblionumber;
254
            editionstatement => $data->{editionstatement},
196
255
            subtitle         => $data->{subtitle},
197
    # check for checkouts
256
            medium           => $data->{medium},
198
    my $bib_has_checkouts = 0;
257
            part_number      => $data->{part_number},
199
258
            part_name        => $data->{part_name},
200
    my @items = Koha::Items->search({ biblionumber => $bibnum });
259
            author           => $data->{author},
201
    foreach my $i ( @items ){
260
            borrowernumber   => $data->{borrowernumber},
202
        if ( $i->checkout ){
261
            biblionumber     => $data->{biblionumber},
203
            $bib_has_checkouts++;
262
            holdingbranches  => [split('\|', $data->{l_holdingbranch})],
204
            last;
263
            branch           => $data->{l_branch},
264
            itemcallnumber   => [split('\|', $data->{l_itemcallnumber})],
265
            enumchron        => [split('\|', $data->{l_enumchron})],
266
            copyno           => [split('\|', $data->{l_copynumber})],
267
            count            => $data->{icount},
268
            rcount           => $data->{rcount},
269
            pullcount        => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount},
270
            itemTypes        => [split('\|', $data->{l_item_type})],
271
            locations        => [split('\|', $data->{l_location})],
272
            reserve_id       => $data->{reserve_id},
273
            holdingbranch    => $data->{holdingbranch},
274
            homebranch       => $data->{homebranch},
275
            itemnumber       => $data->{itemnumber},
276
        }
205
        }
206
    }
207
    if ( $bib_has_checkouts > 0 ){
208
        next;
209
    }
210
211
    # get available item types for each biblio
212
    my $res_itemtypes;
213
    if ( C4::Context->preference('item-level_itypes') ){
214
        $res_itemtypes = Koha::Items->search(
215
            { biblionumber => $bibnum,
216
              itype => { '!=', undef },
217
              itemlost => 0,
218
              withdrawn => 0,
219
              notforloan => 0,
220
              itemnumber => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' },
221
            },
222
            { group_by => 'itype' }
223
        );
224
    } else {
225
        $res_itemtypes = Koha::Biblioitems->search(
226
            { biblionumber => $bibnum, itemtype => { '!=', undef }  },
227
            { group_by => 'itemtype' }
228
        );
229
    }
230
    $reserves->{$bibnum}->{itemtypes} = $res_itemtypes;
231
232
    # get available locations for each biblio
233
    my $res_locations = Koha::Items->search(
234
        { biblionumber => $bibnum,
235
          location => { '!=', undef },
236
          itemlost => 0,
237
          withdrawn => 0,
238
          notforloan => 0,
239
          itemnumber => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' },
240
        },
241
        { group_by => 'location' }
242
    );
243
    $reserves->{$bibnum}->{locations} = $res_locations;
244
245
    # get available callnumbers for each biblio
246
    my $res_callnumbers = Koha::Items->search(
247
        { biblionumber => $bibnum,
248
          itemcallnumber => { '!=', undef },
249
          itemlost => 0,
250
          withdrawn => 0,
251
          notforloan => 0,
252
          itemnumber => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' },
253
        },
254
        { group_by => 'itemcallnumber' }
255
    );
256
    $reserves->{$bibnum}->{callnumbers} = $res_callnumbers;
257
258
    # get available enumchrons for each biblio
259
    my $res_enumchrons = Koha::Items->search(
260
        { biblionumber => $bibnum,
261
          enumchron => { '!=', undef },
262
          itemlost => 0,
263
          withdrawn => 0,
264
          notforloan => 0,
265
          itemnumber => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' },
266
        },
267
        { group_by => 'enumchron' }
268
    );
269
    $reserves->{$bibnum}->{enumchrons} = $res_enumchrons;
270
271
    # get available copynumbers for each biblio
272
    my $res_copynumbers = Koha::Items->search(
273
        { biblionumber => $bibnum,
274
          copynumber => { '!=', undef },
275
          itemlost => 0,
276
          withdrawn => 0,
277
          notforloan => 0,
278
          itemnumber => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' },
279
        },
280
        { group_by => 'copynumber' }
277
    );
281
    );
282
    $reserves->{$bibnum}->{copynumbers} = $res_copynumbers;
283
284
    # get available holding branches for each biblio
285
    my $res_holdingbranches = Koha::Items->search(
286
        { biblionumber => $bibnum,
287
          holdingbranch => { '!=', undef },
288
          itemlost => 0,
289
          withdrawn => 0,
290
          notforloan => 0,
291
          itemnumber => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' },
292
        },
293
        { group_by => 'holdingbranch' }
294
    );
295
    $reserves->{$bibnum}->{holdingbranches} = $res_holdingbranches;
296
297
    # items available
298
    my $items_count = Koha::Items->search(
299
        { biblionumber => $bibnum,
300
          itemlost => 0,
301
          withdrawn => 0,
302
          notforloan => 0,
303
          itemnumber => { -not_in => \'SELECT itemnumber FROM branchtransfers WHERE datearrived IS NULL' },
304
        },
305
        { select => [ { distinct => 'itemnumber' } ] }
306
    )->count;
307
    $reserves->{$bibnum}->{items_count} = $items_count;
308
309
    # patrons with holds
310
    my $patrons_count = Koha::Holds->search(
311
        { biblionumber => $bibnum },
312
        { select => [ { distinct => 'borrowernumber' } ] }
313
    )->count;
314
    $reserves->{$bibnum}->{patrons_count} = $patrons_count;
315
316
    my $pull_count = $items_count <= $patrons_count ? $items_count : $patrons_count;
317
    $reserves->{$bibnum}->{pull_count} = $pull_count;
318
319
    # get other relevant information
320
    my $res_info = Koha::Holds->search(
321
        { 'reserve.biblionumber' => $bibnum, %where },
322
        { prefetch => [ 'borrowernumber', 'itembib', 'biblio' ],
323
          order_by => 'reserve.reservedate',
324
          alias => 'reserve'
325
        }
326
    )->next; # get first item in results
327
    $reserves->{$bibnum}->{borrower} = $res_info->borrower;
328
    $reserves->{$bibnum}->{item} = $res_info->item;
329
    $reserves->{$bibnum}->{biblio} = $res_info->biblio;
330
    $reserves->{$bibnum}->{reserve} = $res_info;
278
}
331
}
279
$sth->finish;
280
332
281
$template->param(
333
$template->param(
282
    todaysdate          => $today,
334
    todaysdate          => $today,
283
    from                => $startdate,
335
    from                => $startdate,
284
    to                  => $enddate,
336
    to                  => $enddate,
285
    reserveloop         => \@reservedata,
337
    reserves            => $reserves,
286
    "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
338
    "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
287
    HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL,
339
    HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL,
288
    HoldsToPullEndDate  => C4::Context->preference('ConfirmFutureHolds') || 0,
340
    HoldsToPullEndDate  => C4::Context->preference('ConfirmFutureHolds') || 0,
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt (-41 / +39 lines)
Lines 47-53 Link Here
47
<h3>Reported on [% todaysdate | $KohaDates %]</h3>
47
<h3>Reported on [% todaysdate | $KohaDates %]</h3>
48
<p>The following holds have not been filled. Please retrieve them and check them in.</p>
48
<p>The following holds have not been filled. Please retrieve them and check them in.</p>
49
<div id="searchresults">
49
<div id="searchresults">
50
    [% IF ( reserveloop ) %]
50
    [% IF ( reserves ) %]
51
    <table id="holdst">
51
    <table id="holdst">
52
    <thead>
52
    <thead>
53
        <tr>
53
        <tr>
Lines 67-86 Link Here
67
        </tr>
67
        </tr>
68
    </thead>
68
    </thead>
69
    <tbody>
69
    <tbody>
70
        [% FOREACH reserveloo IN reserveloop %]
70
        [% FOREACH reserve IN reserves %]
71
        <tr>
71
        <tr>
72
        [% IF ( reserveloo.borrowernumber ) %]
72
        [% IF ( reserve.value.borrower ) %]
73
            <td><p><b>[% reserveloo.pullcount | html %]</b></p></td>
73
            <td><p><b>[% reserve.value.pull_count | html %]</b></p></td>
74
            <td>[% reserveloo.count | html %]</td>
74
            <td>[% reserve.value.items_count | html %]</td>
75
            <td>[% reserveloo.rcount | html %]</td>
75
            <td>[% reserve.value.patrons_count | html %]</td>
76
            <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserveloo.borrowernumber | uri %]">[% reserveloo.firstname | html %] [% reserveloo.surname | html %]</a></td>
76
            <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserve.value.borrower.borrowernumber | uri %]">[% reserve.value.borrower.firstname | html %] [% reserve.value.borrower.surname | html %]</a></td>
77
            <td>
77
            <td>
78
            <p>
78
            <p>
79
                [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %]
79
                [% INCLUDE 'biblio-default-view.inc' biblionumber = reserve.value.biblio.biblionumber %]
80
                    [% INCLUDE 'biblio-title.inc' biblio=reserveloo %]
80
                    [% INCLUDE 'biblio-title.inc' biblio=reserve.value.biblio %]
81
                </a></p>
81
                </a></p>
82
                [% IF ( reserveloo.author ) %]<p> by [% reserveloo.author | html %]</p>[% END %]
82
                [% IF ( reserve.value.biblio.biblioitem.editionstatement ) %]<p>[% reserve.value.biblio.biblioitem.editionstatement | html %]</p>[% END %]
83
                [% IF ( reserveloo.editionstatement ) %]<p>[% reserveloo.editionstatement | html %]</p>[% END %]
83
                [% IF ( reserve.value.biblio.author ) %]<p> by [% reserve.value.biblio.author | html %]</p>[% END %]
84
            </td>
84
            </td>
85
        [% ELSE %]
85
        [% ELSE %]
86
            <td>"</td>
86
            <td>"</td>
Lines 90-166 Link Here
90
            <td>"</td>
90
            <td>"</td>
91
        [% END %]
91
        [% END %]
92
        <td>
92
        <td>
93
            [% IF ( reserveloo.holdingbranches ) %]
93
            [% IF ( reserve.value.holdingbranches ) %]
94
               <ul>
94
                [% FOREACH holdingbranch IN reserve.value.holdingbranches %]
95
                    [% FOREACH holdingbranch IN reserveloo.holdingbranches %]
95
                    [% Branches.GetName ( holdingbranch.holdingbranch ) | html %]
96
                        <li>
96
                [% END %]
97
                            [% Branches.GetName ( holdingbranch ) | html %]
98
                        </li>
99
                    [% END %]
100
               </ul>
101
            [% END %]
97
            [% END %]
102
        </td>
98
        </td>
103
        <td>
99
        <td>
104
            [% IF ( reserveloo.itemcallnumber ) %]
100
            [% IF ( reserve.value.callnumbers ) %]
105
                <ul>
101
                <ul>
106
                    [% FOREACH itemcallnumber IN reserveloo.itemcallnumber  %]
102
                    [% FOREACH callnumber IN reserve.value.callnumbers %]
107
                        <li>
103
                        <li>
108
                            [% itemcallnumber | html %]
104
                            [% callnumber.itemcallnumber | html %]
109
                        </li>
105
                        </li>
110
                    [% END %]
106
                    [% END %]
111
                </ul>
107
                </ul>
112
            [% END %]
108
            [% END %]
113
        </td>
109
        </td>
114
        <td>
110
        <td>
115
            [% IF ( reserveloo.copyno ) %]
111
            [% IF ( reserve.value.copynumbers ) %]
116
                <ul>
112
                <ul>
117
                    [% FOREACH copyno IN reserveloo.copyno %]
113
                    [% FOREACH copyno IN reserve.value.copynumbers %]
118
                        <li>
114
                        <li>
119
                            [% copyno | html %]
115
                            [% copyno.copynumber | html %]
120
                        </li>
116
                        </li>
121
                    [% END %]
117
                    [% END %]
122
                </ul>
118
                </ul>
123
            [% END %]
119
            [% END %]
124
        </td>
120
        </td>
125
        <td>
121
        <td>
126
            [% IF ( reserveloo.enumchron ) %]
122
            [% IF ( reserve.value.enumchrons ) %]
127
                <ul>
123
                <ul>
128
                    [% FOREACH enumchron IN reserveloo.enumchron %]
124
                    [% FOREACH enumchron IN reserve.value.enumchrons %]
129
                        <li>
125
                        <li>
130
                            [% enumchron | html %]
126
                            [% enumchron.enumchron | html %]
131
                        </li>
127
                        </li>
132
                    [% END %]
128
                    [% END %]
133
                </ul>
129
                </ul>
134
            [% END %]
130
            [% END %]
135
        </td>
131
        </td>
136
        <td>
132
        <td>
137
        [% FOREACH itemType IN reserveloo.itemTypes %]
133
        [% FOREACH type IN reserve.value.itemtypes %]
138
            [% ItemTypes.GetDescription( itemType ) | html %]
134
            [% IF Koha.Preference('item-level_itypes') %]
135
                [% ItemTypes.GetDescription( type.itype ) | html %]
136
            [% ELSE %]
137
                [% ItemTypes.GetDescription( type.itemtype ) | html %]
138
            [% END %]
139
        [% END %]
139
        [% END %]
140
        </td>
140
        </td>
141
        <td>
141
        <td>
142
        [% FOREACH loc IN reserveloo.locations %]
142
        [% FOREACH loc IN reserve.value.locations %]
143
            [% AuthorisedValues.GetByCode('LOC', loc) | html %]
143
            [% AuthorisedValues.GetByCode('LOC', loc.location) | html %]
144
        [% END %]
144
        [% END %]
145
        </td>
145
        </td>
146
        <td>
146
        <td>
147
            <span title="[% reserveloo.reservedate | html %]">[% reserveloo.reservedate | $KohaDates %] in [% Branches.GetName ( reserveloo.branch ) | html %]</span>
147
            <span title="[% reserve.value.reserve.reservedate | html %]">[% reserve.value.reserve.reservedate | $KohaDates %] in [% Branches.GetName ( reserve.value.reserve.branchcode ) | html %]</span>
148
        </td>
148
        </td>
149
        <td>
149
        <td>
150
            <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
150
            <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
151
                <input type="hidden" name="op" value="cancel_reserve" />
151
                <input type="hidden" name="op" value="cancel_reserve" />
152
                <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id | html %]" />
152
                <input type="hidden" name="reserve_id" value="[% reserve.value.reserve.reserve_id | html %]" />
153
                [% IF reserveloo.holdingbranch != reserveloo.homebranch %]
153
                [% IF reserve.value.item.holdingbranch != reserve.value.item.homebranch %]
154
                    <input type="submit" value="Cancel hold and return to : [% Branches.GetName( reserveloo.homebranch ) | html %]" />
154
                    <input type="submit" value="Cancel hold and return to : [% Branches.GetName( reserve.value.itemhomebranch ) | html %]" />
155
                [% ELSE %]
155
                [% ELSE %]
156
                    <input type="submit" value="Cancel hold" />
156
                    <input type="submit" value="Cancel hold" />
157
                [% END %]
157
                [% END %]
158
            </form>
158
            </form>
159
159
160
        [% IF Koha.Preference('CanMarkHoldsToPullAsLost') != 'do_not_allow' %]
160
        [% IF Koha.Preference('CanMarkHoldsToPullAsLost') != 'do_not_allow' %]
161
            [% IF reserveloo.itemnumber %]
161
            [% IF reserve.value.reserve.itemnumber %]
162
                <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
162
                <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
163
                    <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id | html %]" />
163
                    <input type="hidden" name="reserve_id" value="[% reserve.value.reserve.reserve_id | html %]" />
164
                    [% IF Koha.Preference('CanMarkHoldsToPullAsLost') == 'allow' %]
164
                    [% IF Koha.Preference('CanMarkHoldsToPullAsLost') == 'allow' %]
165
                        <input type="hidden" name="op" value="mark_as_lost" />
165
                        <input type="hidden" name="op" value="mark_as_lost" />
166
                        <input type="submit" value="Mark item as lost" />
166
                        <input type="submit" value="Mark item as lost" />
Lines 288-295 Link Here
288
          $("#homebranchfilter").each( function () {
288
          $("#homebranchfilter").each( function () {
289
              $(this).html( createSelect( holdst.fnGetColumnData(5) ) );
289
              $(this).html( createSelect( holdst.fnGetColumnData(5) ) );
290
              $('select', this).change( function () {
290
              $('select', this).change( function () {
291
                  var filter_value = $(this).val();
291
                  holdst.fnFilter( $(this).child().val(), 5 );
292
                  holdst.fnFilter( filter_value, 5, true );
293
              });
292
              });
294
          });
293
          });
295
          $("#itemtype-filter").each( function () {
294
          $("#itemtype-filter").each( function () {
296
- 

Return to bug 24488