From 0c8496a85af997a1a5f367d975e252e637c087ce Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 14 Dec 2021 12:08:13 +0100 Subject: [PATCH] Bug 29689: (bug 28445 follow-up) Fix AutoBarcode=hbyymmincr The selector is not correct, we must to not rely on the number. This patch fixes a regression caused by bug 28445, but also a long-standing bug. * Regression: The barcode plugin is broken is autoBarcode=yymm0001 There is a JS error in the console: Uncaught TypeError: form.field_value is undefined Focustag_952_subfield_p_878344 Focustag_952_subfield_p_878344_handler jQuery 11 BindEventstag_952_subfield_p_878344 * Long standing bug: If there are several item forms on the same page, the branchcode is not correctly retrieved. For instance on the "Serial edition" page there are 2 item forms, the homebranch that is used by the barcode plugin will be the one from the last form. Test plan: * regression Set autoBarcode=yymm0001 Catalogue a new item, click into the barcode input Notice that without this patch you get a JS error in the console * long standing bug Create a new subscription, select "Create an item record when receiving this serial". Receive a serial Open the 2 item forms ("Click to add item") Select 2 different home library and click the barcode inputs. The prefix (branchcode) should be correct with this patch applied. QA Note: it would be way easier if all add item forms were using the new methods, it could be: let loc = document.getElementsByName('items.homebranch')[0].value; Yes, that's all! Signed-off-by: Hayley Pelham Signed-off-by: Nick Clemens Signed-off-by: Fridolin Somers --- C4/Barcodes/ValueBuilder.pm | 26 +++++++------------ cataloguing/value_builder/barcode.pl | 1 - cataloguing/value_builder/barcode_manual.pl | 1 - .../prog/en/includes/html_helpers.inc | 1 + t/db_dependent/Barcodes_ValueBuilder.t | 2 -- 5 files changed, 11 insertions(+), 20 deletions(-) diff --git a/C4/Barcodes/ValueBuilder.pm b/C4/Barcodes/ValueBuilder.pm index ea8bffafa3..64a5665780 100644 --- a/C4/Barcodes/ValueBuilder.pm +++ b/C4/Barcodes/ValueBuilder.pm @@ -56,23 +56,17 @@ sub get_barcode { $nextnum++; $nextnum = sprintf("%0*d", "4",$nextnum); $nextnum = $year . $month . $nextnum; - my $scr = " - var form = document.getElementById('f'); - if ( !form ) { - form = document.getElementById('serials_edit'); - } - if ( !form ) { - form = document.getElementById('Aform'); - } - for (i=0 ; i{loctag}' && form.subfield[i].value == '$args->{locsubfield}') { - fnum = i; - } + my $scr = qq~ + let elt = \$("#"+id); + let homebranch = elt.parents('fieldset.rows:first') + .find('input[name="kohafield"][value="items.homebranch"]') + .siblings("select") + .val(); + + if ( \$(elt).val() == '' ) { + \$(elt).val(homebranch + '$nextnum'); } - if (\$('#' + id).val() == '') { - \$('#' + id).val(form.field_value[fnum].value + '$nextnum'); - } - "; + ~; return $nextnum, $scr; } diff --git a/cataloguing/value_builder/barcode.pl b/cataloguing/value_builder/barcode.pl index da1ec86ac9..8fcd45beae 100755 --- a/cataloguing/value_builder/barcode.pl +++ b/cataloguing/value_builder/barcode.pl @@ -37,7 +37,6 @@ my $builder = sub { # find today's date ($args{year}, $args{mon}, $args{day}) = split('-', output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 })); ($args{tag},$args{subfield}) = GetMarcFromKohaField( "items.barcode" ); - ($args{loctag},$args{locsubfield}) = GetMarcFromKohaField( "items.homebranch" ); my $nextnum; my $scr; diff --git a/cataloguing/value_builder/barcode_manual.pl b/cataloguing/value_builder/barcode_manual.pl index a3840bd436..d2b7f7a414 100755 --- a/cataloguing/value_builder/barcode_manual.pl +++ b/cataloguing/value_builder/barcode_manual.pl @@ -38,7 +38,6 @@ my $builder = sub { # find today's date ($args{year}, $args{mon}, $args{day}) = split('-', output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 })); ($args{tag},$args{subfield}) = GetMarcFromKohaField( "items.barcode" ); - ($args{loctag},$args{locsubfield}) = GetMarcFromKohaField( "items.homebranch" ); my $nextnum; my $scr; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc index 8f148947b4..a2ea6ebd20 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers.inc @@ -148,6 +148,7 @@ [% END %] + [%# We should not need that but all item forms are not rewritten yet %] diff --git a/t/db_dependent/Barcodes_ValueBuilder.t b/t/db_dependent/Barcodes_ValueBuilder.t index f21f140c38..980543afc1 100755 --- a/t/db_dependent/Barcodes_ValueBuilder.t +++ b/t/db_dependent/Barcodes_ValueBuilder.t @@ -61,8 +61,6 @@ my %args = ( day => '30', tag => '952', subfield => 'p', - loctag => '952', - locsubfield => 'a' ); my ($nextnum, $scr) = C4::Barcodes::ValueBuilder::incremental::get_barcode(\%args); -- 2.39.2