Bug 14963: Add the ability to suggest purchase on existing title
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 5 Nov 2019 18:42:43 +0000 (19:42 +0100)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Thu, 2 Jan 2020 13:08:44 +0000 (13:08 +0000)
This patch adds the ability to create a new purchase suggestion from an
existing title. This will prevent the creation of bibliographic records
that already exist in the catalogue. Also it will ease the process
during acquisition.

Test plan:
- Login at the OPAC and go to the detail of a bibliographic record.
- Note that there is a new link "New purchase suggestion for this title"
on the right of the screen
- Please suggest an other icon if that one is not appropriated
- Click on it and submit your new suggestion
=> You should not get the confirmation screen (introduced by bug 14973)
warning you that the title already exists.
- Login staff side and order from this suggestion.
- Receive items and confirm that a new bibliographic record is not
created.

Sponsored-by: BULAC - http://www.bulac.fr/
Signed-off-by: Séverine QUEUNE <severine.queune@bulac.fr>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

acqui/neworderempty.pl
koha-tmpl/opac-tmpl/bootstrap/en/includes/opac-detail-sidebar.inc
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-suggestions.tt
opac/opac-suggestions.pl

index ab95f16..f41e598 100755 (executable)
@@ -255,7 +255,6 @@ if ( not $ordernumber ) {    # create order
 }
 else {    #modify order
     $data   = GetOrder($ordernumber);
-    $biblionumber = $data->{'biblionumber'};
     $budget_id = $data->{'budget_id'};
 
     $template->param(
@@ -272,6 +271,7 @@ else {    #modify order
         push @order_users, $order_patron if $order_patron;
     }
 }
+$biblionumber = $data->{biblionumber};
 
 # We can have:
 # - no ordernumber but a biblionumber: from a subscription, from an existing record
index bc4d926..f0dce16 100644 (file)
         [% END %]
     [% END %]
 
+    [% IF Koha.Preference('suggestion') %]
+        <li><a class="btn btn-link btn-lg" href="/cgi-bin/koha/opac-suggestions.pl?op=add&biblionumber=[% biblio.biblionumber | url %]"><i class="fa fa-fw fa-money"></i> New purchase suggestion for this title</a></li>
+    [% END %]
+
     [% IF ( OpacHighlightedWords && query_desc ) %]
     <li>
         <a href="#" class="highlight_toggle btn btn-link btn-lg" id="highlight_toggle_off"><i class="fa fa-fw fa-pencil"></i> Unhighlight</a>
index db6d7ce..bc76338 100644 (file)
                                 </fieldset>
                                 <fieldset class="action">
                                     <input type="hidden" name="suggested_by_anyone" value="[% suggested_by_anyone | html %]" />
-                                    <input type="hidden" name="op" value="add_validate" />
-                                    [% IF ( need_confirm ) %]
-                                        <input type="submit" onclick="this.form.op.value = 'add_confirm'; this.form.submit();" class="btn" value="Confirm your suggestion" />
-                                    [% ELSE %]
+                                    [% IF need_confirm # Confirm that we want a duplicate %]
+                                        <input type="hidden" name="op" value="add_confirm" />
+                                        <input type="submit" class="btn" value="Confirm your suggestion" />
+                                    [% ELSIF biblionumber # Create from an existing title %]
+                                        <input type="hidden" name="op" value="add_confirm" />
+                                        <input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
+                                        <input type="submit" class="btn" value="Submit your suggestion" />
+                                    [% ELSE # Not created from an existing title, search for possible duplicate %]
+                                        <input type="hidden" name="op" value="add_validate" />
                                         <input type="submit" class="btn" value="Submit your suggestion" />
                                     [% END %]
                                     <a class="action" href="/cgi-bin/koha/opac-suggestions.pl">Cancel</a>
index 91eaebe..b502e92 100755 (executable)
@@ -37,6 +37,7 @@ use Koha::DateUtils qw( dt_from_string );
 
 my $input           = new CGI;
 my $op              = $input->param('op');
+my $biblionumber    = $input->param('biblionumber');
 my $suggestion      = $input->Vars;
 my $negcaptcha      = $input->param('negcap');
 my $suggested_by_anyone = $input->param('suggested_by_anyone') || 0;
@@ -116,7 +117,7 @@ if ( $op eq 'else' ) {
     }
 }
 
-if ( $op eq "add_validate" ) {
+if ( $op eq "add_validate" && not $biblionumber ) { # If we are creating the suggestion from an existing record we do not want to search for duplicates
     $op = 'add_confirm';
     my $biblio = MarcRecordFromNewSuggestion($suggestion);
     if ( my ($duplicatebiblionumber, $duplicatetitle) = FindDuplicate($biblio) ) {
@@ -229,6 +230,19 @@ my @mandatoryfields;
     foreach (@mandatoryfields) {
         $template->param( $_."_required" => 1);
     }
+    if ( $biblionumber ) {
+        my $biblio = Koha::Biblios->find($biblionumber);
+        $template->param(
+            biblionumber    => $biblio->biblionumber,
+            title           => $biblio->title,
+            author          => $biblio->author,
+            copyrightdate   => $biblio->copyrightdate,
+            isbn            => $biblio->biblioitem->isbn,
+            publishercode   => $biblio->biblioitem->publishercode,
+            collectiontitle => $biblio->biblioitem->collectiontitle,
+            place           => $biblio->biblioitem->place,
+        );
+    }
 }
 
 $template->param(