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

(-)a/Koha/Hold.pm (-8 / +8 lines)
Lines 187-194 $hold->move_hold_item(); Link Here
187
sub move_hold_item {
187
sub move_hold_item {
188
    my ( $self, $args ) = @_;
188
    my ( $self, $args ) = @_;
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
192
    my $original              = $self;
193
    my $original              = $self;
193
    my $original_biblionumber = $self->biblionumber;
194
    my $original_biblionumber = $self->biblionumber;
194
195
Lines 202-221 sub move_hold_item { Link Here
202
            C4::Reserves::CanItemBeReserved( $patron, $new_item, $self->branchcode, { ignore_hold_counts => 1 } );
203
            C4::Reserves::CanItemBeReserved( $patron, $new_item, $self->branchcode, { ignore_hold_counts => 1 } );
203
204
204
        if ( $canReserve->{status} eq 'OK' ) {
205
        if ( $canReserve->{status} eq 'OK' ) {
205
206
            my $max = Koha::Holds->search(
206
            # Find the lowest priority among holds on the new item
207
            my $highest_new_priority = Koha::Holds->search(
208
                { biblionumber => $new_biblionumber },
207
                { biblionumber => $new_biblionumber },
209
                { order_by     => { -desc => 'priority' }, rows => 1 }
208
                { order_by     => { -desc => 'priority' }, rows => 1 }
210
            )->next;
209
            )->next;
211
            my $next_available_priority =
210
            my $base_priority = $max ? $max->priority : 0;
212
                $highest_new_priority ? $highest_new_priority->priority + 1 : 1;    # Always start at 1 if empty
211
            my $priority      = $base_priority + 1;
212
            my $new_priority  = C4::Reserves::_ShiftPriority( $new_biblionumber, $priority );
213
213
214
            $self->update(
214
            $self->update(
215
                {
215
                {
216
                    itemnumber   => $new_item->itemnumber,
216
                    itemnumber   => $new_item->itemnumber,
217
                    biblionumber => $new_item->biblionumber,
217
                    biblionumber => $new_item->biblionumber,
218
                    priority     => $next_available_priority,
218
                    priority     => $new_priority,
219
                }
219
                }
220
            );
220
            );
221
221
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/holds_table.inc (-1 / +1 lines)
Lines 56-62 Link Here
56
                        data-id="[% hold.reserve_id | html %]"
56
                        data-id="[% hold.reserve_id | html %]"
57
                        data-item_level_hold="[% hold.item_level_hold | html %]"
57
                        data-item_level_hold="[% hold.item_level_hold | html %]"
58
                        data-itemnumber="[% hold.itemnumber | html %]"
58
                        data-itemnumber="[% hold.itemnumber | html %]"
59
                        data-biblionumber="[% hold.biblionumber %]"
59
                        data-biblionumber="[% hold.biblionumber | html %]"
60
                /></td>
60
                /></td>
61
                <td>
61
                <td>
62
                    <input type="hidden" name="reserve_id" value="[% hold.reserve_id | html %]" />
62
                    <input type="hidden" name="reserve_id" value="[% hold.reserve_id | html %]" />
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt (-2 / +2 lines)
Lines 181-187 Link Here
181
                [% FOREACH hold IN hold_move_successes %]
181
                [% FOREACH hold IN hold_move_successes %]
182
                    <li>
182
                    <li>
183
                        <label>Hold ID: </label>
183
                        <label>Hold ID: </label>
184
                        <span>[% hold.hold_id %]</span>
184
                        <span>[% hold.hold_id | html %]</span>
185
                        <span> - Moved from [%- INCLUDE 'biblio-title.inc' biblio=hold.original_biblio link = 1 -%] to [%- INCLUDE 'biblio-title.inc' biblio=hold.target_biblio link = 1 -%]</span>
185
                        <span> - Moved from [%- INCLUDE 'biblio-title.inc' biblio=hold.original_biblio link = 1 -%] to [%- INCLUDE 'biblio-title.inc' biblio=hold.target_biblio link = 1 -%]</span>
186
                    </li>
186
                    </li>
187
                [% END %]
187
                [% END %]
Lines 195-201 Link Here
195
                [% FOREACH fail IN hold_move_failures %]
195
                [% FOREACH fail IN hold_move_failures %]
196
                    <li>
196
                    <li>
197
                        <label>Hold ID: </label>
197
                        <label>Hold ID: </label>
198
                        <span>[% fail.hold_id %]</span>
198
                        <span>[% fail.hold_id | html %]</span>
199
                        [% SWITCH fail.error %]
199
                        [% SWITCH fail.error %]
200
                        [% CASE 'cannotReserveFromOtherBranches' %]
200
                        [% CASE 'cannotReserveFromOtherBranches' %]
201
                            <span>Target item cannot be reserved from other branches</span>
201
                            <span>Target item cannot be reserved from other branches</span>
(-)a/reserve/request.pl (-7 / +17 lines)
Lines 120-129 if ( $op eq 'cud-move' ) { Link Here
120
    my @success_messages;
120
    my @success_messages;
121
    my @error_messages;
121
    my @error_messages;
122
122
123
    foreach my $hold_id (@hold_ids) {
123
    #Get a list of all the holds to move, ordered by current priority
124
        my $hold            = Koha::Holds->find($hold_id);
124
    my @moving_holds = Koha::Holds->search(
125
        { reserve_id => \@hold_ids },
126
        { order_by   => { -asc => 'priority' } }
127
    )->as_list;
128
129
    #need to get the biblionumber of the original hold
130
    my $original_biblionumber = $moving_holds[0]->biblionumber;
131
132
    my $offset = 0;
133
    foreach my $hold (@moving_holds) {
125
        my $original_biblio = Koha::Biblios->find( $hold->biblionumber );
134
        my $original_biblio = Koha::Biblios->find( $hold->biblionumber );
126
        my $result          = $hold->move_hold_item(
135
136
        my $result = $hold->move_hold_item(
127
            {
137
            {
128
                new_itemnumber   => $new_itemnumber,
138
                new_itemnumber   => $new_itemnumber,
129
                new_biblionumber => $new_biblionumber,
139
                new_biblionumber => $new_biblionumber,
Lines 133-146 if ( $op eq 'cud-move' ) { Link Here
133
        #push info about successes and errors to the template
143
        #push info about successes and errors to the template
134
        if ( $result->{success} ) {
144
        if ( $result->{success} ) {
135
            push @success_messages, {
145
            push @success_messages, {
136
                hold_id         => $hold_id,
146
                hold_id         => $hold->id,
137
                success         => 1,
147
                success         => 1,
138
                original_biblio => $original_biblio,
148
                original_biblio => $original_biblio,
139
                target_biblio   => $target_biblio,
149
                target_biblio   => $target_biblio,
140
            };
150
            };
141
        } else {
151
        } else {
142
            push @error_messages, {
152
            push @error_messages, {
143
                hold_id         => $hold_id,
153
                hold_id         => $hold->id,
144
                success         => 0,
154
                success         => 0,
145
                original_biblio => $original_biblio,
155
                original_biblio => $original_biblio,
146
                target_biblio   => $target_biblio,
156
                target_biblio   => $target_biblio,
Lines 149-155 if ( $op eq 'cud-move' ) { Link Here
149
        }
159
        }
150
    }
160
    }
151
161
152
    push @biblionumbers, $new_biblionumber;
162
    C4::Reserves::_FixPriority( { biblionumber => $original_biblionumber } );
163
    push @biblionumbers, $original_biblionumber;
153
164
154
    $template->param(
165
    $template->param(
155
        hold_move_successes => \@success_messages,
166
        hold_move_successes => \@success_messages,
156
- 

Return to bug 31698