From 258dabf93bcd5b5201410d1ec550ce5d093999e1 Mon Sep 17 00:00:00 2001
From: Nick Clemens <nick@bywatersolutions.com>
Date: Wed, 28 Sep 2022 19:28:53 +0000
Subject: [PATCH] Bug 13976: Zeropad populariy for Zebra searching

This patch is much eased in testing by bug 31644 which will allow
you to modify totalissues field via modification

To test:
1 - Create a new template at Tools->Marc modification template
2 - Add action: Copy 999$c to 942$0
3 - Create a report:
    SELECT biblionuber FROM biblios
4 - Run report, show all, do a batch modification to all records using template above
5 - Search for 'a' (make sure you are using Zebra)
6 - Sort by popularity
7 - Note records are sorted wrong
8 - Apply patch
9 - Copy files:
    cp /kohadevbox/koha/etc/zebradb/marc_defs/marc21/biblios/biblio-koha-indexdefs.xml /etc/koha/zebradb/marc_defs/marc21/biblios/biblio-koha-indexdefs.xml
    cp /kohadevbox/koha/etc/zebradb/marc_defs/marc21/biblios/biblio-zebra-indexdefs.xsl /etc/koha/zebradb/marc_defs/marc21/biblios/biblio-zebra-indexdefs.xsl
10 - Restart all, reindex zebra
    sudo koha-rebuild-zebra -v -f kohadev
11 - Reload search results
12 - Success! Sorted correctly

Bonus: Test unimarc - same changes
---
 etc/zebradb/marc_defs/marc21/biblios/biblio-koha-indexdefs.xml  | 2 +-
 etc/zebradb/marc_defs/marc21/biblios/biblio-zebra-indexdefs.xsl | 2 +-
 etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml | 2 +-
 .../marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl        | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/etc/zebradb/marc_defs/marc21/biblios/biblio-koha-indexdefs.xml b/etc/zebradb/marc_defs/marc21/biblios/biblio-koha-indexdefs.xml
index 7b1895968b..021bfe9a98 100644
--- a/etc/zebradb/marc_defs/marc21/biblios/biblio-koha-indexdefs.xml
+++ b/etc/zebradb/marc_defs/marc21/biblios/biblio-koha-indexdefs.xml
@@ -1207,7 +1207,7 @@
     <target_index>biblioitemnumber:s</target_index>
   </index_subfields>
   <!--record.abs line 270: melm 942$0      totalissues:n,totalissues:s-->
-  <index_subfields tag="942" subfields="0">
+  <index_subfields tag="942" subfields="0" zeropad="1">
     <target_index>totalissues:n</target_index>
     <target_index>totalissues:s</target_index>
   </index_subfields>
diff --git a/etc/zebradb/marc_defs/marc21/biblios/biblio-zebra-indexdefs.xsl b/etc/zebradb/marc_defs/marc21/biblios/biblio-zebra-indexdefs.xsl
index b3222fadb5..dc9e658587 100644
--- a/etc/zebradb/marc_defs/marc21/biblios/biblio-zebra-indexdefs.xsl
+++ b/etc/zebradb/marc_defs/marc21/biblios/biblio-zebra-indexdefs.xsl
@@ -1292,7 +1292,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('0', @code)">
         <z:index name="totalissues:n totalissues:s">
-          <xslo:value-of select="."/>
+          <xslo:value-of select="format-number(.,&quot;00000000000&quot;)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
diff --git a/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml b/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
index 5425bc2ba6..9849952174 100644
--- a/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
+++ b/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
@@ -1442,7 +1442,7 @@
     <target_index>item:w</target_index>
   </index_data_field>
   <!--942$0      totalissues:n,totalissues:s-->
-  <index_subfields tag="942" subfields="0">
+  <index_subfields tag="942" subfields="0" zeropad="1">
     <target_index>totalissues:n</target_index>
     <target_index>totalissues:s</target_index>
   </index_subfields>
diff --git a/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl b/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
index 22d902c461..79313b6c17 100644
--- a/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
+++ b/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
@@ -1878,7 +1878,7 @@ definition file (probably something like {biblio,authority}-koha-indexdefs.xml)
     <xslo:for-each select="marc:subfield">
       <xslo:if test="contains('0', @code)">
         <z:index name="totalissues:n totalissues:s">
-          <xslo:value-of select="."/>
+          <xslo:value-of select="format-number(.,&quot;00000000000&quot;)"/>
         </z:index>
       </xslo:if>
     </xslo:for-each>
-- 
2.30.2