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

(-)a/opac/opac-reserve.pl (-32 / +53 lines)
Lines 174-180 foreach my $biblioNumber (@biblionumbers) { Link Here
174
#
174
#
175
if ( $query->param('place_reserve') ) {
175
if ( $query->param('place_reserve') ) {
176
    my $notes = $query->param('notes');
176
    my $notes = $query->param('notes');
177
	my $canreserve=0;
177
    my $reserve_cnt = 0;
178
    if ($MAXIMUM_NUMBER_OF_RESERVES) {
179
        $reserve_cnt = GetReservesFromBorrowernumber( $borrowernumber );
180
    }
178
181
179
    # List is composed of alternating biblio/item/branch
182
    # List is composed of alternating biblio/item/branch
180
    my $selectedItems = $query->param('selecteditems');
183
    my $selectedItems = $query->param('selecteditems');
Lines 205-259 if ( $query->param('place_reserve') ) { Link Here
205
    while (@selectedItems) {
208
    while (@selectedItems) {
206
        my $biblioNum = shift(@selectedItems);
209
        my $biblioNum = shift(@selectedItems);
207
        my $itemNum   = shift(@selectedItems);
210
        my $itemNum   = shift(@selectedItems);
208
        my $branch    = shift(@selectedItems); # i.e., branch code, not name
211
        my $branch    = shift(@selectedItems);    # i.e., branch code, not name
212
213
        my $canreserve = 0;
209
214
210
        my $singleBranchMode = C4::Context->preference("singleBranchMode");
215
        my $singleBranchMode = C4::Context->preference("singleBranchMode");
211
        if ($singleBranchMode || ! $OPACChooseBranch) { # single branch mode or disabled user choosing
216
        if ( $singleBranchMode || !$OPACChooseBranch )
217
        {    # single branch mode or disabled user choosing
212
            $branch = $borr->{'branchcode'};
218
            $branch = $borr->{'branchcode'};
213
        }
219
        }
214
220
215
	#item may belong to a host biblio, if yes change biblioNum to hosts bilbionumber
221
#item may belong to a host biblio, if yes change biblioNum to hosts bilbionumber
216
	if ($itemNum ne '') {
222
        if ( $itemNum ne '' ) {
217
		my $hostbiblioNum = GetBiblionumberFromItemnumber($itemNum);
223
            my $hostbiblioNum = GetBiblionumberFromItemnumber($itemNum);
218
		if ($hostbiblioNum ne $biblioNum) {
224
            if ( $hostbiblioNum ne $biblioNum ) {
219
			$biblioNum = $hostbiblioNum;
225
                $biblioNum = $hostbiblioNum;
220
		}
226
            }
221
	}
227
        }
222
228
223
        my $biblioData = $biblioDataHash{$biblioNum};
229
        my $biblioData = $biblioDataHash{$biblioNum};
224
        my $found;
230
        my $found;
225
231
226
	# Check for user supplied reserve date
232
        # Check for user supplied reserve date
227
	my $startdate;
233
        my $startdate;
228
	if (
234
        if (   C4::Context->preference('AllowHoldDateInFuture')
229
	    C4::Context->preference( 'AllowHoldDateInFuture' ) &&
235
            && C4::Context->preference('OPACAllowHoldDateInFuture') )
230
	    C4::Context->preference( 'OPACAllowHoldDateInFuture' )
236
        {
231
	    ) {
237
            $startdate = $query->param("reserve_date_$biblioNum");
232
	    $startdate = $query->param("reserve_date_$biblioNum");
238
        }
233
	}
239
234
	
240
        my $expiration_date = $query->param("expiration_date_$biblioNum");
235
	my $expiration_date = $query->param("expiration_date_$biblioNum");
236
241
237
        # If a specific item was selected and the pickup branch is the same as the
242
      # If a specific item was selected and the pickup branch is the same as the
238
        # holdingbranch, force the value $rank and $found.
243
      # holdingbranch, force the value $rank and $found.
239
        my $rank = $biblioData->{rank};
244
        my $rank = $biblioData->{rank};
240
        if ($itemNum ne ''){
245
        if ( $itemNum ne '' ) {
241
        	$canreserve = 1 if CanItemBeReserved($borrowernumber,$itemNum);
246
            $canreserve = 1 if CanItemBeReserved( $borrowernumber, $itemNum );
242
            $rank = '0' unless C4::Context->preference('ReservesNeedReturns');
247
            $rank = '0' unless C4::Context->preference('ReservesNeedReturns');
243
            my $item = GetItem($itemNum);
248
            my $item = GetItem($itemNum);
244
            if ( $item->{'holdingbranch'} eq $branch ){
249
            if ( $item->{'holdingbranch'} eq $branch ) {
245
                $found = 'W' unless C4::Context->preference('ReservesNeedReturns');
250
                $found = 'W'
251
                  unless C4::Context->preference('ReservesNeedReturns');
246
            }
252
            }
247
        }
253
        }
248
        else {
254
        else {
249
        	$canreserve = 1 if CanBookBeReserved($borrowernumber,$biblioNum);
255
            $canreserve = 1 if CanBookBeReserved( $borrowernumber, $biblioNum );
256
250
            # Inserts a null into the 'itemnumber' field of 'reserves' table.
257
            # Inserts a null into the 'itemnumber' field of 'reserves' table.
251
            $itemNum = undef;
258
            $itemNum = undef;
252
        }
259
        }
253
260
261
        if (   $MAXIMUM_NUMBER_OF_RESERVES
262
            && $reserve_cnt >= $MAXIMUM_NUMBER_OF_RESERVES )
263
        {
264
            $canreserve = 0;
265
        }
266
254
        # Here we actually do the reserveration. Stage 3.
267
        # Here we actually do the reserveration. Stage 3.
255
        AddReserve($branch, $borrowernumber, $biblioNum, 'a', [$biblioNum], $rank, $startdate, $expiration_date, $notes,
268
        if ($canreserve) {
256
                   $biblioData->{'title'}, $itemNum, $found) if ($canreserve);
269
            AddReserve(
270
                $branch,      $borrowernumber,
271
                $biblioNum,   'a',
272
                [$biblioNum], $rank,
273
                $startdate,   $expiration_date,
274
                $notes,       $biblioData->{title},
275
                $itemNum,     $found
276
            );
277
            ++$reserve_cnt;
278
        }
257
    }
279
    }
258
280
259
    print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds");
281
    print $query->redirect("/cgi-bin/koha/opac-user.pl#opac-user-holds");
Lines 274-287 if ( $borr->{'amountoutstanding'} && ($borr->{'amountoutstanding'} > $maxoutstan Link Here
274
    $noreserves = 1;
296
    $noreserves = 1;
275
    $template->param( too_much_oweing => $amount );
297
    $template->param( too_much_oweing => $amount );
276
}
298
}
277
if ( $borr->{gonenoaddress} && ($borr->{gonenoaddress} eq 1) ) {
299
if ( $borr->{gonenoaddress} && ($borr->{gonenoaddress} == 1) ) {
278
    $noreserves = 1;
300
    $noreserves = 1;
279
    $template->param(
301
    $template->param(
280
                     message => 1,
302
                     message => 1,
281
                     GNA     => 1
303
                     GNA     => 1
282
                    );
304
                    );
283
}
305
}
284
if ( $borr->{lost} && ($borr->{lost} eq 1) ) {
306
if ( $borr->{lost} && ($borr->{lost} == 1) ) {
285
    $noreserves = 1;
307
    $noreserves = 1;
286
    $template->param(
308
    $template->param(
287
                     message => 1,
309
                     message => 1,
288
- 

Return to bug 6976