Bugzilla – Attachment 60913 Details for
Bug 14973
Add an alert during purchase suggestion submissions to warn the user when an existing biblio appears to satisfy the request
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 14973: Check existing biblio when submitting a purchase suggestion (staff side)
Bug-14973-Check-existing-biblio-when-submitting-a-.patch (text/plain), 9.83 KB, created by
Alex Arnaud
on 2017-03-08 11:23:42 UTC
(
hide
)
Description:
Bug 14973: Check existing biblio when submitting a purchase suggestion (staff side)
Filename:
MIME Type:
Creator:
Alex Arnaud
Created:
2017-03-08 11:23:42 UTC
Size:
9.83 KB
patch
obsolete
>From 2bf68df6834e078b60549964410e0d98dd670143 Mon Sep 17 00:00:00 2001 >From: Alex Arnaud <alex.arnaud@biblibre.com> >Date: Wed, 8 Mar 2017 11:23:12 +0000 >Subject: [PATCH] Bug 14973: Check existing biblio when submitting a purchase > suggestion (staff side) > >--- > C4/Suggestions.pm | 2 +- > .../prog/en/modules/suggestion/suggestion.tt | 32 +++++++- > suggestion/suggestion.pl | 88 +++++++++++++--------- > 3 files changed, 85 insertions(+), 37 deletions(-) > >diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm >index 63defc6..65d1de2 100644 >--- a/C4/Suggestions.pm >+++ b/C4/Suggestions.pm >@@ -655,7 +655,7 @@ sub MarcRecordFromNewSuggestion { > } > else { > $record->append_fields( >- MARC::Field->new($it_tag, ' ', ' ', $it_subfield => $suggestion->{author}) >+ MARC::Field->new($it_tag, ' ', ' ', $it_subfield => $suggestion->{itemtype}) > ); > } > >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 62335e8..f23d4c3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/suggestion/suggestion.tt >@@ -317,6 +317,16 @@ h4.local_collapse a { font-size : 80%; text-decoration: none; } fieldset.brief o > <div id="yui-main"> > <div class="yui-b"> > [% IF ( op_save ) %] >+ [% FOR m IN messages %] >+ <div class="dialog [% m.type %]"> >+ [% SWITCH m.code %] >+ [% CASE 'biblio_exists' %] >+ A similar document already exists: <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% m.id %]">[% m.title %]</a>. Click on "Confirm your suggestion" to ignore this message. >+ [% CASE %] >+ [% m.code %] >+ [% END %] >+ </div> >+ [% END %] > <form id="add_edit" action="suggestion.pl" method="post" class="validated"> > <input type="hidden" name="redirect" id="redirect" value="[% redirect %]" /> > <input type="hidden" name="borrowernumber" id="borrowernumber" value="[% borrowernumber %]" /> >@@ -465,7 +475,25 @@ h4.local_collapse a { font-size : 80%; text-decoration: none; } fieldset.brief o > <input type="text" readonly="readonly" id="total" name="total" size="10" value="[% total %]"/> > </li></ol> > </fieldset><input type="hidden" id="returnsuggested" name="returnsuggested" value="[% IF ( returnsuggestedby ) %][% returnsuggestedby %][% ELSE %]noone[% END %]"/> >- <fieldset class="action"><input type="hidden" name="op" value="[% op %]" />[% IF ( suggestionid ) %]<input type="submit" value="Save" /> <a class="cancel" href="[% IF ( returnsuggestedby ) %]/cgi-bin/koha/members/moremember.pl?borrowernumber=[% returnsuggestedby %]#suggestions[% ELSE %]suggestion.pl[% END %]">Cancel</a>[% ELSE %]<input type="submit" value="Submit your suggestion" /> <a class="cancel" href="suggestion.pl">Cancel</a>[% END %] >+ <fieldset class="action"> >+ <input type="hidden" name="op" value="[% op %]" /> >+ [% IF ( suggestionid ) %] >+ [% IF ( need_confirm ) %] >+ <input type="hidden" name="save_confirmed" value="1" /> >+ <input onclick="this.form.op.value = 'save'; this.form.submit();" type="submit" value="Confirm your suggestion" /> >+ [% ELSE %] >+ <input type="submit" value="Save" /> >+ [% END %] >+ <a class="cancel" href="[% IF ( returnsuggestedby ) %]/cgi-bin/koha/members/moremember.pl?borrowernumber=[% returnsuggestedby %]#suggestions[% ELSE %]suggestion.pl[% END %]">Cancel</a> >+ [% ELSE %] >+ [% IF ( need_confirm ) %] >+ <input type="hidden" name="save_confirmed" value="1" /> >+ <input onclick="this.form.op.value = 'save'; this.form.submit();" type="submit" value="Confirm your suggestion" /> >+ [% ELSE %] >+ <input type="submit" value="Submit your suggestion" /> >+ [% END %] >+ <a class="cancel" href="suggestion.pl">Cancel</a> >+ [% END %] > </fieldset> > </form> > [% END %] >@@ -483,6 +511,8 @@ h4.local_collapse a { font-size : 80%; text-decoration: none; } fieldset.brief o > [% SWITCH m.code %] > [% CASE 'already_exists' %] > The suggestion has not been added. A suggestion with this title already exists (<a href='/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% m.id %]&op=show'>suggestion #[% m.id %]</a>) >+ [% CASE 'biblio_exists' %] >+ A similar document already exists: <a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% m.id %]">[% m.title %]</a>. Click on "Confirm your suggestion" to ignore this message. > [% CASE %] > [% m.code %] > [% END %] >diff --git a/suggestion/suggestion.pl b/suggestion/suggestion.pl >index 91ab741..8655c2a 100755 >--- a/suggestion/suggestion.pl >+++ b/suggestion/suggestion.pl >@@ -91,6 +91,7 @@ my $returnsuggested = $input->param('returnsuggested'); > my $managedby = $input->param('managedby'); > my $displayby = $input->param('displayby') || ''; > my $tabcode = $input->param('tabcode'); >+my $save_confirmed = $input->param('save_confirmed') || 0; > > # filter informations which are not suggestion related. > my $suggestion_ref = $input->Vars; >@@ -120,51 +121,68 @@ $template->param('borrowernumber' => $borrowernumber); > ######################################### > ## Operations > ## >-if ( $op =~ /save/i ) { >- $suggestion_only->{suggesteddate} = dt_from_string( $suggestion_only->{suggesteddate} ) >- if $suggestion_only->{suggesteddate}; > >- if ( $suggestion_only->{"STATUS"} ) { >- if ( my $tmpstatus = lc( $suggestion_only->{"STATUS"} ) =~ /ACCEPTED|REJECTED/i ) { >- $suggestion_only->{ lc( $suggestion_only->{"STATUS"}) . "date" } = dt_from_string; >- $suggestion_only->{ lc( $suggestion_only->{"STATUS"}) . "by" } = C4::Context->userenv->{number}; >- } >- $suggestion_only->{manageddate} = dt_from_string; >- $suggestion_only->{"managedby"} = C4::Context->userenv->{number}; >+if ( $op =~ /save/i ) { >+ my @messages; >+ my $biblio = MarcRecordFromNewSuggestion({ >+ title => $suggestion_only->{title}, >+ author => $suggestion_only->{author}, >+ itemtype => $suggestion_only->{itemtype}, >+ }); >+ >+ if ( ( my ($duplicatebiblionumber, $duplicatetitle) = FindDuplicate($biblio) ) && !$save_confirmed ) { >+ push @messages, { type => 'error', code => 'biblio_exists', id => $duplicatebiblionumber, title => $duplicatetitle }; >+ $template->param( >+ messages => \@messages, >+ need_confirm => 1 >+ ); >+ delete $suggestion_ref->{suggesteddate}; >+ Init($suggestion_ref); > } >- if ( $suggestion_only->{'suggestionid'} > 0 ) { >- &ModSuggestion($suggestion_only); >- } else { >- ###FIXME:Search here if suggestion already exists. >- my $suggestions_loop = >- SearchSuggestion( $suggestion_only ); >- if (@$suggestions_loop>=1){ >- #some suggestion are answering the request Donot Add >- my @messages; >- for my $suggestion ( @$suggestions_loop ) { >- push @messages, { type => 'error', code => 'already_exists', id => $suggestion->{suggestionid} }; >+ else { >+ $suggestion_only->{suggesteddate} = dt_from_string( $suggestion_only->{suggesteddate} ) >+ if $suggestion_only->{suggesteddate}; >+ >+ if ( $suggestion_only->{"STATUS"} ) { >+ if ( my $tmpstatus = lc( $suggestion_only->{"STATUS"} ) =~ /ACCEPTED|REJECTED/i ) { >+ $suggestion_only->{ lc( $suggestion_only->{"STATUS"}) . "date" } = dt_from_string; >+ $suggestion_only->{ lc( $suggestion_only->{"STATUS"}) . "by" } = C4::Context->userenv->{number}; > } >- $template->param( messages => \@messages ); >- } >- else { >- ## Adding some informations related to suggestion >- &NewSuggestion($suggestion_only); >+ $suggestion_only->{manageddate} = dt_from_string; >+ $suggestion_only->{"managedby"} = C4::Context->userenv->{number}; > } >- # empty fields, to avoid filter in "SearchSuggestion" >- } >- map{delete $$suggestion_ref{$_}} keys %$suggestion_ref; >- $op = 'else'; >+ if ( $suggestion_only->{'suggestionid'} > 0 ) { >+ &ModSuggestion($suggestion_only); >+ } else { >+ ###FIXME:Search here if suggestion already exists. >+ my $suggestions_loop = >+ SearchSuggestion( $suggestion_only ); >+ if (@$suggestions_loop>=1){ >+ #some suggestion are answering the request Donot Add >+ for my $suggestion ( @$suggestions_loop ) { >+ push @messages, { type => 'error', code => 'already_exists', id => $suggestion->{suggestionid} }; >+ } >+ $template->param( messages => \@messages ); >+ } >+ else { >+ ## Adding some informations related to suggestion >+ &NewSuggestion($suggestion_only); >+ } >+ # empty fields, to avoid filter in "SearchSuggestion" >+ } >+ map{delete $$suggestion_ref{$_}} keys %$suggestion_ref; >+ $op = 'else'; > >- if( $redirect eq 'purchase_suggestions' ) { >- print $input->redirect("/cgi-bin/koha/members/purchase-suggestions.pl?borrowernumber=$borrowernumber"); >+ if( $redirect eq 'purchase_suggestions' ) { >+ print $input->redirect("/cgi-bin/koha/members/purchase-suggestions.pl?borrowernumber=$borrowernumber"); >+ } > } >- > } > elsif ($op=~/add/) { >- #Adds suggestion >+ #Adds suggestion > Init($suggestion_ref); > $op ='save'; >-} >+} > elsif ($op=~/edit/) { > #Edit suggestion > $suggestion_ref=&GetSuggestion($$suggestion_ref{'suggestionid'}); >-- >2.7.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 14973
:
43193
|
44091
|
44319
|
44320
|
44334
|
44335
|
60877
|
60913
|
93141
|
93142
|
94297
|
94298
|
94301
|
94302
|
94303
|
94304
|
95113
|
95114
|
95517
|
96255
|
96256
|
96257
|
96258
|
96259
|
96260
|
96261
|
96325
|
96326
|
96327
|
96328
|
96329
|
96330
|
96331