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

(-)a/C4/HoldsQueue.pm (-4 / +5 lines)
Lines 276-282 sub GetPendingHoldRequestsForBib { Link Here
276
276
277
    my $dbh = C4::Context->dbh;
277
    my $dbh = C4::Context->dbh;
278
278
279
    my $request_query = "SELECT biblionumber, borrowernumber, itemnumber, priority, reserves.branchcode,
279
    my $request_query = "SELECT biblionumber, borrowernumber, itemnumber, priority, reserve_id, reserves.branchcode,
280
                                reservedate, reservenotes, borrowers.branchcode AS borrowerbranch, itemtype, item_level_hold
280
                                reservedate, reservenotes, borrowers.branchcode AS borrowerbranch, itemtype, item_level_hold
281
                         FROM reserves
281
                         FROM reserves
282
                         JOIN borrowers USING (borrowernumber)
282
                         JOIN borrowers USING (borrowernumber)
Lines 441-446 sub MapItemsToHoldRequests { Link Here
441
                            holdingbranch  => $item->{holdingbranch},
441
                            holdingbranch  => $item->{holdingbranch},
442
                            pickup_branch  => $request->{branchcode}
442
                            pickup_branch  => $request->{branchcode}
443
                              || $request->{borrowerbranch},
443
                              || $request->{borrowerbranch},
444
                            reserve_id   => $request->{reserve_id},
444
                            item_level   => $request->{item_level_hold},
445
                            item_level   => $request->{item_level_hold},
445
                            reservedate  => $request->{reservedate},
446
                            reservedate  => $request->{reservedate},
446
                            reservenotes => $request->{reservenotes},
447
                            reservenotes => $request->{reservenotes},
Lines 720-734 sub AddToHoldTargetMap { Link Here
720
    my $dbh = C4::Context->dbh;
721
    my $dbh = C4::Context->dbh;
721
722
722
    my $insert_sql = q(
723
    my $insert_sql = q(
723
        INSERT INTO hold_fill_targets (borrowernumber, biblionumber, itemnumber, source_branchcode, item_level_request)
724
        INSERT INTO hold_fill_targets (borrowernumber, biblionumber, itemnumber, source_branchcode, item_level_request, reserve_id)
724
                               VALUES (?, ?, ?, ?, ?)
725
                               VALUES (?, ?, ?, ?, ?, ?)
725
    );
726
    );
726
    my $sth_insert = $dbh->prepare($insert_sql);
727
    my $sth_insert = $dbh->prepare($insert_sql);
727
728
728
    foreach my $itemnumber (keys %$item_map) {
729
    foreach my $itemnumber (keys %$item_map) {
729
        my $mapped_item = $item_map->{$itemnumber};
730
        my $mapped_item = $item_map->{$itemnumber};
730
        $sth_insert->execute($mapped_item->{borrowernumber}, $mapped_item->{biblionumber}, $itemnumber,
731
        $sth_insert->execute($mapped_item->{borrowernumber}, $mapped_item->{biblionumber}, $itemnumber,
731
                             $mapped_item->{holdingbranch}, $mapped_item->{item_level});
732
                             $mapped_item->{holdingbranch}, $mapped_item->{item_level}, $mapped_item->{reserve_id});
732
    }
733
    }
733
}
734
}
734
735
(-)a/C4/Reserves.pm (-3 / +3 lines)
Lines 1664-1674 sub _Findgroupreserve { Link Here
1664
               reserves.non_priority        AS non_priority
1664
               reserves.non_priority        AS non_priority
1665
        FROM reserves
1665
        FROM reserves
1666
        JOIN biblioitems USING (biblionumber)
1666
        JOIN biblioitems USING (biblionumber)
1667
        JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber)
1667
        JOIN hold_fill_targets USING (reserve_id)
1668
        WHERE found IS NULL
1668
        WHERE found IS NULL
1669
        AND priority > 0
1669
        AND priority > 0
1670
        AND item_level_request = 1
1670
        AND item_level_request = 1
1671
        AND itemnumber = ?
1671
        AND hold_fill_targets.itemnumber = ?
1672
        AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
1672
        AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
1673
        AND suspend = 0
1673
        AND suspend = 0
1674
        ORDER BY priority
1674
        ORDER BY priority
Lines 1700-1706 sub _Findgroupreserve { Link Here
1700
               reserves.non_priority        AS non_priority
1700
               reserves.non_priority        AS non_priority
1701
        FROM reserves
1701
        FROM reserves
1702
        JOIN biblioitems USING (biblionumber)
1702
        JOIN biblioitems USING (biblionumber)
1703
        JOIN hold_fill_targets USING (biblionumber, borrowernumber)
1703
        JOIN hold_fill_targets USING (reserve_id)
1704
        WHERE found IS NULL
1704
        WHERE found IS NULL
1705
        AND priority > 0
1705
        AND priority > 0
1706
        AND item_level_request = 0
1706
        AND item_level_request = 0
(-)a/installer/data/mysql/atomicupdate/bug_18958_add_reserve_id_to_hold_fill_targets.perl (+9 lines)
Line 0 Link Here
1
$DBversion = 'XXX'; # will be replaced by the RM
2
if( CheckVersion( $DBversion ) ) {
3
4
    if( !column_exists( 'hold_fill_targets', 'reserve_id' ) ) {
5
        $dbh->do( "ALTER TABLE hold_fill_targets ADD COLUMN reserve_id int(11) DEFAULT NULL AFTER item_level_request" );
6
    }
7
8
    NewVersion( $DBversion, 18958, "Add reserve_id to hold_fill_targets");
9
}
(-)a/installer/data/mysql/kohastructure.sql (+1 lines)
Lines 3978-3983 CREATE TABLE `hold_fill_targets` ( Link Here
3978
  `itemnumber` int(11) NOT NULL,
3978
  `itemnumber` int(11) NOT NULL,
3979
  `source_branchcode`  varchar(10) default NULL,
3979
  `source_branchcode`  varchar(10) default NULL,
3980
  `item_level_request` tinyint(4) NOT NULL default 0,
3980
  `item_level_request` tinyint(4) NOT NULL default 0,
3981
  `reserve_id` int(11) DEFAULT NULL
3981
  PRIMARY KEY `itemnumber` (`itemnumber`),
3982
  PRIMARY KEY `itemnumber` (`itemnumber`),
3982
  KEY `bib_branch` (`biblionumber`, `source_branchcode`),
3983
  KEY `bib_branch` (`biblionumber`, `source_branchcode`),
3983
  CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`)
3984
  CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`)
(-)a/t/db_dependent/Reserves.t (-3 / +2 lines)
Lines 1023-1029 subtest 'MoveReserve additional test' => sub { Link Here
1023
    is($patron_2->holds->next()->reserve_id, $reserve_2, "The 2nd patron has a hold");
1023
    is($patron_2->holds->next()->reserve_id, $reserve_2, "The 2nd patron has a hold");
1024
1024
1025
    # Fake the holds queue
1025
    # Fake the holds queue
1026
    $dbh->do(q{INSERT INTO hold_fill_targets VALUES (?, ?, ?, ?, ?)},undef,($patron_1->borrowernumber,$biblio->biblionumber,$item_1->itemnumber,$item_1->homebranch,0));
1026
    $dbh->do(q{INSERT INTO hold_fill_targets VALUES (?, ?, ?, ?, ?,?)},undef,($patron_1->borrowernumber,$biblio->biblionumber,$item_1->itemnumber,$item_1->homebranch,0,$reserve_1));
1027
1027
1028
    # The 2nd hold should be filed even if the item is preselected for the first hold
1028
    # The 2nd hold should be filed even if the item is preselected for the first hold
1029
    MoveReserve($item_1->itemnumber,$patron_2->borrowernumber);
1029
    MoveReserve($item_1->itemnumber,$patron_2->borrowernumber);
Lines 1136-1142 subtest 'CheckReserves additional test' => sub { Link Here
1136
1136
1137
     is( $status, 'Reserved', "We found a reserve" );
1137
     is( $status, 'Reserved', "We found a reserve" );
1138
     is( $matched_reserve->{reserve_id}, $reserve1->reserve_id, "We got the Transit reserve");
1138
     is( $matched_reserve->{reserve_id}, $reserve1->reserve_id, "We got the Transit reserve");
1139
     is( scalar @$possible_reserves, 1, 'We only get the one matched');
1139
     is( scalar @$possible_reserves, 2, 'We do get both reserves');
1140
1140
1141
};
1141
};
1142
1142
1143
- 

Return to bug 18958