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

(-)a/Koha/Hold.pm (-7 / +24 lines)
Lines 189-203 sub move_hold_item { Link Here
189
189
190
    my $new_itemnumber   = $args->{new_itemnumber};
190
    my $new_itemnumber   = $args->{new_itemnumber};
191
    my $new_biblionumber = $args->{new_biblionumber};
191
    my $new_biblionumber = $args->{new_biblionumber};
192
    my $original         = $self;
193
194
    my $patron   = Koha::Patrons->find( { borrowernumber => $self->borrowernumber } );
195
    my $new_item = Koha::Items->find( { itemnumber => $new_itemnumber } );
192
196
193
    if ($new_itemnumber) {
197
    if ($new_itemnumber) {
194
        my $new_item = Koha::Items->find( { itemnumber => $new_itemnumber } );
198
195
        $self->update(
199
        #check to see if moving this hold is allowed
196
            {
200
        my $canReserve =
197
                itemnumber   => $new_item->itemnumber,
201
            C4::Reserves::CanItemBeReserved( $patron, $new_item, $self->branchcode, { ignore_hold_counts => 1 } );
198
                biblionumber => $new_item->biblionumber
202
199
            }
203
        if ( $canReserve->{status} eq 'OK' ) {
200
        );
204
            $self->update(
205
                {
206
                    itemnumber   => $new_item->itemnumber,
207
                    biblionumber => $new_item->biblionumber
208
                }
209
            );
210
211
            C4::Log::logaction( 'HOLDS', 'MODIFY', $self->reserve_id, $self, undef, $original )
212
                if C4::Context->preference('HoldsLog');
213
214
            return { success => 1, hold => $self };
215
        } else {
216
            return { success => 0, error => $canReserve->{status} };
217
        }
201
    }
218
    }
202
    return $self;
219
    return $self;
203
}
220
}
(-)a/reserve/request.pl (-5 / +33 lines)
Lines 91-96 my $exceeded_maxreserves; Link Here
91
my $exceeded_holds_per_record;
91
my $exceeded_holds_per_record;
92
my @failed_holds   = $input->multi_param('failed_holds');
92
my @failed_holds   = $input->multi_param('failed_holds');
93
my $form_submitted = $input->param('form_submitted');
93
my $form_submitted = $input->param('form_submitted');
94
my @biblionumbers  = $input->multi_param('biblionumber');
94
95
95
my $op = $input->param('op') || q{};
96
my $op = $input->param('op') || q{};
96
97
Lines 113-129 if ( $op eq 'cud-move' ) { Link Here
113
} elsif ( $op eq 'cud-move_hold_item' ) {
114
} elsif ( $op eq 'cud-move_hold_item' ) {
114
    my $new_itemnumber   = $input->param('new_itemnumber');
115
    my $new_itemnumber   = $input->param('new_itemnumber');
115
    my $new_biblionumber = $input->param('new_biblionumber');
116
    my $new_biblionumber = $input->param('new_biblionumber');
117
    my $target_biblio    = Koha::Biblios->find($new_biblionumber);
116
    my @hold_ids         = $input->multi_param('hold_id');
118
    my @hold_ids         = $input->multi_param('hold_id');
119
120
    my @success_messages;
121
    my @error_messages;
122
117
    foreach my $hold_id (@hold_ids) {
123
    foreach my $hold_id (@hold_ids) {
118
        my $hold = Koha::Holds->find($hold_id);
124
        my $hold            = Koha::Holds->find($hold_id);
119
        $hold->move_hold_item(
125
        my $original_biblio = Koha::Biblios->find( $hold->biblionumber );
126
        my $result          = $hold->move_hold_item(
120
            {
127
            {
121
                new_itemnumber   => $new_itemnumber,
128
                new_itemnumber   => $new_itemnumber,
122
                new_biblionumber => $new_biblionumber,
129
                new_biblionumber => $new_biblionumber,
123
            }
130
            }
124
        );
131
        );
132
133
        #push info about successes and errors to the template
134
        if ( $result->{success} ) {
135
            push @success_messages, {
136
                hold_id         => $hold_id,
137
                success         => 1,
138
                original_biblio => $original_biblio,
139
                target_biblio   => $target_biblio,
140
            };
141
        } else {
142
            push @error_messages, {
143
                hold_id         => $hold_id,
144
                success         => 0,
145
                original_biblio => $original_biblio,
146
                target_biblio   => $target_biblio,
147
                error           => $result->{error},
148
            };
149
        }
125
    }
150
    }
126
151
152
    push @biblionumbers, $new_biblionumber;
153
154
    $template->param(
155
        hold_move_successes => \@success_messages,
156
        hold_move_failures  => \@error_messages,
157
    );
127
} elsif ( $op eq 'cud-cancel' ) {
158
} elsif ( $op eq 'cud-cancel' ) {
128
    my $reserve_id          = $input->param('reserve_id');
159
    my $reserve_id          = $input->param('reserve_id');
129
    my $cancellation_reason = $input->param("cancellation-reason");
160
    my $cancellation_reason = $input->param("cancellation-reason");
Lines 187-194 if ($form_submitted) { Link Here
187
    }
218
    }
188
}
219
}
189
220
190
my @biblionumbers = $input->multi_param('biblionumber');
191
192
my $multi_hold = @biblionumbers > 1;
221
my $multi_hold = @biblionumbers > 1;
193
$template->param(
222
$template->param(
194
    multi_hold => $multi_hold,
223
    multi_hold => $multi_hold,
195
- 

Return to bug 31698