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

(-)a/C4/Reserves.pm (-114 / +90 lines)
Lines 188-194 sub AddReserve { Link Here
188
            "Reserve Charge - $title", $fee );
188
            "Reserve Charge - $title", $fee );
189
    }
189
    }
190
190
191
    #if ($const eq 'a'){
192
    my $query = qq/
191
    my $query = qq/
193
        INSERT INTO reserves
192
        INSERT INTO reserves
194
            (borrowernumber,biblionumber,reservedate,branchcode,constrainttype,
193
            (borrowernumber,biblionumber,reservedate,branchcode,constrainttype,
Lines 233-251 sub AddReserve { Link Here
233
        }
232
        }
234
    }
233
    }
235
234
236
    #}
237
    ($const eq "o" || $const eq "e") or return;   # FIXME: why not have a useful return value?
238
    $query = qq/
239
        INSERT INTO reserveconstraints
240
            (borrowernumber,biblionumber,reservedate,biblioitemnumber)
241
        VALUES
242
            (?,?,?,?)
243
    /;
244
    $sth = $dbh->prepare($query);    # keep prepare outside the loop!
245
    foreach (@$bibitems) {
246
        $sth->execute($borrowernumber, $biblionumber, $resdate, $_);
247
    }
248
        
249
    return;     # FIXME: why not have a useful return value?
235
    return;     # FIXME: why not have a useful return value?
250
}
236
}
251
237
Lines 326-373 sub GetReservesFromBiblionumber { Link Here
326
    $query .= "ORDER BY priority";
312
    $query .= "ORDER BY priority";
327
    my $sth = $dbh->prepare($query);
313
    my $sth = $dbh->prepare($query);
328
    $sth->execute( @params );
314
    $sth->execute( @params );
329
    my @results;
315
    my $results = $sth->fetchall_arrayref({});
330
    my $i = 0;
316
    return $results;
331
    while ( my $data = $sth->fetchrow_hashref ) {
332
333
        # FIXME - What is this doing? How do constraints work?
334
        if ($data->{constrainttype} eq 'o') {
335
            $query = '
336
                SELECT biblioitemnumber
337
                FROM  reserveconstraints
338
                WHERE  biblionumber   = ?
339
                AND   borrowernumber = ?
340
                AND   reservedate    = ?
341
            ';
342
            my $csth = $dbh->prepare($query);
343
            $csth->execute($data->{biblionumber}, $data->{borrowernumber}, $data->{reservedate});
344
            my @bibitemno;
345
            while ( my $bibitemnos = $csth->fetchrow_array ) {
346
                push( @bibitemno, $bibitemnos );    # FIXME: inefficient: use fetchall_arrayref
347
            }
348
            my $count = scalar @bibitemno;
349
    
350
            # if we have two or more different specific itemtypes
351
            # reserved by same person on same day
352
            my $bdata;
353
            if ( $count > 1 ) {
354
                $bdata = GetBiblioItemData( $bibitemno[$i] );   # FIXME: This doesn't make sense.
355
                $i++; #  $i can increase each pass, but the next @bibitemno might be smaller?
356
            }
357
            else {
358
                # Look up the book we just found.
359
                $bdata = GetBiblioItemData( $bibitemno[0] );
360
            }
361
            # Add the results of this latest search to the current
362
            # results.
363
            # FIXME - An 'each' would probably be more efficient.
364
            foreach my $key ( keys %$bdata ) {
365
                $data->{$key} = $bdata->{$key};
366
            }
367
        }
368
        push @results, $data;
369
    }
370
    return \@results;
371
}
317
}
372
318
373
=head2 GetReservesFromItemnumber
319
=head2 GetReservesFromItemnumber
Lines 1186-1230 sub ModReserveFill { Link Here
1186
    my $borrowernumber    = $res->{'borrowernumber'};
1132
    my $borrowernumber    = $res->{'borrowernumber'};
1187
    my $resdate = $res->{'reservedate'};
1133
    my $resdate = $res->{'reservedate'};
1188
1134
1135
    $reserve_id = GetReserveId({biblionumber   => $biblionumber,
1136
			        borrowernumber => $borrowernumber,
1137
			        reservedate    => $resdate}) if (!$reserve_id);
1138
    return if (!$reserve_id);
1139
1189
    # get the priority on this record....
1140
    # get the priority on this record....
1190
    my $priority;
1141
    my $priority;
1191
    my $query = "SELECT priority
1142
    my $query = "SELECT priority
1192
                 FROM   reserves
1143
                 FROM   reserves
1193
                 WHERE  biblionumber   = ?
1144
                 WHERE  reserve_id = ?";
1194
                  AND   borrowernumber = ?
1195
                  AND   reservedate    = ?";
1196
    my $sth = $dbh->prepare($query);
1145
    my $sth = $dbh->prepare($query);
1197
    $sth->execute( $biblionumber, $borrowernumber, $resdate );
1146
    $sth->execute( $reserve_id );
1198
    ($priority) = $sth->fetchrow_array;
1147
    ($priority) = $sth->fetchrow_array;
1199
1148
1200
    # update the database...
1149
    # update the database...
1201
    $query = "UPDATE reserves
1150
    $query = "UPDATE reserves
1202
                  SET    found            = 'F',
1151
                  SET    found            = 'F',
1203
                         priority         = 0
1152
                         priority         = 0
1204
                 WHERE  biblionumber     = ?
1153
                 WHERE  reserve_id        = ?";
1205
                    AND reservedate      = ?
1206
                    AND borrowernumber   = ?
1207
                ";
1208
    $sth = $dbh->prepare($query);
1154
    $sth = $dbh->prepare($query);
1209
    $sth->execute( $biblionumber, $resdate, $borrowernumber );
1155
    $sth->execute( $reserve_id );
1210
1156
1211
    # move to old_reserves
1157
    # move to old_reserves
1212
    $query = "INSERT INTO old_reserves
1158
    $query = "INSERT INTO old_reserves
1213
                 SELECT * FROM reserves
1159
                 SELECT * FROM reserves
1214
                 WHERE  biblionumber     = ?
1160
                 WHERE  reserve_id  = ?";
1215
                    AND reservedate      = ?
1216
                    AND borrowernumber   = ?
1217
                ";
1218
    $sth = $dbh->prepare($query);
1161
    $sth = $dbh->prepare($query);
1219
    $sth->execute( $biblionumber, $resdate, $borrowernumber );
1162
    $sth->execute( $reserve_id );
1220
    $query = "DELETE FROM reserves
1163
    $query = "DELETE FROM reserves
1221
                 WHERE  biblionumber     = ?
1164
                 WHERE  reserve_id = ?";
1222
                    AND reservedate      = ?
1223
                    AND borrowernumber   = ?
1224
                ";
1225
    $sth = $dbh->prepare($query);
1165
    $sth = $dbh->prepare($query);
1226
    $sth->execute( $biblionumber, $resdate, $borrowernumber );
1166
    $sth->execute( $reserve_id );
1227
    
1167
1228
    # now fix the priority on the others (if the priority wasn't
1168
    # now fix the priority on the others (if the priority wasn't
1229
    # already sorted!)....
1169
    # already sorted!)....
1230
    unless ( $priority == 0 ) {
1170
    unless ( $priority == 0 ) {
Lines 1284-1298 sub ModReserveAffect { Link Here
1284
    $sth->execute($itemnumber);
1224
    $sth->execute($itemnumber);
1285
    my ($biblionumber) = $sth->fetchrow;
1225
    my ($biblionumber) = $sth->fetchrow;
1286
1226
1287
    # get request - need to find out if item is already
1227
    my $reserve_id = GetReserveNextEligible({
1288
    # waiting in order to not send duplicate hold filled notifications
1228
	    borrowernumber => $borrowernumber,
1289
    my $reserve_id = GetReserveId({
1229
	    biblionumber   => $biblionumber,
1290
        borrowernumber => $borrowernumber,
1230
	    itemnumber     => $itemnumber
1291
        biblionumber   => $biblionumber,
1231
					    });
1292
    });
1232
1293
    return unless defined $reserve_id;
1233
    return unless defined $reserve_id;
1294
    my $request = GetReserveInfo($reserve_id);
1234
    my $request = GetReserveInfo($reserve_id);
1295
    my $already_on_shelf = ($request && $request->{found} eq 'W') ? 1 : 0;
1296
1235
1297
    # If we affect a reserve that has to be transfered, don't set to Waiting
1236
    # If we affect a reserve that has to be transfered, don't set to Waiting
1298
    my $query;
1237
    my $query;
Lines 1302-1309 sub ModReserveAffect { Link Here
1302
        SET    priority = 0,
1241
        SET    priority = 0,
1303
               itemnumber = ?,
1242
               itemnumber = ?,
1304
               found = 'T'
1243
               found = 'T'
1305
        WHERE borrowernumber = ?
1244
        WHERE reserve_id = ?
1306
          AND biblionumber = ?
1307
    ";
1245
    ";
1308
    }
1246
    }
1309
    else {
1247
    else {
Lines 1314-1327 sub ModReserveAffect { Link Here
1314
                    found = 'W',
1252
                    found = 'W',
1315
                    waitingdate = NOW(),
1253
                    waitingdate = NOW(),
1316
                    itemnumber = ?
1254
                    itemnumber = ?
1317
            WHERE borrowernumber = ?
1255
            WHERE reserve_id = ?
1318
              AND biblionumber = ?
1319
        ";
1256
        ";
1320
    }
1257
    }
1321
    $sth = $dbh->prepare($query);
1258
    $sth = $dbh->prepare($query);
1322
    $sth->execute( $itemnumber, $borrowernumber,$biblionumber);
1259
    $sth->execute( $itemnumber, $reserve_id );
1323
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber ) if ( !$transferToDo && !$already_on_shelf );
1260
    _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber, $reserve_id ) if ( !$transferToDo );
1324
    _FixPriority( { biblionumber => $biblionumber } );
1261
1262
    if ( $request && $request->{priority} != 0 ) {
1263
        _FixPriority({ reserve_id => $reserve_id });
1264
    }
1265
1325
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1266
    if ( C4::Context->preference("ReturnToShelvingCart") ) {
1326
      CartToShelf( $itemnumber );
1267
      CartToShelf( $itemnumber );
1327
    }
1268
    }
Lines 1540-1546 sub AlterPriority { Link Here
1540
1481
1541
=head2 ToggleLowestPriority
1482
=head2 ToggleLowestPriority
1542
1483
1543
  ToggleLowestPriority( $borrowernumber, $biblionumber );
1484
  ToggleLowestPriority( $reserve_id );
1544
1485
1545
This function sets the lowestPriority field to true if is false, and false if it is true.
1486
This function sets the lowestPriority field to true if is false, and false if it is true.
1546
1487
Lines 1804-1809 sub _Findgroupreserve { Link Here
1804
    my $item_level_target_query = qq/
1745
    my $item_level_target_query = qq/
1805
        SELECT reserves.biblionumber        AS biblionumber,
1746
        SELECT reserves.biblionumber        AS biblionumber,
1806
               reserves.borrowernumber      AS borrowernumber,
1747
               reserves.borrowernumber      AS borrowernumber,
1748
               reserves.reserve_id          AS reserve_id,
1807
               reserves.reservedate         AS reservedate,
1749
               reserves.reservedate         AS reservedate,
1808
               reserves.branchcode          AS branchcode,
1750
               reserves.branchcode          AS branchcode,
1809
               reserves.cancellationdate    AS cancellationdate,
1751
               reserves.cancellationdate    AS cancellationdate,
Lines 1836-1841 sub _Findgroupreserve { Link Here
1836
    my $title_level_target_query = qq/
1778
    my $title_level_target_query = qq/
1837
        SELECT reserves.biblionumber        AS biblionumber,
1779
        SELECT reserves.biblionumber        AS biblionumber,
1838
               reserves.borrowernumber      AS borrowernumber,
1780
               reserves.borrowernumber      AS borrowernumber,
1781
               reserves.reserve_id          AS reserve_id,
1839
               reserves.reservedate         AS reservedate,
1782
               reserves.reservedate         AS reservedate,
1840
               reserves.branchcode          AS branchcode,
1783
               reserves.branchcode          AS branchcode,
1841
               reserves.cancellationdate    AS cancellationdate,
1784
               reserves.cancellationdate    AS cancellationdate,
Lines 1867-1872 sub _Findgroupreserve { Link Here
1867
    my $query = qq/
1810
    my $query = qq/
1868
        SELECT reserves.biblionumber               AS biblionumber,
1811
        SELECT reserves.biblionumber               AS biblionumber,
1869
               reserves.borrowernumber             AS borrowernumber,
1812
               reserves.borrowernumber             AS borrowernumber,
1813
               reserves.reserve_id                 AS reserve_id,
1870
               reserves.reservedate                AS reservedate,
1814
               reserves.reservedate                AS reservedate,
1871
               reserves.waitingdate                AS waitingdate,
1815
               reserves.waitingdate                AS waitingdate,
1872
               reserves.branchcode                 AS branchcode,
1816
               reserves.branchcode                 AS branchcode,
Lines 1875-1896 sub _Findgroupreserve { Link Here
1875
               reserves.reservenotes               AS reservenotes,
1819
               reserves.reservenotes               AS reservenotes,
1876
               reserves.priority                   AS priority,
1820
               reserves.priority                   AS priority,
1877
               reserves.timestamp                  AS timestamp,
1821
               reserves.timestamp                  AS timestamp,
1878
               reserveconstraints.biblioitemnumber AS biblioitemnumber,
1822
               biblioitems.biblioitemnumber        AS biblioitemnumber,
1879
               reserves.itemnumber                 AS itemnumber,
1823
               reserves.itemnumber                 AS itemnumber
1880
               reserves.reserve_id                 AS reserve_id
1881
        FROM reserves
1824
        FROM reserves
1882
          LEFT JOIN reserveconstraints ON reserves.biblionumber = reserveconstraints.biblionumber
1825
        JOIN biblioitems USING (biblionumber)
1883
        WHERE reserves.biblionumber = ?
1826
        WHERE reserves.biblionumber = ?
1884
          AND ( ( reserveconstraints.biblioitemnumber = ?
1827
          AND (reserves.constrainttype='a')
1885
          AND reserves.borrowernumber = reserveconstraints.borrowernumber
1886
          AND reserves.reservedate    = reserveconstraints.reservedate )
1887
          OR  reserves.constrainttype='a' )
1888
          AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?)
1828
          AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?)
1889
          AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
1829
          AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
1890
          AND suspend = 0
1830
          AND suspend = 0
1891
    /;
1831
    /;
1892
    $sth = $dbh->prepare($query);
1832
    $sth = $dbh->prepare($query);
1893
    $sth->execute( $biblio, $bibitem, $itemnumber, $lookahead||0);
1833
    $sth->execute( $biblio, $itemnumber, $lookahead||0);
1894
    @results = ();
1834
    @results = ();
1895
    while ( my $data = $sth->fetchrow_hashref ) {
1835
    while ( my $data = $sth->fetchrow_hashref ) {
1896
        push( @results, $data );
1836
        push( @results, $data );
Lines 1900-1906 sub _Findgroupreserve { Link Here
1900
1840
1901
=head2 _koha_notify_reserve
1841
=head2 _koha_notify_reserve
1902
1842
1903
  _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber );
1843
  _koha_notify_reserve( $itemnumber, $borrowernumber, $biblionumber, $reserve_id );
1904
1844
1905
Sends a notification to the patron that their hold has been filled (through
1845
Sends a notification to the patron that their hold has been filled (through
1906
ModReserveAffect, _not_ ModReserveFill)
1846
ModReserveAffect, _not_ ModReserveFill)
Lines 1908-1914 ModReserveAffect, _not_ ModReserveFill) Link Here
1908
=cut
1848
=cut
1909
1849
1910
sub _koha_notify_reserve {
1850
sub _koha_notify_reserve {
1911
    my ($itemnumber, $borrowernumber, $biblionumber) = @_;
1851
    my ($itemnumber, $borrowernumber, $biblionumber, $reserve_id) = @_;
1912
1852
1913
    my $dbh = C4::Context->dbh;
1853
    my $dbh = C4::Context->dbh;
1914
    my $borrower = C4::Members::GetMember(borrowernumber => $borrowernumber);
1854
    my $borrower = C4::Members::GetMember(borrowernumber => $borrowernumber);
Lines 1926-1933 sub _koha_notify_reserve { Link Here
1926
        FROM   reserves
1866
        FROM   reserves
1927
        WHERE  borrowernumber = ?
1867
        WHERE  borrowernumber = ?
1928
            AND biblionumber = ?
1868
            AND biblionumber = ?
1869
            AND reserve_id = ?
1929
    ");
1870
    ");
1930
    $sth->execute( $borrowernumber, $biblionumber );
1871
    $sth->execute( $borrowernumber, $biblionumber, $reserve_id );
1931
    my $reserve = $sth->fetchrow_hashref;
1872
    my $reserve = $sth->fetchrow_hashref;
1932
    my $branch_details = GetBranchDetail( $reserve->{'branchcode'} );
1873
    my $branch_details = GetBranchDetail( $reserve->{'branchcode'} );
1933
1874
Lines 2013-2030 sub _ShiftPriorityByDateAndPriority { Link Here
2013
    # Shift the priority up by one; works in conjunction with the next SQL statement
1954
    # Shift the priority up by one; works in conjunction with the next SQL statement
2014
    $query = "UPDATE reserves
1955
    $query = "UPDATE reserves
2015
              SET priority = priority+1
1956
              SET priority = priority+1
2016
              WHERE biblionumber = ?
1957
              WHERE reserve_id = ?
2017
              AND borrowernumber = ?
2018
              AND reservedate = ?
2019
              AND found IS NULL";
1958
              AND found IS NULL";
2020
    my $sth_update = $dbh->prepare( $query );
1959
    my $sth_update = $dbh->prepare( $query );
2021
1960
2022
    # Select all reserves for the biblio with priority greater than $new_priority, and order greatest to least
1961
    # Select all reserves for the biblio with priority greater than $new_priority, and order greatest to least
2023
    $query = "SELECT borrowernumber, reservedate FROM reserves WHERE priority >= ? AND biblionumber = ? ORDER BY priority DESC";
1962
    $query = "SELECT reserve_id FROM reserves WHERE priority >= ? AND biblionumber = ? ORDER BY priority DESC";
2024
    $sth = $dbh->prepare( $query );
1963
    $sth = $dbh->prepare( $query );
2025
    $sth->execute( $new_priority, $biblio );
1964
    $sth->execute( $new_priority, $biblio );
2026
    while ( my $row = $sth->fetchrow_hashref ) {
1965
    while ( my $row = $sth->fetchrow_hashref ) {
2027
	$sth_update->execute( $biblio, $row->{borrowernumber}, $row->{reservedate} );
1966
	$sth_update->execute( $row->{reserve_id} );
2028
    }
1967
    }
2029
1968
2030
    return $new_priority;  # so the caller knows what priority they wind up receiving
1969
    return $new_priority;  # so the caller knows what priority they wind up receiving
Lines 2074-2084 sub MoveReserve { Link Here
2074
            RevertWaitingStatus({ itemnumber => $itemnumber });
2013
            RevertWaitingStatus({ itemnumber => $itemnumber });
2075
        }
2014
        }
2076
        elsif ( $cancelreserve eq 'cancel' || $cancelreserve ) { # cancel reserves on this item
2015
        elsif ( $cancelreserve eq 'cancel' || $cancelreserve ) { # cancel reserves on this item
2077
            CancelReserve({
2016
            CancelReserve({ reserve_id => $res->{'reserve_id'} });
2078
                biblionumber   => $res->{'biblionumber'},
2079
                itemnumber     => $res->{'itemnumber'},
2080
                borrowernumber => $res->{'borrowernumber'}
2081
            });
2082
        }
2017
        }
2083
    }
2018
    }
2084
}
2019
}
Lines 2154-2159 sub RevertWaitingStatus { Link Here
2154
        SELECT * FROM reserves
2089
        SELECT * FROM reserves
2155
        WHERE itemnumber = ?
2090
        WHERE itemnumber = ?
2156
        AND found IS NOT NULL
2091
        AND found IS NOT NULL
2092
        ORDER BY priority
2157
    ";
2093
    ";
2158
    my $sth = $dbh->prepare( $query );
2094
    my $sth = $dbh->prepare( $query );
2159
    $sth->execute( $itemnumber );
2095
    $sth->execute( $itemnumber );
Lines 2190-2196 sub RevertWaitingStatus { Link Here
2190
2126
2191
=head2 GetReserveId
2127
=head2 GetReserveId
2192
2128
2193
  $reserve_id = GetReserveId({ biblionumber => $biblionumber, borrowernumber => $borrowernumber [, itemnumber => $itemnumber ] });
2129
  $reserve_id = GetReserveId({ biblionumber => $biblionumber, borrowernumber => $borrowernumber [, itemnumber => $itemnumber ] } );
2194
2130
2195
  Returnes the first reserve id that matches the given criteria
2131
  Returnes the first reserve id that matches the given criteria
2196
2132
Lines 2216-2221 sub GetReserveId { Link Here
2216
2152
2217
    $sql .= join( " AND ", @limits );
2153
    $sql .= join( " AND ", @limits );
2218
2154
2155
    $sql .= " ORDER BY priority";
2156
2219
    my $sth = $dbh->prepare( $sql );
2157
    my $sth = $dbh->prepare( $sql );
2220
    $sth->execute( @params );
2158
    $sth->execute( @params );
2221
    my $row = $sth->fetchrow_hashref();
2159
    my $row = $sth->fetchrow_hashref();
Lines 2223-2228 sub GetReserveId { Link Here
2223
    return $row->{'reserve_id'};
2161
    return $row->{'reserve_id'};
2224
}
2162
}
2225
2163
2164
=head2 GetReserveNextEligible
2165
2166
 GetReserveNextEligible({ biblionumber => $bibnum, borrowernumber => $bornum
2167
                       [, itemnumber => $itemnum ]
2168
                       })
2169
2170
 Returns the next eligible reserve id, or undef.
2171
2172
 If reserve is for a certain item, it is eligible only if it matches the itemnumber.
2173
 If a matching reserve is already waiting, return undef.
2174
2175
=cut
2176
2177
sub GetReserveNextEligible {
2178
    my ( $params ) = @_;
2179
2180
    return unless ( $params->{'biblionumber'} && $params->{'borrowernumber'} );
2181
2182
    my $dbh = C4::Context->dbh();
2183
2184
    my $sql = "SELECT reserve_id, found, itemnumber
2185
                 FROM reserves
2186
                WHERE biblionumber=?
2187
                  AND borrowernumber=?
2188
             ORDER BY priority";
2189
2190
    my $sth = $dbh->prepare( $sql );
2191
    $sth->execute( $params->{'biblionumber'}, $params->{'borrowernumber'} );
2192
2193
    while ( my $row = $sth->fetchrow_hashref() ) {
2194
	next if ($row->{'itemnumber'} && ($row->{'itemnumber'} ne $params->{'itemnumber'}));
2195
	return if ($row->{'found'} =~ /[WF]/); # Waiting or Found(?) are never eligible
2196
	return $row->{'reserve_id'};
2197
    }
2198
2199
    return;
2200
}
2201
2226
=head2 ReserveSlip
2202
=head2 ReserveSlip
2227
2203
2228
  ReserveSlip($branchcode, $borrowernumber, $biblionumber)
2204
  ReserveSlip($branchcode, $borrowernumber, $biblionumber)
(-)a/reserve/placerequest.pl (-15 / +1 lines)
Lines 38-48 my $input = CGI->new(); Link Here
38
checkauth($input, 0, { reserveforothers => 'place_holds' }, 'intranet');
38
checkauth($input, 0, { reserveforothers => 'place_holds' }, 'intranet');
39
39
40
my @bibitems=$input->param('biblioitem');
40
my @bibitems=$input->param('biblioitem');
41
# FIXME I think reqbib does not exist anymore, it's used in line 82, to AddReserve of contraint type 'o'
42
#       I bet it's a 2.x feature, reserving a given biblioitem, that is useless in Koha 3.0
43
#       we can remove this line, the AddReserve of constrainttype 'o',
44
#       and probably remove the reserveconstraint table as well, I never could fill anything in this table.
45
my @reqbib=$input->param('reqbib'); 
46
my $biblionumber=$input->param('biblionumber');
41
my $biblionumber=$input->param('biblionumber');
47
my $borrowernumber=$input->param('borrowernumber');
42
my $borrowernumber=$input->param('borrowernumber');
48
my $notes=$input->param('notes');
43
my $notes=$input->param('notes');
Lines 112-127 if ($type eq 'str8' && $borrower){ Link Here
112
            AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',[$biblionumber],
107
            AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',[$biblionumber],
113
                       $bibinfo->{rank},$startdate,$expirationdate,$notes,$bibinfo->{title},$checkitem,$found);
108
                       $bibinfo->{rank},$startdate,$expirationdate,$notes,$bibinfo->{title},$checkitem,$found);
114
        } else {
109
        } else {
115
            if ($input->param('request') eq 'any'){
110
	    AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',\@realbi,$rank[0],$startdate,$expirationdate,$notes,$title,$checkitem,$found);
116
                # place a request on 1st available
117
                AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',\@realbi,$rank[0],$startdate,$expirationdate,$notes,$title,$checkitem,$found);
118
            } elsif ($reqbib[0] ne ''){
119
                # FIXME : elsif probably never reached, (see top of the script)
120
                # place a request on a given item
121
                AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'o',\@reqbib,$rank[0],$startdate,$expirationdate,$notes,$title,$checkitem, $found);
122
            } else {
123
                AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,'a',\@realbi,$rank[0],$startdate,$expirationdate,$notes,$title,$checkitem, $found);
124
            }
125
        }
111
        }
126
    }
112
    }
127
113
(-)a/reserve/request.pl (-2 / +1 lines)
Lines 213-219 foreach my $biblionumber (@biblionumbers) { Link Here
213
    }
213
    }
214
214
215
    if ( $holds_count ) {
215
    if ( $holds_count ) {
216
            $alreadyreserved = 1;
216
            #$alreadyreserved = 1;
217
            $biblioloopiter{warn} = 1;
217
            $biblioloopiter{warn} = 1;
218
            $biblioloopiter{alreadyres} = 1;
218
            $biblioloopiter{alreadyres} = 1;
219
    }
219
    }
220
- 

Return to bug 12085