From 1d0a812c517e8a726277dfae9a1e29bb3b6536f6 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. Signed-off-by: joe Signed-off-by: David Roberts --- 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 36e22b6..090192e 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 a1101c6..f52e3a6 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 16db6ad..b0ca870 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 e19e6c2..34c6d31 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 7adecfe..8c9a625 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.7.4