| 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 | -  |  |  |