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

(-)a/C4/Items.pm (-52 / +1 lines)
Lines 40-46 BEGIN { Link Here
40
        get_hostitemnumbers_of
40
        get_hostitemnumbers_of
41
        GetHiddenItemnumbers
41
        GetHiddenItemnumbers
42
        GetMarcItem
42
        GetMarcItem
43
        MoveItemFromBiblio
44
        CartToShelf
43
        CartToShelf
45
        GetAnalyticsCount
44
        GetAnalyticsCount
46
        SearchItems
45
        SearchItems
Lines 65-70 use Koha::AuthorisedValues; Link Here
65
use Koha::DateUtils qw( dt_from_string output_pref );
64
use Koha::DateUtils qw( dt_from_string output_pref );
66
use Koha::Database;
65
use Koha::Database;
67
66
67
use Koha::Biblios;
68
use Koha::Biblioitems;
68
use Koha::Biblioitems;
69
use Koha::Items;
69
use Koha::Items;
70
use Koha::ItemTypes;
70
use Koha::ItemTypes;
Lines 1101-1157 the inner workings of C<C4::Items>. Link Here
1101
1101
1102
=cut
1102
=cut
1103
1103
1104
=head2 MoveItemFromBiblio
1105
1106
  MoveItemFromBiblio($itenumber, $frombiblio, $tobiblio);
1107
1108
Moves an item from a biblio to another
1109
1110
Returns undef if the move failed or the biblionumber of the destination record otherwise
1111
1112
=cut
1113
1114
sub MoveItemFromBiblio {
1115
    my ($itemnumber, $frombiblio, $tobiblio) = @_;
1116
    my $dbh = C4::Context->dbh;
1117
    my ( $tobiblioitem ) = $dbh->selectrow_array(q|
1118
        SELECT biblioitemnumber
1119
        FROM biblioitems
1120
        WHERE biblionumber = ?
1121
    |, undef, $tobiblio );
1122
    my $return = $dbh->do(q|
1123
        UPDATE items
1124
        SET biblioitemnumber = ?,
1125
            biblionumber = ?
1126
        WHERE itemnumber = ?
1127
            AND biblionumber = ?
1128
    |, undef, $tobiblioitem, $tobiblio, $itemnumber, $frombiblio );
1129
    if ($return == 1) {
1130
        my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX });
1131
        $indexer->index_records( $tobiblio, "specialUpdate", "biblioserver" );
1132
        $indexer->index_records( $frombiblio, "specialUpdate", "biblioserver" );
1133
	    # Checking if the item we want to move is in an order 
1134
        require C4::Acquisition;
1135
        my $order = C4::Acquisition::GetOrderFromItemnumber($itemnumber);
1136
	    if ($order) {
1137
		    # Replacing the biblionumber within the order if necessary
1138
		    $order->{'biblionumber'} = $tobiblio;
1139
	        C4::Acquisition::ModOrder($order);
1140
	    }
1141
1142
        # Update reserves, hold_fill_targets, tmp_holdsqueue and linktracker tables
1143
        for my $table_name ( qw( reserves hold_fill_targets tmp_holdsqueue linktracker ) ) {
1144
            $dbh->do( qq|
1145
                UPDATE $table_name
1146
                SET biblionumber = ?
1147
                WHERE itemnumber = ?
1148
            |, undef, $tobiblio, $itemnumber );
1149
        }
1150
        return $tobiblio;
1151
	}
1152
    return;
1153
}
1154
1155
=head2 _marc_from_item_hash
1104
=head2 _marc_from_item_hash
1156
1105
1157
  my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]);
1106
  my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]);
(-)a/Koha/Biblio.pm (+24 lines)
Lines 39-44 use Koha::CirculationRules; Link Here
39
use Koha::Item::Transfer::Limits;
39
use Koha::Item::Transfer::Limits;
40
use Koha::Items;
40
use Koha::Items;
41
use Koha::Libraries;
41
use Koha::Libraries;
42
use Koha::SearchEngine::Indexer;
42
use Koha::Suggestions;
43
use Koha::Suggestions;
43
use Koha::Subscriptions;
44
use Koha::Subscriptions;
44
45
Lines 952-957 sub get_marc_host { Link Here
952
    }
953
    }
953
}
954
}
954
955
956
=head3 adopt_items_from_biblio
957
958
$biblio->adopt_items_from_biblio($from_biblio);
959
960
Move items from the given biblio to this one.
961
962
=cut
963
964
sub adopt_items_from_biblio {
965
    my ( $self, $from_biblio ) = @_;
966
967
    my $items = $from_biblio->items;
968
    if ($items) {
969
        while (my $item = $items->next()) {
970
            $item->move_to_biblio($self, { skip_record_index => 1 });
971
        }
972
        my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX });
973
        $indexer->index_records( $self->biblionumber, "specialUpdate", "biblioserver" );
974
        $indexer->index_records( $from_biblio->biblionumber, "specialUpdate", "biblioserver" );
975
    }
976
}
977
978
955
=head2 Internal methods
979
=head2 Internal methods
956
980
957
=head3 type
981
=head3 type
(-)a/Koha/Item.pm (+84 lines)
Lines 1173-1178 sub itemtype { Link Here
1173
    return Koha::ItemTypes->find( $self->effective_itemtype );
1173
    return Koha::ItemTypes->find( $self->effective_itemtype );
1174
}
1174
}
1175
1175
1176
=head3 item_orders
1177
1178
my $orders = $item->item_orders();
1179
1180
Returns a Koha::Acquisition::Orders object
1181
1182
=cut
1183
1184
sub item_orders {
1185
    my ( $self ) = @_;
1186
1187
    my $orders = $self->_result->item_orders;
1188
    return unless $orders;
1189
    return Koha::Acquisition::Orders->_new_from_dbic($orders);
1190
}
1191
1192
=head3 move_to_biblio
1193
1194
  $item->move_to_biblio($to_biblio[, $params]);
1195
1196
Move the item to another biblio and update any references also in other tables.
1197
1198
The final optional parameter, C<$params>, is expected to contain the
1199
'skip_record_index' key, which is relayed down to Koha::Item->store.
1200
There it prevents calling index_records, which takes most of the
1201
time in batch adds/deletes. The caller must take care of calling
1202
index_records separately.
1203
1204
$params:
1205
    skip_record_index => 1|0
1206
1207
Returns undef if the move failed or the biblionumber of the destination record otherwise
1208
1209
=cut
1210
1211
sub move_to_biblio {
1212
    my ( $self, $to_biblio, $params ) = @_;
1213
1214
    $params //= {};
1215
1216
    return unless $self->biblionumber != $to_biblio->biblionumber;
1217
1218
    my $biblionumber = $to_biblio->biblionumber;
1219
1220
    # Own biblionumber and biblioitemnumber
1221
    $self->set({
1222
        biblionumber => $biblionumber,
1223
        biblioitemnumber => $to_biblio->biblioitem->biblioitemnumber
1224
    })->store({ skip_record_index => $params->{skip_record_index} });
1225
1226
    # Acquisition orders
1227
    my $orders = $self->item_orders;
1228
    if ($orders) {
1229
        $orders->update({ biblionumber => $biblionumber }, { no_triggers => 1 });
1230
    }
1231
1232
    # Holds
1233
    $self->holds->update({ biblionumber => $biblionumber });
1234
1235
    # hold_fill_target (there's no Koha object available)
1236
    my $hold_fill_target = $self->_result->hold_fill_target;
1237
    if ($hold_fill_target) {
1238
        $hold_fill_target->update({ biblionumber => $biblionumber });
1239
    }
1240
1241
    # tmp_holdsqueues - Can't update with DBIx since the table is missing a primary key
1242
    # and can't even fake one since the significant columns are nullable.
1243
    my $storage = $self->_result->result_source->storage;
1244
    $storage->dbh_do(
1245
        sub {
1246
            my ($storage, $dbh, @cols) = @_;
1247
1248
            $dbh->do("UPDATE tmp_holdsqueue SET biblionumber=? WHERE itemnumber=?", undef, $biblionumber, $self->itemnumber);
1249
        }
1250
    );
1251
1252
    # linktrackers
1253
    my $schema = Koha::Database->new()->schema();
1254
    my $linktrackers = $schema->resultset('Linktracker')->search({ itemnumber => $self->itemnumber });
1255
    $linktrackers->update_all({ biblionumber => $biblionumber });
1256
1257
    return $biblionumber;
1258
}
1259
1176
=head2 Internal methods
1260
=head2 Internal methods
1177
1261
1178
=head3 _after_item_action_hooks
1262
=head3 _after_item_action_hooks
(-)a/Koha/Schema/Result/Item.pm (+13 lines)
Lines 866-871 __PACKAGE__->add_columns( Link Here
866
    '+exclude_from_local_holds_priority' => { is_boolean => 1 },
866
    '+exclude_from_local_holds_priority' => { is_boolean => 1 },
867
);
867
);
868
868
869
# Relationship with orders via the aqorders_item table that not have foreign keys
870
__PACKAGE__->has_many(
871
  "aqorders_item",
872
  "Koha::Schema::Result::AqordersItem",
873
  { "foreign.itemnumber" => "self.itemnumber" },
874
  { cascade_copy => 0, cascade_delete => 0 },
875
);
876
__PACKAGE__->many_to_many(
877
  "item_orders",
878
  "aqorders_item",
879
  "ordernumber",
880
);
881
869
use C4::Context;
882
use C4::Context;
870
sub effective_itemtype {
883
sub effective_itemtype {
871
    my ( $self ) = @_;
884
    my ( $self ) = @_;
(-)a/cataloguing/merge.pl (-15 / +7 lines)
Lines 39-44 use C4::Reserves qw( MergeHolds ); Link Here
39
use C4::Acquisition qw( ModOrder GetOrdersByBiblionumber );
39
use C4::Acquisition qw( ModOrder GetOrdersByBiblionumber );
40
40
41
use Koha::BiblioFrameworks;
41
use Koha::BiblioFrameworks;
42
use Koha::Biblios;
42
use Koha::Items;
43
use Koha::Items;
43
use Koha::MetadataRecord;
44
use Koha::MetadataRecord;
44
45
Lines 88-112 if ($merge) { Link Here
88
    $record->leader(GetMarcBiblio({ biblionumber => $ref_biblionumber })->leader());
89
    $record->leader(GetMarcBiblio({ biblionumber => $ref_biblionumber })->leader());
89
90
90
    my $frameworkcode = $input->param('frameworkcode');
91
    my $frameworkcode = $input->param('frameworkcode');
91
    my @notmoveditems;
92
92
93
    # Modifying the reference record
93
    # Modifying the reference record
94
    ModBiblio($record, $ref_biblionumber, $frameworkcode);
94
    ModBiblio($record, $ref_biblionumber, $frameworkcode);
95
95
96
    # Moving items from the other record to the reference record
96
    # Moving items and article requests from the other record to the reference record
97
    my $biblio = Koha::Biblios->find($ref_biblionumber);
97
    foreach my $biblionumber (@biblionumbers) {
98
    foreach my $biblionumber (@biblionumbers) {
98
        my $items = Koha::Items->search({ biblionumber => $biblionumber });
99
        my $from_biblio = Koha::Biblios->find($biblionumber);
99
        while ( my $item = $items->next) {
100
        $biblio->adopt_items_from_biblio($from_biblio);
100
            my $res = MoveItemFromBiblio( $item->itemnumber, $biblionumber, $ref_biblionumber );
101
        $from_biblio->article_requests->update({ biblionumber => $ref_biblionumber }, { no_triggers => 1 });
101
            if ( not defined $res ) {
102
                push @notmoveditems, $item->itemnumber;
103
            }
104
        }
105
    }
106
    # If some items could not be moved :
107
    if (scalar(@notmoveditems) > 0) {
108
        my $itemlist = join(' ',@notmoveditems);
109
        push @errors, { code => "CANNOT_MOVE", value => $itemlist };
110
    }
102
    }
111
103
112
    my $sth_subscription = $dbh->prepare("
104
    my $sth_subscription = $dbh->prepare("
Lines 170-176 if ($merge) { Link Here
170
    # Moving suggestions
162
    # Moving suggestions
171
    $sth_suggestions->execute($ref_biblionumber, $biblionumber);
163
    $sth_suggestions->execute($ref_biblionumber, $biblionumber);
172
164
173
    # Moving orders (orders linked to items of frombiblio have already been moved by MoveItemFromBiblio)
165
    # Moving orders (orders linked to items of frombiblio have already been moved by adopt_items_from_biblio)
174
    my @allorders = GetOrdersByBiblionumber($biblionumber);
166
    my @allorders = GetOrdersByBiblionumber($biblionumber);
175
    foreach my $myorder (@allorders) {
167
    foreach my $myorder (@allorders) {
176
        $myorder->{'biblionumber'} = $ref_biblionumber;
168
        $myorder->{'biblionumber'} = $ref_biblionumber;
(-)a/cataloguing/moveitem.pl (-1 / +2 lines)
Lines 69-76 if ( $barcode && $biblionumber ) { Link Here
69
69
70
        $itemnumber = $item->itemnumber;
70
        $itemnumber = $item->itemnumber;
71
        my $frombiblionumber = $item->biblionumber;
71
        my $frombiblionumber = $item->biblionumber;
72
        my $to_biblio = Koha::Biblios->find($biblionumber);
72
73
73
        my $moveresult = MoveItemFromBiblio( $itemnumber, $frombiblionumber, $biblionumber );
74
        my $moveresult = $item->move_to_biblio($to_biblio);
74
        if ($moveresult) {
75
        if ($moveresult) {
75
            $template->param(
76
            $template->param(
76
                success => 1,
77
                success => 1,
(-)a/t/db_dependent/Items/MoveItemFromBiblio.t (-85 lines)
Lines 1-85 Link Here
1
#!/usr/bin/perl
2
#
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it
6
# under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 3 of the License, or
8
# (at your option) any later version.
9
#
10
# Koha is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
# GNU General Public License for more details.
14
#
15
# You should have received a copy of the GNU General Public License
16
# along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18
use Modern::Perl;
19
use Test::More tests => 8;
20
21
use C4::Items qw( MoveItemFromBiblio );
22
use C4::Reserves;
23
use Koha::Database;
24
use Koha::Holds;
25
use Koha::Items;
26
27
use t::lib::TestBuilder;
28
use Data::Dumper qw|Dumper|;
29
30
my $schema  = Koha::Database->new->schema;
31
$schema->storage->txn_begin;
32
my $builder = t::lib::TestBuilder->new;
33
34
my $from_biblio = $builder->build_sample_biblio;
35
my $to_biblio = $builder->build_sample_biblio;
36
37
my $item1 = $builder->build_sample_item(
38
    { biblionumber => $from_biblio->biblionumber, } );
39
my $item2 = $builder->build_sample_item(
40
    { biblionumber => $from_biblio->biblionumber, } );
41
my $item3 = $builder->build_sample_item(
42
    { biblionumber => $to_biblio->biblionumber, } );
43
44
45
my $bib_level_hold_not_to_move = $builder->build(
46
    {   source => 'Reserve',
47
        value  => { biblionumber => $from_biblio->biblionumber, },
48
    }
49
);
50
my $item_level_hold_not_to_move = $builder->build(
51
    {   source => 'Reserve',
52
        value  => { biblionumber => $from_biblio->biblionumber, itemnumber => $item1->itemnumber },
53
    }
54
);
55
my $item_level_hold_to_move = $builder->build(
56
    {   source => 'Reserve',
57
        value  => { biblionumber => $from_biblio->biblionumber, itemnumber => $item2->itemnumber },
58
    }
59
);
60
61
my $to_biblionumber_after_moved = C4::Items::MoveItemFromBiblio( $item2->itemnumber, $from_biblio->biblionumber, $to_biblio->biblionumber );
62
63
is( $to_biblionumber_after_moved, $to_biblio->biblionumber, 'MoveItemFromBiblio should return the to_biblionumber if success' );
64
65
$to_biblionumber_after_moved = C4::Items::MoveItemFromBiblio( $item2->itemnumber, $from_biblio->biblionumber, $to_biblio->biblionumber );
66
67
is( $to_biblionumber_after_moved, undef, 'MoveItemFromBiblio should return undef if the move has failed. If called twice, the item is not attached to the first biblio anymore' );
68
69
my $get_item1 = Koha::Items->find( $item1->itemnumber );
70
is( $get_item1->biblionumber, $from_biblio->biblionumber, 'The item1 should not have been moved' );
71
my $get_item2 = Koha::Items->find( $item2->itemnumber );
72
is( $get_item2->biblionumber, $to_biblio->biblionumber, 'The item2 should have been moved' );
73
my $get_item3 = Koha::Items->find( $item3->itemnumber );
74
is( $get_item3->biblionumber, $to_biblio->biblionumber, 'The item3 should not have been moved' );
75
76
my $get_bib_level_hold    = Koha::Holds->find( $bib_level_hold_not_to_move->{reserve_id} );
77
my $get_item_level_hold_1 = Koha::Holds->find( $item_level_hold_not_to_move->{reserve_id} );
78
my $get_item_level_hold_2 = Koha::Holds->find( $item_level_hold_to_move->{reserve_id} );
79
80
is( $get_bib_level_hold->biblionumber,    $from_biblio->biblionumber, 'MoveItemFromBiblio should not have moved the biblio-level hold' );
81
is( $get_item_level_hold_1->biblionumber, $from_biblio->biblionumber, 'MoveItemFromBiblio should not have moved the item-level hold placed on item 1' );
82
is( $get_item_level_hold_2->biblionumber, $to_biblio->biblionumber,   'MoveItemFromBiblio should have moved the item-level hold placed on item 2' );
83
84
$schema->storage->txn_rollback;
85
(-)a/t/db_dependent/Koha/Item.t (-1 / +180 lines)
Lines 19-25 Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 9;
22
use Test::More tests => 11;
23
use Test::Exception;
23
use Test::Exception;
24
24
25
use C4::Biblio qw( GetMarcSubfieldStructure );
25
use C4::Biblio qw( GetMarcSubfieldStructure );
Lines 816-818 subtest 'get_transfers' => sub { Link Here
816
816
817
    $schema->storage->txn_rollback;
817
    $schema->storage->txn_rollback;
818
};
818
};
819
820
subtest 'move_to_biblio() tests' => sub {
821
822
    plan tests => 16;
823
824
    $schema->storage->txn_begin;
825
826
    my $dbh = C4::Context->dbh;
827
828
    my $source_biblio = $builder->build_sample_biblio();
829
    my $target_biblio = $builder->build_sample_biblio();
830
831
    my $source_biblionumber = $source_biblio->biblionumber;
832
    my $target_biblionumber = $target_biblio->biblionumber;
833
834
    my $item1 = $builder->build_sample_item({ biblionumber => $source_biblionumber });
835
    my $item2 = $builder->build_sample_item({ biblionumber => $source_biblionumber });
836
    my $item3 = $builder->build_sample_item({ biblionumber => $source_biblionumber });
837
838
    my $itemnumber1 = $item1->itemnumber;
839
    my $itemnumber2 = $item2->itemnumber;
840
841
    my $library = $builder->build_object({ class => 'Koha::Libraries' });
842
843
    my $patron = $builder->build_object({
844
        class => 'Koha::Patrons',
845
        value => { branchcode => $library->branchcode }
846
    });
847
    my $borrowernumber = $patron->borrowernumber;
848
849
    my $aq_budget = $builder->build({
850
        source => 'Aqbudget',
851
        value  => {
852
            budget_notes => 'test',
853
        },
854
    });
855
856
    my $aq_order1 = $builder->build_object({
857
        class => 'Koha::Acquisition::Orders',
858
        value  => {
859
            biblionumber => $source_biblionumber,
860
            budget_id => $aq_budget->{budget_id},
861
        },
862
    });
863
    my $aq_order_item1 = $builder->build({
864
        source => 'AqordersItem',
865
        value  => {
866
            ordernumber => $aq_order1->ordernumber,
867
            itemnumber => $itemnumber1,
868
        },
869
    });
870
    my $aq_order2 = $builder->build_object({
871
        class => 'Koha::Acquisition::Orders',
872
        value  => {
873
            biblionumber => $source_biblionumber,
874
            budget_id => $aq_budget->{budget_id},
875
        },
876
    });
877
    my $aq_order_item2 = $builder->build({
878
        source => 'AqordersItem',
879
        value  => {
880
            ordernumber => $aq_order2->ordernumber,
881
            itemnumber => $itemnumber2,
882
        },
883
    });
884
885
    my $bib_level_hold = $builder->build_object({
886
        class => 'Koha::Holds',
887
        value  => {
888
            biblionumber => $source_biblionumber,
889
        },
890
    });
891
    my $item_level_hold1 = $builder->build_object({
892
        class => 'Koha::Holds',
893
        value  => {
894
            biblionumber => $source_biblionumber,
895
            itemnumber => $itemnumber1,
896
        },
897
    });
898
    my $item_level_hold2 = $builder->build_object({
899
        class => 'Koha::Holds',
900
        value  => {
901
            biblionumber => $source_biblionumber,
902
            itemnumber => $itemnumber2,
903
        }
904
    });
905
906
    my $tmp_holdsqueue1 = $builder->build({
907
        source => 'TmpHoldsqueue',
908
        value  => {
909
            borrowernumber => $borrowernumber,
910
            biblionumber   => $source_biblionumber,
911
            itemnumber     => $itemnumber1,
912
        }
913
    });
914
    my $tmp_holdsqueue2 = $builder->build({
915
        source => 'TmpHoldsqueue',
916
        value  => {
917
            borrowernumber => $borrowernumber,
918
            biblionumber   => $source_biblionumber,
919
            itemnumber     => $itemnumber2,
920
        }
921
    });
922
    my $hold_fill_target1 = $builder->build({
923
        source => 'HoldFillTarget',
924
        value  => {
925
            borrowernumber     => $borrowernumber,
926
            biblionumber       => $source_biblionumber,
927
            itemnumber         => $itemnumber1,
928
        }
929
    });
930
    my $hold_fill_target2 = $builder->build({
931
        source => 'HoldFillTarget',
932
        value  => {
933
            borrowernumber     => $borrowernumber,
934
            biblionumber       => $source_biblionumber,
935
            itemnumber         => $itemnumber2,
936
        }
937
    });
938
    my $linktracker1 = $builder->build({
939
        source => 'Linktracker',
940
        value  => {
941
            borrowernumber     => $borrowernumber,
942
            biblionumber       => $source_biblionumber,
943
            itemnumber         => $itemnumber1,
944
        }
945
    });
946
    my $linktracker2 = $builder->build({
947
        source => 'Linktracker',
948
        value  => {
949
            borrowernumber     => $borrowernumber,
950
            biblionumber       => $source_biblionumber,
951
            itemnumber         => $itemnumber2,
952
        }
953
    });
954
955
    my $to_biblionumber_after_move = $item1->move_to_biblio($target_biblio);
956
    is($to_biblionumber_after_move, $target_biblionumber, 'move_to_biblio returns the target biblionumber if success');
957
958
    $to_biblionumber_after_move = $item1->move_to_biblio($target_biblio);
959
    is($to_biblionumber_after_move, undef, 'move_to_biblio returns undef if the move has failed. If called twice, the item is not attached to the first biblio anymore');
960
961
    my $get_item1 = Koha::Items->find( $item1->itemnumber );
962
    is($get_item1->biblionumber, $target_biblionumber, 'item1 is moved');
963
    my $get_item2 = Koha::Items->find( $item2->itemnumber );
964
    is($get_item2->biblionumber, $source_biblionumber, 'item2 is not moved');
965
    my $get_item3 = Koha::Items->find( $item3->itemnumber );
966
    is($get_item3->biblionumber, $source_biblionumber, 'item3 is not moved');
967
968
    $aq_order1->discard_changes;
969
    $aq_order2->discard_changes;
970
    is($aq_order1->biblionumber, $target_biblionumber, 'move_to_biblio moves aq_orders for item 1');
971
    is($aq_order2->biblionumber, $source_biblionumber, 'move_to_biblio does not move aq_orders for item 2');
972
973
    $bib_level_hold->discard_changes;
974
    $item_level_hold1->discard_changes;
975
    $item_level_hold2->discard_changes;
976
    is($bib_level_hold->biblionumber,   $source_biblionumber, 'move_to_biblio does not move the biblio-level hold');
977
    is($item_level_hold1->biblionumber, $target_biblionumber, 'move_to_biblio moves the item-level hold placed on item 1');
978
    is($item_level_hold2->biblionumber, $source_biblionumber, 'move_to_biblio does not move the item-level hold placed on item 2');
979
980
    my $get_tmp_holdsqueue1 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue1->{itemnumber} })->single;
981
    my $get_tmp_holdsqueue2 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue2->{itemnumber} })->single;
982
    is($get_tmp_holdsqueue1->biblionumber, $target_biblionumber, 'move_to_biblio moves tmp_holdsqueue for item 1');
983
    is($get_tmp_holdsqueue2->biblionumber, $source_biblionumber, 'move_to_biblio does not move tmp_holdsqueue for item 2');
984
985
    my $get_hold_fill_target1 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target1->{itemnumber} })->single;
986
    my $get_hold_fill_target2 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target2->{itemnumber} })->single;
987
    # Why does ->biblionumber return a Biblio object???
988
    is($get_hold_fill_target1->biblionumber->biblionumber, $target_biblionumber, 'move_to_biblio moves hold_fill_targets for item 1');
989
    is($get_hold_fill_target2->biblionumber->biblionumber, $source_biblionumber, 'move_to_biblio does not move hold_fill_targets for item 2');
990
991
    my $get_linktracker1 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker1->{itemnumber} })->single;
992
    my $get_linktracker2 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker2->{itemnumber} })->single;
993
    is($get_linktracker1->biblionumber, $target_biblionumber, 'move_to_biblio moves linktracker for item 1');
994
    is($get_linktracker2->biblionumber, $source_biblionumber, 'move_to_biblio does not move linktracker for item 2');
995
996
    $schema->storage->txn_rollback;
997
};
(-)a/t/db_dependent/Koha/SearchEngine/Indexer.t (-2 / +11 lines)
Lines 61-67 subtest 'Test indexer object creation' => sub { Link Here
61
};
61
};
62
62
63
subtest 'Test indexer calls' => sub {
63
subtest 'Test indexer calls' => sub {
64
    plan tests => 40;
64
    plan tests => 44;
65
65
66
    my @engines = ('Zebra');
66
    my @engines = ('Zebra');
67
    eval { Koha::SearchEngine::Elasticsearch->get_elasticsearch_params; };
67
    eval { Koha::SearchEngine::Elasticsearch->get_elasticsearch_params; };
Lines 160-165 subtest 'Test indexer calls' => sub { Link Here
160
        warnings_are{
160
        warnings_are{
161
            AddReturn($item->barcode, $item->homebranch, 0, undef);
161
            AddReturn($item->barcode, $item->homebranch, 0, undef);
162
        } [$engine,'C4::Circulation'], "index_records is called once for $engine when calling AddReturn if item not issued";
162
        } [$engine,'C4::Circulation'], "index_records is called once for $engine when calling AddReturn if item not issued";
163
164
        my $item3 = $builder->build_sample_item({biblionumber => $biblio->biblionumber});
165
        my $item4 = $builder->build_sample_item({biblionumber => $biblio->biblionumber});
166
        warnings_are{
167
            $item3->move_to_biblio($biblio2);
168
        } [$engine,"Koha::Item"], "index_records is called for $engine when moving an item to another biblio (Item->move_to_biblio)";
169
        warnings_are{
170
            $item4->move_to_biblio($biblio2, { skip_record_index => 1 });
171
        } undef, "index_records is not called for $engine when moving an item to another biblio (Item->move_to_biblio) if skip_record_index passed";
172
163
        $builder->build({
173
        $builder->build({
164
            source => 'Issue',
174
            source => 'Issue',
165
            value  => {
175
            value  => {
166
- 

Return to bug 22690