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 438-443 sub MapItemsToHoldRequests { Link Here
438
                            holdingbranch  => $item->{holdingbranch},
438
                            holdingbranch  => $item->{holdingbranch},
439
                            pickup_branch  => $request->{branchcode}
439
                            pickup_branch  => $request->{branchcode}
440
                              || $request->{borrowerbranch},
440
                              || $request->{borrowerbranch},
441
                            reserve_id   => $request->{reserve_id},
441
                            item_level   => $request->{item_level_hold},
442
                            item_level   => $request->{item_level_hold},
442
                            reservedate  => $request->{reservedate},
443
                            reservedate  => $request->{reservedate},
443
                            reservenotes => $request->{reservenotes},
444
                            reservenotes => $request->{reservenotes},
Lines 717-731 sub AddToHoldTargetMap { Link Here
717
    my $dbh = C4::Context->dbh;
718
    my $dbh = C4::Context->dbh;
718
719
719
    my $insert_sql = q(
720
    my $insert_sql = q(
720
        INSERT INTO hold_fill_targets (borrowernumber, biblionumber, itemnumber, source_branchcode, item_level_request)
721
        INSERT INTO hold_fill_targets (borrowernumber, biblionumber, itemnumber, source_branchcode, item_level_request, reserve_id)
721
                               VALUES (?, ?, ?, ?, ?)
722
                               VALUES (?, ?, ?, ?, ?, ?)
722
    );
723
    );
723
    my $sth_insert = $dbh->prepare($insert_sql);
724
    my $sth_insert = $dbh->prepare($insert_sql);
724
725
725
    foreach my $itemnumber (keys %$item_map) {
726
    foreach my $itemnumber (keys %$item_map) {
726
        my $mapped_item = $item_map->{$itemnumber};
727
        my $mapped_item = $item_map->{$itemnumber};
727
        $sth_insert->execute($mapped_item->{borrowernumber}, $mapped_item->{biblionumber}, $itemnumber,
728
        $sth_insert->execute($mapped_item->{borrowernumber}, $mapped_item->{biblionumber}, $itemnumber,
728
                             $mapped_item->{holdingbranch}, $mapped_item->{item_level});
729
                             $mapped_item->{holdingbranch}, $mapped_item->{item_level}, $mapped_item->{reserve_id});
729
    }
730
    }
730
}
731
}
731
732
(-)a/C4/Reserves.pm (-3 / +3 lines)
Lines 1652-1662 sub _Findgroupreserve { Link Here
1652
               reserves.itemtype            AS itemtype
1652
               reserves.itemtype            AS itemtype
1653
        FROM reserves
1653
        FROM reserves
1654
        JOIN biblioitems USING (biblionumber)
1654
        JOIN biblioitems USING (biblionumber)
1655
        JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber)
1655
        JOIN hold_fill_targets USING (reserve_id)
1656
        WHERE found IS NULL
1656
        WHERE found IS NULL
1657
        AND priority > 0
1657
        AND priority > 0
1658
        AND item_level_request = 1
1658
        AND item_level_request = 1
1659
        AND itemnumber = ?
1659
        AND hold_fill_targets.itemnumber = ?
1660
        AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
1660
        AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY)
1661
        AND suspend = 0
1661
        AND suspend = 0
1662
        ORDER BY priority
1662
        ORDER BY priority
Lines 1687-1693 sub _Findgroupreserve { Link Here
1687
               reserves.itemtype            AS itemtype
1687
               reserves.itemtype            AS itemtype
1688
        FROM reserves
1688
        FROM reserves
1689
        JOIN biblioitems USING (biblionumber)
1689
        JOIN biblioitems USING (biblionumber)
1690
        JOIN hold_fill_targets USING (biblionumber, borrowernumber)
1690
        JOIN hold_fill_targets USING (reserve_id)
1691
        WHERE found IS NULL
1691
        WHERE found IS NULL
1692
        AND priority > 0
1692
        AND priority > 0
1693
        AND item_level_request = 0
1693
        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 3968-3973 CREATE TABLE `hold_fill_targets` ( Link Here
3968
  `itemnumber` int(11) NOT NULL,
3968
  `itemnumber` int(11) NOT NULL,
3969
  `source_branchcode`  varchar(10) default NULL,
3969
  `source_branchcode`  varchar(10) default NULL,
3970
  `item_level_request` tinyint(4) NOT NULL default 0,
3970
  `item_level_request` tinyint(4) NOT NULL default 0,
3971
  `reserve_id` int(11) DEFAULT NULL
3971
  PRIMARY KEY `itemnumber` (`itemnumber`),
3972
  PRIMARY KEY `itemnumber` (`itemnumber`),
3972
  KEY `bib_branch` (`biblionumber`, `source_branchcode`),
3973
  KEY `bib_branch` (`biblionumber`, `source_branchcode`),
3973
  CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`)
3974
  CONSTRAINT `hold_fill_targets_ibfk_1` FOREIGN KEY (`borrowernumber`)
(-)a/t/db_dependent/Reserves.t (-3 / +2 lines)
Lines 1026-1032 subtest 'MoveReserve additional test' => sub { Link Here
1026
    is($patron_2->holds->next()->reserve_id, $reserve_2, "The 2nd patron has a hold");
1026
    is($patron_2->holds->next()->reserve_id, $reserve_2, "The 2nd patron has a hold");
1027
1027
1028
    # Fake the holds queue
1028
    # Fake the holds queue
1029
    $dbh->do(q{INSERT INTO hold_fill_targets VALUES (?, ?, ?, ?, ?)},undef,($patron_1->borrowernumber,$biblio->biblionumber,$item_1->itemnumber,$item_1->homebranch,0));
1029
    $dbh->do(q{INSERT INTO hold_fill_targets VALUES (?, ?, ?, ?, ?,?)},undef,($patron_1->borrowernumber,$biblio->biblionumber,$item_1->itemnumber,$item_1->homebranch,0,$reserve_1));
1030
1030
1031
    # The 2nd hold should be filed even if the item is preselected for the first hold
1031
    # The 2nd hold should be filed even if the item is preselected for the first hold
1032
    MoveReserve($item_1->itemnumber,$patron_2->borrowernumber);
1032
    MoveReserve($item_1->itemnumber,$patron_2->borrowernumber);
Lines 1139-1145 subtest 'CheckReserves additional test' => sub { Link Here
1139
1139
1140
     is( $status, 'Reserved', "We found a reserve" );
1140
     is( $status, 'Reserved', "We found a reserve" );
1141
     is( $matched_reserve->{reserve_id}, $reserve1->reserve_id, "We got the Transit reserve");
1141
     is( $matched_reserve->{reserve_id}, $reserve1->reserve_id, "We got the Transit reserve");
1142
     is( scalar @$possible_reserves, 1, 'We only get the one matched');
1142
     is( scalar @$possible_reserves, 2, 'We do get both reserves');
1143
1143
1144
};
1144
};
1145
1145
1146
- 

Return to bug 18958