From a3a1337707627e287f3475cf6efe0681e3123eeb Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 29 Mar 2016 16:38:18 +0100 Subject: [PATCH] Bug 16158: Move GetAuthorisedValues outside the loop In catalogue/detail.pl and catalogue/moredetail.pl, the GetAuthorisedValues subroutine is called once per item. It's not needed, only 1 call is enough. Test plan: Edit item and view a catalogue record. The withdrawn, lost and damaged values should be correctly displayed/saved. Signed-off-by: Mark Tompsett --- catalogue/detail.pl | 15 ++++++++------- catalogue/moredetail.pl | 14 +++++++++++--- .../intranet-tmpl/prog/en/modules/catalogue/detail.tt | 8 ++++---- .../prog/en/modules/catalogue/moredetail.tt | 18 +++++++++--------- 4 files changed, 32 insertions(+), 23 deletions(-) diff --git a/catalogue/detail.pl b/catalogue/detail.pl index 23d6d04..0a1c7c9 100755 --- a/catalogue/detail.pl +++ b/catalogue/detail.pl @@ -186,8 +186,13 @@ my $collections = GetKohaAuthorisedValues('items.ccode' , $fw); my $copynumbers = GetKohaAuthorisedValues('items.copynumber', $fw); my (@itemloop, @otheritemloop, %itemfields); my $norequests = 1; -my $authvalcode_items_itemlost = GetAuthValCode('items.itemlost',$fw); -my $authvalcode_items_damaged = GetAuthValCode('items.damaged', $fw); + +if ( my $lost_av = GetAuthValCode('items.itemlost', $fw) ) { + $template->param( itemlostloop => GetAuthorisedValues( $lost_av ) ); +} +if ( my $damaged_av = GetAuthValCode('items.damaged', $fw) ) { + $template->param( itemdamagedloop => GetAuthorisedValues( $damaged_av ) ); +} my $materials_authvalcode = GetAuthValCode('items.materials', $fw); my %materials_map; @@ -217,11 +222,7 @@ foreach my $item (@items) { : ''; $item->{datedue} = format_sqldatetime($item->{datedue}); - # item damaged, lost, withdrawn loops - $item->{itemlostloop} = GetAuthorisedValues($authvalcode_items_itemlost) if $authvalcode_items_itemlost; - if ($item->{damaged}) { - $item->{itemdamagedloop} = GetAuthorisedValues($authvalcode_items_damaged) if $authvalcode_items_damaged; - } + #get shelf location and collection code description if they are authorised value. # same thing for copy number my $shelfcode = $item->{'location'}; diff --git a/catalogue/moredetail.pl b/catalogue/moredetail.pl index 82044ed..f94c1ff 100755 --- a/catalogue/moredetail.pl +++ b/catalogue/moredetail.pl @@ -137,9 +137,6 @@ foreach ( keys %{$data} ) { ($itemnumber) and @items = (grep {$_->{'itemnumber'} == $itemnumber} @items); foreach my $item (@items){ $item->{object} = Koha::Items->find( $item->{itemnumber} ); - $item->{itemlostloop}= GetAuthorisedValues(GetAuthValCode('items.itemlost',$fw)) if GetAuthValCode('items.itemlost',$fw); - $item->{itemdamagedloop}= GetAuthorisedValues(GetAuthValCode('items.damaged',$fw)) if GetAuthValCode('items.damaged',$fw); - $item->{itemwithdrawnloop}= GetAuthorisedValues(GetAuthValCode('items.withdrawn',$fw)) if GetAuthValCode('items.withdrawn',$fw); $item->{'collection'} = $ccodes->{ $item->{ccode} } if ($ccodes); $item->{'itype'} = $itemtypes->{ $item->{'itype'} }->{'translated_description'}; $item->{'replacementprice'} = sprintf( "%.2f", $item->{'replacementprice'} ); @@ -203,6 +200,17 @@ foreach my $item (@items){ } } + +if ( my $lost_av = GetAuthValCode('items.itemlost', $fw) ) { + $template->param( itemlostloop => GetAuthorisedValues( $lost_av ) ); +} +if ( my $damaged_av = GetAuthValCode('items.damaged', $fw) ) { + $template->param( itemdamagedloop => GetAuthorisedValues( $damaged_av ) ); +} +if ( my $withdrawn_av = GetAuthValCode('items.withdrawn', $fw) ) { + $template->param( itemwithdrawnloop => GetAuthorisedValues( $withdrawn_av ) ); +} + $template->param(count => $data->{'count'}, subscriptionsnumber => $subscriptionsnumber, subscriptiontitle => $data->{title}, diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt index 232d93b..354b283 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/detail.tt @@ -648,8 +648,8 @@ function verify_images() { [% END %] [% IF ( item.itemlost ) %] - [% IF ( item.itemlostloop ) %] - [% FOREACH itemlostloo IN item.itemlostloop %] + [% IF itemlostloop %] + [% FOREACH itemlostloo IN itemlostloop %] [% IF itemlostloo.authorised_value == item.itemlost %] [% itemlostloo.lib %] [% END %] @@ -664,8 +664,8 @@ function verify_images() { [% END %] [% IF ( item.damaged ) %] - [% IF ( item.itemdamagedloop ) %] - [% FOREACH itemdamagedloo IN item.itemdamagedloop %] + [% IF itemdamagedloop %] + [% FOREACH itemdamagedloo IN itemdamagedloop %] [% IF itemdamagedloo.authorised_value == item.damaged %] [% itemdamagedloo.lib %] [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt index cea9cae..befa557 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt @@ -99,7 +99,7 @@ [% END %]  
  • Current renewals: [% ITEM_DAT.renewals %] 
  • - [% IF ( ITEM_DAT.itemlostloop ) %] + [% IF itemlostloop %]
  • Lost status: [% IF ( CAN_user_circulate ) %]
    @@ -108,7 +108,7 @@
    [% ELSE %] - [% FOREACH itemlostloo IN ITEM_DAT.itemlostloop %] + [% FOREACH itemlostloo IN itemlostloop %] [% IF ( itemlostloo.selected ) %] [% itemlostloo.lib %] [% END %] @@ -132,7 +132,7 @@
  • Lost on:[% ITEM_DAT.itemlost_on | $KohaDates %]  
  • [% END %] [% END %] - [% IF ( ITEM_DAT.itemdamagedloop ) %] + [% IF itemdamagedloop %]
  • Damaged status: [% IF ( CAN_user_circulate ) %]
    @@ -141,7 +141,7 @@
    [% ELSE %] - [% FOREACH itemdamagedloo IN ITEM_DAT.itemdamagedloop %] + [% FOREACH itemdamagedloo IN itemdamagedloop %] [% IF ( itemdamagedloo.selected ) %] [% itemdamagedloo.lib %] [% END %] @@ -163,7 +163,7 @@
  • [% END %] - [% IF ( ITEM_DAT.itemwithdrawnloop ) %] + [% IF itemwithdrawnloop %]
  • Withdrawn status: [% IF ( CAN_user_circulate ) %]
    @@ -172,7 +172,7 @@
    [% ELSE %] - [% FOREACH itemwithdrawn IN ITEM_DAT.itemwithdrawnloop %] + [% FOREACH itemwithdrawn IN itemwithdrawnloop %] [% IF itemwithdrawn.authorised_value == ITEM_DAT.withdrawn %] [% itemwithdrawn.lib %] [% END %] -- 2.1.4