From cd9dfdfa8293431754fe93d49b6a50904eedba3c Mon Sep 17 00:00:00 2001 From: Dan Scott Date: Mon, 15 Dec 2014 23:23:49 -0500 Subject: [PATCH] LP#1402905 Use stricter matching for UPC values Per http://www.loc.gov/marc/bibliographic/bd024.html we should be checking to see if either the ind1 is "1" or if there's a subfield 2 with a value of "upc" before assuming that any "Other standard identifier" 024 field is a UPC value. Signed-off-by: Dan Scott Signed-off-by: Ben Shum --- Open-ILS/src/templates/opac/parts/misc_util.tt2 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/templates/opac/parts/misc_util.tt2 b/Open-ILS/src/templates/opac/parts/misc_util.tt2 index 32717b8fd6..da7c958205 100644 --- a/Open-ILS/src/templates/opac/parts/misc_util.tt2 +++ b/Open-ILS/src/templates/opac/parts/misc_util.tt2 @@ -137,10 +137,17 @@ args.isbns.push(isbn.textContent); END; + # UPCs can be identified either by ind1="1" or subfield 2 of "upc" args.upcs = []; - FOR upc IN xml.findnodes('//*[@tag="024"]/*[@code="a"]'); + FOR upc IN xml.findnodes('//*[@tag="024" and @ind="1"]/*[@code="a"]'); args.upcs.push(upc.textContent); END; + FOR upcfield IN xml.findnodes('//*[@tag="024"]/*[@code="2" and text()="upc"]'); + my_parent = upcfield.parentNode(); + FOR upc IN my_parent.findnodes('./*[@code="a"]'); + args.upcs.push(upc.textContent); + END; + END; args.upc = args.upcs.0; # use first UPC as the default args.issns = []; -- 2.43.2