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

(-)a/C4/Reserves.pm (-3 / +5 lines)
Lines 2339-2345 sub GetReserveId { Link Here
2339
2339
2340
=head2 ReserveSlip
2340
=head2 ReserveSlip
2341
2341
2342
  ReserveSlip($branchcode, $borrowernumber, $biblionumber)
2342
  ReserveSlip($branchcode, $borrowernumber, $biblionumber [, $itemnumber, $barcode ])
2343
2343
2344
Returns letter hash ( see C4::Letters::GetPreparedLetter ) or undef
2344
Returns letter hash ( see C4::Letters::GetPreparedLetter ) or undef
2345
2345
Lines 2356-2368 available within the slip: Link Here
2356
=cut
2356
=cut
2357
2357
2358
sub ReserveSlip {
2358
sub ReserveSlip {
2359
    my ($branch, $borrowernumber, $biblionumber) = @_;
2359
    my ($branch, $borrowernumber, $biblionumber, $itemnumber, $barcode) = @_;
2360
2360
2361
#   return unless ( C4::Context->boolean_preference('printreserveslips') );
2361
#   return unless ( C4::Context->boolean_preference('printreserveslips') );
2362
    my $item = C4::Items::GetItem($itemnumber, $barcode);
2362
2363
2363
    my $reserve_id = GetReserveId({
2364
    my $reserve_id = GetReserveId({
2364
        biblionumber => $biblionumber,
2365
        biblionumber => $biblionumber,
2365
        borrowernumber => $borrowernumber
2366
        borrowernumber => $borrowernumber,
2367
        itemnumber => $item->{itemnumber}
2366
    }) or return;
2368
    }) or return;
2367
    my $reserve = GetReserveInfo($reserve_id) or return;
2369
    my $reserve = GetReserveInfo($reserve_id) or return;
2368
2370
(-)a/circ/hold-transfer-slip.pl (-1 / +3 lines)
Lines 38-43 my $session = get_session($sessionID); Link Here
38
38
39
my $biblionumber = $input->param('biblionumber');
39
my $biblionumber = $input->param('biblionumber');
40
my $borrowernumber = $input->param('borrowernumber');
40
my $borrowernumber = $input->param('borrowernumber');
41
my $itemnumber = $input->param('itemnumber');
42
my $barcode = $input->param('barcode');
41
43
42
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
44
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
43
    {   
45
    {   
Lines 52-58 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
52
54
53
my $userenv = C4::Context->userenv;
55
my $userenv = C4::Context->userenv;
54
my ($slip, $is_html);
56
my ($slip, $is_html);
55
if ( my $letter = ReserveSlip ($session->param('branch') || $userenv->{branch}, $borrowernumber, $biblionumber) ) {
57
if ( my $letter = ReserveSlip ($session->param('branch') || $userenv->{branch}, $borrowernumber, $biblionumber, $itemnumber, $barcode) ) {
56
    $slip = $letter->{content};
58
    $slip = $letter->{content};
57
    $is_html = $letter->{is_html};
59
    $is_html = $letter->{is_html};
58
}
60
}
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (-2 / +2 lines)
Lines 372-378 $(document).ready(function() { Link Here
372
    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
372
    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
373
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
373
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
374
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
374
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
375
    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
375
    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;itemnumber=[% itemnumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
376
</form>
376
</form>
377
[% END %]
377
[% END %]
378
378
Lines 382-388 $(document).ready(function() { Link Here
382
    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
382
    <input type="hidden" name="borrowernumber" value="[% borrowernumber %]" />
383
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
383
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
384
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
384
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
385
    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
385
    <button class="print" type="submit" onclick="Dopop('hold-transfer-slip.pl?borrowernumber=[% reserveborrowernumber %]&amp;biblionumber=[% itembiblionumber %]&amp;itemnumber=[% itemnumber %]&amp;op=slip');this.form.submit();"><i class="fa fa-print"></i> Don't check out and print slip (P)</button>
386
</form>
386
</form>
387
[% END %]
387
[% END %]
388
388
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt (-1 / +1 lines)
Lines 45-51 $(document).ready(function () { Link Here
45
    });
45
    });
46
46
47
    [% IF print_slip %]
47
    [% IF print_slip %]
48
        Dopop('hold-transfer-slip.pl?borrowernumber=[% borrowernumber %]&amp;biblionumber=[% biblionumber %]');
48
        Dopop('hold-transfer-slip.pl?borrowernumber=[% borrowernumber %]&amp;biblionumber=[% biblionumber %]&amp;itemnumber=[% itemnumber %]');
49
    [% END %]
49
    [% END %]
50
50
51
    var columns_settings = [% ColumnsSettings.GetColumns( 'circ', 'returns', 'checkedintable', 'json' ) %]
51
    var columns_settings = [% ColumnsSettings.GetColumns( 'circ', 'returns', 'checkedintable', 'json' ) %]
(-)a/t/db_dependent/Reserves/ReserveSlip.t (-1 / +130 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
# Copyright 2016 Oslo Public Library
4
#
5
# This file is part of Koha.
6
#
7
# Koha is free software; you can redistribute it and/or modify it
8
# under the terms of the GNU General Public License as published by
9
# the Free Software Foundation; either version 3 of the License, or
10
# (at your option) any later version.
11
#
12
# Koha is distributed in the hope that it will be useful, but
13
# WITHOUT ANY WARRANTY; without even the implied warranty of
14
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
# GNU General Public License for more details.
16
#
17
# You should have received a copy of the GNU General Public License
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20
use Modern::Perl;
21
22
use Test::More tests => 5;
23
use t::lib::TestBuilder;
24
25
use C4::Reserves qw( ReserveSlip );
26
use C4::Context;
27
use Koha::Database;
28
use Koha::Holds;
29
my $schema = Koha::Database->new->schema;
30
$schema->storage->txn_begin;
31
32
my $dbh = C4::Context->dbh;
33
$dbh->do(q|DELETE FROM letter|);
34
35
my $builder = t::lib::TestBuilder->new();
36
my $library = $builder->build(
37
    {
38
        source => 'Branch',
39
    }
40
);
41
42
my $patron = $builder->build(
43
    {
44
        source => 'Borrower',
45
        value  => {
46
            branchcode => $library->{branchcode},
47
        },
48
    }
49
);
50
51
my $letter = Koha::Database->new()->schema()->resultset('Letter')->new(
52
    {
53
        module => 'circulation',
54
        code   => 'HOLD_SLIP',
55
        content => 'Hold found for <<borrowers.firstname>>: Please pick up <<biblio.title>> with barcode <<items.barcode>> at <<branches.branchcode>>.',
56
        message_transport_type => 'email',
57
    
58
    }
59
)->insert;
60
61
my $biblio = $builder->build(
62
    {
63
        source => 'Biblio',
64
        value  => {
65
            title => 'Title 1',
66
        },
67
    }
68
);
69
my $item1 = $builder->build(
70
    {
71
        source => 'Item',
72
        value  => {
73
            biblionumber  => $biblio->{biblionumber},
74
            homebranch    => $library->{branchcode},
75
            holdingbranch => $library->{branchcode},
76
        },
77
    }
78
);
79
80
my $item2 = $builder->build(
81
    {
82
        source => 'Item',
83
        value  => {
84
            biblionumber  => $biblio->{biblionumber},
85
            homebranch    => $library->{branchcode},
86
            holdingbranch => $library->{branchcode},
87
        },
88
    }
89
);
90
91
my $hold1 = Koha::Hold->new(
92
    {
93
        biblionumber   => $biblio->{biblionumber},
94
        itemnumber     => $item1->{itemnumber},
95
        waitingdate    => '2000-01-01',
96
        borrowernumber => $patron->{borrowernumber},
97
        branchcode     => $library->{branchcode},
98
    }
99
)->store;
100
101
my $hold2 = Koha::Hold->new(
102
    {
103
        biblionumber   => $biblio->{biblionumber},
104
        itemnumber     => $item2->{itemnumber},
105
        waitingdate    => '2000-01-01',
106
        borrowernumber => $patron->{borrowernumber},
107
        branchcode     => $library->{branchcode},
108
    }
109
)->store;
110
111
is ( ReserveSlip(), undef, "No hold slip returned if invalid or undef borrowernumber and/or biblionumber" );
112
is ( ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber})->{code},
113
    'HOLD_SLIP', "Get a hold slip from library, patron and biblio" );
114
115
is (ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber})->{content},
116
    "Hold found for $patron->{firstname}: Please pick up $biblio->{title} with barcode $item1->{barcode} at $library->{branchcode}.", "Hold slip contains correctly parsed content");
117
118
is_deeply(
119
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber}),
120
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber}, $item1->{itemnumber}, $item1->{barcode}),
121
    "No item as param generate hold slip from first item in reserves");
122
123
isnt (
124
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber})->{content},
125
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber}, $item2->{itemnumber}, $item2->{barcode})->{content},
126
    "Item and/or barcode as params return correct pickup item in hold slip");
127
128
$schema->storage->txn_rollback;
129
130
1;

Return to bug 17561