Bug 22043: (QA follow-up) Add parameter to control behavior
[koha.git] / C4 / XSLT.pm
index 518f59d..f434fa4 100644 (file)
@@ -30,6 +30,7 @@ use C4::Biblio;
 use C4::Circulation;
 use C4::Reserves;
 use Koha::AuthorisedValues;
+use Koha::ItemTypes;
 use Koha::XSLT_Handler;
 use Koha::Libraries;
 
@@ -179,7 +180,7 @@ sub get_xslt_sysprefs {
 
     # singleBranchMode was a system preference, but no longer is
     # we can retain it here for compatibility
-    my $singleBranchMode = Koha::Libraries->search->count == 1;
+    my $singleBranchMode = Koha::Libraries->search->count == 1 ? 1 : 0;
     $sysxml .= "<syspref name=\"singleBranchMode\">$singleBranchMode</syspref>\n";
 
     $sysxml .= "</sysprefs>\n";
@@ -274,13 +275,13 @@ sub buildKohaItemsNamespace {
     }
 
     my $shelflocations =
-      { map { $_->authorised_value => $_->opac_description } Koha::AuthorisedValues->search_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.location' } ) };
+      { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.location' } ) };
     my $ccodes =
-      { map { $_->authorised_value => $_->opac_description } Koha::AuthorisedValues->search_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.ccode' } ) };
+      { map { $_->{authorised_value} => $_->{opac_description} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => GetFrameworkCode($biblionumber), kohafield => 'items.ccode' } ) };
 
     my %branches = map { $_->branchcode => $_->branchname } Koha::Libraries->search({}, { order_by => 'branchname' });
 
-    my $itemtypes = GetItemTypes();
+    my $itemtypes = { map { $_->{itemtype} => $_ } @{ Koha::ItemTypes->search->unblessed } };
     my $location = "";
     my $ccode = "";
     my $xml = '';
@@ -291,12 +292,12 @@ sub buildKohaItemsNamespace {
 
         my $reservestatus = C4::Reserves::GetReserveStatus( $item->{itemnumber} );
 
-        if ( $itemtypes->{ $item->{itype} }->{notforloan} || $item->{notforloan} || $item->{onloan} || $item->{withdrawn} || $item->{itemlost} || $item->{damaged} ||
+        if ( ( $item->{itype} && $itemtypes->{ $item->{itype} }->{notforloan} ) || $item->{notforloan} || $item->{onloan} || $item->{withdrawn} || $item->{itemlost} || $item->{damaged} ||
              (defined $transfertwhen && $transfertwhen ne '') || $item->{itemnotforloan} || (defined $reservestatus && $reservestatus eq "Waiting") ){ 
             if ( $item->{notforloan} < 0) {
                 $status = "On order";
             } 
-            if ( $item->{itemnotforloan} > 0 || $item->{notforloan} > 0 || $itemtypes->{ $item->{itype} }->{notforloan} == 1 ) {
+            if ( $item->{itemnotforloan} && $item->{itemnotforloan} > 0 || $item->{notforloan} && $item->{notforloan} > 0 || $item->{itype} && $itemtypes->{ $item->{itype} }->{notforloan} && $itemtypes->{ $item->{itype} }->{notforloan} == 1 ) {
                 $status = "reference";
             }
             if ($item->{onloan}) {
@@ -309,7 +310,7 @@ sub buildKohaItemsNamespace {
                 $status = "Lost";
             }
             if ($item->{damaged}) {
-                $status = "Damaged"; 
+                $status = "Damaged";
             }
             if (defined $transfertwhen && $transfertwhen ne '') {
                 $status = 'In transit';
@@ -325,14 +326,16 @@ sub buildKohaItemsNamespace {
         $location = $item->{location}? xml_escape($shelflocations->{$item->{location}}||$item->{location}):'';
         $ccode = $item->{ccode}? xml_escape($ccodes->{$item->{ccode}}||$item->{ccode}):'';
         my $itemcallnumber = xml_escape($item->{itemcallnumber});
+        my $stocknumber = $item->{stocknumber}? xml_escape($item->{stocknumber}):'';
         $xml .=
             "<item>"
           . "<homebranch>$homebranch</homebranch>"
           . "<holdingbranch>$holdingbranch</holdingbranch>"
           . "<location>$location</location>"
           . "<ccode>$ccode</ccode>"
-          . "<status>$status</status>"
+          . "<status>".( $status // q{} )."</status>"
           . "<itemcallnumber>$itemcallnumber</itemcallnumber>"
+          . "<stocknumber>$stocknumber</stocknumber>"
           . "</item>";
     }
     $xml = "<items xmlns=\"http://www.koha-community.org/items\">".$xml."</items>";