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

(-)a/C4/Items.pm (-52 / +1 lines)
Lines 39-45 BEGIN { Link Here
39
        GetHostItemsInfo
39
        GetHostItemsInfo
40
        get_hostitemnumbers_of
40
        get_hostitemnumbers_of
41
        GetHiddenItemnumbers
41
        GetHiddenItemnumbers
42
        MoveItemFromBiblio
43
        CartToShelf
42
        CartToShelf
44
        GetAnalyticsCount
43
        GetAnalyticsCount
45
        SearchItems
44
        SearchItems
Lines 66-71 use Koha::AuthorisedValues; Link Here
66
use Koha::DateUtils qw(dt_from_string);
65
use Koha::DateUtils qw(dt_from_string);
67
use Koha::Database;
66
use Koha::Database;
68
67
68
use Koha::Biblios;
69
use Koha::Biblioitems;
69
use Koha::Biblioitems;
70
use Koha::Items;
70
use Koha::Items;
71
use Koha::ItemTypes;
71
use Koha::ItemTypes;
Lines 1086-1142 the inner workings of C<C4::Items>. Link Here
1086
1086
1087
=cut
1087
=cut
1088
1088
1089
=head2 MoveItemFromBiblio
1090
1091
  MoveItemFromBiblio($itenumber, $frombiblio, $tobiblio);
1092
1093
Moves an item from a biblio to another
1094
1095
Returns undef if the move failed or the biblionumber of the destination record otherwise
1096
1097
=cut
1098
1099
sub MoveItemFromBiblio {
1100
    my ($itemnumber, $frombiblio, $tobiblio) = @_;
1101
    my $dbh = C4::Context->dbh;
1102
    my ( $tobiblioitem ) = $dbh->selectrow_array(q|
1103
        SELECT biblioitemnumber
1104
        FROM biblioitems
1105
        WHERE biblionumber = ?
1106
    |, undef, $tobiblio );
1107
    my $return = $dbh->do(q|
1108
        UPDATE items
1109
        SET biblioitemnumber = ?,
1110
            biblionumber = ?
1111
        WHERE itemnumber = ?
1112
            AND biblionumber = ?
1113
    |, undef, $tobiblioitem, $tobiblio, $itemnumber, $frombiblio );
1114
    if ($return == 1) {
1115
        my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX });
1116
        $indexer->index_records( $tobiblio, "specialUpdate", "biblioserver" );
1117
        $indexer->index_records( $frombiblio, "specialUpdate", "biblioserver" );
1118
	    # Checking if the item we want to move is in an order 
1119
        require C4::Acquisition;
1120
        my $order = C4::Acquisition::GetOrderFromItemnumber($itemnumber);
1121
	    if ($order) {
1122
		    # Replacing the biblionumber within the order if necessary
1123
		    $order->{'biblionumber'} = $tobiblio;
1124
	        C4::Acquisition::ModOrder($order);
1125
	    }
1126
1127
        # Update reserves, hold_fill_targets, tmp_holdsqueue and linktracker tables
1128
        for my $table_name ( qw( reserves hold_fill_targets tmp_holdsqueue linktracker ) ) {
1129
            $dbh->do( qq|
1130
                UPDATE $table_name
1131
                SET biblionumber = ?
1132
                WHERE itemnumber = ?
1133
            |, undef, $tobiblio, $itemnumber );
1134
        }
1135
        return $tobiblio;
1136
	}
1137
    return;
1138
}
1139
1140
=head2 _marc_from_item_hash
1089
=head2 _marc_from_item_hash
1141
1090
1142
  my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]);
1091
  my $item_marc = _marc_from_item_hash($item, $frameworkcode[, $unlinked_item_subfields]);
(-)a/Koha/Biblio.pm (+24 lines)
Lines 41-46 use Koha::CirculationRules; Link Here
41
use Koha::Item::Transfer::Limits;
41
use Koha::Item::Transfer::Limits;
42
use Koha::Items;
42
use Koha::Items;
43
use Koha::Libraries;
43
use Koha::Libraries;
44
use Koha::SearchEngine::Indexer;
44
use Koha::Suggestions;
45
use Koha::Suggestions;
45
use Koha::Subscriptions;
46
use Koha::Subscriptions;
46
47
Lines 832-837 sub to_api_mapping { Link Here
832
    };
833
    };
833
}
834
}
834
835
836
=head3 adopt_items_from_biblio
837
838
$biblio->adopt_items_from_biblio($from_biblio);
839
840
Move items from the given biblio to this one.
841
842
=cut
843
844
sub adopt_items_from_biblio {
845
    my ( $self, $from_biblio ) = @_;
846
847
    my $items = $from_biblio->items;
848
    if ($items) {
849
        while (my $item = $items->next()) {
850
            $item->move_to_biblio($self, { skip_record_index => 1 });
851
        }
852
        my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX });
853
        $indexer->index_records( $self->biblionumber, "specialUpdate", "biblioserver" );
854
        $indexer->index_records( $from_biblio->biblionumber, "specialUpdate", "biblioserver" );
855
    }
856
}
857
858
835
=head2 Internal methods
859
=head2 Internal methods
836
860
837
=head3 type
861
=head3 type
(-)a/Koha/Item.pm (+80 lines)
Lines 983-988 sub itemtype { Link Here
983
    return Koha::ItemTypes->find( $self->effective_itemtype );
983
    return Koha::ItemTypes->find( $self->effective_itemtype );
984
}
984
}
985
985
986
=head3 item_orders
987
988
my $orders = $item->item_orders();
989
990
Returns a Koha::Acquisition::Orders object
991
992
=cut
993
994
sub item_orders {
995
    my ( $self ) = @_;
996
997
    my $orders = $self->_result->item_orders;
998
    return Koha::Acquisition::Orders->_new_from_dbic($orders);
999
}
1000
1001
=head3 move_to_biblio
1002
1003
  $item->move_to_biblio($to_biblio[, $params]);
1004
1005
Move the item to another biblio and update any references also in other tables.
1006
1007
The final optional parameter, C<$params>, is expected to contain the
1008
'skip_record_index' key, which is relayed down to Koha::Item->store.
1009
There it prevents calling index_records, which takes most of the
1010
time in batch adds/deletes. The caller must take care of calling
1011
index_records separately.
1012
1013
$params:
1014
    skip_record_index => 1|0
1015
1016
Returns undef if the move failed or the biblionumber of the destination record otherwise
1017
1018
=cut
1019
1020
sub move_to_biblio {
1021
    my ( $self, $to_biblio, $params ) = @_;
1022
1023
    $params //= {};
1024
1025
    return unless $self->biblionumber != $to_biblio->biblionumber;
1026
1027
    my $biblionumber = $to_biblio->biblionumber;
1028
1029
    # Own biblionumber and biblioitemnumber
1030
    $self->set({
1031
        biblionumber => $biblionumber,
1032
        biblioitemnumber => $to_biblio->biblioitem->biblioitemnumber
1033
    })->store({ skip_record_index => $params->{skip_record_index} });
1034
1035
    # Acquisition orders
1036
    $self->item_orders->update({ biblionumber => $biblionumber }, { no_triggers => 1 });
1037
1038
    # Holds
1039
    $self->holds->update({ biblionumber => $biblionumber }, { no_triggers => 1 });
1040
1041
    # hold_fill_target (there's no Koha object available)
1042
    my $hold_fill_target = $self->_result->hold_fill_target;
1043
    if ($hold_fill_target) {
1044
        $hold_fill_target->update({ biblionumber => $biblionumber });
1045
    }
1046
1047
    # tmp_holdsqueues - Can't update with DBIx since the table is missing a primary key
1048
    # and can't even fake one since the significant columns are nullable.
1049
    my $storage = $self->_result->result_source->storage;
1050
    $storage->dbh_do(
1051
        sub {
1052
            my ($storage, $dbh, @cols) = @_;
1053
1054
            $dbh->do("UPDATE tmp_holdsqueue SET biblionumber=? WHERE itemnumber=?", undef, $biblionumber, $self->itemnumber);
1055
        }
1056
    );
1057
1058
    # linktrackers
1059
    my $schema = Koha::Database->new()->schema();
1060
    my $linktrackers = $schema->resultset('Linktracker')->search({ itemnumber => $self->itemnumber });
1061
    $linktrackers->update_all({ biblionumber => $biblionumber });
1062
1063
    return $biblionumber;
1064
}
1065
986
=head2 Internal methods
1066
=head2 Internal methods
987
1067
988
=head3 _after_item_action_hooks
1068
=head3 _after_item_action_hooks
(-)a/Koha/Schema/Result/Item.pm (+13 lines)
Lines 778-783 __PACKAGE__->add_columns( Link Here
778
    '+exclude_from_local_holds_priority' => { is_boolean => 1 },
778
    '+exclude_from_local_holds_priority' => { is_boolean => 1 },
779
);
779
);
780
780
781
# Relationship with orders via the aqorders_item table that not have foreign keys
782
__PACKAGE__->has_many(
783
  "aqorders_item",
784
  "Koha::Schema::Result::AqordersItem",
785
  { "foreign.itemnumber" => "self.itemnumber" },
786
  { cascade_copy => 0, cascade_delete => 0 },
787
);
788
__PACKAGE__->many_to_many(
789
  "item_orders",
790
  "aqorders_item",
791
  "ordernumber",
792
);
793
781
use C4::Context;
794
use C4::Context;
782
sub effective_itemtype {
795
sub effective_itemtype {
783
    my ( $self ) = @_;
796
    my ( $self ) = @_;
(-)a/cataloguing/merge.pl (-15 / +7 lines)
Lines 31-36 use C4::Reserves qw/MergeHolds/; Link Here
31
use C4::Acquisition qw/ModOrder GetOrdersByBiblionumber/;
31
use C4::Acquisition qw/ModOrder GetOrdersByBiblionumber/;
32
32
33
use Koha::BiblioFrameworks;
33
use Koha::BiblioFrameworks;
34
use Koha::Biblios;
34
use Koha::Items;
35
use Koha::Items;
35
use Koha::MetadataRecord;
36
use Koha::MetadataRecord;
36
37
Lines 80-104 if ($merge) { Link Here
80
    $record->leader(GetMarcBiblio({ biblionumber => $ref_biblionumber })->leader());
81
    $record->leader(GetMarcBiblio({ biblionumber => $ref_biblionumber })->leader());
81
82
82
    my $frameworkcode = $input->param('frameworkcode');
83
    my $frameworkcode = $input->param('frameworkcode');
83
    my @notmoveditems;
84
84
85
    # Modifying the reference record
85
    # Modifying the reference record
86
    ModBiblio($record, $ref_biblionumber, $frameworkcode);
86
    ModBiblio($record, $ref_biblionumber, $frameworkcode);
87
87
88
    # Moving items from the other record to the reference record
88
    # Moving items and article requests from the other record to the reference record
89
    my $biblio = Koha::Biblios->find($ref_biblionumber);
89
    foreach my $biblionumber (@biblionumbers) {
90
    foreach my $biblionumber (@biblionumbers) {
90
        my $items = Koha::Items->search({ biblionumber => $biblionumber });
91
        my $from_biblio = Koha::Biblios->find($biblionumber);
91
        while ( my $item = $items->next) {
92
        $biblio->adopt_items_from_biblio($from_biblio);
92
            my $res = MoveItemFromBiblio( $item->itemnumber, $biblionumber, $ref_biblionumber );
93
        $from_biblio->article_requests->update({ biblionumber => $ref_biblionumber }, { no_triggers => 1 });
93
            if ( not defined $res ) {
94
                push @notmoveditems, $item->itemnumber;
95
            }
96
        }
97
    }
98
    # If some items could not be moved :
99
    if (scalar(@notmoveditems) > 0) {
100
        my $itemlist = join(' ',@notmoveditems);
101
        push @errors, { code => "CANNOT_MOVE", value => $itemlist };
102
    }
94
    }
103
95
104
    my $sth_subscription = $dbh->prepare("
96
    my $sth_subscription = $dbh->prepare("
Lines 162-168 if ($merge) { Link Here
162
    # Moving suggestions
154
    # Moving suggestions
163
    $sth_suggestions->execute($ref_biblionumber, $biblionumber);
155
    $sth_suggestions->execute($ref_biblionumber, $biblionumber);
164
156
165
    # Moving orders (orders linked to items of frombiblio have already been moved by MoveItemFromBiblio)
157
    # Moving orders (orders linked to items of frombiblio have already been moved by adopt_items_from_biblio)
166
    my @allorders = GetOrdersByBiblionumber($biblionumber);
158
    my @allorders = GetOrdersByBiblionumber($biblionumber);
167
    foreach my $myorder (@allorders) {
159
    foreach my $myorder (@allorders) {
168
        $myorder->{'biblionumber'} = $ref_biblionumber;
160
        $myorder->{'biblionumber'} = $ref_biblionumber;
(-)a/cataloguing/moveitem.pl (-1 / +2 lines)
Lines 73-80 if ( $barcode && $biblionumber ) { Link Here
73
73
74
        $itemnumber = $item->itemnumber;
74
        $itemnumber = $item->itemnumber;
75
        my $frombiblionumber = $item->biblionumber;
75
        my $frombiblionumber = $item->biblionumber;
76
        my $to_biblio = Koha::Biblios->find($biblionumber)
76
77
77
        my $moveresult = MoveItemFromBiblio( $itemnumber, $frombiblionumber, $biblionumber );
78
        my $moveresult = $item->move_to_biblio($to_biblio);
78
        if ($moveresult) {
79
        if ($moveresult) {
79
            $template->param(
80
            $template->param(
80
                success => 1,
81
                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;
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 (-2 / +181 lines)
Lines 19-25 Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 7;
22
use Test::More tests => 8;
23
23
24
use C4::Biblio;
24
use C4::Biblio;
25
use C4::Circulation;
25
use C4::Circulation;
Lines 163-170 subtest 'pickup_locations' => sub { Link Here
163
    my $dbh = C4::Context->dbh;
163
    my $dbh = C4::Context->dbh;
164
164
165
    # Cleanup database
165
    # Cleanup database
166
    Koha::Holds->search->delete;
167
    $dbh->do('DELETE FROM issues');
166
    $dbh->do('DELETE FROM issues');
167
    Koha::Holds->search->delete;
168
    Koha::Patrons->search->delete;
168
    Koha::Patrons->search->delete;
169
    Koha::Items->search->delete;
169
    Koha::Items->search->delete;
170
    Koha::Libraries->search->delete;
170
    Koha::Libraries->search->delete;
Lines 516-518 subtest 'Tests for itemtype' => sub { Link Here
516
516
517
    $schema->storage->txn_rollback;
517
    $schema->storage->txn_rollback;
518
};
518
};
519
520
subtest 'move_to_biblio() tests' => sub {
521
522
    plan tests => 16;
523
524
    $schema->storage->txn_begin;
525
526
    my $dbh = C4::Context->dbh;
527
528
    my $source_biblio = $builder->build_sample_biblio();
529
    my $target_biblio = $builder->build_sample_biblio();
530
531
    my $source_biblionumber = $source_biblio->biblionumber;
532
    my $target_biblionumber = $target_biblio->biblionumber;
533
534
    my $item1 = $builder->build_sample_item({ biblionumber => $source_biblionumber });
535
    my $item2 = $builder->build_sample_item({ biblionumber => $source_biblionumber });
536
    my $item3 = $builder->build_sample_item({ biblionumber => $source_biblionumber });
537
538
    my $itemnumber1 = $item1->itemnumber;
539
    my $itemnumber2 = $item2->itemnumber;
540
541
    my $library = $builder->build_object({ class => 'Koha::Libraries' });
542
543
    my $patron = $builder->build_object({
544
        class => 'Koha::Patrons',
545
        value => { branchcode => $library->branchcode }
546
    });
547
    my $borrowernumber = $patron->borrowernumber;
548
549
    my $aq_budget = $builder->build({
550
        source => 'Aqbudget',
551
        value  => {
552
            budget_notes => 'test',
553
        },
554
    });
555
556
    my $aq_order1 = $builder->build_object({
557
        class => 'Koha::Acquisition::Orders',
558
        value  => {
559
            biblionumber => $source_biblionumber,
560
            budget_id => $aq_budget->{budget_id},
561
        },
562
    });
563
    my $aq_order_item1 = $builder->build({
564
        source => 'AqordersItem',
565
        value  => {
566
            ordernumber => $aq_order1->ordernumber,
567
            itemnumber => $itemnumber1,
568
        },
569
    });
570
    my $aq_order2 = $builder->build_object({
571
        class => 'Koha::Acquisition::Orders',
572
        value  => {
573
            biblionumber => $source_biblionumber,
574
            budget_id => $aq_budget->{budget_id},
575
        },
576
    });
577
    my $aq_order_item2 = $builder->build({
578
        source => 'AqordersItem',
579
        value  => {
580
            ordernumber => $aq_order2->ordernumber,
581
            itemnumber => $itemnumber2,
582
        },
583
    });
584
585
    my $bib_level_hold = $builder->build_object({
586
        class => 'Koha::Holds',
587
        value  => {
588
            biblionumber => $source_biblionumber,
589
        },
590
    });
591
    my $item_level_hold1 = $builder->build_object({
592
        class => 'Koha::Holds',
593
        value  => {
594
            biblionumber => $source_biblionumber,
595
            itemnumber => $itemnumber1,
596
        },
597
    });
598
    my $item_level_hold2 = $builder->build_object({
599
        class => 'Koha::Holds',
600
        value  => {
601
            biblionumber => $source_biblionumber,
602
            itemnumber => $itemnumber2,
603
        }
604
    });
605
606
    my $tmp_holdsqueue1 = $builder->build({
607
        source => 'TmpHoldsqueue',
608
        value  => {
609
            borrowernumber => $borrowernumber,
610
            biblionumber   => $source_biblionumber,
611
            itemnumber     => $itemnumber1,
612
        }
613
    });
614
    my $tmp_holdsqueue2 = $builder->build({
615
        source => 'TmpHoldsqueue',
616
        value  => {
617
            borrowernumber => $borrowernumber,
618
            biblionumber   => $source_biblionumber,
619
            itemnumber     => $itemnumber2,
620
        }
621
    });
622
    my $hold_fill_target1 = $builder->build({
623
        source => 'HoldFillTarget',
624
        value  => {
625
            borrowernumber     => $borrowernumber,
626
            biblionumber       => $source_biblionumber,
627
            itemnumber         => $itemnumber1,
628
        }
629
    });
630
    my $hold_fill_target2 = $builder->build({
631
        source => 'HoldFillTarget',
632
        value  => {
633
            borrowernumber     => $borrowernumber,
634
            biblionumber       => $source_biblionumber,
635
            itemnumber         => $itemnumber2,
636
        }
637
    });
638
    my $linktracker1 = $builder->build({
639
        source => 'Linktracker',
640
        value  => {
641
            borrowernumber     => $borrowernumber,
642
            biblionumber       => $source_biblionumber,
643
            itemnumber         => $itemnumber1,
644
        }
645
    });
646
    my $linktracker2 = $builder->build({
647
        source => 'Linktracker',
648
        value  => {
649
            borrowernumber     => $borrowernumber,
650
            biblionumber       => $source_biblionumber,
651
            itemnumber         => $itemnumber2,
652
        }
653
    });
654
655
    my $to_biblionumber_after_move = $item1->move_to_biblio($target_biblio);
656
    is($to_biblionumber_after_move, $target_biblionumber, 'move_to_biblio returns the target biblionumber if success');
657
658
    $to_biblionumber_after_move = $item1->move_to_biblio($target_biblio);
659
    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');
660
661
    my $get_item1 = Koha::Items->find( $item1->itemnumber );
662
    is($get_item1->biblionumber, $target_biblionumber, 'item1 is moved');
663
    my $get_item2 = Koha::Items->find( $item2->itemnumber );
664
    is($get_item2->biblionumber, $source_biblionumber, 'item2 is not moved');
665
    my $get_item3 = Koha::Items->find( $item3->itemnumber );
666
    is($get_item3->biblionumber, $source_biblionumber, 'item3 is not moved');
667
668
    $aq_order1->discard_changes;
669
    $aq_order2->discard_changes;
670
    is($aq_order1->biblionumber, $target_biblionumber, 'move_to_biblio moves aq_orders for item 1');
671
    is($aq_order2->biblionumber, $source_biblionumber, 'move_to_biblio does not move aq_orders for item 2');
672
673
    $bib_level_hold->discard_changes;
674
    $item_level_hold1->discard_changes;
675
    $item_level_hold2->discard_changes;
676
    is($bib_level_hold->biblionumber,   $source_biblionumber, 'move_to_biblio does not move the biblio-level hold');
677
    is($item_level_hold1->biblionumber, $target_biblionumber, 'move_to_biblio moves the item-level hold placed on item 1');
678
    is($item_level_hold2->biblionumber, $source_biblionumber, 'move_to_biblio does not move the item-level hold placed on item 2');
679
680
    my $get_tmp_holdsqueue1 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue1->{itemnumber} })->single;
681
    my $get_tmp_holdsqueue2 = $schema->resultset('TmpHoldsqueue')->search({ itemnumber => $tmp_holdsqueue2->{itemnumber} })->single;
682
    is($get_tmp_holdsqueue1->biblionumber, $target_biblionumber, 'move_to_biblio moves tmp_holdsqueue for item 1');
683
    is($get_tmp_holdsqueue2->biblionumber, $source_biblionumber, 'move_to_biblio does not move tmp_holdsqueue for item 2');
684
685
    my $get_hold_fill_target1 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target1->{itemnumber} })->single;
686
    my $get_hold_fill_target2 = $schema->resultset('HoldFillTarget')->search({ itemnumber => $hold_fill_target2->{itemnumber} })->single;
687
    # Why does ->biblionumber return a Biblio object???
688
    is($get_hold_fill_target1->biblionumber->biblionumber, $target_biblionumber, 'move_to_biblio moves hold_fill_targets for item 1');
689
    is($get_hold_fill_target2->biblionumber->biblionumber, $source_biblionumber, 'move_to_biblio does not move hold_fill_targets for item 2');
690
691
    my $get_linktracker1 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker1->{itemnumber} })->single;
692
    my $get_linktracker2 = $schema->resultset('Linktracker')->search({ itemnumber => $linktracker2->{itemnumber} })->single;
693
    is($get_linktracker1->biblionumber, $target_biblionumber, 'move_to_biblio moves linktracker for item 1');
694
    is($get_linktracker2->biblionumber, $source_biblionumber, 'move_to_biblio does not move linktracker for item 2');
695
696
    $schema->storage->txn_rollback;
697
};
(-)a/t/db_dependent/Koha/SearchEngine/Indexer.t (-2 / +10 lines)
Lines 60-66 subtest 'Test indexer object creation' => sub { Link Here
60
};
60
};
61
61
62
subtest 'Test indexer calls' => sub {
62
subtest 'Test indexer calls' => sub {
63
    plan tests => 40;
63
    plan tests => 44;
64
64
65
    my @engines = ('Zebra');
65
    my @engines = ('Zebra');
66
    eval { Koha::SearchEngine::Elasticsearch->get_elasticsearch_params; };
66
    eval { Koha::SearchEngine::Elasticsearch->get_elasticsearch_params; };
Lines 158-163 subtest 'Test indexer calls' => sub { Link Here
158
            AddReturn($item->barcode, $item->homebranch, 0, undef);
158
            AddReturn($item->barcode, $item->homebranch, 0, undef);
159
        } [$engine,'C4::Circulation'], "index_records is called once for $engine when calling AddReturn if item not issued";
159
        } [$engine,'C4::Circulation'], "index_records is called once for $engine when calling AddReturn if item not issued";
160
160
161
        my $item3 = $builder->build_sample_item({biblionumber => $biblio->biblionumber});
162
        my $item4 = $builder->build_sample_item({biblionumber => $biblio->biblionumber});
163
        warnings_are{
164
            $item3->move_to_biblio($biblio2);
165
        } [$engine,"Koha::Item"], "index_records is called for $engine when moving an item to another biblio (Item->move_to_biblio)";
166
        warnings_are{
167
            $item4->move_to_biblio($biblio2, { skip_record_index => 1 });
168
        } undef, "index_records is not called for $engine when moving an item to another biblio (Item->move_to_biblio) if skip_record_index passed";
169
161
        $builder->build({
170
        $builder->build({
162
            source => 'Branchtransfer',
171
            source => 'Branchtransfer',
163
            value => {
172
            value => {
164
- 

Return to bug 22690