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

(-)a/misc/maintenance/search_for_data_inconsistencies.pl (-105 / +8 lines)
Lines 66-72 GetOptions( Link Here
66
    'skip-loop'       => sub { $options{'skip-loop'}       = 1 },
66
    'skip-loop'       => sub { $options{'skip-loop'}       = 1 },
67
    'help'            => sub { $options{'help'}            = 1; },
67
    'help'            => sub { $options{'help'}            = 1; },
68
) or pod2usage(2);    # Print usage if invalid options are provided
68
) or pod2usage(2);    # Print usage if invalid options are provided
69
70
# Call handle_invalid_options subroutine if invalid options are provided
69
# Call handle_invalid_options subroutine if invalid options are provided
71
Getopt::Long::Configure('pass_through');
70
Getopt::Long::Configure('pass_through');
72
GetOptions(
71
GetOptions(
Lines 127-142 sub set_skip_options { Link Here
127
# Set all check options to 1 if none are provided, considering skip options
126
# Set all check options to 1 if none are provided, considering skip options
128
sub set_all_check_options_if_none_provided {
127
sub set_all_check_options_if_none_provided {
129
    my $any_check_option_provided = grep { $options{$_} } grep { /^check-/ } keys %options;
128
    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
129
136
                # Set check option to 1 unless the corresponding skip option indicated
130
    if ( !$any_check_option_provided ) {
137
                $options{$key} = 1 unless $options{$skip_key};
131
        handle_invalid_options("No options selected");
138
            }
132
        die;
139
        }
140
    }
133
    }
141
}
134
}
142
135
Lines 271-289 sub CheckItemsStatus { Link Here
271
        } else {
264
        } else {
272
            $biblioitemnumber = $record->subfield( $biblioitem_tag, $biblioitem_subfield );
265
            $biblioitemnumber = $record->subfield( $biblioitem_tag, $biblioitem_subfield );
273
        }
266
        }
274
        if ( $biblionumber != $biblio->biblionumber ) {
267
        if (not (defined $biblionumber)  and $biblionumber != $biblio->biblionumber ) {
275
            push @ids_not_in_marc,
268
            push @ids_not_in_marc,
276
                {
269
                {
277
                biblionumber         => $biblio->biblionumber,
270
                biblionumber         => $biblio->biblionumber,
278
                biblionumber_in_marc => $biblionumber,
271
                biblionumber_in_marc => $biblionumber,
279
                };
272
                };
280
        }
273
        }
281
        if ( $biblioitemnumber != $biblio->biblioitem->biblioitemnumber ) {
274
        if ( not (defined $biblioitemnumber) and $biblioitemnumber != $biblio->biblioitem->biblioitemnumber ) {
282
            push @ids_not_in_marc,
275
            push @ids_not_in_marc,
283
                {
276
                {
284
                biblionumber             => $biblio->biblionumber,
277
                    biblionumber             => $biblio->biblionumber,
285
                biblioitemnumber         => $biblio->biblioitem->biblioitemnumber,
278
                    biblioitemnumber         => $biblio->biblioitem->biblioitemnumber,
286
                biblioitemnumber_in_marc => $biblionumber,
279
                    biblioitemnumber_in_marc => $biblionumber,
287
                };
280
                };
288
        }
281
        }
289
    }
282
    }
Lines 615-709 sub CheckAgeForCategory { Link Here
615
    }
608
    }
616
}
609
}
617
610
618
sub CheckRelationshipsLoop {
619
    my @loop_borrowers_relationships;
620
    my @guarantor_ids = Koha::Patron::Relationships->_resultset->get_column('guarantor_id')->all();
621
    my @guarantee_ids = Koha::Patron::Relationships->_resultset->get_column('guarantee_id')->all();
622
623
    foreach my $guarantor_id (@guarantor_ids) {
624
        foreach my $guarantee_id (@guarantee_ids) {
625
            if ( $guarantor_id == $guarantee_id ) {
626
627
                my $relation_guarantor_id;
628
                my $relation_guarantee_id;
629
                my $size_list;
630
                my $tmp_garantor_id = $guarantor_id;
631
                my @guarantor_ids;
632
633
                do {
634
                    my @relationship_for_go = Koha::Patron::Relationships->search(
635
                        {
636
                            -or => [
637
                                'guarantor_id' => { '=', $tmp_garantor_id },
638
                            ]
639
                        },
640
                    )->as_list;
641
                    $size_list = scalar @relationship_for_go;
642
643
                    foreach my $relation (@relationship_for_go) {
644
                        $relation_guarantor_id = $relation->guarantor_id;
645
                        unless ( grep { $_ == $relation_guarantor_id } @guarantor_ids ) {
646
                            push @guarantor_ids, $relation_guarantor_id;
647
                        }
648
                        $relation_guarantee_id = $relation->guarantee_id;
649
650
                        my @relationship_for_go = Koha::Patron::Relationships->search(
651
                            {
652
                                -or => [
653
                                    'guarantor_id' => { '=', $relation_guarantee_id },
654
                                ]
655
                            },
656
                        )->as_list;
657
                        $size_list = scalar @relationship_for_go;
658
659
                        if ( $guarantor_id == $relation_guarantee_id ) {
660
                            last;
661
                        }
662
663
                        foreach my $relation (@relationship_for_go) {
664
                            $relation_guarantor_id = $relation->guarantor_id;
665
                            unless ( grep { $_ == $relation_guarantor_id } @guarantor_ids ) {
666
                                push @guarantor_ids, $relation_guarantor_id;
667
                            }
668
                            $relation_guarantee_id = $relation->guarantee_id;
669
670
                            if ( $guarantor_id == $relation_guarantee_id ) {
671
                                last;
672
                            }
673
                        }
674
                        if ( $guarantor_id == $relation_guarantee_id ) {
675
                            last;
676
                        }
677
                    }
678
679
                    $tmp_garantor_id = $relation_guarantee_id;
680
                } while ( $guarantor_id != $relation_guarantee_id && $size_list > 0 );
681
682
                if ( $guarantor_id == $relation_guarantee_id ) {
683
                    unless ( grep { join( "", sort @$_ ) eq join( "", sort @guarantor_ids ) }
684
                        @loop_borrowers_relationships )
685
                    {
686
                        push @loop_borrowers_relationships, \@guarantor_ids;
687
                    }
688
                }
689
            }
690
        }
691
    }
692
693
    if ( scalar @loop_borrowers_relationships > 0 ) {
694
        new_section("The list of guarantors who are also guarantee.");
695
        my $count = 0;
696
        foreach my $table (@loop_borrowers_relationships) {
697
            $count++;
698
            print "Loop $count, borrowers id  : ";
699
            foreach my $borrower_id (@$table) {
700
                print "$borrower_id , ";
701
            }
702
            print "\n";
703
        }
704
        new_hint("Relationships that form guarantor loops must be deleted");
705
    }
706
}
707
611
708
sub CheckRelationshipsLoop {
612
sub CheckRelationshipsLoop {
709
    my @loop_borrowers_relationships;
613
    my @loop_borrowers_relationships;
710
- 

Return to bug 36027