From d3a6cc48d0b7c6557d8d263580a96e1d87d79814 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 13 Nov 2019 16:34:56 +0100 Subject: [PATCH] Bug 22784: Add the ability to archive/unarchive a purchase suggestions MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit There are performance issues when searching suggestions if there are thousands of suggestions. To prevent that we are going to add the ability to archive purchase suggestions, in order to remove them from the search list (by default). Test plan: 0. Apply all the patches, execute the updatedatabase.pl script, restart all 1. Create some suggestions 2. Search for them 3. Use the "Archive" action button for one of them 4. Restart the search => The archived suggestion does no longer appear in the list 5. Use the filter "Included archived" in the "Suggestion information" filter box => The archived suggestion is now displayed 6. Use other filters => The "archived" filter is kept from one search to another 7. Use one of the action at the bottom of the suggestion list (change the status for instance) => The "archived" filter is still kept Sponsored-by: BULAC - http://www.bulac.fr/ Signed-off-by: Séverine QUEUNE Signed-off-by: Katrin Fischer Signed-off-by: Martin Renvoize --- C4/Suggestions.pm | 5 ++ .../prog/en/modules/suggestion/suggestion.tt | 46 +++++++++++++++++-- suggestion/suggestion.pl | 18 ++++++-- 3 files changed, 61 insertions(+), 8 deletions(-) diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index 5102421cf8..2b6c0b303a 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -205,6 +205,11 @@ sub SearchSuggestion { } } + # By default do not search for archived suggestions + unless ( exists $suggestion->{archived} && $suggestion->{archived} ) { + push @query, q{ AND suggestions.archived = 0 }; + } + $debug && warn "@query"; my $sth = $dbh->prepare("@query"); $sth->execute(@sql_params); diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt index af3659c5ca..730a73719a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt @@ -573,6 +573,7 @@ [% IF ( suggestions_loo.copyrightdate ) %]© [% suggestions_loo.copyrightdate | html %] [% END %] [% IF ( suggestions_loo.volumedesc ) %]; Volume:[% suggestions_loo.volumedesc | html %] [% END %] [% IF ( suggestions_loo.isbn ) %]; ISBN:[% suggestions_loo.isbn | html %] [% END %][% IF ( suggestions_loo.publishercode ) %]; Published by [% suggestions_loo.publishercode | html %] [% END %][% IF ( suggestions_loo.publicationyear ) %] in [% suggestions_loo.publicationyear | html %] [% END %][% IF ( suggestions_loo.place ) %] in [% suggestions_loo.place | html %] [% END %][% IF ( suggestions_loo.collectiontitle ) %]; [% suggestions_loo.collectiontitle | html %] [% END %][% IF ( suggestions_loo.itemtype ) %]; [% AuthorisedValues.GetByCode( 'SUGGEST_FORMAT', suggestions_loo.itemtype, 0 ) | html %] [% END %]
[% IF ( suggestions_loo.note ) %]
[% suggestions_loo.note | html %]
[% END %] + [% IF suggestions_loo.archived %]
Archived[% END %] [% suggestions_loo.surnamesuggestedby | html %][% IF ( suggestions_loo.firstnamesuggestedby ) %], [% suggestions_loo.firstnamesuggestedby | html %][% END %] [% IF (suggestions_loo.cardnumbersuggestedby ) %]([% suggestions_loo.cardnumbersuggestedby | html %])[% END %] @@ -622,8 +623,19 @@ [% END %] - Edit - Delete +
+
+ Edit + +
+
[% END %] @@ -683,6 +695,7 @@ +
@@ -691,6 +704,7 @@ [% PROCESS 'av-build-dropbox.inc' name="suggestion_itemtype", category="SUGGEST_FORMAT", size = 20 %] +
@@ -702,6 +716,7 @@ +
@@ -710,6 +725,7 @@
+
@@ -761,7 +777,12 @@ [% ELSE %] [% END %] - + + + + + +

Filter by: [clear]

@@ -775,6 +796,14 @@

Suggestion information

    +
  1. + + [% IF filter_archived %] + + [% ELSE %] + + [% END %] +
  2. @@ -848,7 +877,10 @@
  3. -
+
  • + +
  • +

    Acquisition information

    @@ -872,7 +904,11 @@ [% ELSE %] [% PROCESS options_for_libraries libraries => Branches.all( selected => branchcode ) %] [% END %] -
  • + +
  • + +
  • +
    [% INCLUDE 'acquisitions-menu.inc' %] diff --git a/suggestion/suggestion.pl b/suggestion/suggestion.pl index 6a80310a92..cdfa5fb817 100755 --- a/suggestion/suggestion.pl +++ b/suggestion/suggestion.pl @@ -92,6 +92,7 @@ my $displayby = $input->param('displayby') || ''; my $tabcode = $input->param('tabcode'); my $save_confirmed = $input->param('save_confirmed') || 0; my $notify = $input->param('notify'); +my $filter_archived = $input->param('filter_archived'); my $reasonsloop = GetAuthorisedValues("SUGGEST"); @@ -104,7 +105,7 @@ my $columns = ' '.join(' ', $schema->source('Suggestion')->columns).' '; my $suggestion_only = { map { $columns =~ / $_ / ? ($_ => $suggestion_ref->{$_}) : () } keys %$suggestion_ref }; $suggestion_only->{STATUS} = $suggestion_ref->{STATUS}; -delete $$suggestion_ref{$_} foreach qw( suggestedbyme op displayby tabcode edit_field notify ); +delete $$suggestion_ref{$_} foreach qw( suggestedbyme op displayby tabcode notify filter_archived ); foreach (keys %$suggestion_ref){ delete $$suggestion_ref{$_} if (!$$suggestion_ref{$_} && ($op eq 'else' )); } @@ -288,6 +289,16 @@ elsif ($op eq "update_status" ) { } redirect_with_params($input); } +elsif ($op eq "archive" ) { + Koha::Suggestions->find($_)->update({ archived => 1 }) for @editsuggestions; + + redirect_with_params($input); +} +elsif ($op eq "unarchive" ) { + Koha::Suggestions->find($_)->update({ archived => 0 }) for @editsuggestions; + + redirect_with_params($input); +} elsif ( $op eq 'update_itemtype' ) { my $new_itemtype = $input->param('suggestion_itemtype'); foreach my $suggestionid (@editsuggestions) { @@ -346,7 +357,7 @@ if ($op=~/else/) { next if ( $definedvalue && $$suggestion_ref{$displayby} ne $criteriumvalue ) and ($displayby ne 'branchcode' or $branchfilter ne '__ANY__' ); $$suggestion_ref{$displayby} = $criteriumvalue; - my $suggestions = &SearchSuggestion($suggestion_ref); + my $suggestions = &SearchSuggestion({ %$suggestion_ref, archived => $filter_archived }); foreach my $suggestion (@$suggestions) { if ($suggestion->{budgetid}){ my $bud = GetBudget( $suggestion->{budgetid} ); @@ -377,6 +388,7 @@ $template->param( $template->param( %$suggestion_ref, + filter_archived => $filter_archived, "op" =>$op, ); @@ -455,7 +467,7 @@ sub redirect_with_params { displayby branchcode title author isbn publishercode copyrightdate collectiontitle suggestedby suggesteddate_from suggesteddate_to manageddate_from manageddate_to accepteddate_from - accepteddate_to budgetid + accepteddate_to budgetid filter_archived ) ) { -- 2.39.5