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 (-118 / +181 lines)
Lines 152-291 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
}
174
}
169
if ($enddate_iso) {
170
    $sqldatewhere .= " AND reservedate <= ?";
171
    push @query_params, $enddate_iso;
172
}
173
174
my $item_type = C4::Context->preference('item-level_itypes') ? "items.itype" : "biblioitems.itemtype";
175
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.copyrightdate,
205
            biblioitems.publicationyear,
206
            biblio.subtitle,
207
            biblio.medium,
208
            biblio.part_number,
209
            biblio.part_name,
210
            biblio.author,
211
            biblioitems.editionstatement,
212
            count(DISTINCT items.itemnumber) as icount,
213
            count(DISTINCT reserves.borrowernumber) as rcount,
214
            borrowers.firstname,
215
            borrowers.surname
216
    FROM  reserves
217
        LEFT JOIN items ON items.biblionumber=reserves.biblionumber 
218
        LEFT JOIN biblio ON reserves.biblionumber=biblio.biblionumber
219
        LEFT JOIN biblioitems ON biblio.biblionumber=biblioitems.biblionumber
220
        LEFT JOIN branchtransfers ON items.itemnumber=branchtransfers.itemnumber
221
        LEFT JOIN issues ON items.itemnumber=issues.itemnumber
222
        LEFT JOIN borrowers ON reserves.borrowernumber=borrowers.borrowernumber
223
        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 )
224
    WHERE
225
    reserves.found IS NULL
226
    $sqldatewhere
227
    AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber)
228
    AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL)
229
    AND items.itemnumber NOT IN (SELECT itemnumber FROM reserves WHERE found IS NOT NULL AND itemnumber IS NOT NULL)
230
    AND issues.itemnumber IS NULL
231
    AND reserves.priority <> 0 
232
    AND reserves.suspend = 0
233
    AND notforloan = 0 AND itemlost = 0 AND withdrawn = 0
234
    AND ( circulation_rules.rule_value IS NULL OR circulation_rules.rule_value != 0 )
235
    ";
236
    # GROUP BY reserves.biblionumber allows only items that are not checked out, else multiples occur when 
237
    #    multiple patrons have a hold on an item
238
#FIXME "found IS NOT NULL AND itemnumber IS NOT NULL" is just a workaround: see BZ 25726
239
240
if (C4::Context->preference('IndependentBranches')){
241
    $strsth .= " AND items.holdingbranch=? ";
242
    push @query_params, C4::Context->userenv->{'branch'};
243
}
183
}
244
$strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title ";
184
245
185
# get all distinct unfulfilled reserves
246
my $sth = $dbh->prepare($strsth);
186
my @distinct_holds = Koha::Holds->search(
247
$sth->execute(@query_params);
187
    { %where },
248
188
    { join => 'itembib', group_by => 'reserve.biblionumber', alias => 'reserve' }
249
while ( my $data = $sth->fetchrow_hashref ) {
189
);
250
    push(
190
251
        @reservedata, {
191
# make final reserves hash and fill with info
252
            reservedate      => $data->{l_reservedate},
192
my $reserves;
253
            firstname        => $data->{firstname} || '',
193
foreach my $dh ( @distinct_holds ){
254
            surname          => $data->{surname},
194
255
            title            => $data->{title},
195
    my $bibnum = $dh->biblionumber;
256
            editionstatement => $data->{editionstatement},
196
257
            subtitle         => $data->{subtitle},
197
    my @items = Koha::Items->search({ biblionumber => $bibnum });
258
            medium           => $data->{medium},
198
    foreach my $i ( @items ){
259
            part_number      => $data->{part_number},
199
        if ( $i->checkout ){
260
            part_name        => $data->{part_name},
200
            next;
261
            author           => $data->{author},
201
        }
262
            borrowernumber   => $data->{borrowernumber},
202
    }
263
            biblionumber     => $data->{biblionumber},
203
264
            holdingbranches  => [split('\|', $data->{l_holdingbranch})],
204
    my @branchtransfers = map { $_->itemnumber } Koha::Item::Transfers->search({ datearrived => undef }, { columns => [ 'itemnumber' ], collapse => 1 });
265
            branch           => $data->{l_branch},
205
    my @issues = map { $_->itemnumber } Koha::Checkouts->search({}, { columns => [ 'itemnumber' ], collapse => 1 });
266
            itemcallnumber   => [split('\|', $data->{l_itemcallnumber})],
206
267
            enumchron        => [split('\|', $data->{l_enumchron})],
207
    # get available item types for each biblio
268
            copyno           => [split('\|', $data->{l_copynumber})],
208
    my $res_itemtypes;
269
            count            => $data->{icount},
209
    if ( C4::Context->preference('item-level_itypes') ){
270
            rcount           => $data->{rcount},
210
        $res_itemtypes = Koha::Items->search(
271
            pullcount        => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount},
211
            { biblionumber => $bibnum,
272
            itemTypes        => [split('\|', $data->{l_item_type})],
212
              itype => { '!=', undef },
273
            locations        => [split('\|', $data->{l_location})],
213
              itemlost => 0,
274
            reserve_id       => $data->{reserve_id},
214
              withdrawn => 0,
275
            holdingbranch    => $data->{holdingbranch},
215
              notforloan => 0,
276
            homebranch       => $data->{homebranch},
216
              itemnumber => { -not_in => [ @branchtransfers, @issues ] },
277
            itemnumber       => $data->{itemnumber},
217
            },
278
            publicationyear  => C4::Context->preference('marcflavour') eq "MARC21" ? $data->{copyrightdate} : $data->{publicationyear},
218
            { columns => 'itype',
219
              distinct => 1,
220
            }
221
        );
222
    } else {
223
        my $res_itemtypes = Koha::Biblioitems->search(
224
            { biblionumber => $bibnum, itemtype => { '!=', undef }  },
225
            { columns => 'itemtype',
226
              distinct => 1,
227
            }
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 => [ @branchtransfers, @issues ] },
240
        },
241
        { columns => 'location',
242
          distinct => 1,
243
        }
244
    );
245
    $reserves->{$bibnum}->{locations} = $res_locations;
246
247
    # get available callnumbers for each biblio
248
    my $res_callnumbers = Koha::Items->search(
249
        { biblionumber => $bibnum,
250
          itemcallnumber => { '!=', undef },
251
          itemlost => 0,
252
          withdrawn => 0,
253
          notforloan => 0,
254
          itemnumber => { -not_in => [ @branchtransfers, @issues ] },
255
        },
256
        { columns => 'itemcallnumber',
257
          distinct => 1,
258
        }
259
    );
260
    $reserves->{$bibnum}->{callnumbers} = $res_callnumbers;
261
262
    # get available enumchrons for each biblio
263
    my $res_enumchrons = Koha::Items->search(
264
        { biblionumber => $bibnum,
265
          enumchron => { '!=', undef },
266
          itemlost => 0,
267
          withdrawn => 0,
268
          notforloan => 0,
269
          itemnumber => { -not_in => [ @branchtransfers, @issues ] },
270
        },
271
        { columns => 'enumchron',
272
          distinct => 1,
273
        }
274
    );
275
    $reserves->{$bibnum}->{enumchrons} = $res_enumchrons;
276
277
    # get available copynumbers for each biblio
278
    my $res_copynumbers = Koha::Items->search(
279
        { biblionumber => $bibnum,
280
          copynumber => { '!=', undef },
281
          itemlost => 0,
282
          withdrawn => 0,
283
          notforloan => 0,
284
          itemnumber => { -not_in => [ @branchtransfers, @issues ] },
285
        },
286
        { columns => 'copynumber',
287
          distinct => 1,
279
        }
288
        }
280
    );
289
    );
290
    $reserves->{$bibnum}->{copynumbers} = $res_copynumbers;
291
292
    # get available holding branches for each biblio
293
    my $res_holdingbranches = Koha::Items->search(
294
        { biblionumber => $bibnum,
295
          holdingbranch => { '!=', undef },
296
          itemlost => 0,
297
          withdrawn => 0,
298
          notforloan => 0,
299
          itemnumber => { -not_in => [ @branchtransfers, @issues ] },
300
        },
301
        { columns => 'holdingbranch',
302
          distinct => 1,
303
        }
304
    );
305
    $reserves->{$bibnum}->{holdingbranches} = $res_holdingbranches;
306
307
    # items available
308
    my $items_count = Koha::Items->search(
309
        { biblionumber => $bibnum,
310
          itemlost => 0,
311
          withdrawn => 0,
312
          notforloan => 0,
313
          itemnumber => { -not_in => [ @branchtransfers, @issues ] },
314
        },
315
        { select => [ { distinct => 'itemnumber' } ] }
316
    )->count;
317
    $reserves->{$bibnum}->{items_count} = $items_count;
318
319
    # patrons with holds
320
    my $patrons_count = Koha::Holds->search(
321
        { biblionumber => $bibnum },
322
        { select => [ { distinct => 'borrowernumber' } ] }
323
    )->count;
324
    $reserves->{$bibnum}->{patrons_count} = $patrons_count;
325
326
    my $pull_count = $items_count <= $patrons_count ? $items_count : $patrons_count;
327
    if ( $pull_count == 0 ) {
328
        delete($reserves->{$bibnum});
329
        next;
330
    }
331
    $reserves->{$bibnum}->{pull_count} = $pull_count;
332
333
    # get other relevant information
334
    my $res_info = Koha::Holds->search(
335
        { 'reserve.biblionumber' => $bibnum, %where },
336
        { prefetch => [ 'borrowernumber', 'itembib', 'biblio' ],
337
          order_by => 'reserve.reservedate',
338
          alias => 'reserve'
339
        }
340
    )->next; # get first item in results
341
    $reserves->{$bibnum}->{borrower} = $res_info->borrower;
342
    $reserves->{$bibnum}->{item} = $res_info->item;
343
    $reserves->{$bibnum}->{biblio} = $res_info->biblio;
344
    $reserves->{$bibnum}->{reserve} = $res_info;
281
}
345
}
282
$sth->finish;
283
346
284
$template->param(
347
$template->param(
285
    todaysdate          => $today,
348
    todaysdate          => $today,
286
    from                => $startdate,
349
    from                => $startdate,
287
    to                  => $enddate,
350
    to                  => $enddate,
288
    reserveloop         => \@reservedata,
351
    reserves            => $reserves,
289
    "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
352
    "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
290
    HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL,
353
    HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL,
291
    HoldsToPullEndDate  => C4::Context->preference('ConfirmFutureHolds') || 0,
354
    HoldsToPullEndDate  => C4::Context->preference('ConfirmFutureHolds') || 0,
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt (-44 / +48 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-87 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.author ) %]<p> by [% reserve.value.biblio.author | html %]</p>[% END %]
83
                [% IF ( reserveloo.editionstatement ) %]<p>[% reserveloo.editionstatement | html %]</p>[% END %]
83
                [% IF ( reserve.value.biblio.biblioitem.editionstatement ) %]<p>[% reserve.value.biblio.biblioitem.editionstatement | html %]</p>[% END %]
84
                [% IF ( reserveloo.publicationyear ) %]<p>[% reserveloo.publicationyear | html %]</p>[% END %]
84
                [% IF ( reserve.value.biblio.biblioitem.publicationyear ) %]<p>[% reserve.value.biblio.biblioitem.publicationyear | html %]</p>[% END %]
85
            </td>
85
            </td>
86
        [% ELSE %]
86
        [% ELSE %]
87
            <td>"</td>
87
            <td>"</td>
Lines 91-167 Link Here
91
            <td>"</td>
91
            <td>"</td>
92
        [% END %]
92
        [% END %]
93
        <td>
93
        <td>
94
            [% IF ( reserveloo.holdingbranches ) %]
94
            [% IF ( reserve.value.holdingbranches ) %]
95
               <ul>
95
            <ul>
96
                    [% FOREACH holdingbranch IN reserveloo.holdingbranches %]
96
                [% FOREACH holdingbranch IN reserve.value.holdingbranches %]
97
                        <li>
97
                    <li>[% Branches.GetName ( holdingbranch.holdingbranch ) | html %]</li>
98
                            [% Branches.GetName ( holdingbranch ) | html %]
98
                [% END %]
99
                        </li>
99
            </ul>
100
                    [% END %]
101
               </ul>
102
            [% END %]
100
            [% END %]
103
        </td>
101
        </td>
104
        <td>
102
        <td>
105
            [% IF ( reserveloo.itemcallnumber ) %]
103
            [% IF ( reserve.value.callnumbers ) %]
106
                <ul>
104
                <ul>
107
                    [% FOREACH itemcallnumber IN reserveloo.itemcallnumber  %]
105
                    [% FOREACH callnumber IN reserve.value.callnumbers %]
108
                        <li>
106
                        <li>
109
                            [% itemcallnumber | html %]
107
                            [% callnumber.itemcallnumber | html %]
110
                        </li>
108
                        </li>
111
                    [% END %]
109
                    [% END %]
112
                </ul>
110
                </ul>
113
            [% END %]
111
            [% END %]
114
        </td>
112
        </td>
115
        <td>
113
        <td>
116
            [% IF ( reserveloo.copyno ) %]
114
            [% IF ( reserve.value.copynumbers ) %]
117
                <ul>
115
                <ul>
118
                    [% FOREACH copyno IN reserveloo.copyno %]
116
                    [% FOREACH copyno IN reserve.value.copynumbers %]
119
                        <li>
117
                        <li>
120
                            [% copyno | html %]
118
                            [% copyno.copynumber | html %]
121
                        </li>
119
                        </li>
122
                    [% END %]
120
                    [% END %]
123
                </ul>
121
                </ul>
124
            [% END %]
122
            [% END %]
125
        </td>
123
        </td>
126
        <td>
124
        <td>
127
            [% IF ( reserveloo.enumchron ) %]
125
            [% IF ( reserve.value.enumchrons ) %]
128
                <ul>
126
                <ul>
129
                    [% FOREACH enumchron IN reserveloo.enumchron %]
127
                    [% FOREACH enumchron IN reserve.value.enumchrons %]
130
                        <li>
128
                        <li>
131
                            [% enumchron | html %]
129
                            [% enumchron.enumchron | html %]
132
                        </li>
130
                        </li>
133
                    [% END %]
131
                    [% END %]
134
                </ul>
132
                </ul>
135
            [% END %]
133
            [% END %]
136
        </td>
134
        </td>
137
        <td>
135
        <td>
138
        [% FOREACH itemType IN reserveloo.itemTypes %]
136
            <ul>
139
            [% ItemTypes.GetDescription( itemType ) | html %]
137
            [% FOREACH type IN reserve.value.itemtypes %]
140
        [% END %]
138
                [% IF Koha.Preference('item-level_itypes') %]
139
                    <li>[% ItemTypes.GetDescription( type.itype ) | html %]</li>
140
                [% ELSE %]
141
                    <li>[% ItemTypes.GetDescription( type.itemtype ) | html %]</li>
142
                [% END %]
143
            [% END %]
144
            </ul>
141
        </td>
145
        </td>
142
        <td>
146
        <td>
143
        [% FOREACH loc IN reserveloo.locations %]
147
            <ul>
144
            [% AuthorisedValues.GetByCode('LOC', loc) | html %]
148
            [% FOREACH loc IN reserve.value.locations %]
145
        [% END %]
149
                <li>[% AuthorisedValues.GetByCode('LOC', loc.location) | html %]</li>
150
            [% END %]
151
            </ul>
146
        </td>
152
        </td>
147
        <td>
153
        <td>
148
            <span title="[% reserveloo.reservedate | html %]">[% reserveloo.reservedate | $KohaDates %] in [% Branches.GetName ( reserveloo.branch ) | html %]</span>
154
            <span title="[% reserve.value.reserve.reservedate | html %]">[% reserve.value.reserve.reservedate | $KohaDates %] in [% Branches.GetName ( reserve.value.reserve.branchcode ) | html %]</span>
149
        </td>
155
        </td>
150
        <td>
156
        <td>
151
            <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
157
            <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
152
                <input type="hidden" name="op" value="cancel_reserve" />
158
                <input type="hidden" name="op" value="cancel_reserve" />
153
                <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id | html %]" />
159
                <input type="hidden" name="reserve_id" value="[% reserve.value.reserve.reserve_id | html %]" />
154
                [% IF reserveloo.holdingbranch != reserveloo.homebranch %]
160
                [% IF reserve.value.item.holdingbranch != reserve.value.item.homebranch %]
155
                    <input type="submit" value="Cancel hold and return to : [% Branches.GetName( reserveloo.homebranch ) | html %]" />
161
                    <input type="submit" value="Cancel hold and return to : [% Branches.GetName( reserve.value.itemhomebranch ) | html %]" />
156
                [% ELSE %]
162
                [% ELSE %]
157
                    <input type="submit" value="Cancel hold" />
163
                    <input type="submit" value="Cancel hold" />
158
                [% END %]
164
                [% END %]
159
            </form>
165
            </form>
160
166
161
        [% IF Koha.Preference('CanMarkHoldsToPullAsLost') != 'do_not_allow' %]
167
        [% IF Koha.Preference('CanMarkHoldsToPullAsLost') != 'do_not_allow' %]
162
            [% IF reserveloo.itemnumber %]
168
            [% IF reserve.value.reserve.itemnumber %]
163
                <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
169
                <form name="cancelReserve" action="/cgi-bin/koha/circ/pendingreserves.pl" method="post">
164
                    <input type="hidden" name="reserve_id" value="[% reserveloo.reserve_id | html %]" />
170
                    <input type="hidden" name="reserve_id" value="[% reserve.value.reserve.reserve_id | html %]" />
165
                    [% IF Koha.Preference('CanMarkHoldsToPullAsLost') == 'allow' %]
171
                    [% IF Koha.Preference('CanMarkHoldsToPullAsLost') == 'allow' %]
166
                        <input type="hidden" name="op" value="mark_as_lost" />
172
                        <input type="hidden" name="op" value="mark_as_lost" />
167
                        <input type="submit" value="Mark item as lost" />
173
                        <input type="submit" value="Mark item as lost" />
Lines 289-296 Link Here
289
          $("#homebranchfilter").each( function () {
295
          $("#homebranchfilter").each( function () {
290
              $(this).html( createSelect( holdst.fnGetColumnData(5) ) );
296
              $(this).html( createSelect( holdst.fnGetColumnData(5) ) );
291
              $('select', this).change( function () {
297
              $('select', this).change( function () {
292
                  var filter_value = $(this).val();
298
                  holdst.fnFilter( $(this).child().val(), 5 );
293
                  holdst.fnFilter( filter_value, 5, true );
294
              });
299
              });
295
          });
300
          });
296
          $("#itemtype-filter").each( function () {
301
          $("#itemtype-filter").each( function () {
297
- 

Return to bug 24488