Bug 20509: Search for not defined authority codes
[koha.git] / misc / maintenance / search_for_data_inconsistencies.pl
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
20 use Koha::Items;
21 use Koha::Authorities;
22
23 {
24     my $items = Koha::Items->search({ -or => { homebranch => undef, holdingbranch => undef }});
25     if ( $items->count ) { new_section("Not defined items.homebranch and/or items.holdingbranch")}
26     while ( my $item = $items->next ) {
27         if ( not $item->homebranch and not $item->holdingbranch ) {
28             new_item(sprintf "Item with itemnumber=%s does not have homebranch and holdingbranch defined", $item->itemnumber);
29         } elsif ( not $item->homebranch ) {
30             new_item(sprintf "Item with itemnumber=%s does not have homebranch defined", $item->itemnumber);
31         } else {
32             new_item(sprintf "Item with itemnumber=%s does not have holdingbranch defined", $item->itemnumber);
33         }
34     }
35     if ( $items->count ) { new_hint("Edit these items and set valid homebranch and/or holdingbranch")}
36 }
37
38 {
39     # No join possible, FK is missing at DB level
40     my @auth_types = Koha::Authority::Types->search->get_column('authtypecode');
41     my $authorities = Koha::Authorities->search({authtypecode => { 'not in' => \@auth_types } });
42     if ( $authorities->count ) {new_section("Invalid auth_header.authtypecode")}
43     while ( my $authority = $authorities->next ) {
44         new_item(sprintf "Authority with authid=%s does not have a code defined (%s)", $authority->authid, $authority->authtypecode);
45     }
46     if ( $authorities->count ) {new_hint("Go to 'Home › Administration › Authority types' to define them")}
47 }
48
49 sub new_section {
50     my ( $name ) = @_;
51     say "\n== $name ==";
52 }
53
54 sub new_item {
55     my ( $name ) = @_;
56     say "\t* $name";
57 }
58 sub new_hint {
59     my ( $name ) = @_;
60     say "=> $name";
61 }
62
63 =head1 NAME
64
65 search_for_data_inconsistencies.pl
66
67 =head1 SYNOPSIS
68
69     perl search_for_data_inconsistencies.pl
70
71 =head1 DESCRIPTION
72
73 Catch data inconsistencies in Koha database
74
75 * Items with not defined homebranch and/or holdingbranch
76
77 =cut