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

(-)a/C4/Reserves.pm (-3 / +14 lines)
Lines 1857-1863 sub RevertWaitingStatus { Link Here
1857
1857
1858
=head2 ReserveSlip
1858
=head2 ReserveSlip
1859
1859
1860
  ReserveSlip($branchcode, $borrowernumber, $biblionumber)
1860
  ReserveSlip($branchcode, $borrowernumber, $biblionumber [, $itemnumber, $barcode ])
1861
1861
1862
Returns letter hash ( see C4::Letters::GetPreparedLetter ) or undef
1862
Returns letter hash ( see C4::Letters::GetPreparedLetter ) or undef
1863
1863
Lines 1874-1885 available within the slip: Link Here
1874
=cut
1874
=cut
1875
1875
1876
sub ReserveSlip {
1876
sub ReserveSlip {
1877
    my ($branch, $borrowernumber, $biblionumber) = @_;
1877
    my ($branch, $borrowernumber, $biblionumber, $itemnumber, $barcode) = @_;
1878
1878
1879
#   return unless ( C4::Context->boolean_preference('printreserveslips') );
1879
#   return unless ( C4::Context->boolean_preference('printreserveslips') );
1880
    my $patron = Koha::Patrons->find( $borrowernumber );
1880
    my $patron = Koha::Patrons->find( $borrowernumber );
1881
1881
1882
    my $hold = Koha::Holds->search({biblionumber => $biblionumber, borrowernumber => $borrowernumber })->next;
1882
    my $hold;
1883
    if ($itemnumber) {
1884
        $hold = Koha::Holds->search({biblionumber => $biblionumber, borrowernumber => $borrowernumber, itemnumber => $itemnumber })->next;
1885
    } elsif ($barcode) {
1886
        my $itemnumber = Koha::Items->find({ barcode => $barcode });
1887
        if ($itemnumber) {
1888
            $hold = Koha::Holds->search({biblionumber => $biblionumber, borrowernumber => $borrowernumber, itemnumber => $itemnumber })->next;
1889
        }
1890
    } else {
1891
        $hold = Koha::Holds->search({biblionumber => $biblionumber, borrowernumber => $borrowernumber })->next;
1892
    }
1893
1883
    return unless $hold;
1894
    return unless $hold;
1884
    my $reserve = $hold->unblessed;
1895
    my $reserve = $hold->unblessed;
1885
1896
(-)a/circ/hold-transfer-slip.pl (-1 / +3 lines)
Lines 37-42 my $session = get_session($sessionID); Link Here
37
37
38
my $biblionumber = $input->param('biblionumber');
38
my $biblionumber = $input->param('biblionumber');
39
my $borrowernumber = $input->param('borrowernumber');
39
my $borrowernumber = $input->param('borrowernumber');
40
my $itemnumber = $input->param('itemnumber');
41
my $barcode = $input->param('barcode');
40
42
41
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
43
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
42
    {   
44
    {   
Lines 51-57 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
51
53
52
my $userenv = C4::Context->userenv;
54
my $userenv = C4::Context->userenv;
53
my ($slip, $is_html);
55
my ($slip, $is_html);
54
if ( my $letter = ReserveSlip ($session->param('branch') || $userenv->{branch}, $borrowernumber, $biblionumber) ) {
56
if ( my $letter = ReserveSlip ($session->param('branch') || $userenv->{branch}, $borrowernumber, $biblionumber, $itemnumber, $barcode) ) {
55
    $slip = $letter->{content};
57
    $slip = $letter->{content};
56
    $is_html = $letter->{is_html};
58
    $is_html = $letter->{is_html};
57
}
59
}
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/circulation.tt (-2 / +2 lines)
Lines 256-262 Link Here
256
    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
256
    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
257
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
257
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
258
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
258
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
259
    <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>
259
    <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>
260
</form>
260
</form>
261
[% END %]
261
[% END %]
262
262
Lines 266-272 Link Here
266
    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
266
    <input type="hidden" name="borrowernumber" value="[% patron.borrowernumber %]" />
267
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
267
    <input type="hidden" name="duedatespec" value="[% duedatespec %]" />
268
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
268
    <input type="hidden" name="stickyduedate" value="[% stickyduedate %]" />
269
    <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>
269
    <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>
270
</form>
270
</form>
271
[% END %]
271
[% END %]
272
272
(-)a/t/db_dependent/Reserves/ReserveSlip.t (-1 / +137 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
$dbh->do(q|DELETE FROM reserves|);
35
36
my $builder = t::lib::TestBuilder->new();
37
my $library = $builder->build(
38
    {
39
        source => 'Branch',
40
    }
41
);
42
43
my $patron = $builder->build(
44
    {
45
        source => 'Borrower',
46
        value  => {
47
            branchcode => $library->{branchcode},
48
        },
49
    }
50
);
51
52
53
my $biblio = $builder->build(
54
    {
55
        source => 'Biblio',
56
        value  => {
57
            title => 'Title 1',
58
        },
59
    }
60
);
61
62
my $item1 = $builder->build(
63
    {
64
        source => 'Item',
65
        value  => {
66
            biblionumber  => $biblio->{biblionumber},
67
            homebranch    => $library->{branchcode},
68
            holdingbranch => $library->{branchcode},
69
        },
70
    }
71
);
72
73
my $item2 = $builder->build(
74
    {
75
        source => 'Item',
76
        value  => {
77
            biblionumber  => $biblio->{biblionumber},
78
            homebranch    => $library->{branchcode},
79
            holdingbranch => $library->{branchcode},
80
        },
81
    }
82
);
83
84
my $hold1 = Koha::Hold->new(
85
    {
86
        biblionumber   => $biblio->{biblionumber},
87
        itemnumber     => $item1->{itemnumber},
88
        waitingdate    => '2000-01-01',
89
        borrowernumber => $patron->{borrowernumber},
90
        branchcode     => $library->{branchcode},
91
    }
92
)->store;
93
94
my $hold2 = Koha::Hold->new(
95
    {
96
        biblionumber   => $biblio->{biblionumber},
97
        itemnumber     => $item2->{itemnumber},
98
        waitingdate    => '2000-01-01',
99
        borrowernumber => $patron->{borrowernumber},
100
        branchcode     => $library->{branchcode},
101
    }
102
)->store;
103
104
my $letter = $builder->build(
105
    {
106
        source => 'Letter',
107
        value  => {
108
            module => 'circulation',
109
            code   => 'HOLD_SLIP',
110
            lang   => 'default',
111
            branchcode => $library->{branchcode},
112
            content => 'Hold found for <<borrowers.firstname>>: Please pick up <<biblio.title>> with barcode <<items.barcode>> at <<branches.branchcode>>.',
113
            message_transport_type => 'email',
114
        },
115
    }
116
);
117
118
is ( ReserveSlip(), undef, "No hold slip returned if invalid or undef borrowernumber and/or biblionumber" );
119
is ( ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber})->{code},
120
    'HOLD_SLIP', "Get a hold slip from library, patron and biblio" );
121
122
is (ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber})->{content},
123
    "Hold found for $patron->{firstname}: Please pick up $biblio->{title} with barcode $item1->{barcode} at $library->{branchcode}.", "Hold slip contains correctly parsed content");
124
125
is_deeply(
126
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber}),
127
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber}, $item1->{itemnumber}, $item1->{barcode}),
128
    "No item as param generate hold slip from first item in reserves");
129
130
isnt (
131
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber})->{content},
132
    ReserveSlip($library->{branchcode}, $patron->{borrowernumber}, $biblio->{biblionumber}, $item2->{itemnumber}, $item2->{barcode})->{content},
133
    "Item and/or barcode as params return correct pickup item in hold slip");
134
135
$schema->storage->txn_rollback;
136
137
1;

Return to bug 17561