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

(-)a/Koha/Hold.pm (+10 lines)
Lines 190-195 sub move_hold { Link Here
190
    my $original              = $self;
190
    my $original              = $self;
191
    my $original_biblionumber = $self->biblionumber;
191
    my $original_biblionumber = $self->biblionumber;
192
192
193
    my $found = $original->found // '';
194
195
    if ( $found eq 'W' ) {
196
        return { success => 0, error => 'Cannot move a waiting hold' };
197
    }
198
199
    if ( $found eq 'T' ) {
200
        return { success => 0, error => 'Cannot move a hold in transit' };
201
    }
202
193
    my $patron = Koha::Patrons->find( { borrowernumber => $self->borrowernumber } );
203
    my $patron = Koha::Patrons->find( { borrowernumber => $self->borrowernumber } );
194
    return { success => 0, error => 'Missing patron or target' } unless $patron;
204
    return { success => 0, error => 'Missing patron or target' } unless $patron;
195
205
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc (+2 lines)
Lines 54-59 Link Here
54
                        data-item_level_hold="[% hold.item_level_hold | html %]"
54
                        data-item_level_hold="[% hold.item_level_hold | html %]"
55
                        data-itemnumber="[% hold.itemnumber | html %]"
55
                        data-itemnumber="[% hold.itemnumber | html %]"
56
                        data-biblionumber="[% hold.biblionumber | html %]"
56
                        data-biblionumber="[% hold.biblionumber | html %]"
57
                        data-waiting="[% hold.atdestination | html %]"
58
                        data-intransit="[% hold.intransit | html %]"
57
                /></td>
59
                /></td>
58
                <td>
60
                <td>
59
                    <input type="hidden" name="reserve_id" value="[% hold.reserve_id | html %]" />
61
                    <input type="hidden" name="reserve_id" value="[% hold.reserve_id | html %]" />
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-4 / +9 lines)
Lines 2116-2124 Link Here
2116
                        let reserve_biblionumber = $(this).data('biblionumber');
2116
                        let reserve_biblionumber = $(this).data('biblionumber');
2117
                        let reserve_itemnumber = $(this).data('itemnumber');
2117
                        let reserve_itemnumber = $(this).data('itemnumber');
2118
                        let item_level_hold = $(this).data('item_level_hold');
2118
                        let item_level_hold = $(this).data('item_level_hold');
2119
                        let error_message = $(this).data('item_level_hold') ? "" : _("Cannot move a waiting or record level hold");
2119
                        let item_waiting = $(this).data('waiting');
2120
                        let item_intransit = $(this).data('intransit');
2121
                        let error_message = $(this).data('item_level_hold') ? "" : _("Cannot move a waiting, in transit, or record level hold");
2120
                        let found_status = $(this).data('found');
2122
                        let found_status = $(this).data('found');
2121
                        if ( item_level_hold ) {
2123
                        if ( item_level_hold &&  ( !item_waiting || !item_intransit ) ) {
2122
                            $('#move_hold_item_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" checked /></td><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a> Itemnumber: <a target="_blank" href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=${reserve_biblionumber}#item${reserve_itemnumber}">${reserve_itemnumber}</a></td><td>${error_message}</td></tr>`)
2124
                            $('#move_hold_item_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" checked /></td><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a> Itemnumber: <a target="_blank" href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=${reserve_biblionumber}#item${reserve_itemnumber}">${reserve_itemnumber}</a></td><td>${error_message}</td></tr>`)
2123
                        } else {
2125
                        } else {
2124
                            $('#move_hold_item_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" disabled /></td><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a> Itemnumber: <a target="_blank" href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=${reserve_biblionumber}#item${reserve_itemnumber}">${reserve_itemnumber}</a></td><td>${error_message}</td></tr>`)
2126
                            $('#move_hold_item_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" disabled /></td><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a> Itemnumber: <a target="_blank" href="/cgi-bin/koha/catalogue/moredetail.pl?biblionumber=${reserve_biblionumber}#item${reserve_itemnumber}">${reserve_itemnumber}</a></td><td>${error_message}</td></tr>`)
Lines 2139-2147 Link Here
2139
                        let reserve_biblionumber = $(this).data('biblionumber');
2141
                        let reserve_biblionumber = $(this).data('biblionumber');
2140
                        let reserve_itemnumber = $(this).data('itemnumber');
2142
                        let reserve_itemnumber = $(this).data('itemnumber');
2141
                        let item_level_hold = $(this).data('item_level_hold');
2143
                        let item_level_hold = $(this).data('item_level_hold');
2142
                        let error_message = $(this).data('item_level_hold') ? _("Cannot move a waiting or item level hold") : "";
2144
                        let item_status = $(this).data('status');
2145
                        let item_waiting = $(this).data('waiting');
2146
                        let item_intransit = $(this).data('intransit');
2147
                        let error_message = $(this).data('item_level_hold') ? _("Cannot move a waiting, in transit, or item level hold") : "";
2143
                        let found_status = $(this).data('found');
2148
                        let found_status = $(this).data('found');
2144
                        if ( !item_level_hold ) {
2149
                        if ( !item_level_hold &&  ( !item_waiting || !item_intransit ) ) {
2145
                            $('#move_hold_biblio_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" checked /><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a></td><td>${error_message}</td></tr>`)
2150
                            $('#move_hold_biblio_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" checked /><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a></td><td>${error_message}</td></tr>`)
2146
                        } else {
2151
                        } else {
2147
                            $('#move_hold_biblio_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" disabled /><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a></td><td>${error_message}</td></tr>`)
2152
                            $('#move_hold_biblio_selection table').append(`<tr><td><input type="checkbox" name="move_hold_id" value="${reserve_id}" disabled /><td>${reserve_id}</td><td>Biblionumber: <a target="_blank" href="/cgi-bin/koha/reserve/request.pl?biblionumber=${reserve_biblionumber}">${reserve_biblionumber}</a></td><td>${error_message}</td></tr>`)
(-)a/t/db_dependent/Koha/Hold.t (-3 / +28 lines)
Lines 1163-1169 subtest 'change_type() tests' => sub { Link Here
1163
};
1163
};
1164
1164
1165
subtest 'move_hold() tests' => sub {
1165
subtest 'move_hold() tests' => sub {
1166
    plan tests => 11;
1166
    plan tests => 13;
1167
    $schema->storage->txn_begin;
1167
    $schema->storage->txn_begin;
1168
1168
1169
    my $patron = Koha::Patron->new(
1169
    my $patron = Koha::Patron->new(
Lines 1306-1312 subtest 'move_hold() tests' => sub { Link Here
1306
    is( $logs_2->count, 1, 'Hold modification was logged' );
1306
    is( $logs_2->count, 1, 'Hold modification was logged' );
1307
1307
1308
    #disable HoldsLog
1308
    #disable HoldsLog
1309
    t::lib::Mocks::mock_preference( 'HoldsLog', 1 );
1309
    t::lib::Mocks::mock_preference( 'HoldsLog', 0 );
1310
1311
    my $hold_6 = Koha::Hold->new(
1312
        {
1313
            borrowernumber => $patron_4->borrowernumber,
1314
            biblionumber   => $biblio4->biblionumber,
1315
            itemnumber     => $item_4->itemnumber,
1316
            branchcode     => 'CPL',
1317
            found          => 'W',
1318
        }
1319
    )->store;
1320
1321
    my $result_4 = $hold_6->move_hold( { new_biblionumber => $biblio1->biblionumber } );
1322
    is( $result_4->{error}, 'Cannot move a waiting hold', 'Correct error for waiting hold' );
1323
1324
    my $hold_7 = Koha::Hold->new(
1325
        {
1326
            borrowernumber => $patron_4->borrowernumber,
1327
            biblionumber   => $biblio4->biblionumber,
1328
            itemnumber     => $item_4->itemnumber,
1329
            branchcode     => 'CPL',
1330
            found          => 'T',
1331
        }
1332
    )->store;
1333
1334
    my $result_5 = $hold_7->move_hold( { new_biblionumber => $biblio1->biblionumber } );
1335
    is( $result_5->{error}, 'Cannot move a hold in transit', 'Correct error for hold instransit' );
1310
1336
1311
    $schema->storage->txn_rollback;
1337
    $schema->storage->txn_rollback;
1312
};
1338
};
1313
- 

Return to bug 31698