From 365e833340c231ec65689a4ca8bbe63bd719b6a7 Mon Sep 17 00:00:00 2001 From: Owen Leonard Date: Fri, 6 Sep 2019 15:37:43 +0000 Subject: [PATCH] Bug 23543: Adding Withdrawn to the Item Search This patch adds "Withdrawn" status to the item search form and item search results. To test you should have one or more items in your catalog which have a 'Withdrawn' status. Perform an item search and limit to a widthdrawn status. Verify that the search returns the correct results and that the withdrawn column in search results shows the correct information. Test the "Export results to CSV" button. The resulting file should contain the correct data, including withdrawn status. --- catalogue/itemsearch.pl | 20 +++++++++++++++++++- .../en/includes/catalogue/itemsearch_item.csv.inc | 2 +- .../en/includes/catalogue/itemsearch_item.json.inc | 1 + .../en/includes/csv_headers/catalogue/itemsearch.tt | 2 +- .../prog/en/modules/catalogue/itemsearch.tt | 11 +++++++++++ 5 files changed, 33 insertions(+), 3 deletions(-) diff --git a/catalogue/itemsearch.pl b/catalogue/itemsearch.pl index 36e22b67f53..090192e231d 100755 --- a/catalogue/itemsearch.pl +++ b/catalogue/itemsearch.pl @@ -106,6 +106,9 @@ my $location_values = $mss->count ? GetAuthorisedValues($mss->next->authorised_v $mss = Koha::MarcSubfieldStructures->search({ frameworkcode => '', kohafield => 'items.itemlost', authorised_value => [ -and => {'!=' => undef }, {'!=' => ''}] }); my $itemlost_values = $mss->count ? GetAuthorisedValues($mss->next->authorised_value) : []; +$mss = Koha::MarcSubfieldStructures->search({ frameworkcode => '', kohafield => 'items.withdrawn', authorised_value => [ -and => {'!=' => undef }, {'!=' => ''}] }); +my $withdrawn_values = $mss->count ? GetAuthorisedValues($mss->next->authorised_value) : []; + if (scalar keys %params > 0) { # Parameters given, it's a search @@ -114,7 +117,7 @@ if (scalar keys %params > 0) { filters => [], }; - foreach my $p (qw(homebranch holdingbranch location itype ccode issues datelastborrowed notforloan itemlost)) { + foreach my $p (qw(homebranch holdingbranch location itype ccode issues datelastborrowed notforloan itemlost withdrawn)) { if (my @q = $cgi->multi_param($p)) { if ($q[0] ne '') { my $f = { @@ -241,6 +244,12 @@ if (scalar keys %params > 0) { $itemlost_map->{$il_value->{authorised_value}} = $il_value->{lib}; } + # Get withdrawn labels + my $withdrawn_map = {}; + foreach my $wd_value (@$withdrawn_values) { + $withdrawn_map->{$wd_value->{authorised_value}} = $wd_value->{lib}; + } + foreach my $item (@$results) { my $biblio = Koha::Biblios->find( $item->{biblionumber} ); $item->{biblio} = $biblio; @@ -321,6 +330,14 @@ foreach my $value (@$itemlost_values) { }; } +my @withdrawns; +foreach my $value (@$withdrawn_values) { + push @withdrawns, { + value => $value->{authorised_value}, + label => $value->{lib}, + }; +} + my @items_search_fields = GetItemSearchFields(); my $authorised_values = {}; @@ -337,6 +354,7 @@ $template->param( ccodes => \@ccodes, notforloans => \@notforloans, itemlosts => \@itemlosts, + withdrawns => \@withdrawns, items_search_fields => \@items_search_fields, authorised_values_json => to_json($authorised_values), ); diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.csv.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.csv.inc index a1101c6eed9..f52e3a6934e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.csv.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.csv.inc @@ -4,4 +4,4 @@ [% USE AuthorisedValues %] [%- SET biblio = item.biblio -%] [%- SET biblioitem = item.biblioitem -%] -"[% biblio.title | html %] [% IF ( Koha.Preference( 'marcflavour' ) == 'UNIMARC' && biblio.author ) %]by [% END %][% biblio.author | html %]", "[% (biblioitem.publicationyear || biblio.copyrightdate) | html %]", "[% biblioitem.publishercode | html %]", "[% AuthorisedValues.GetByCode( 'CCODE', item.ccode ) | html %]", "[% item.barcode | html %]", "[% item.itemcallnumber | html %]", "[% Branches.GetName(item.homebranch) | html %]", "[% Branches.GetName(item.holdingbranch) | html %]", "[% item.location | html %]", "[% ItemTypes.GetDescription(item.itype) | html %]", "[% item.stocknumber | html %]", "[% item.status | html %]","[% AuthorisedValues.GetByCode( 'LOST', item.itemlost ) || "" | html %]", "[% (item.issues || 0) | html %]" +"[% biblio.title | html %] [% IF ( Koha.Preference( 'marcflavour' ) == 'UNIMARC' && biblio.author ) %]by [% END %][% biblio.author | html %]", "[% (biblioitem.publicationyear || biblio.copyrightdate) | html %]", "[% biblioitem.publishercode | html %]", "[% AuthorisedValues.GetByCode( 'CCODE', item.ccode ) | html %]", "[% item.barcode | html %]", "[% item.itemcallnumber | html %]", "[% Branches.GetName(item.homebranch) | html %]", "[% Branches.GetName(item.holdingbranch) | html %]", "[% item.location | html %]", "[% ItemTypes.GetDescription(item.itype) | html %]", "[% item.stocknumber | html %]", "[% item.status | html %]","[% AuthorisedValues.GetByCode( 'LOST', item.itemlost ) || "" | html %]","[% AuthorisedValues.GetByCode( 'WITHDRAWN', item.withdrawn ) || "" | html %]", "[% (item.issues || 0) | html %]" diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc index 16db6ad5f4f..b0ca870087e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/catalogue/itemsearch_item.json.inc @@ -23,6 +23,7 @@ "[% item.stocknumber | html %]", "[% item.status | html %]", "[% AuthorisedValues.GetByCode( 'LOST', item.itemlost ) || "" | html %]", + "[% AuthorisedValues.GetByCode( 'WITHDRAWN', item.withdrawn ) || "" | html %]", "[% (item.issues || 0) | html %]", "[% FILTER escape_quotes ~%]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/csv_headers/catalogue/itemsearch.tt b/koha-tmpl/intranet-tmpl/prog/en/includes/csv_headers/catalogue/itemsearch.tt index e19e6c23f31..34c6d315d5f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/csv_headers/catalogue/itemsearch.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/csv_headers/catalogue/itemsearch.tt @@ -1 +1 @@ -[%- BLOCK -%]Title, Publication date, Publisher, Collection, Barcode, Call number, Home library, Current location, Shelving location, Itemtype, Inventory number, Not for loan status, Lost status, Checkouts[%- END -%] +[%- BLOCK -%]Title, Publication date, Publisher, Collection, Barcode, Call number, Home library, Current location, Shelving location, Itemtype, Inventory number, Not for loan status, Lost status, Withdrawn status, Checkouts[%- END -%] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt index a220e1c4f8b..f3a6b712fdb 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/itemsearch.tt @@ -27,6 +27,7 @@ [% CASE 'All statuses' %]All statuses [% CASE 'damaged' %]Damaged [% CASE 'itemlost' %]Lost + [% CASE 'withdrawn' %]Withdrawn [% END %] [% END %] @@ -158,6 +159,9 @@ [% IF itemlosts.size %] [% INCLUDE form_field_select name="itemlost" options = itemlosts empty_option = "All statuses" %] [% END %] + [% IF withdrawns.size %] + [% INCLUDE form_field_select name="withdrawn" options = withdrawns empty_option = "All statuses" %] + [% END %]
[% INCLUDE form_field_select_text %] @@ -275,6 +279,7 @@ + ' ' + _("Inventory number") + '' + ' ' + _("Not for loan status") + '' + ' ' + _("Lost status") + '' + + ' ' + _("Withdrawn status") + '' + ' ' + _("Checkouts") + '' + ' ' + ' ' @@ -378,6 +383,7 @@ { 'sName': 'stocknumber' }, { 'sName': 'notforloan' }, { 'sName': 'itemlost' }, + { 'sName': 'withdrawn' }, { 'sName': 'issues' }, { 'sName': 'checkbox', 'bSortable': false } ], @@ -418,6 +424,11 @@ [% ELSE %] null, [% END %] + [% IF withdrawns.size %] + { 'type': 'select', 'values': [% INCLUDE escape_html_value_label elts => withdrawns %] }, + [% ELSE %] + null, + [% END %] { 'type': 'text' }, null ] -- 2.11.0