Lines 118-134
use C4::Biblio qw( GetMarcFromKohaField );
Link Here
|
118 |
} |
118 |
} |
119 |
} |
119 |
} |
120 |
|
120 |
|
121 |
my @decoding_errors; |
121 |
my ( @decoding_errors, @ids_not_in_marc ); |
122 |
my $biblios = Koha::Biblios->search; |
122 |
my $biblios = Koha::Biblios->search; |
|
|
123 |
my ( $biblio_tag, $biblio_subfield ) = C4::Biblio::GetMarcFromKohaField( "biblio.biblionumber" ); |
124 |
my ( $biblioitem_tag, $biblioitem_subfield ) = C4::Biblio::GetMarcFromKohaField( "biblioitems.biblioitemnumber" ); |
123 |
while ( my $biblio = $biblios->next ) { |
125 |
while ( my $biblio = $biblios->next ) { |
124 |
eval{$biblio->metadata->record;}; |
126 |
my $record = eval{$biblio->metadata->record;}; |
125 |
push @decoding_errors, $@ if $@; |
127 |
if ($@) { |
|
|
128 |
push @decoding_errors, $@; |
129 |
next; |
130 |
} |
131 |
my $biblionumber = $record->subfield($biblio_tag, $biblio_subfield); |
132 |
my $biblioitemnumber = $record->subfield($biblioitem_tag, $biblioitem_subfield); |
133 |
if ( $biblionumber != $biblio->biblionumber ) { |
134 |
push @ids_not_in_marc, |
135 |
{ |
136 |
biblionumber => $biblio->biblionumber, |
137 |
biblionumber_in_marc => $biblionumber, |
138 |
}; |
139 |
} |
140 |
if ( $biblioitemnumber != $biblio->biblioitem->biblioitemnumber ) { |
141 |
push @ids_not_in_marc, |
142 |
{ |
143 |
biblionumber => $biblio->biblionumber, |
144 |
biblioitemnumber => $biblio->biblioitem->biblioitemnumber, |
145 |
biblioitemnumber_in_marc => $biblionumber, |
146 |
}; |
147 |
} |
126 |
} |
148 |
} |
127 |
if ( @decoding_errors ) { |
149 |
if ( @decoding_errors ) { |
128 |
new_section("Bibliographic records have invalid MARCXML"); |
150 |
new_section("Bibliographic records have invalid MARCXML"); |
129 |
new_item($_) for @decoding_errors; |
151 |
new_item($_) for @decoding_errors; |
130 |
new_hint("The bibliographic records must have a valid MARCXML or you will face encoding issues or wrong displays"); |
152 |
new_hint("The bibliographic records must have a valid MARCXML or you will face encoding issues or wrong displays"); |
131 |
} |
153 |
} |
|
|
154 |
if (@ids_not_in_marc) { |
155 |
new_section("Bibliographic records have MARCXML without biblionumber or biblioitemnumber"); |
156 |
for my $id (@ids_not_in_marc) { |
157 |
if ( exists $id->{biblioitemnumber} ) { |
158 |
new_item( |
159 |
sprintf(q{Biblionumber %s has biblioitemnumber '%s' but should be '%s' in %s$%s}, |
160 |
$id->{biblionumber}, |
161 |
$id->{biblioitemnumber}, |
162 |
$id->{biblioitemnumber_in_marc}, |
163 |
$biblioitem_tag, |
164 |
$biblioitem_subfield, |
165 |
) |
166 |
); |
167 |
} |
168 |
else { |
169 |
new_item( |
170 |
sprintf(q{Biblionumber %s has '%s' in %s$%s}, |
171 |
$id->{biblionumber}, |
172 |
$id->{biblionumber_in_marc}, |
173 |
$biblio_tag, |
174 |
$biblio_subfield, |
175 |
) |
176 |
); |
177 |
} |
178 |
} |
179 |
new_hint("The bibliographic records must have the biblionumber and biblioitemnumber in MARCXML"); |
180 |
} |
132 |
} |
181 |
} |
133 |
|
182 |
|
134 |
{ |
183 |
{ |
135 |
- |
|
|