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

(-)a/Koha/Exporter/Record.pm (-18 / +12 lines)
Lines 255-282 sub export { Link Here
255
        }
255
        }
256
        if ( $format eq 'iso2709' ) {
256
        if ( $format eq 'iso2709' ) {
257
            my $encoding_validator = sub {
257
            my $encoding_validator = sub {
258
                my ($record_type) = @_;
258
                my ($record, $record_type) = @_;
259
                return sub {
259
                my $errorcount_on_decode = eval { scalar(MARC::File::USMARC->decode($record->as_usmarc)->warnings()) };
260
                    my ($record) = @_;
260
                if ($errorcount_on_decode || $@) {
261
                    my $errorcount_on_decode = eval { scalar(MARC::File::USMARC->decode($record->as_usmarc)->warnings()) };
261
                    my ($id_tag, $id_subfield) = GetMarcFromKohaField('biblio.biblionumber', '');
262
                    if ($errorcount_on_decode || $@) {
262
                    my $record_id = $record->subfield($id_tag, $id_subfield);
263
                        my ($id_tag, $id_subfield) = GetMarcFromKohaField('biblio.biblionumber', '');
263
                    my $msg = "$record_type $record_id could not be USMARC decoded/encoded. " . ($@ // '');
264
                        my $record_id = $record->subfield($id_tag, $id_subfield);
264
                    chomp $msg;
265
                        my $msg = "$record_type $record_id could not be USMARC decoded/encoded. " . ($@ // '');
265
                    Koha::Logger->get->warn($msg);
266
                        chomp $msg;
266
                    return 0;
267
                        Koha::Logger->get->warn($msg);
268
                        return 0;
269
                    }
270
                    return 1;
271
                }
267
                }
268
                return 1;
272
            };
269
            };
273
            my $validator = $encoding_validator->('Record');
270
            for my $record (grep { $encoding_validator->($_, 'Record') } @records) {
274
            for my $record (grep { $validator->($_) } @records) {
275
                print $record->as_usmarc();
271
                print $record->as_usmarc();
276
            }
272
            }
277
            if (@deleted_records) {
273
            if (@deleted_records) {
278
                $validator = $encoding_validator->('Deleted record');
274
                for my $deleted_record (grep { $encoding_validator->($_, 'Deleted record') } @deleted_records) {
279
                for my $deleted_record (grep { $validator->($_) } @deleted_records) {
280
                    print $deleted_record->as_usmarc();
275
                    print $deleted_record->as_usmarc();
281
                }
276
                }
282
            }
277
            }
283
- 

Return to bug 20551