Lines 90-96
BEGIN {
Link Here
|
90 |
@ISA = qw(Exporter); |
90 |
@ISA = qw(Exporter); |
91 |
@EXPORT = qw( |
91 |
@EXPORT = qw( |
92 |
&AddReserve |
92 |
&AddReserve |
93 |
|
93 |
|
|
|
94 |
&GetReserve |
94 |
&GetReservesFromItemnumber |
95 |
&GetReservesFromItemnumber |
95 |
&GetReservesFromBiblionumber |
96 |
&GetReservesFromBiblionumber |
96 |
&GetReservesFromBorrowernumber |
97 |
&GetReservesFromBorrowernumber |
Lines 237-242
sub AddReserve {
Link Here
|
237 |
return; # FIXME: why not have a useful return value? |
238 |
return; # FIXME: why not have a useful return value? |
238 |
} |
239 |
} |
239 |
|
240 |
|
|
|
241 |
=head2 GetReserve |
242 |
|
243 |
$res = GetReserve( $reservenumber ); |
244 |
|
245 |
=cut |
246 |
|
247 |
sub GetReserve { |
248 |
my ($reservenumber) = @_; |
249 |
#warn "C4::Reserves::GetReserve( $reservenumber )"; |
250 |
|
251 |
my $dbh = C4::Context->dbh; |
252 |
my $query = "SELECT * FROM reserves WHERE reservenumber = ?"; |
253 |
my $sth = $dbh->prepare( $query ); |
254 |
$sth->execute( $reservenumber ); |
255 |
my $res = $sth->fetchrow_hashref(); |
256 |
return $res; |
257 |
} |
258 |
|
240 |
=head2 GetReservesFromBiblionumber |
259 |
=head2 GetReservesFromBiblionumber |
241 |
|
260 |
|
242 |
($count, $title_reserves) = &GetReserves($biblionumber); |
261 |
($count, $title_reserves) = &GetReserves($biblionumber); |
Lines 253-259
sub GetReservesFromBiblionumber {
Link Here
|
253 |
|
272 |
|
254 |
# Find the desired items in the reserves |
273 |
# Find the desired items in the reserves |
255 |
my $query = " |
274 |
my $query = " |
256 |
SELECT branchcode, |
275 |
SELECT reservenumber, |
|
|
276 |
branchcode, |
257 |
timestamp AS rtimestamp, |
277 |
timestamp AS rtimestamp, |
258 |
priority, |
278 |
priority, |
259 |
biblionumber, |
279 |
biblionumber, |
Lines 319-325
sub GetReservesFromBiblionumber {
Link Here
|
319 |
|
339 |
|
320 |
=head2 GetReservesFromItemnumber |
340 |
=head2 GetReservesFromItemnumber |
321 |
|
341 |
|
322 |
( $reservedate, $borrowernumber, $branchcode ) = GetReservesFromItemnumber($itemnumber); |
342 |
( $reservedate, $borrowernumber, $branchcode, $reservenumber ) = GetReservesFromItemnumber($itemnumber); |
323 |
|
343 |
|
324 |
TODO :: Description here |
344 |
TODO :: Description here |
325 |
|
345 |
|
Lines 329-335
sub GetReservesFromItemnumber {
Link Here
|
329 |
my ( $itemnumber, $all_dates ) = @_; |
349 |
my ( $itemnumber, $all_dates ) = @_; |
330 |
my $dbh = C4::Context->dbh; |
350 |
my $dbh = C4::Context->dbh; |
331 |
my $query = " |
351 |
my $query = " |
332 |
SELECT reservedate,borrowernumber,branchcode |
352 |
SELECT reservedate,borrowernumber,branchcode,reservenumber |
333 |
FROM reserves |
353 |
FROM reserves |
334 |
WHERE itemnumber=? |
354 |
WHERE itemnumber=? |
335 |
"; |
355 |
"; |
Lines 502-512
sub GetReserveCount {
Link Here
|
502 |
|
522 |
|
503 |
my $dbh = C4::Context->dbh; |
523 |
my $dbh = C4::Context->dbh; |
504 |
|
524 |
|
505 |
my $query = ' |
525 |
my $query = " |
506 |
SELECT COUNT(*) AS counter |
526 |
SELECT COUNT(*) AS counter |
507 |
FROM reserves |
527 |
FROM reserves |
508 |
WHERE borrowernumber = ? |
528 |
WHERE borrowernumber = ? |
509 |
'; |
529 |
"; |
510 |
my $sth = $dbh->prepare($query); |
530 |
my $sth = $dbh->prepare($query); |
511 |
$sth->execute($borrowernumber); |
531 |
$sth->execute($borrowernumber); |
512 |
my $row = $sth->fetchrow_hashref; |
532 |
my $row = $sth->fetchrow_hashref; |
Lines 678-684
sub GetReservesToBranch {
Link Here
|
678 |
my ( $frombranch ) = @_; |
698 |
my ( $frombranch ) = @_; |
679 |
my $dbh = C4::Context->dbh; |
699 |
my $dbh = C4::Context->dbh; |
680 |
my $sth = $dbh->prepare( |
700 |
my $sth = $dbh->prepare( |
681 |
"SELECT borrowernumber,reservedate,itemnumber,timestamp |
701 |
"SELECT reservenumber,borrowernumber,reservedate,itemnumber,timestamp |
682 |
FROM reserves |
702 |
FROM reserves |
683 |
WHERE priority='0' |
703 |
WHERE priority='0' |
684 |
AND branchcode=?" |
704 |
AND branchcode=?" |
Lines 701-722
sub GetReservesToBranch {
Link Here
|
701 |
|
721 |
|
702 |
sub GetReservesForBranch { |
722 |
sub GetReservesForBranch { |
703 |
my ($frombranch) = @_; |
723 |
my ($frombranch) = @_; |
704 |
my $dbh = C4::Context->dbh; |
724 |
my $dbh = C4::Context->dbh; |
705 |
my $query = "SELECT borrowernumber,reservedate,itemnumber,waitingdate |
725 |
|
|
|
726 |
my $query = " |
727 |
SELECT reservenumber,borrowernumber,reservedate,itemnumber,waitingdate |
706 |
FROM reserves |
728 |
FROM reserves |
707 |
WHERE priority='0' |
729 |
WHERE priority='0' |
708 |
AND found='W' "; |
730 |
AND found='W' |
709 |
if ($frombranch){ |
731 |
"; |
710 |
$query .= " AND branchcode=? "; |
732 |
$query .= " AND branchcode=? " if ( $frombranch ); |
711 |
} |
|
|
712 |
$query .= "ORDER BY waitingdate" ; |
733 |
$query .= "ORDER BY waitingdate" ; |
|
|
734 |
|
713 |
my $sth = $dbh->prepare($query); |
735 |
my $sth = $dbh->prepare($query); |
714 |
if ($frombranch){ |
736 |
if ($frombranch){ |
715 |
$sth->execute($frombranch); |
737 |
$sth->execute($frombranch); |
716 |
} |
738 |
} else { |
717 |
else { |
739 |
$sth->execute(); |
718 |
$sth->execute(); |
740 |
} |
719 |
} |
741 |
|
720 |
my @transreserv; |
742 |
my @transreserv; |
721 |
my $i = 0; |
743 |
my $i = 0; |
722 |
while ( my $data = $sth->fetchrow_hashref ) { |
744 |
while ( my $data = $sth->fetchrow_hashref ) { |
Lines 896-1004
sub CancelExpiredReserves {
Link Here
|
896 |
|
918 |
|
897 |
=head2 CancelReserve |
919 |
=head2 CancelReserve |
898 |
|
920 |
|
899 |
&CancelReserve($biblionumber, $itemnumber, $borrowernumber); |
921 |
&CancelReserve( $reservenumber ); |
900 |
|
922 |
|
901 |
Cancels a reserve. |
923 |
Cancels a reserve. |
902 |
|
924 |
|
903 |
Use either C<$biblionumber> or C<$itemnumber> to specify the item to |
|
|
904 |
cancel, but not both: if both are given, C<&CancelReserve> uses |
905 |
C<$itemnumber>. |
906 |
|
907 |
C<$borrowernumber> is the borrower number of the patron on whose |
908 |
behalf the book was reserved. |
909 |
|
910 |
If C<$biblionumber> was given, C<&CancelReserve> also adjusts the |
911 |
priorities of the other people who are waiting on the book. |
912 |
|
913 |
=cut |
925 |
=cut |
914 |
|
926 |
|
915 |
sub CancelReserve { |
927 |
sub CancelReserve { |
916 |
my ( $biblio, $item, $borr ) = @_; |
928 |
my ( $reservenumber ) = @_; |
917 |
my $dbh = C4::Context->dbh; |
929 |
my $dbh = C4::Context->dbh; |
918 |
if ( $item and $borr ) { |
|
|
919 |
# removing a waiting reserve record.... |
920 |
# update the database... |
921 |
my $query = " |
922 |
UPDATE reserves |
923 |
SET cancellationdate = now(), |
924 |
found = Null, |
925 |
priority = 0 |
926 |
WHERE itemnumber = ? |
927 |
AND borrowernumber = ? |
928 |
"; |
929 |
my $sth = $dbh->prepare($query); |
930 |
$sth->execute( $item, $borr ); |
931 |
$sth->finish; |
932 |
$query = " |
933 |
INSERT INTO old_reserves |
934 |
SELECT * FROM reserves |
935 |
WHERE itemnumber = ? |
936 |
AND borrowernumber = ? |
937 |
"; |
938 |
$sth = $dbh->prepare($query); |
939 |
$sth->execute( $item, $borr ); |
940 |
$query = " |
941 |
DELETE FROM reserves |
942 |
WHERE itemnumber = ? |
943 |
AND borrowernumber = ? |
944 |
"; |
945 |
$sth = $dbh->prepare($query); |
946 |
$sth->execute( $item, $borr ); |
947 |
} |
948 |
else { |
949 |
# removing a reserve record.... |
950 |
# get the prioritiy on this record.... |
951 |
my $priority; |
952 |
my $query = qq/ |
953 |
SELECT priority FROM reserves |
954 |
WHERE biblionumber = ? |
955 |
AND borrowernumber = ? |
956 |
AND cancellationdate IS NULL |
957 |
AND itemnumber IS NULL |
958 |
/; |
959 |
my $sth = $dbh->prepare($query); |
960 |
$sth->execute( $biblio, $borr ); |
961 |
($priority) = $sth->fetchrow_array; |
962 |
$sth->finish; |
963 |
$query = qq/ |
964 |
UPDATE reserves |
965 |
SET cancellationdate = now(), |
966 |
found = Null, |
967 |
priority = 0 |
968 |
WHERE biblionumber = ? |
969 |
AND borrowernumber = ? |
970 |
/; |
971 |
|
972 |
# update the database, removing the record... |
973 |
$sth = $dbh->prepare($query); |
974 |
$sth->execute( $biblio, $borr ); |
975 |
$sth->finish; |
976 |
|
930 |
|
977 |
$query = qq/ |
931 |
my $query = " |
978 |
INSERT INTO old_reserves |
932 |
UPDATE reserves |
979 |
SELECT * FROM reserves |
933 |
SET cancellationdate = now(), |
980 |
WHERE biblionumber = ? |
934 |
found = Null, |
981 |
AND borrowernumber = ? |
935 |
priority = 0 |
982 |
/; |
936 |
WHERE reservenumber = ? |
983 |
$sth = $dbh->prepare($query); |
937 |
"; |
984 |
$sth->execute( $biblio, $borr ); |
938 |
my $sth = $dbh->prepare($query); |
|
|
939 |
$sth->execute( $reservenumber ); |
940 |
$sth->finish; |
985 |
|
941 |
|
986 |
$query = qq/ |
942 |
$query = " |
987 |
DELETE FROM reserves |
943 |
INSERT INTO old_reserves |
988 |
WHERE biblionumber = ? |
944 |
SELECT * FROM reserves |
989 |
AND borrowernumber = ? |
945 |
WHERE reservenumber = ? |
990 |
/; |
946 |
"; |
991 |
$sth = $dbh->prepare($query); |
947 |
$sth = $dbh->prepare($query); |
992 |
$sth->execute( $biblio, $borr ); |
948 |
$sth->execute( $reservenumber ); |
993 |
|
949 |
|
994 |
# now fix the priority on the others.... |
950 |
$query = " |
995 |
_FixPriority( $biblio, $borr ); |
951 |
DELETE FROM reserves |
996 |
} |
952 |
WHERE reservenumber = ? |
|
|
953 |
"; |
954 |
$sth = $dbh->prepare($query); |
955 |
$sth->execute( $reservenumber ); |
956 |
|
957 |
# now fix the priority on the others.... |
958 |
_FixPriority( $reservenumber ); |
997 |
} |
959 |
} |
998 |
|
960 |
|
999 |
=head2 ModReserve |
961 |
=head2 ModReserve |
1000 |
|
962 |
|
1001 |
ModReserve($rank, $biblio, $borrower, $branch[, $itemnumber]) |
963 |
ModReserve($rank, $reservenumber, $branch[, $itemnumber]) |
1002 |
|
964 |
|
1003 |
Change a hold request's priority or cancel it. |
965 |
Change a hold request's priority or cancel it. |
1004 |
|
966 |
|
Lines 1029-1076
itemnumber and supplying itemnumber.
Link Here
|
1029 |
|
991 |
|
1030 |
sub ModReserve { |
992 |
sub ModReserve { |
1031 |
#subroutine to update a reserve |
993 |
#subroutine to update a reserve |
1032 |
my ( $rank, $biblio, $borrower, $branch , $itemnumber) = @_; |
994 |
my ( $rank, $reservenumber, $branch , $itemnumber) = @_; |
1033 |
return if $rank eq "W"; |
995 |
return if $rank eq "W"; |
1034 |
return if $rank eq "n"; |
996 |
return if $rank eq "n"; |
1035 |
my $dbh = C4::Context->dbh; |
997 |
my $dbh = C4::Context->dbh; |
1036 |
if ( $rank eq "del" ) { |
998 |
if ( $rank eq "del" ) { |
1037 |
my $query = qq/ |
999 |
my $query = " |
1038 |
UPDATE reserves |
1000 |
UPDATE reserves |
1039 |
SET cancellationdate=now() |
1001 |
SET cancellationdate=now() |
1040 |
WHERE biblionumber = ? |
1002 |
WHERE reservenumber = ? |
1041 |
AND borrowernumber = ? |
1003 |
"; |
1042 |
/; |
|
|
1043 |
my $sth = $dbh->prepare($query); |
1004 |
my $sth = $dbh->prepare($query); |
1044 |
$sth->execute( $biblio, $borrower ); |
1005 |
$sth->execute( $reservenumber ); |
1045 |
$sth->finish; |
1006 |
$sth->finish; |
1046 |
$query = qq/ |
1007 |
$query = " |
1047 |
INSERT INTO old_reserves |
1008 |
INSERT INTO old_reserves |
1048 |
SELECT * |
1009 |
SELECT * |
1049 |
FROM reserves |
1010 |
FROM reserves |
1050 |
WHERE biblionumber = ? |
1011 |
WHERE reservenumber = ? |
1051 |
AND borrowernumber = ? |
1012 |
"; |
1052 |
/; |
|
|
1053 |
$sth = $dbh->prepare($query); |
1013 |
$sth = $dbh->prepare($query); |
1054 |
$sth->execute( $biblio, $borrower ); |
1014 |
$sth->execute( $reservenumber ); |
1055 |
$query = qq/ |
1015 |
$query = " |
1056 |
DELETE FROM reserves |
1016 |
DELETE FROM reserves |
1057 |
WHERE biblionumber = ? |
1017 |
WHERE reservenumber = ? |
1058 |
AND borrowernumber = ? |
1018 |
"; |
1059 |
/; |
|
|
1060 |
$sth = $dbh->prepare($query); |
1019 |
$sth = $dbh->prepare($query); |
1061 |
$sth->execute( $biblio, $borrower ); |
1020 |
$sth->execute( $reservenumber ); |
1062 |
|
1021 |
|
1063 |
} |
1022 |
} |
1064 |
elsif ($rank =~ /^\d+/ and $rank > 0) { |
1023 |
elsif ($rank =~ /^\d+/ and $rank > 0) { |
1065 |
my $query = qq/ |
1024 |
my $query = " |
1066 |
UPDATE reserves SET priority = ? ,branchcode = ?, itemnumber = ?, found = NULL, waitingdate = NULL |
1025 |
UPDATE reserves SET priority = ? ,branchcode = ?, itemnumber = ?, found = NULL, waitingdate = NULL |
1067 |
WHERE biblionumber = ? |
1026 |
WHERE reservenumber = ? |
1068 |
AND borrowernumber = ? |
1027 |
"; |
1069 |
/; |
|
|
1070 |
my $sth = $dbh->prepare($query); |
1028 |
my $sth = $dbh->prepare($query); |
1071 |
$sth->execute( $rank, $branch,$itemnumber, $biblio, $borrower); |
1029 |
$sth->execute( $rank, $branch, $itemnumber, $reservenumber ); |
1072 |
$sth->finish; |
1030 |
$sth->finish; |
1073 |
_FixPriority( $biblio, $borrower, $rank); |
1031 |
_FixPriority( $reservenumber, $rank ); |
1074 |
} |
1032 |
} |
1075 |
} |
1033 |
} |
1076 |
|
1034 |
|
Lines 1090-1095
sub ModReserveFill {
Link Here
|
1090 |
my ($res) = @_; |
1048 |
my ($res) = @_; |
1091 |
my $dbh = C4::Context->dbh; |
1049 |
my $dbh = C4::Context->dbh; |
1092 |
# fill in a reserve record.... |
1050 |
# fill in a reserve record.... |
|
|
1051 |
my $reservenumber = $res->{'reservenumber'}; |
1093 |
my $biblionumber = $res->{'biblionumber'}; |
1052 |
my $biblionumber = $res->{'biblionumber'}; |
1094 |
my $borrowernumber = $res->{'borrowernumber'}; |
1053 |
my $borrowernumber = $res->{'borrowernumber'}; |
1095 |
my $resdate = $res->{'reservedate'}; |
1054 |
my $resdate = $res->{'reservedate'}; |
Lines 1138-1144
sub ModReserveFill {
Link Here
|
1138 |
# now fix the priority on the others (if the priority wasn't |
1097 |
# now fix the priority on the others (if the priority wasn't |
1139 |
# already sorted!).... |
1098 |
# already sorted!).... |
1140 |
unless ( $priority == 0 ) { |
1099 |
unless ( $priority == 0 ) { |
1141 |
_FixPriority( $biblionumber, $borrowernumber ); |
1100 |
_FixPriority( $reservenumber ); |
1142 |
} |
1101 |
} |
1143 |
} |
1102 |
} |
1144 |
|
1103 |
|
Lines 1265-1284
Reduce the values of queuded list
Link Here
|
1265 |
=cut |
1224 |
=cut |
1266 |
|
1225 |
|
1267 |
sub ModReserveMinusPriority { |
1226 |
sub ModReserveMinusPriority { |
1268 |
my ( $itemnumber, $borrowernumber, $biblionumber ) = @_; |
1227 |
my ( $itemnumber, $reservenumber ) = @_; |
1269 |
|
1228 |
|
1270 |
#first step update the value of the first person on reserv |
1229 |
#first step update the value of the first person on reserv |
1271 |
my $dbh = C4::Context->dbh; |
1230 |
my $dbh = C4::Context->dbh; |
1272 |
my $query = " |
1231 |
my $query = " |
1273 |
UPDATE reserves |
1232 |
UPDATE reserves |
1274 |
SET priority = 0 , itemnumber = ? |
1233 |
SET priority = 0 , itemnumber = ? |
1275 |
WHERE borrowernumber=? |
1234 |
WHERE reservenumber = ? |
1276 |
AND biblionumber=? |
|
|
1277 |
"; |
1235 |
"; |
1278 |
my $sth_upd = $dbh->prepare($query); |
1236 |
my $sth_upd = $dbh->prepare($query); |
1279 |
$sth_upd->execute( $itemnumber, $borrowernumber, $biblionumber ); |
1237 |
$sth_upd->execute( $itemnumber, $reservenumber ); |
1280 |
# second step update all others reservs |
1238 |
# second step update all others reservs |
1281 |
_FixPriority($biblionumber, $borrowernumber, '0'); |
1239 |
_FixPriority( $reservenumber, '0'); |
1282 |
} |
1240 |
} |
1283 |
|
1241 |
|
1284 |
=head2 GetReserveInfo |
1242 |
=head2 GetReserveInfo |
Lines 1291-1297
Current implementation this query should have a single result.
Link Here
|
1291 |
=cut |
1249 |
=cut |
1292 |
|
1250 |
|
1293 |
sub GetReserveInfo { |
1251 |
sub GetReserveInfo { |
1294 |
my ( $borrowernumber, $biblionumber ) = @_; |
1252 |
my ( $reservenumber ) = @_; |
1295 |
my $dbh = C4::Context->dbh; |
1253 |
my $dbh = C4::Context->dbh; |
1296 |
my $strsth="SELECT |
1254 |
my $strsth="SELECT |
1297 |
reservedate, |
1255 |
reservedate, |
Lines 1325-1335
sub GetReserveInfo {
Link Here
|
1325 |
LEFT JOIN items USING(itemnumber) |
1283 |
LEFT JOIN items USING(itemnumber) |
1326 |
LEFT JOIN borrowers USING(borrowernumber) |
1284 |
LEFT JOIN borrowers USING(borrowernumber) |
1327 |
LEFT JOIN biblio ON (reserves.biblionumber=biblio.biblionumber) |
1285 |
LEFT JOIN biblio ON (reserves.biblionumber=biblio.biblionumber) |
1328 |
WHERE |
1286 |
WHERE reserves.reservenumber = ?"; |
1329 |
reserves.borrowernumber=? |
|
|
1330 |
AND reserves.biblionumber=?"; |
1331 |
my $sth = $dbh->prepare($strsth); |
1287 |
my $sth = $dbh->prepare($strsth); |
1332 |
$sth->execute($borrowernumber,$biblionumber); |
1288 |
$sth->execute($reservenumber); |
1333 |
|
1289 |
|
1334 |
my $data = $sth->fetchrow_hashref; |
1290 |
my $data = $sth->fetchrow_hashref; |
1335 |
return $data; |
1291 |
return $data; |
Lines 1418-1446
Input: $where is 'up', 'down', 'top' or 'bottom'. Biblionumber, Date reserve was
Link Here
|
1418 |
=cut |
1374 |
=cut |
1419 |
|
1375 |
|
1420 |
sub AlterPriority { |
1376 |
sub AlterPriority { |
1421 |
my ( $where, $borrowernumber, $biblionumber ) = @_; |
1377 |
my ( $where, $reservenumber ) = @_; |
1422 |
|
1378 |
#warn "C4::Reserves::AlterPriority( $where, $reservenumber )"; |
1423 |
my $dbh = C4::Context->dbh; |
1379 |
my $dbh = C4::Context->dbh; |
1424 |
|
1380 |
|
1425 |
## Find this reserve |
1381 |
my $reserve = GetReserve( $reservenumber ); |
1426 |
my $sth = $dbh->prepare('SELECT * FROM reserves WHERE biblionumber = ? AND borrowernumber = ? AND cancellationdate IS NULL'); |
|
|
1427 |
$sth->execute( $biblionumber, $borrowernumber ); |
1428 |
my $reserve = $sth->fetchrow_hashref(); |
1429 |
$sth->finish(); |
1430 |
|
1382 |
|
1431 |
if ( $where eq 'up' || $where eq 'down' ) { |
1383 |
if ( $where eq 'up' || $where eq 'down' ) { |
1432 |
|
1384 |
|
1433 |
my $priority = $reserve->{'priority'}; |
1385 |
my $priority = $reserve->{'priority'}; |
1434 |
$priority = $where eq 'up' ? $priority - 1 : $priority + 1; |
1386 |
$priority = $where eq 'up' ? $priority - 1 : $priority + 1; |
1435 |
_FixPriority( $biblionumber, $borrowernumber, $priority ) |
1387 |
_FixPriority( $reservenumber, $priority ) |
1436 |
|
1388 |
|
1437 |
} elsif ( $where eq 'top' ) { |
1389 |
} elsif ( $where eq 'top' ) { |
1438 |
|
1390 |
|
1439 |
_FixPriority( $biblionumber, $borrowernumber, '1' ) |
1391 |
_FixPriority( $reservenumber, '1' ) |
1440 |
|
1392 |
|
1441 |
} elsif ( $where eq 'bottom' ) { |
1393 |
} elsif ( $where eq 'bottom' ) { |
1442 |
|
1394 |
|
1443 |
_FixPriority( $biblionumber, $borrowernumber, '999999' ) |
1395 |
_FixPriority( $reservenumber, '999999' ) |
1444 |
|
1396 |
|
1445 |
} |
1397 |
} |
1446 |
} |
1398 |
} |
Lines 1454-1480
This function sets the lowestPriority field to true if is false, and false if it
Link Here
|
1454 |
=cut |
1406 |
=cut |
1455 |
|
1407 |
|
1456 |
sub ToggleLowestPriority { |
1408 |
sub ToggleLowestPriority { |
1457 |
my ( $borrowernumber, $biblionumber ) = @_; |
1409 |
my ( $reservenumber ) = @_; |
1458 |
|
1410 |
|
1459 |
my $dbh = C4::Context->dbh; |
1411 |
my $dbh = C4::Context->dbh; |
1460 |
|
1412 |
|
1461 |
my $sth = $dbh->prepare( |
1413 |
my $sth = $dbh->prepare( "UPDATE reserves SET lowestPriority = NOT lowestPriority WHERE reservenumber = ?"); |
1462 |
"UPDATE reserves SET lowestPriority = NOT lowestPriority |
1414 |
$sth->execute( $reservenumber ); |
1463 |
WHERE biblionumber = ? |
|
|
1464 |
AND borrowernumber = ?" |
1465 |
); |
1466 |
$sth->execute( |
1467 |
$biblionumber, |
1468 |
$borrowernumber, |
1469 |
); |
1470 |
$sth->finish; |
1415 |
$sth->finish; |
1471 |
|
1416 |
|
1472 |
_FixPriority( $biblionumber, $borrowernumber, '999999' ); |
1417 |
_FixPriority( $reservenumber, '999999' ); |
1473 |
} |
1418 |
} |
1474 |
|
1419 |
|
1475 |
=head2 _FixPriority |
1420 |
=head2 _FixPriority |
1476 |
|
1421 |
|
1477 |
&_FixPriority($biblio,$borrowernumber,$rank,$ignoreSetLowestRank); |
1422 |
&_FixPriority( $reservenumber, $rank, $ignoreSetLowestRank); |
1478 |
|
1423 |
|
1479 |
Only used internally (so don't export it) |
1424 |
Only used internally (so don't export it) |
1480 |
Changed how this functions works # |
1425 |
Changed how this functions works # |
Lines 1486-1526
in new priority rank
Link Here
|
1486 |
=cut |
1431 |
=cut |
1487 |
|
1432 |
|
1488 |
sub _FixPriority { |
1433 |
sub _FixPriority { |
1489 |
my ( $biblio, $borrowernumber, $rank, $ignoreSetLowestRank ) = @_; |
1434 |
my ( $reservenumber, $rank, $ignoreSetLowestRank ) = @_; |
1490 |
my $dbh = C4::Context->dbh; |
1435 |
my $dbh = C4::Context->dbh; |
1491 |
if ( $rank eq "del" ) { |
1436 |
|
1492 |
CancelReserve( $biblio, undef, $borrowernumber ); |
1437 |
my $res = GetReserve( $reservenumber ); |
1493 |
} |
1438 |
|
1494 |
if ( $rank eq "W" || $rank eq "0" ) { |
1439 |
if ( $rank eq "del" ) { |
|
|
1440 |
CancelReserve( $reservenumber ); |
1441 |
} |
1442 |
elsif ( $rank eq "W" || $rank eq "0" ) { |
1495 |
|
1443 |
|
1496 |
# make sure priority for waiting or in-transit items is 0 |
1444 |
# make sure priority for waiting or in-transit items is 0 |
1497 |
my $query = qq/ |
1445 |
my $query = " |
1498 |
UPDATE reserves |
1446 |
UPDATE reserves |
1499 |
SET priority = 0 |
1447 |
SET priority = 0 |
1500 |
WHERE biblionumber = ? |
1448 |
WHERE reservenumber = ? |
1501 |
AND borrowernumber = ? |
1449 |
AND found IN ('W', 'T') |
1502 |
AND found IN ('W', 'T') |
1450 |
"; |
1503 |
/; |
|
|
1504 |
my $sth = $dbh->prepare($query); |
1451 |
my $sth = $dbh->prepare($query); |
1505 |
$sth->execute( $biblio, $borrowernumber ); |
1452 |
$sth->execute( $reservenumber ); |
1506 |
} |
1453 |
} |
1507 |
my @priority; |
1454 |
my @priority; |
1508 |
my @reservedates; |
1455 |
my @reservedates; |
1509 |
|
1456 |
|
1510 |
# get whats left |
1457 |
# get whats left |
1511 |
# FIXME adding a new security in returned elements for changing priority, |
1458 |
my $query = " |
1512 |
# now, we don't care anymore any reservations with itemnumber linked (suppose a waiting reserve) |
1459 |
SELECT reservenumber, borrowernumber, reservedate, constrainttype |
1513 |
# This is wrong a waiting reserve has W set |
|
|
1514 |
# The assumption that having an itemnumber set means waiting is wrong and should be corrected any place it occurs |
1515 |
my $query = qq/ |
1516 |
SELECT borrowernumber, reservedate, constrainttype |
1517 |
FROM reserves |
1460 |
FROM reserves |
1518 |
WHERE biblionumber = ? |
1461 |
WHERE biblionumber = ? |
1519 |
AND ((found <> 'W' AND found <> 'T') or found is NULL) |
1462 |
AND ((found <> 'W' AND found <> 'T') OR found IS NULL) |
1520 |
ORDER BY priority ASC |
1463 |
ORDER BY priority ASC |
1521 |
/; |
1464 |
"; |
1522 |
my $sth = $dbh->prepare($query); |
1465 |
my $sth = $dbh->prepare($query); |
1523 |
$sth->execute($biblio); |
1466 |
$sth->execute( $res->{'biblionumber'} ); |
1524 |
while ( my $line = $sth->fetchrow_hashref ) { |
1467 |
while ( my $line = $sth->fetchrow_hashref ) { |
1525 |
push( @reservedates, $line ); |
1468 |
push( @reservedates, $line ); |
1526 |
push( @priority, $line ); |
1469 |
push( @priority, $line ); |
Lines 1530-1536
sub _FixPriority {
Link Here
|
1530 |
my $i; |
1473 |
my $i; |
1531 |
my $key = -1; # to allow for 0 to be a valid result |
1474 |
my $key = -1; # to allow for 0 to be a valid result |
1532 |
for ( $i = 0 ; $i < @priority ; $i++ ) { |
1475 |
for ( $i = 0 ; $i < @priority ; $i++ ) { |
1533 |
if ( $borrowernumber == $priority[$i]->{'borrowernumber'} ) { |
1476 |
if ( $reservenumber == $priority[$i]->{'reservenumber'} ) { |
1534 |
$key = $i; # save the index |
1477 |
$key = $i; # save the index |
1535 |
last; |
1478 |
last; |
1536 |
} |
1479 |
} |
Lines 1546-1574
sub _FixPriority {
Link Here
|
1546 |
|
1489 |
|
1547 |
# now fix the priority on those that are left.... |
1490 |
# now fix the priority on those that are left.... |
1548 |
$query = " |
1491 |
$query = " |
1549 |
UPDATE reserves |
1492 |
UPDATE reserves |
1550 |
SET priority = ? |
1493 |
SET priority = ? |
1551 |
WHERE biblionumber = ? |
1494 |
WHERE reservenumber = ? |
1552 |
AND borrowernumber = ? |
|
|
1553 |
AND reservedate = ? |
1554 |
AND found IS NULL |
1555 |
"; |
1495 |
"; |
1556 |
$sth = $dbh->prepare($query); |
1496 |
$sth = $dbh->prepare($query); |
1557 |
for ( my $j = 0 ; $j < @priority ; $j++ ) { |
1497 |
for ( my $j = 0 ; $j < @priority ; $j++ ) { |
1558 |
$sth->execute( |
1498 |
$sth->execute( |
1559 |
$j + 1, $biblio, |
1499 |
$j + 1, |
1560 |
$priority[$j]->{'borrowernumber'}, |
1500 |
$priority[$j]->{'reservenumber'} |
1561 |
$priority[$j]->{'reservedate'} |
|
|
1562 |
); |
1501 |
); |
1563 |
$sth->finish; |
1502 |
$sth->finish; |
1564 |
} |
1503 |
} |
1565 |
|
1504 |
|
1566 |
$sth = $dbh->prepare( "SELECT borrowernumber FROM reserves WHERE lowestPriority = 1 ORDER BY priority" ); |
1505 |
$sth = $dbh->prepare( "SELECT reservenumber FROM reserves WHERE lowestPriority = 1 ORDER BY priority" ); |
1567 |
$sth->execute(); |
1506 |
$sth->execute(); |
1568 |
|
1507 |
|
1569 |
unless ( $ignoreSetLowestRank ) { |
1508 |
unless ( $ignoreSetLowestRank ) { |
1570 |
while ( my $res = $sth->fetchrow_hashref() ) { |
1509 |
while ( my $res = $sth->fetchrow_hashref() ) { |
1571 |
_FixPriority( $biblio, $res->{'borrowernumber'}, '999999', 1 ); |
1510 |
_FixPriority( $res->{'reservenumber'}, '999999', 1 ); |
1572 |
} |
1511 |
} |
1573 |
} |
1512 |
} |
1574 |
} |
1513 |
} |
Lines 1835-1841
sub _ShiftPriorityByDateAndPriority {
Link Here
|
1835 |
|
1774 |
|
1836 |
=head2 MoveReserve |
1775 |
=head2 MoveReserve |
1837 |
|
1776 |
|
1838 |
MoveReserve( $itemnumber, $borrowernumber, $cancelreserve ) |
1777 |
MoveReserve( $reservenumber, $cancelreserve ) |
1839 |
|
1778 |
|
1840 |
Use when checking out an item to handle reserves |
1779 |
Use when checking out an item to handle reserves |
1841 |
If $cancelreserve boolean is set to true, it will remove existing reserve |
1780 |
If $cancelreserve boolean is set to true, it will remove existing reserve |