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

(-)a/C4/Reserves.pm (-1 / +71 lines)
Lines 138-143 BEGIN { Link Here
138
        IsItemOnHoldAndFound
138
        IsItemOnHoldAndFound
139
139
140
        GetMaxPatronHoldsForRecord
140
        GetMaxPatronHoldsForRecord
141
142
        &AddReserveGroup
143
        &DeleteReserveGroup
144
        &GetReserveGroupReserves
141
    );
145
    );
142
    @EXPORT_OK = qw( MergeHolds );
146
    @EXPORT_OK = qw( MergeHolds );
143
}
147
}
Lines 163-169 sub AddReserve { Link Here
163
    my (
167
    my (
164
        $branch,   $borrowernumber, $biblionumber, $bibitems,
168
        $branch,   $borrowernumber, $biblionumber, $bibitems,
165
        $priority, $resdate,        $expdate,      $notes,
169
        $priority, $resdate,        $expdate,      $notes,
166
        $title,    $checkitem,      $found,        $itemtype
170
        $title,    $checkitem,      $found,        $itemtype,
171
        $reserve_group_id
167
    ) = @_;
172
    ) = @_;
168
173
169
    $resdate = output_pref( { str => dt_from_string( $resdate ), dateonly => 1, dateformat => 'iso' })
174
    $resdate = output_pref( { str => dt_from_string( $resdate ), dateonly => 1, dateformat => 'iso' })
Lines 201-206 sub AddReserve { Link Here
201
            waitingdate    => $waitingdate,
206
            waitingdate    => $waitingdate,
202
            expirationdate => $expdate,
207
            expirationdate => $expdate,
203
            itemtype       => $itemtype,
208
            itemtype       => $itemtype,
209
            reserve_group_id => $reserve_group_id,
204
        }
210
        }
205
    )->store();
211
    )->store();
206
212
Lines 1008-1013 sub ModReserveAffect { Link Here
1008
    $hold->itemnumber($itemnumber);
1014
    $hold->itemnumber($itemnumber);
1009
    $hold->set_waiting($transferToDo);
1015
    $hold->set_waiting($transferToDo);
1010
1016
1017
    if ($hold->reserve_group_id) {
1018
        # Delete other reserves from same group
1019
        $dbh->do(q{
1020
            DELETE FROM reserves
1021
            WHERE reserve_group_id = ?
1022
              AND reserve_id != ?
1023
        }, undef, $hold->reserve_group_id, $hold->reserve_id);
1024
        DeleteReserveGroup($hold->reserve_group_id);
1025
    }
1026
1011
    _koha_notify_reserve( $hold->reserve_id )
1027
    _koha_notify_reserve( $hold->reserve_id )
1012
      if ( !$transferToDo && !$already_on_shelf );
1028
      if ( !$transferToDo && !$already_on_shelf );
1013
1029
Lines 2064-2069 sub GetHoldRule { Link Here
2064
    return $sth->fetchrow_hashref();
2080
    return $sth->fetchrow_hashref();
2065
}
2081
}
2066
2082
2083
=head2 AddReserveGroup
2084
2085
    my $reserve_group_id = AddReserveGroup();
2086
2087
Creates a new reserve group and returns its ID
2088
2089
=cut
2090
2091
sub AddReserveGroup {
2092
    my $dbh = C4::Context->dbh;
2093
2094
    $dbh->do('INSERT INTO reserve_group VALUES ()');
2095
    return $dbh->last_insert_id(undef, undef, 'reserve_group', undef);
2096
}
2097
2098
=head2 DeleteReserveGroup
2099
2100
    DeleteReserveGroup($reserve_group_id);
2101
2102
Delete a reserve group. Reserves that belong to this group are not removed.
2103
2104
=cut
2105
2106
sub DeleteReserveGroup {
2107
    my ($reserve_group_id) = @_;
2108
2109
    my $dbh = C4::Context->dbh;
2110
    my $query = 'DELETE FROM reserve_group WHERE reserve_group_id = ?';
2111
    $dbh->do($query, undef, $reserve_group_id);
2112
}
2113
2114
=head2 GetReserveGroupReserves
2115
2116
    my @reserves = GetReserveGroupReserves($reserve_group_id);
2117
2118
Fetch all reserve from a reserve group.
2119
2120
=cut
2121
2122
sub GetReserveGroupReserves {
2123
    my ($reserve_group_id) = @_;
2124
2125
    my $dbh = C4::Context->dbh;
2126
2127
    my $reserves = $dbh->selectall_arrayref(q{
2128
        SELECT * FROM reserves
2129
        WHERE reserve_group_id = ?
2130
    }, { Slice => {} }, $reserve_group_id);
2131
2132
    return () unless defined $reserves;
2133
2134
    return @$reserves;
2135
}
2136
2067
=head1 AUTHOR
2137
=head1 AUTHOR
2068
2138
2069
Koha Development Team <http://koha-community.org/>
2139
Koha Development Team <http://koha-community.org/>
(-)a/Koha/Template/Plugin/Biblio.pm (+8 lines)
Lines 63-66 sub CanArticleRequest { Link Here
63
    return $biblio ? $biblio->can_article_request( $borrower ) : 0;
63
    return $biblio ? $biblio->can_article_request( $borrower ) : 0;
64
}
64
}
65
65
66
sub Get {
67
    my ($self, $biblionumber) = @_;
68
69
    my $biblio = Koha::Biblios->find($biblionumber);
70
71
    return $biblio;
72
}
73
66
1;
74
1;
(-)a/circ/pendingreserves.pl (+2 lines)
Lines 106-111 my $strsth = Link Here
106
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_enumchron,
106
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_enumchron,
107
            GROUP_CONCAT(DISTINCT items.copynumber
107
            GROUP_CONCAT(DISTINCT items.copynumber
108
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_copynumber,
108
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_copynumber,
109
            reserves.reserve_group_id,
109
            biblio.title,
110
            biblio.title,
110
            biblio.author,
111
            biblio.author,
111
            count(DISTINCT items.itemnumber) as icount,
112
            count(DISTINCT items.itemnumber) as icount,
Lines 167-172 while ( my $data = $sth->fetchrow_hashref ) { Link Here
167
            pullcount       => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount},
168
            pullcount       => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount},
168
            itypes          => [split('\|', $data->{l_itype})],
169
            itypes          => [split('\|', $data->{l_itype})],
169
            locations       => [split('\|', $data->{l_location})],
170
            locations       => [split('\|', $data->{l_location})],
171
            reserve_group_id => $data->{reserve_group_id},
170
        }
172
        }
171
    );
173
    );
172
}
174
}
(-)a/installer/data/mysql/atomicupdate/bug_15516.sql (+8 lines)
Line 0 Link Here
1
DROP TABLE IF EXISTS reserve_group;
2
CREATE TABLE reserve_group (
3
  reserve_group_id int unsigned NOT NULL AUTO_INCREMENT,
4
  PRIMARY KEY (reserve_group_id)
5
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
6
7
ALTER TABLE reserves ADD COLUMN reserve_group_id int unsigned NULL DEFAULT NULL;
8
ALTER TABLE reserves ADD CONSTRAINT reserves_ibfk_6 FOREIGN KEY (reserve_group_id) REFERENCES reserve_group (reserve_group_id) ON DELETE SET NULL ON UPDATE CASCADE;
(-)a/installer/data/mysql/kohastructure.sql (-1 / +13 lines)
Lines 1871-1876 CREATE TABLE `reserves` ( -- information related to holds/reserves in Koha Link Here
1871
  `suspend` BOOLEAN NOT NULL DEFAULT 0,
1871
  `suspend` BOOLEAN NOT NULL DEFAULT 0,
1872
  `suspend_until` DATETIME NULL DEFAULT NULL,
1872
  `suspend_until` DATETIME NULL DEFAULT NULL,
1873
  `itemtype` VARCHAR(10) NULL DEFAULT NULL, -- If record level hold, the optional itemtype of the item the patron is requesting
1873
  `itemtype` VARCHAR(10) NULL DEFAULT NULL, -- If record level hold, the optional itemtype of the item the patron is requesting
1874
  `reserve_group_id` int unsigned NULL DEFAULT NULL,  -- Id used on reservations spanning multiple titles
1874
  PRIMARY KEY (`reserve_id`),
1875
  PRIMARY KEY (`reserve_id`),
1875
  KEY priorityfoundidx (priority,found),
1876
  KEY priorityfoundidx (priority,found),
1876
  KEY `borrowernumber` (`borrowernumber`),
1877
  KEY `borrowernumber` (`borrowernumber`),
Lines 1882-1888 CREATE TABLE `reserves` ( -- information related to holds/reserves in Koha Link Here
1882
  CONSTRAINT `reserves_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
1883
  CONSTRAINT `reserves_ibfk_2` FOREIGN KEY (`biblionumber`) REFERENCES `biblio` (`biblionumber`) ON DELETE CASCADE ON UPDATE CASCADE,
1883
  CONSTRAINT `reserves_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
1884
  CONSTRAINT `reserves_ibfk_3` FOREIGN KEY (`itemnumber`) REFERENCES `items` (`itemnumber`) ON DELETE CASCADE ON UPDATE CASCADE,
1884
  CONSTRAINT `reserves_ibfk_4` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE,
1885
  CONSTRAINT `reserves_ibfk_4` FOREIGN KEY (`branchcode`) REFERENCES `branches` (`branchcode`) ON DELETE CASCADE ON UPDATE CASCADE,
1885
  CONSTRAINT `reserves_ibfk_5` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE
1886
  CONSTRAINT `reserves_ibfk_5` FOREIGN KEY (`itemtype`) REFERENCES `itemtypes` (`itemtype`) ON DELETE CASCADE ON UPDATE CASCADE,
1887
  CONSTRAINT `reserves_ibfk_6` FOREIGN KEY (`reserve_group_id`) REFERENCES `reserve_group` (`reserve_group_id`) ON DELETE SET NULL ON UPDATE CASCADE
1888
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
1889
1890
--
1891
-- Table structure for table reserve_group
1892
--
1893
1894
DROP TABLE IF EXISTS `reserve_group`;
1895
CREATE TABLE `reserve_group` (
1896
  `reserve_group_id` int unsigned NOT NULL AUTO_INCREMENT,
1897
  PRIMARY KEY(`reserve_group_id`)
1886
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
1898
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
1887
1899
1888
--
1900
--
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/reserve-group-modal.inc (+27 lines)
Line 0 Link Here
1
<div id="reserve-group-modal" class="modal hide" tabindex="-1" role="dialog" aria-labelledby="reserve-group-modal-label" aria-hidden="true">
2
    <div class="modal-header">
3
        <button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
4
        <h3 id="reserve-group-modal-label">Reserve group</h3>
5
    </div>
6
    <div class="modal-body">
7
        <div id="loading"> <img src="[% interface %]/[% theme %]/img/loading-small.gif" alt="" /> Loading </div>
8
    </div>
9
    <div class="modal-footer">
10
        <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>
11
    </div>
12
</div>
13
14
<script>
15
  $(document).ready(function() {
16
    $('body').on('click', 'a.reserve-group', function() {
17
      var href = $(this).attr('href');
18
      $('#reserve-group-modal .modal-body').load(href + " #main");
19
      $('#reserve-group-modal').modal('show');
20
      return false;
21
    })
22
23
    $('#reserve-group-modal').on('hidden', function(){
24
        $('#reserve-group-modal .modal-body').html('<div id="loading"><img src="[% interface %]/[% theme %]/img/loading-small.gif" alt="" /> ' + _('Loading') + '</div>');
25
    });
26
  });
27
</script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/strings.inc (+2 lines)
Lines 43-47 Link Here
43
    var SUSPEND_HOLD_ERROR_NOT_FOUND = _("Unable to suspend hold, hold not found");
43
    var SUSPEND_HOLD_ERROR_NOT_FOUND = _("Unable to suspend hold, hold not found");
44
    var RESUME_HOLD_ERROR_NOT_FOUND = _("Unable to resume, hold not found");
44
    var RESUME_HOLD_ERROR_NOT_FOUND = _("Unable to resume, hold not found");
45
    var CURRENT = _(" (current) ");
45
    var CURRENT = _(" (current) ");
46
    var PART_OF_A = _("(part of a %s)");
47
    var RESERVE_GROUP = _("reserve group");
46
//]]>
48
//]]>
47
</script>
49
</script>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (+1 lines)
Lines 1107-1110 No patron matched <span class="ex">[% message | html %]</span> Link Here
1107
    <script type="text/javascript" src="[% interface %]/[% theme %]/js/members-menu_[% KOHA_VERSION %].js"></script>
1107
    <script type="text/javascript" src="[% interface %]/[% theme %]/js/members-menu_[% KOHA_VERSION %].js"></script>
1108
[% END %]
1108
[% END %]
1109
1109
1110
[% INCLUDE 'reserve-group-modal.inc' %]
1110
[% INCLUDE 'intranet-bottom.inc' %]
1111
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt (-4 / +12 lines)
Lines 54-63 Link Here
54
            <td>[% reserveloo.rcount %]</td>
54
            <td>[% reserveloo.rcount %]</td>
55
            <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserveloo.borrowernumber %]">[% reserveloo.firstname %] [%reserveloo.surname %]</a></td>
55
            <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% reserveloo.borrowernumber %]">[% reserveloo.firstname %] [%reserveloo.surname %]</a></td>
56
            <td>
56
            <td>
57
            <p>
57
                <p>
58
                [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %]
58
                    [% INCLUDE 'biblio-default-view.inc' biblionumber = reserveloo.biblionumber %]
59
                [% reserveloo.title |html %] [% FOREACH s IN reserveloo.subtitle %] [% s %][% END %]</a></p>
59
                    [% reserveloo.title |html %] [% FOREACH s IN reserveloo.subtitle %] [% s %][% END %]</a>
60
                [% IF ( reserveloo.author ) %]<p> by [% reserveloo.author %]</p>[% END %]
60
                </p>
61
                [% IF ( reserveloo.author ) %]
62
                    <p> by [% reserveloo.author %]</p>
63
                [% END %]
64
                [% IF reserveloo.reserve_group_id %]
65
                    <p>(part of a <a class="reserve-group" href="/cgi-bin/koha/reserve/reserve-group.pl?reserve_group_id=[% reserveloo.reserve_group_id %]">reserve group</a>)</p>
66
                [% END %]
61
            </td>
67
            </td>
62
        [% ELSE %]
68
        [% ELSE %]
63
            <td>"</td>
69
            <td>"</td>
Lines 212-215 Link Here
212
    </script>
218
    </script>
213
[% END %]
219
[% END %]
214
220
221
[%# TODO: this modul needs to be separated to html and js part to be icnluded correctly %]
222
[% INCLUDE 'reserve-group-modal.inc' %]
215
[% INCLUDE 'intranet-bottom.inc' %]
223
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt (+1 lines)
Lines 666-669 Link Here
666
    </script>
666
    </script>
667
[% END %]
667
[% END %]
668
668
669
[% INCLUDE 'reserve-group-modal.inc' %]
669
[% INCLUDE 'intranet-bottom.inc' %]
670
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-4 / +14 lines)
Lines 432-451 function checkMultiHold() { Link Here
432
        <a href="#" id="clear-date-to" class="clear-date">Clear date</a>
432
        <a href="#" id="clear-date-to" class="clear-date">Clear date</a>
433
	</li>
433
	</li>
434
434
435
        [% UNLESS ( multi_hold ) %]
436
          <li> <label for="requestany">Hold next available item </label>
435
          <li> <label for="requestany">Hold next available item </label>
437
               [% IF force_hold_level == 'item' %]
436
              [% IF multi_hold %]
437
                  <input type="checkbox" id="requestany" name="requestany" value="1" />
438
              [% ELSE %]
439
                [% IF force_hold_level == 'item' %]
438
                   <input type="checkbox" id="requestany" name="request" disabled="true" />
440
                   <input type="checkbox" id="requestany" name="request" disabled="true" />
439
               [% ELSIF force_hold_level == 'record' %]
441
                [% ELSIF force_hold_level == 'record' %]
440
                   <input type="checkbox" id="requestany" checked="checked" value="Any" disabled="true"/>
442
                   <input type="checkbox" id="requestany" checked="checked" value="Any" disabled="true"/>
441
                   <input type="hidden" name="request" value="Any"/>
443
                   <input type="hidden" name="request" value="Any"/>
442
               [% ELSE %]
444
                [% ELSE %]
443
                   <input type="checkbox" id="requestany" name="request" checked="checked" value="Any" />
445
                   <input type="checkbox" id="requestany" name="request" checked="checked" value="Any" />
444
                [% END %]
446
                [% END %]
447
              [% END %]
445
               <input type="hidden" name="biblioitem" value="[% biblioitemnumber %]" />
448
               <input type="hidden" name="biblioitem" value="[% biblioitemnumber %]" />
446
               <input type="hidden" name="alreadyreserved" value="[% alreadyreserved %]" />
449
               <input type="hidden" name="alreadyreserved" value="[% alreadyreserved %]" />
447
          </li>
450
          </li>
448
451
452
        [% UNLESS ( multi_hold ) %]
449
          [% IF remaining_holds_for_record > 1 %]
453
          [% IF remaining_holds_for_record > 1 %]
450
              <li>
454
              <li>
451
                   <label for="holds_to_place_count">Holds to place (count)</label>
455
                   <label for="holds_to_place_count">Holds to place (count)</label>
Lines 853-858 function checkMultiHold() { Link Here
853
                 <input type="hidden" name="itemnumber" value="" />
857
                 <input type="hidden" name="itemnumber" value="" />
854
            [% END %]
858
            [% END %]
855
    [% END %]
859
    [% END %]
860
            [% IF reserveloo.reserve_group_id %]
861
                <div>(part of a <a href="/cgi-bin/koha/reserve/reserve-group.pl?reserve_group_id=[% reserveloo.reserve_group_id %]" class="reserve-group">reserve group</a>)</div>
862
            [% END %]
856
        </td>
863
        </td>
857
864
858
    [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
865
    [% IF ( CAN_user_reserveforothers_modify_holds_priority ) %]
Lines 915-918 function checkMultiHold() { Link Here
915
922
916
</div>
923
</div>
917
</div>
924
</div>
925
926
[% INCLUDE 'reserve-group-modal.inc' %]
927
918
[% INCLUDE 'intranet-bottom.inc' %]
928
[% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/reserve-group.tt (+30 lines)
Line 0 Link Here
1
[% USE Biblio %]
2
[% INCLUDE 'doc-head-open.inc' %]
3
  <title>Koha &rsaquo; Circulation &rsaquo; Holds &rsaquo; Holds group ([% reserve_group_id %])</title>
4
  [% INCLUDE 'doc-head-close.inc' %]
5
</head>
6
<body id="reserve-reserve-group">
7
  <h1>Holds group ([% reserve_group_id %])</h1>
8
  <div id="main">
9
    [% IF reserves.size %]
10
      <table>
11
        <thead>
12
          <tr>
13
            <th>Title</th>
14
            <th>Priority</th>
15
            <th>Notes</th>
16
          </tr>
17
        </thead>
18
        <tbody>
19
          [% FOREACH reserve IN reserves %]
20
            [% biblio = Biblio.Get(reserve.biblionumber) %]
21
            <tr>
22
              <td><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblio.biblionumber %]">[% biblio.title %]</a></td>
23
              <td>[% reserve.priority %]</td>
24
              <td>[% reserve.reservenotes %]</td>
25
            </tr>
26
          [% END %]
27
        </tbody>
28
      <table>
29
    [% END %]
30
  [% INCLUDE 'intranet-bottom.inc' %]
(-)a/koha-tmpl/intranet-tmpl/prog/js/holds.js (+6 lines)
Lines 42-47 $(document).ready(function() { Link Here
42
                                title += " - <span class='" + span_class + "'>" + oObj.itemnotes + "</span>"
42
                                title += " - <span class='" + span_class + "'>" + oObj.itemnotes + "</span>"
43
                            }
43
                            }
44
44
45
                            if (oObj.reserve_group_id) {
46
                              title += '<br>';
47
                              var link = '<a class="reserve-group" href="/cgi-bin/koha/reserve/reserve-group.pl?reserve_group_id=' + oObj.reserve_group_id + '">' + RESERVE_GROUP +'</a>'
48
                              title += '<span>' + PART_OF_A.format(link) + '</span>';
49
                            }
50
45
                            return title;
51
                            return title;
46
                        }
52
                        }
47
                    },
53
                    },
(-)a/reserve/placerequest.pl (-2 / +10 lines)
Lines 50-55 my $title = $input->param('title'); Link Here
50
my $checkitem      = $input->param('checkitem');
50
my $checkitem      = $input->param('checkitem');
51
my $expirationdate = $input->param('expiration_date');
51
my $expirationdate = $input->param('expiration_date');
52
my $itemtype       = $input->param('itemtype') || undef;
52
my $itemtype       = $input->param('itemtype') || undef;
53
my $requestany     = $input->param('requestany');
53
54
54
my $borrower = Koha::Patrons->find( $borrowernumber );
55
my $borrower = Koha::Patrons->find( $borrowernumber );
55
$borrower = $borrower->unblessed if $borrower;
56
$borrower = $borrower->unblessed if $borrower;
Lines 84-89 if (defined $checkitem && $checkitem ne ''){ Link Here
84
85
85
if ( $type eq 'str8' && $borrower ) {
86
if ( $type eq 'str8' && $borrower ) {
86
87
88
    my $reserve_group_id;
89
    if ($multi_hold && $requestany) {
90
        $reserve_group_id = AddReserveGroup();
91
    }
92
87
    foreach my $biblionumber ( keys %bibinfos ) {
93
    foreach my $biblionumber ( keys %bibinfos ) {
88
        my $count = @bibitems;
94
        my $count = @bibitems;
89
        @bibitems = sort @bibitems;
95
        @bibitems = sort @bibitems;
Lines 107-114 if ( $type eq 'str8' && $borrower ) { Link Here
107
113
108
        if ($multi_hold) {
114
        if ($multi_hold) {
109
            my $bibinfo = $bibinfos{$biblionumber};
115
            my $bibinfo = $bibinfos{$biblionumber};
110
            AddReserve($branch,$borrower->{'borrowernumber'},$biblionumber,[$biblionumber],
116
            AddReserve($branch, $borrower->{'borrowernumber'}, $biblionumber,
111
                       $bibinfo->{rank},$startdate,$expirationdate,$notes,$bibinfo->{title},$checkitem,$found);
117
                [$biblionumber], $bibinfo->{rank}, $startdate, $expirationdate,
118
                $notes, $bibinfo->{title}, $checkitem, $found, $itemtype,
119
                $reserve_group_id);
112
        } else {
120
        } else {
113
            # place a request on 1st available
121
            # place a request on 1st available
114
            for ( my $i = 0 ; $i < $holds_to_place_count ; $i++ ) {
122
            for ( my $i = 0 ; $i < $holds_to_place_count ; $i++ ) {
(-)a/reserve/request.pl (+1 lines)
Lines 575-580 foreach my $biblionumber (@biblionumbers) { Link Here
575
        $reserve{'reserve_id'}     = $res->reserve_id();
575
        $reserve{'reserve_id'}     = $res->reserve_id();
576
        $reserve{itemtype}         = $res->itemtype();
576
        $reserve{itemtype}         = $res->itemtype();
577
        $reserve{branchcode}       = $res->branchcode();
577
        $reserve{branchcode}       = $res->branchcode();
578
        $reserve{'reserve_group_id'} = $res->reserve_group_id;
578
579
579
        push( @reserveloop, \%reserve );
580
        push( @reserveloop, \%reserve );
580
    }
581
    }
(-)a/reserve/reserve-group.pl (+42 lines)
Line 0 Link Here
1
#!/usr/bin/env perl
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
use CGI qw( -utf8 );
20
21
use C4::Auth;
22
use C4::Output;
23
use C4::Reserves;
24
25
my $cgi = new CGI;
26
my ($template, $loggedinuser, $cookie) = get_template_and_user({
27
    template_name   => "reserve/reserve-group.tt",
28
    query           => $cgi,
29
    type            => "intranet",
30
    authnotrequired => 0,
31
    flagsrequired   => { circulate => 'circulate_remaining_permissions' },
32
});
33
34
my $reserve_group_id = $cgi->param('reserve_group_id');
35
my @reserves = GetReserveGroupReserves($reserve_group_id);
36
37
$template->param(
38
    reserve_group_id => $reserve_group_id,
39
    reserves => \@reserves,
40
);
41
42
output_html_with_http_headers $cgi, $cookie, $template->output;
(-)a/svc/holds (-1 / +1 lines)
Lines 102-107 while ( my $h = $holds_rs->next() ) { Link Here
102
        waiting_here   => $h->branch()->branchcode() eq $branch,
102
        waiting_here   => $h->branch()->branchcode() eq $branch,
103
        priority       => $h->priority(),
103
        priority       => $h->priority(),
104
        itemtype_limit => $itemtype_limit,
104
        itemtype_limit => $itemtype_limit,
105
        reserve_group_id => $h->reserve_group_id,
105
        subtitle       => GetRecordValue(
106
        subtitle       => GetRecordValue(
106
            'subtitle',
107
            'subtitle',
107
            GetMarcBiblio({ biblionumber => $biblionumber }),
108
            GetMarcBiblio({ biblionumber => $biblionumber }),
108
- 

Return to bug 15516