From b7c75903a11f58e3721568b160cdf462ba7e0b01 Mon Sep 17 00:00:00 2001 From: Matthias Le Gac Date: Fri, 16 Feb 2024 10:43:18 -0500 Subject: [PATCH] Bug 34157: Exporting labels as a barcode range can cause 500 error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This fixes the error 500 generated when using the label generator if you use the "Bibliographic data precedes barcode" layout type when printing a barcode range. Test plan: 1. Set up information for testing: 1.1 Create a new label layout: 1.1.1 Cataloging > Tools > Label creator 1.1.2 New > Label layout 1.1.3 Add these details: - Layout name: BZ34157 - Choose layout type: Bibliographic data precedes barcode - Select 'List fieds' - Data fields: add some text at the end title, author, isbn, issn, itemtype, barcode, itemcallnumber, 'Some text' 1.1.3 Save 1.2 Ranges of barcode numbers for testing: 1.2.1 Where the numbers are not used in KTD, and are LOWER than the highest barcode number (39999000019193): 500000 to 500100 1.2.3 Where the numbers are not used in KTD, and are HIGHER than the highest barcode number (39999000019193): 39999000020000 to 39999000020100 1.2.2 Where the numbers are used in KTD: 3999900000001 to 3999900001001 2. Print a barcode range using the ranges in 1.2: 2.1 Cataloging > Tools > Label creator > Print barcode range 2.2 Enter the barcode ranges 2.3 Select a layout to be applied: BZ34157 2.4 Export 2.5 Click "Download as PDF" 2.6 Results for all barcode ranges: ==> You get a page with "An error has occured! Error 500...". 3. Repeat step 2, but select the DEFAULT layout for 2.3: ==> Results for all barcode ranges: PDFs with barcode labels successfully generated 4. Apply the patches and restart everything (restart_all) 5. Repeat steps 2 and 3. 6. Results for all barcode ranges and the BZ34157 and DEFAULT layouts: ==> PDFs with barcode labels successfully generated Signed-off-by: Tadeusz „tadzik” Sośnierz Signed-off-by: David Nind --- C4/Labels/Label.pm | 8 +++++--- labels/label-create-pdf.pl | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/C4/Labels/Label.pm b/C4/Labels/Label.pm index 842cfb051a..5502382736 100644 --- a/C4/Labels/Label.pm +++ b/C4/Labels/Label.pm @@ -385,8 +385,11 @@ sub draw_label_text { my $font = $self->{'font'}; my $item = _get_label_item( $self->{'item_number'} ); my $label_fields = _get_text_fields( $self->{'format_string'} ); - my $biblio = Koha::Biblios->find( $item->{biblionumber} ); - my $record = $biblio->metadata->record; + my $biblio = Koha::Biblios->find($item->{'biblionumber'}); + my $record; + if (defined $biblio) { + $record = $biblio->metadata->record; + } # FIXME - returns all items, so you can't get data from an embedded holdings field. # TODO - add a GetMarcBiblio1item(bibnum,itemnum) or a GetMarcItem(itemnum). @@ -408,7 +411,6 @@ LABEL_FIELDS: # process data for requested fields on current label } else { $field->{'data'} = _get_barcode_data( $field->{'code'}, $item, $record ); } - # Find appropriate font it oblique title selected, except main font is oblique if ( ( $field->{'code'} eq 'title' ) and ( $self->{'oblique_title'} == 1 ) ) { if ( $font =~ /^TB$/ ) { diff --git a/labels/label-create-pdf.pl b/labels/label-create-pdf.pl index e6ca44873b..a299d2c6d8 100755 --- a/labels/label-create-pdf.pl +++ b/labels/label-create-pdf.pl @@ -156,6 +156,7 @@ foreach my $item ( @{$items} ) { ), ); $pdf->Add( $label_a->draw_guide_box ) if $layout->get_attr('guidebox'); + print STDERR "label_a: iffffffff"; my $label_a_text = $label_a->create_label(); _print_text($label_a_text); ( $row_count, $col_count, $llx, $lly ) = _calc_next_label_pos( $row_count, $col_count, $llx, $lly ); -- 2.39.5