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

(-)a/misc/maintenance/search_for_data_inconsistencies.pl (-102 / +5 lines)
Lines 127-142 sub set_skip_options { Link Here
127
# Set all check options to 1 if none are provided, considering skip options
127
# Set all check options to 1 if none are provided, considering skip options
128
sub set_all_check_options_if_none_provided {
128
sub set_all_check_options_if_none_provided {
129
    my $any_check_option_provided = grep { $options{$_} } grep { /^check-/ } keys %options;
129
    my $any_check_option_provided = grep { $options{$_} } grep { /^check-/ } keys %options;
130
    if ( !$any_check_option_provided ) {
131
        foreach my $key ( keys %options ) {
132
            if ( $key =~ /^check-/ ) {
133
                my $skip_key = $key;
134
                $skip_key =~ s/^check-/skip-/;
135
130
136
                # Set check option to 1 unless the corresponding skip option indicated
131
    if ( !$any_check_option_provided ) {
137
                $options{$key} = 1 unless $options{$skip_key};
132
        handle_invalid_options("No options selected");
138
            }
133
        die;
139
        }
140
    }
134
    }
141
}
135
}
142
136
Lines 284-297 sub CheckItemsStatus { Link Here
284
        } else {
278
        } else {
285
            $biblioitemnumber = $record->subfield( $biblioitem_tag, $biblioitem_subfield );
279
            $biblioitemnumber = $record->subfield( $biblioitem_tag, $biblioitem_subfield );
286
        }
280
        }
287
        if ( $biblionumber != $biblio->biblionumber ) {
281
        if ( not( defined $biblionumber ) and $biblionumber != $biblio->biblionumber ) {
288
            push @ids_not_in_marc,
282
            push @ids_not_in_marc,
289
                {
283
                {
290
                biblionumber         => $biblio->biblionumber,
284
                biblionumber         => $biblio->biblionumber,
291
                biblionumber_in_marc => $biblionumber,
285
                biblionumber_in_marc => $biblionumber,
292
                };
286
                };
293
        }
287
        }
294
        if ( $biblioitemnumber != $biblio->biblioitem->biblioitemnumber ) {
288
        if ( not( defined $biblioitemnumber ) and $biblioitemnumber != $biblio->biblioitem->biblioitemnumber ) {
295
            push @ids_not_in_marc,
289
            push @ids_not_in_marc,
296
                {
290
                {
297
                biblionumber             => $biblio->biblionumber,
291
                biblionumber             => $biblio->biblionumber,
Lines 731-826 sub CheckRelationshipsLoop { Link Here
731
    }
725
    }
732
}
726
}
733
727
734
sub CheckRelationshipsLoop {
735
    my @loop_borrowers_relationships;
736
    my @guarantor_ids = Koha::Patron::Relationships->_resultset->get_column('guarantor_id')->all();
737
    my @guarantee_ids = Koha::Patron::Relationships->_resultset->get_column('guarantee_id')->all();
738
739
    foreach my $guarantor_id (@guarantor_ids) {
740
        foreach my $guarantee_id (@guarantee_ids) {
741
            if ( $guarantor_id == $guarantee_id ) {
742
743
                my $relation_guarantor_id;
744
                my $relation_guarantee_id;
745
                my $size_list;
746
                my $tmp_garantor_id = $guarantor_id;
747
                my @guarantor_ids;
748
749
                do {
750
                    my @relationship_for_go = Koha::Patron::Relationships->search(
751
                        {
752
                            -or => [
753
                                'guarantor_id' => { '=', $tmp_garantor_id },
754
                            ]
755
                        },
756
                    )->as_list;
757
                    $size_list = scalar @relationship_for_go;
758
759
                    foreach my $relation (@relationship_for_go) {
760
                        $relation_guarantor_id = $relation->guarantor_id;
761
                        unless ( grep { $_ == $relation_guarantor_id } @guarantor_ids ) {
762
                            push @guarantor_ids, $relation_guarantor_id;
763
                        }
764
                        $relation_guarantee_id = $relation->guarantee_id;
765
766
                        my @relationship_for_go = Koha::Patron::Relationships->search(
767
                            {
768
                                -or => [
769
                                    'guarantor_id' => { '=', $relation_guarantee_id },
770
                                ]
771
                            },
772
                        )->as_list;
773
                        $size_list = scalar @relationship_for_go;
774
775
                        if ( $guarantor_id == $relation_guarantee_id ) {
776
                            last;
777
                        }
778
779
                        foreach my $relation (@relationship_for_go) {
780
                            $relation_guarantor_id = $relation->guarantor_id;
781
                            unless ( grep { $_ == $relation_guarantor_id } @guarantor_ids ) {
782
                                push @guarantor_ids, $relation_guarantor_id;
783
                            }
784
                            $relation_guarantee_id = $relation->guarantee_id;
785
786
                            if ( $guarantor_id == $relation_guarantee_id ) {
787
                                last;
788
                            }
789
                        }
790
                        if ( $guarantor_id == $relation_guarantee_id ) {
791
                            last;
792
                        }
793
                    }
794
795
                    $tmp_garantor_id = $relation_guarantee_id;
796
                } while ( $guarantor_id != $relation_guarantee_id && $size_list > 0 );
797
798
                if ( $guarantor_id == $relation_guarantee_id ) {
799
                    unless ( grep { join( "", sort @$_ ) eq join( "", sort @guarantor_ids ) }
800
                        @loop_borrowers_relationships )
801
                    {
802
                        push @loop_borrowers_relationships, \@guarantor_ids;
803
                    }
804
                }
805
            }
806
        }
807
    }
808
809
    if ( scalar @loop_borrowers_relationships > 0 ) {
810
        new_section("The list of guarantors who are also guarantee.");
811
        my $count = 0;
812
        foreach my $table (@loop_borrowers_relationships) {
813
            $count++;
814
            print "Loop $count, borrowers id  : ";
815
            foreach my $borrower_id (@$table) {
816
                print "$borrower_id , ";
817
            }
818
            print "\n";
819
        }
820
        new_hint("Relationships that form guarantor loops must be deleted");
821
    }
822
}
823
824
sub new_section {
728
sub new_section {
825
    my ($name) = @_;
729
    my ($name) = @_;
826
    say "\n== $name ==";
730
    say "\n== $name ==";
827
- 

Return to bug 36027