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

(-)a/installer/data/mysql/atomicupdate/bug_31391_-_add_HOLD_CANCELLATION-RECALLED_authorised_value.pl (-1 / +3 lines)
Lines 2-12 use Modern::Perl; Link Here
2
2
3
return {
3
return {
4
    bug_number => "31391",
4
    bug_number => "31391",
5
    description => "Add new RECALLED value to HOLD_CANCELLATION authorised value category",
5
    description => "Staff-side recalls",
6
    up => sub {
6
    up => sub {
7
        my ($args) = @_;
7
        my ($args) = @_;
8
        my ($dbh, $out) = @$args{qw(dbh out)};
8
        my ($dbh, $out) = @$args{qw(dbh out)};
9
9
10
        $dbh->do(q{ INSERT IGNORE INTO authorised_values (category, authorised_value, lib) VALUES ('HOLD_CANCELLATION','RECALLED','Hold was converted to a recall') });
10
        $dbh->do(q{ INSERT IGNORE INTO authorised_values (category, authorised_value, lib) VALUES ('HOLD_CANCELLATION','RECALLED','Hold was converted to a recall') });
11
12
        say $out "Added RECALLED value to HOLD_CANCELLATION authorised value category";
11
    },
13
    },
12
};
14
};
(-)a/installer/data/mysql/atomicupdate/bug_31391_-_add_RecallsInterface_syspref.pl (-1 / +3 lines)
Lines 2-12 use Modern::Perl; Link Here
2
2
3
return {
3
return {
4
    bug_number => "31391",
4
    bug_number => "31391",
5
    description => "Add new system preference RecallsInterface",
5
    description => "Staff-side recalls",
6
    up => sub {
6
    up => sub {
7
        my ($args) = @_;
7
        my ($args) = @_;
8
        my ($dbh, $out) = @$args{qw(dbh out)};
8
        my ($dbh, $out) = @$args{qw(dbh out)};
9
9
10
        $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('RecallsInterface','opac','opac|staff|both','The interface that recalls can be placed through','Choice') });
10
        $dbh->do(q{INSERT IGNORE INTO systempreferences (variable,value,options,explanation,type) VALUES ('RecallsInterface','opac','opac|staff|both','The interface that recalls can be placed through','Choice') });
11
12
        say $out "Added system preference 'RecallsInterface'";
11
    },
13
    },
12
};
14
};
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc (+6 lines)
Lines 23-28 Link Here
23
            <th>&nbsp;</th>
23
            <th>&nbsp;</th>
24
            <th>&nbsp;</th>
24
            <th>&nbsp;</th>
25
            <th>Print hold/transfer slip</th>
25
            <th>Print hold/transfer slip</th>
26
            <th>&nbsp;</th>
26
        </tr>
27
        </tr>
27
    </thead>
28
    </thead>
28
    [%- SET first_priority = 0 -%]
29
    [%- SET first_priority = 0 -%]
Lines 249-254 Link Here
249
            [% ELSE %]
250
            [% ELSE %]
250
                <td></td>
251
                <td></td>
251
            [% END %]
252
            [% END %]
253
            <td>
254
                [% IF Koha.Preference('UseRecalls') AND Koha.Preference('RecallsInterface') != 'opac' %]
255
                <a class="convert-to-recall btn" title="Convert hold to recall" data-id="[% hold.reserve_id | html %]">Mark for conversion to recall</a>
256
                [% END %]
257
            </td>
252
        </tr>
258
        </tr>
253
    [% END %]
259
    [% END %]
254
</table>
260
</table>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref (-9 / +9 lines)
Lines 1334-1339 Circulation: Link Here
1334
                  1: Use
1334
                  1: Use
1335
                  0: "Don't use"
1335
                  0: "Don't use"
1336
            - recalls. Make sure you configure <a href="/cgi-bin/koha/admin/smart-rules.pl">circulation and fines rules</a> for recalls once enabled.
1336
            - recalls. Make sure you configure <a href="/cgi-bin/koha/admin/smart-rules.pl">circulation and fines rules</a> for recalls once enabled.
1337
        -
1338
            - Recalls can be placed through
1339
            - pref: RecallsInterface
1340
              default: opac
1341
              choices:
1342
                  opac: the OPAC only
1343
                  staff: the staff interface only
1344
                  both: both the OPAC and the staff interface
1345
            - . (Requires <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=UseRecalls">UseRecalls</a>.)
1337
1346
1338
    SIP2:
1347
    SIP2:
1339
        -
1348
        -
Lines 1368-1379 Circulation: Link Here
1368
                  1: Enable
1377
                  1: Enable
1369
                  0: Disable
1378
                  0: Disable
1370
            - "the curbside pickup module."
1379
            - "the curbside pickup module."
1371
        -
1372
            - Recalls can be placed through
1373
            - pref: RecallsInterface
1374
              default: opac
1375
              choices:
1376
                  opac: the OPAC only
1377
                  staff: the staff interface only
1378
                  both: both the OPAC and the staff interface
1379
            - . (Requires <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=UseRecalls">UseRecalls</a>.)
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/recalls/request.tt (-4 / +14 lines)
Lines 57-62 Link Here
57
            </div>
57
            </div>
58
        [% END %]
58
        [% END %]
59
59
60
        [% IF patron_holds_count %]
61
            <div class="dialog message">
62
                Patron has placed one or more record-level holds. <a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% biblio.biblionumber | html %]">Convert a hold to a recall</a>.
63
            </div>
64
        [% END %]
65
60
        <fieldset class="rows">
66
        <fieldset class="rows">
61
            <legend>Recall details</legend>
67
            <legend>Recall details</legend>
62
            <form id="recallform" action="/cgi-bin/koha/recalls/request.pl" method="post">
68
            <form id="recallform" action="/cgi-bin/koha/recalls/request.pl" method="post">
Lines 109-115 Link Here
109
                        <th>Barcode</th>
115
                        <th>Barcode</th>
110
                        [% UNLESS ( single_branch_mode ) %]
116
                        [% UNLESS ( single_branch_mode ) %]
111
                            <th>Home library</th>
117
                            <th>Home library</th>
112
                            <th>Last location</th>
118
                            <th>Holding library</th>
113
                        [% END %]
119
                        [% END %]
114
                        <th>Collection</th>
120
                        <th>Collection</th>
115
                        <th>Call number</th>
121
                        <th>Call number</th>
Lines 146-152 Link Here
146
                                <span class="intransit">In transit from [% Branches.GetName( item.get_transfer.frombranch ) | html %] to [% Branches.GetName( item.get_transfer.tobranch ) | html %] since [% item.get_transfer.datesent | $KohaDates %]</span>
152
                                <span class="intransit">In transit from [% Branches.GetName( item.get_transfer.frombranch ) | html %] to [% Branches.GetName( item.get_transfer.tobranch ) | html %] since [% item.get_transfer.datesent | $KohaDates %]</span>
147
                            [% END %]
153
                            [% END %]
148
                            [% IF ( item.itemlost || item.withdrawn ) %]
154
                            [% IF ( item.itemlost || item.withdrawn ) %]
149
                                <span class="lost">Unavailable (lost or missing)</span>
155
                                <span class="lost">Unavailable (lost or withdrawn)</span>
150
                            [% END %]
156
                            [% END %]
151
                            [% IF ( item.notforloan ) %]
157
                            [% IF ( item.notforloan ) %]
152
                                <span class="notforloan">Not for loan ([% item.notforloan | html %])</span>
158
                                <span class="notforloan">Not for loan ([% item.notforloan | html %])</span>
Lines 166-172 Link Here
166
                                </span>
172
                                </span>
167
                            [% ELSIF ( hold.borrowernumber == logged_in_user.borrowernumber ) %]
173
                            [% ELSIF ( hold.borrowernumber == logged_in_user.borrowernumber ) %]
168
                                <span class="waiting">
174
                                <span class="waiting">
169
                                    Patron has already placed a <a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% patron.borrowernumber | uri %]#reserves">reserve</a> on this item.
175
                                    Patron has already placed a <a href="/cgi-bin/koha/circ/circulation.pl?borrowernumber=[% patron.borrowernumber | uri %]#reserves">hold</a> on this item.
170
                                </span>
176
                                </span>
171
                            [% END # / IF ( item.recall or hold ) %]
177
                            [% END # / IF ( item.recall or hold ) %]
172
                        </td>
178
                        </td>
Lines 213-218 Link Here
213
219
214
        [% END %]
220
        [% END %]
215
221
222
        <div class="page-section">
223
216
        <h2>Existing recalls</h2>
224
        <h2>Existing recalls</h2>
217
225
218
        [% IF Koha.Preference('UseRecalls') %]
226
        [% IF Koha.Preference('UseRecalls') %]
Lines 223-229 Link Here
223
                    <input type="checkbox" id="select_all"> <span id="select_all_text">Select all</span>
231
                    <input type="checkbox" id="select_all"> <span id="select_all_text">Select all</span>
224
                    [% INCLUDE 'recalls.inc' %]
232
                    [% INCLUDE 'recalls.inc' %]
225
                    <fieldset class="action">
233
                    <fieldset class="action">
226
                        <button type="submit" id="cancel_selected" class="btn btn-default btn-sm">Cancel selected recalls</button>
234
                        <button type="submit" id="cancel_selected" class="btn btn-primary btn-sm">Cancel selected recalls</button>
227
                    </fieldset>
235
                    </fieldset>
228
                </form>
236
                </form>
229
            [% ELSE %]
237
            [% ELSE %]
Lines 233-238 Link Here
233
            <div class="dialog message">Recalls have not been enabled. Enable the <a href="/cgi-bin/koha/admin/preferences.pl?tab=circulation">UseRecalls</a> system preference to use recalls.</div>
241
            <div class="dialog message">Recalls have not been enabled. Enable the <a href="/cgi-bin/koha/admin/preferences.pl?tab=circulation">UseRecalls</a> system preference to use recalls.</div>
234
        [% END %]
242
        [% END %]
235
243
244
        </div> <!-- page-section Existing recalls -->
245
236
    [% END %]
246
    [% END %]
237
247
238
</main>
248
</main>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (+4 lines)
Lines 1761-1766 Link Here
1761
                window.open("/cgi-bin/koha/circ/hold-transfer-slip.pl?reserve_id=" + reserve_id);
1761
                window.open("/cgi-bin/koha/circ/hold-transfer-slip.pl?reserve_id=" + reserve_id);
1762
                return false;
1762
                return false;
1763
        })
1763
        })
1764
        $(".convert-to-recall").click(function(){
1765
            var reserve_id = $(this).attr('data-id');
1766
            $("select[class='rank-request'][data-hold-id='"+reserve_id+"']").val('recall');
1767
        });
1764
    </script>
1768
    </script>
1765
[% END %]
1769
[% END %]
1766
1770
(-)a/recalls/request.pl (+2 lines)
Lines 122-130 if ( $borrowernumber ) { Link Here
122
        if ( !$biblio->can_be_recalled({ patron => $patron }) ) {
122
        if ( !$biblio->can_be_recalled({ patron => $patron }) ) {
123
            $error = 1;
123
            $error = 1;
124
        }
124
        }
125
        my $patron_holds_count = Koha::Holds->search({ borrowernumber => $borrowernumber, biblionumber => $biblio->biblionumber, item_level_hold => 0 })->count;
125
126
126
        $template->param(
127
        $template->param(
127
            patron => $patron,
128
            patron => $patron,
129
            patron_holds_count => $patron_holds_count,
128
        );
130
        );
129
    }
131
    }
130
}
132
}
(-)a/t/db_dependent/Holds.t (-1 / +12 lines)
Lines 1825-1830 subtest 'ModReserve to convert a hold to a recall' => sub { Link Here
1825
            surname      => 'whatever surname',
1825
            surname      => 'whatever surname',
1826
            categorycode => $category->{categorycode},
1826
            categorycode => $category->{categorycode},
1827
            branchcode   => $branch,
1827
            branchcode   => $branch,
1828
            email        => 'name@email.com',
1828
        }
1829
        }
1829
    )->store;
1830
    )->store;
1830
    my $borrowernumber = $patron->borrowernumber;
1831
    my $borrowernumber = $patron->borrowernumber;
Lines 1835-1840 subtest 'ModReserve to convert a hold to a recall' => sub { Link Here
1835
            surname      => 'whatever surname',
1836
            surname      => 'whatever surname',
1836
            categorycode => $category->{categorycode},
1837
            categorycode => $category->{categorycode},
1837
            branchcode   => $branch,
1838
            branchcode   => $branch,
1839
            email        => 'name2@email.com',
1838
        }
1840
        }
1839
    )->store;
1841
    )->store;
1840
1842
Lines 1854-1859 subtest 'ModReserve to convert a hold to a recall' => sub { Link Here
1854
        },
1856
        },
1855
    });
1857
    });
1856
1858
1859
    my $notice = Koha::Notice::Template->new({
1860
        name                   => 'Hold cancellation',
1861
        module                 => 'reserves',
1862
        code                   => 'HOLD_CANCELLATION',
1863
        title                  => 'Hold cancelled',
1864
        content                => 'Your hold was cancelled.',
1865
        message_transport_type => 'email',
1866
        branchcode             => q{},
1867
    })->store();
1868
1857
    my $reserve_id = AddReserve(
1869
    my $reserve_id = AddReserve(
1858
        {
1870
        {
1859
            branchcode     => $branch,
1871
            branchcode     => $branch,
1860
- 

Return to bug 31391