Bug 15685: Allow creation of items (AcqCreateItem) to be customizable per-basket
authorJesse Weaver <jweaver@bywatersolutions.com>
Thu, 28 Jan 2016 22:01:24 +0000 (15:01 -0700)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 11 Oct 2017 16:06:06 +0000 (13:06 -0300)
This adds a new basket attribute (create_items) that can optionally be
set to override AcqCreateItem.

The following have been modified to reflect this (with the value of
create_items that causes them to behave differently in parentheses):
  * Cancelling receipt of an order (receiving)
  * Creating an order by hand or from MARC (ordering)
  * Receiving an order (receiving)
  * Showing orders with uncertain price (ordering)
  * Showing orders (receiving)
  * Showing acquisition details in the OPAC (ordering)

Test plan:
  1) Create baskets with "Create items when:" set to ordering,
     receiving, cataloging and unset.
  2) Test each of the above for each of these baskets, verifying that
     the basket-specific attribute overrides AcqCreateItem if set and
     falls back to the syspref otherwise.

NOTE: A check of AcqCreateItem in opac-detail.tt was removed because it
was redundant; the code path in question cannot be triggered unless
create_items/AcqCreateItems is set to the correct value anyway.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Barbara Fondren <bfondren@roundrocktexas.gov>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

21 files changed:
C4/Acquisition.pm
Koha/Acquisition/Basket.pm
Koha/Acquisition/Order.pm
acqui/addorder.pl
acqui/addorderiso2709.pl
acqui/basket.pl
acqui/basketheader.pl
acqui/finishreceive.pl
acqui/neworderempty.pl
acqui/orderreceive.pl
acqui/parcel.pl
acqui/uncertainprice.pl
installer/data/mysql/atomicupdate/bug_15685-add_create_items_to_aqbasket.sql [new file with mode: 0644]
installer/data/mysql/kohastructure.sql
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketheader.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt
koha-tmpl/intranet-tmpl/prog/en/modules/acqui/uncertainprice.tt
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref
koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt
opac/opac-detail.pl

index 950498e..70dd409 100644 (file)
@@ -190,7 +190,7 @@ sub GetBasket {
 =head3 NewBasket
 
   $basket = &NewBasket( $booksellerid, $authorizedby, $basketname,
-      $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace, $is_standing );
+      $basketnote, $basketbooksellernote, $basketcontractnumber, $deliveryplace, $billingplace, $is_standing, $create_items );
 
 Create a new basket in aqbasket table
 
@@ -209,7 +209,7 @@ The other parameters are optional, see ModBasketHeader for more info on them.
 sub NewBasket {
     my ( $booksellerid, $authorisedby, $basketname, $basketnote,
         $basketbooksellernote, $basketcontractnumber, $deliveryplace,
-        $billingplace, $is_standing ) = @_;
+        $billingplace, $is_standing, $create_items ) = @_;
     my $dbh = C4::Context->dbh;
     my $query =
         'INSERT INTO aqbasket (creationdate,booksellerid,authorisedby) '
@@ -221,7 +221,7 @@ sub NewBasket {
     $basketnote           ||= q{};
     $basketbooksellernote ||= q{};
     ModBasketHeader( $basket, $basketname, $basketnote, $basketbooksellernote,
-        $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing );
+        $basketcontractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing, $create_items );
     return $basket;
 }
 
@@ -598,21 +598,24 @@ Modifies a basket's header.
 
 =item C<$is_standing> is the "is_standing" field in the aqbasket table.
 
+=item C<$create_items> should be set to 'ordering', 'receiving' or 'cataloguing' (or undef, in which
+case the AcqCreateItem syspref takes precedence).
+
 =back
 
 =cut
 
 sub ModBasketHeader {
-    my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing) = @_;
+    my ($basketno, $basketname, $note, $booksellernote, $contractnumber, $booksellerid, $deliveryplace, $billingplace, $is_standing, $create_items) = @_;
     my $query = qq{
         UPDATE aqbasket
-        SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?, is_standing=?
+        SET basketname=?, note=?, booksellernote=?, booksellerid=?, deliveryplace=?, billingplace=?, is_standing=?, create_items=?
         WHERE basketno=?
     };
 
     my $dbh = C4::Context->dbh;
     my $sth = $dbh->prepare($query);
-    $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $is_standing, $basketno);
+    $sth->execute($basketname, $note, $booksellernote, $booksellerid, $deliveryplace, $billingplace, $is_standing, $create_items || undef, $basketno);
 
     if ( $contractnumber ) {
         my $query2 ="UPDATE aqbasket SET contractnumber=? WHERE basketno=?";
@@ -1587,6 +1590,7 @@ sub CancelReceipt {
     my $parent_ordernumber = $order->{'parent_ordernumber'};
 
     my @itemnumbers = GetItemnumbersFromOrder( $ordernumber );
+    my $basket = Koha::Acquisition::Order->find( $order->{ordernumber} )->basket;
 
     if($parent_ordernumber == $ordernumber || not $parent_ordernumber) {
         # The order line has no parent, just mark it as not received
@@ -1647,7 +1651,7 @@ sub CancelReceipt {
             WHERE ordernumber = ?
         |, undef, $parent_ordernumber);
 
-        _cancel_items_receipt( $ordernumber, $parent_ordernumber );
+        _cancel_items_receipt( $basket->effective_create_items, $ordernumber, $parent_ordernumber );
         # Delete order line
         $query = qq{
             DELETE FROM aqorders
@@ -1658,7 +1662,7 @@ sub CancelReceipt {
 
     }
 
-    if(C4::Context->preference('AcqCreateItem') eq 'ordering') {
+    if( $basket->effective_create_items eq 'ordering' ) {
         my @affects = split q{\|}, C4::Context->preference("AcqItemSetSubfieldsWhenReceiptIsCancelled");
         if ( @affects ) {
             for my $in ( @itemnumbers ) {
@@ -1681,11 +1685,11 @@ sub CancelReceipt {
 }
 
 sub _cancel_items_receipt {
-    my ( $ordernumber, $parent_ordernumber ) = @_;
+    my ( $effective_create_items, $ordernumber, $parent_ordernumber ) = @_;
     $parent_ordernumber ||= $ordernumber;
 
     my @itemnumbers = GetItemnumbersFromOrder($ordernumber);
-    if(C4::Context->preference('AcqCreateItem') eq 'receiving') {
+    if ( $effective_create_items eq 'receiving' ) {
         # Remove items that were created at receipt
         my $query = qq{
             DELETE FROM items, aqorders_items
index 3925fc6..9179c43 100644 (file)
@@ -45,6 +45,19 @@ sub bookseller {
     return Koha::Acquisition::Bookseller->_new_from_dbic( $bookseller_rs );
 }
 
+
+=head3 effective_create_items
+
+Returns C<create_items> for this basket, falling back to C<AcqCreateItem> if unset.
+
+=cut
+
+sub effective_create_items {
+    my ( $self ) = @_;
+
+    return $self->create_items || C4::Context->preference('AcqCreateItem');
+}
+
 =head3 type
 
 =cut
index 60324e3..c13f445 100644 (file)
@@ -19,6 +19,7 @@ use Modern::Perl;
 
 use Carp qw( croak );
 
+use Koha::Acquisition::Baskets;
 use Koha::Database;
 use Koha::DateUtils qw( dt_from_string output_pref );
 
@@ -98,9 +99,14 @@ sub add_item {
     $rs->create({ ordernumber => $self->ordernumber, itemnumber => $itemnumber });
 }
 
+sub basket {
+    my ( $self )  = @_;
+    return Koha::Acquisition::Baskets->find( $self->{basketno} );
+}
+
 =head2 Internal methods
 
-=head3 _type (internal)
+=head3 _type
 
 =cut
 
index d3d2c9f..8f9d7e4 100755 (executable)
@@ -234,6 +234,8 @@ my $basketno=$$orderinfo{basketno};
 my $basket = GetBasket($basketno);
 
 my $user = $input->remote_user;
+my $basketno=$$orderinfo{basketno};
+my $basket = Koha::Acquisition::Baskets->find( $basketno );
 
 # create, modify or delete biblio
 # create if $quantity>0 and $existing='no'
@@ -291,7 +293,7 @@ if ( $basket->{is_standing} || $orderinfo->{quantity} ne '0' ) {
     }
 
     # now, add items if applicable
-    if (C4::Context->preference('AcqCreateItem') eq 'ordering') {
+    if ($basket->effective_create_items eq 'ordering') {
 
         my @tags         = $input->multi_param('tag');
         my @subfields    = $input->multi_param('subfield');
index 1aeaf3c..8e8929c 100755 (executable)
@@ -44,6 +44,7 @@ use C4::Members;
 
 use Koha::Number::Price;
 use Koha::Libraries;
+use Koha::Acquisition::Baskets;
 use Koha::Acquisition::Currencies;
 use Koha::Acquisition::Orders;
 use Koha::Acquisition::Booksellers;
@@ -78,6 +79,7 @@ if ($cgiparams->{'import_batch_id'} && $op eq ""){
 if (! $cgiparams->{'basketno'}){
     die "Basketnumber required to order from iso2709 file import";
 }
+my $basket = Koha::Acquisition::Baskets->find( $cgiparams->{basketno} );
 
 #
 # 1st step = choose the file to import into acquisition
@@ -102,7 +104,7 @@ if ($op eq ""){
                      );
     import_biblios_list($template, $cgiparams->{'import_batch_id'});
     my $basket = GetBasket($cgiparams->{basketno});
-    if ( C4::Context->preference('AcqCreateItem') eq 'ordering' && !$basket->{is_standing} ) {
+    if ( $basket->effective_create_items eq 'ordering' && !$basket->{is_standing} ) {
         # prepare empty item form
         my $cell = PrepareItemrecordDisplay( '', '', '', 'ACQ' );
 
@@ -381,7 +383,7 @@ if ($op eq ""){
         # parse the item sent by the form, and create an item just for the import_record_id we are dealing with
         # this is not optimised, but it's working !
         my $basket = GetBasket($cgiparams->{basketno});
-        if ( C4::Context->preference('AcqCreateItem') eq 'ordering' && !$basket->{is_standing} ) {
+        if ( $basket->effective_create_items eq 'ordering' && !$basket->{is_standing} ) {
             my @tags         = $input->multi_param('tag');
             my @subfields    = $input->multi_param('subfield');
             my @field_values = $input->multi_param('field_value');
index 0719618..fe9285e 100755 (executable)
@@ -390,6 +390,7 @@ if ( $op eq 'list' ) {
     }
 
     $template->param(
+        basket               => $basket,
         basketno             => $basketno,
         basket               => $basket,
         basketname           => $basket->{'basketname'},
index 0006e33..6de0a4d 100755 (executable)
@@ -145,6 +145,7 @@ if ( $op eq 'add_form' ) {
             scalar $input->param('deliveryplace'),
             scalar $input->param('billingplace'),
             scalar $input->param('is_standing') ? 1 : undef,
+            scalar $input->param('create_items')
         );
     } else { #New basket
         $basketno = NewBasket(
@@ -157,6 +158,7 @@ if ( $op eq 'add_form' ) {
             scalar $input->param('deliveryplace'),
             scalar $input->param('billingplace'),
             scalar $input->param('is_standing') ? 1 : undef,
+            scalar $input->param('create_items')
         );
     }
     print $input->redirect('basket.pl?basketno='.$basketno);
index b8854a6..484f562 100755 (executable)
@@ -60,12 +60,13 @@ my $order            = GetOrder($ordernumber);
 my $new_ordernumber  = $ordernumber;
 
 $unitprice = Koha::Number::Price->new( $unitprice )->unformat();
+my $basket = Koha::Acquisition::Orders->find( $ordernumber )->basket;
 
-#need old receivedate if we update the order, parcel.pl only shows the right parcel this way FIXME
+#need old recievedate if we update the order, parcel.pl only shows the right parcel this way FIXME
 if ($quantityrec > $origquantityrec ) {
     my @received_items = ();
-    if(C4::Context->preference('AcqCreateItem') eq 'ordering') {
-        @received_items = $input->multi_param('items_to_receive');
+    if ($basket->effective_create_items eq 'ordering') {
+        @received_items = $input->param('items_to_receive');
         my @affects = split q{\|}, C4::Context->preference("AcqItemSetSubfieldsWhenReceived");
         if ( @affects ) {
             my $frameworkcode = GetFrameworkCode($biblionumber);
@@ -111,7 +112,7 @@ if ($quantityrec > $origquantityrec ) {
     }
 
     # now, add items if applicable
-    if (C4::Context->preference('AcqCreateItem') eq 'receiving') {
+    if ($basket->effective_create_items eq 'receiving') {
 
         my @tags         = $input->multi_param('tag');
         my @subfields    = $input->multi_param('subfield');
index 85e0962..ab92985 100755 (executable)
@@ -130,6 +130,7 @@ if(!$basketno) {
 }
 
 our $basket = GetBasket($basketno);
+my $basketobj = Koha::Acquisition::Baskets->find( $basketno );
 $booksellerid = $basket->{booksellerid} unless $booksellerid;
 my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
@@ -243,7 +244,7 @@ if ($close) {
 $template->param( sort1 => $data->{'sort1'} );
 $template->param( sort2 => $data->{'sort2'} );
 
-if (C4::Context->preference('AcqCreateItem') eq 'ordering' && !$ordernumber) {
+if ($basketobj->effective_create_items eq 'ordering' && !$ordernumber) {
     # Check if ACQ framework exists
     my $marc = GetMarcStructure(1, 'ACQ', { unsafe => 1 } );
     unless($marc) {
@@ -358,7 +359,7 @@ $template->param(
     barcode_subfield => $barcode_subfield,
     import_batch_id  => $import_batch_id,
     subscriptionid   => $subscriptionid,
-    acqcreate        => C4::Context->preference("AcqCreateItem") eq "ordering" ? 1 : "",
+    acqcreate        => $basketobj->effective_create_items eq "ordering" ? 1 : "",
     users_ids        => join(':', @order_user_ids),
     users            => \@order_users,
     (uc(C4::Context->preference("marcflavour"))) => 1
index 116277d..4f9d4fd 100755 (executable)
@@ -111,6 +111,7 @@ unless ( $results and @$results) {
 
 # prepare the form for receiving
 my $order = $results->[0];
+my $basket = Koha::Acquisition::Order->fetch({ordernumber => $ordernumber})->basket;
 
 # Check if ACQ framework exists
 my $acq_fw = GetMarcStructure( 1, 'ACQ', { unsafe => 1 } );
@@ -118,7 +119,7 @@ unless($acq_fw) {
     $template->param('NoACQframework' => 1);
 }
 
-my $AcqCreateItem = C4::Context->preference('AcqCreateItem');
+my $AcqCreateItem = $basket->effective_create_items;
 if ($AcqCreateItem eq 'receiving') {
     $template->param(
         AcqCreateItemReceiving => 1,
index 5c73d97..c1e0c56 100755 (executable)
@@ -66,6 +66,7 @@ use CGI qw ( -utf8 );
 use C4::Output;
 use C4::Suggestions;
 
+use Koha::Acquisition::Baskets;
 use Koha::Acquisition::Bookseller;
 use Koha::Biblios;
 use Koha::DateUtils;
@@ -264,6 +265,7 @@ unless( defined $invoice->{closedate} ) {
         $line{left_holds_on_order}  = 1 if $line{left_holds}==1 && ($line{items} == 0 || $itemholds );
         $line{holds}                = $holds_count;
         $line{holds_on_order}       = $itemholds?$itemholds:$holds_count if $line{left_holds_on_order};
+        $line{basket}               = Koha::Acquisition::Baskets->find( $line{basketno} );
 
         my $budget_name = GetBudgetName( $line{budget_id} );
         $line{budget_name} = $budget_name;
index 54668c4..220805e 100755 (executable)
@@ -54,6 +54,7 @@ use C4::Acquisition qw/SearchOrders GetOrder ModOrder/;
 use C4::Biblio qw/GetBiblioData/;
 
 use Koha::Acquisition::Booksellers;
+use Koha::Acquisition::Baskets;
 
 my $input=new CGI;
 
@@ -72,6 +73,8 @@ my $op = $input->param('op');
 my $owner = $input->param('owner') || 0 ; # flag to see only "my" orders, or everyone orders
 my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid );
 
+$template->param( basket => Koha::Acquisition::Baskets->find($basketno) );
+
 #show all orders that have uncertain price for the bookseller
 my $pendingorders = SearchOrders({
     booksellerid => $booksellerid,
diff --git a/installer/data/mysql/atomicupdate/bug_15685-add_create_items_to_aqbasket.sql b/installer/data/mysql/atomicupdate/bug_15685-add_create_items_to_aqbasket.sql
new file mode 100644 (file)
index 0000000..145e6d4
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE aqbasket ADD COLUMN create_items ENUM('ordering', 'receiving', 'cataloguing') DEFAULT NULL;
index eb02c95..14c82e7 100644 (file)
@@ -2992,6 +2992,7 @@ CREATE TABLE `aqbasket` ( -- stores data about baskets in acquisitions
   `basketgroupid` int(11), -- links this basket to its group (aqbasketgroups.id)
   `deliveryplace` varchar(10) default NULL, -- basket delivery place
   `billingplace` varchar(10) default NULL, -- basket billing place
+  create_items ENUM('ordering', 'receiving', 'cataloguing') default NULL; -- when items should be created for orders in this basket
   branch varchar(10) default NULL, -- basket branch
   is_standing TINYINT(1) NOT NULL DEFAULT 0, -- orders in this basket are standing
   PRIMARY KEY  (`basketno`),
index bf37a37..aa081ba 100644 (file)
                 [% IF ( creationdate ) %]<li><span class="label">Opened on:</span>  [% creationdate | $KohaDates %]</li>[% END %]
                 [% IF ( closedate ) %]<li><span class="label">Closed on:</span> [% closedate | $KohaDates %]</li>[% END %]
                 [% IF ( estimateddeliverydate ) %]<li><span class="label">Estimated delivery date:</span> [% estimateddeliverydate | $KohaDates  %]</li>[% END %]
-                [% IF ( estimateddeliverydate ) %]<li><span class="label">Estimated delivery date:</span> [% estimateddeliverydate | $KohaDates  %]</li>[% END %]
                 <li><span class="label">Orders are standing:</span> [% IF is_standing %]Yes[% ELSE %]No[% END %]</li>
 
+                [% IF basket.create_items %]
+                    <li>
+                        <span class="label">Create items when:</span>
+                        [% SWITCH basket.create_items %]
+                            [% CASE 'receiving' %]Receiving items
+                            [% CASE 'cataloguing' %]Cataloguing items
+                            [% CASE %]Placing orders
+                        [% END %]
+                    </li>
+                [% END %]
 
                 </ol>
                 </div>
index b3be241..9fc7786 100644 (file)
@@ -1,4 +1,5 @@
 [% USE Branches %]
+[% USE Koha %]
 [% INCLUDE 'doc-head-open.inc' %]
 <title>Koha &rsaquo; Acquisitions &rsaquo;
 [% IF ( add_form ) %]
@@ -42,7 +43,7 @@
                 [% IF ( basketno ) %]
                     <li>
                         <input type="hidden" name="basketno" value="[% basketno %]" />
-                        <input type="hidden" name="is_an_edit" value="1" />
+                        <input type="hidden" name="rs_an_edit" value="1" />
                     </li>
                 [% END %]
                 <li>
                     [% END %]
                     <div class="hint">Standing orders do not close when received.</div>
                 </li>
+                [% UNLESS basketno %]
+                 <li>
+                    <label for="create_items">Create items when:</label>
+                    <select name="create_items" id="create_items">
+                        [% SWITCH Koha.Preference('AcqCreateItem') %]
+                            [% CASE 'receiving' %]<option value="">use default (receiving an order).</option>
+                            [% CASE 'cataloguing' %]<option value="">use default (cataloging the record).</option>
+                            [% CASE %]<option value="">use default (placing an order).</option>
+                        [% END %]
+                        <option value="ordering">placing an order.</option>
+                        <option value="receiving">receiving an order.</option>
+                        <option value="cataloguing">cataloging the record.</option>
+                    </select>
+                </li>
+                [% END %]
             </ol>
         </fieldset>
         <fieldset class="action">
index 1bb2c69..ee4d8d6 100644 (file)
                 <td>[% order.unitprice | $Price %]</td>
                 <td>[% order.total | $Price %]</td>
                 <td>
-                    [% IF loop_receive.cannot_cancel or ( Koha.Preference("AcqCreateItem") == "receiving" and loop_receive.holds > 0 ) %]
+                    [% IF loop_receive.cannot_cancel or ( order.basket.effective_create_items == "receiving" and loop_receive.holds > 0 ) %]
                       [% IF loop_receive.cannot_cancel %]
                         [% span_title = BLOCK %]
                             Cannot cancel receipt of this order line because it
index 51d52a3..d916c80 100644 (file)
@@ -133,7 +133,7 @@ var MSG_INVALIDPRICE = _("ERROR: Price is not a valid number, please check the p
             <input class="check_uncertain" data-ordernumber="[% uncertainpriceorder.ordernumber %]" type="text" size="10" name="price[% uncertainpriceorder.ordernumber %]" value="[% uncertainpriceorder.listprice %]" />
            </td>
            <td>
-        [% IF Koha.Preference('AcqCreateItem') == 'ordering' %]
+        [% IF basket.effective_create_items == 'ordering' %]
             [% uncertainpriceorder.quantity %]
             <input type="hidden" name="qty[% uncertainpriceorder.ordernumber %]" value="[% uncertainpriceorder.quantity %]" />
         [% ELSE %]
index 41bd29d..dad79f3 100644 (file)
@@ -8,6 +8,7 @@ Acquisitions:
                   ordering: placing an order.
                   receiving: receiving an order.
                   cataloguing: cataloging the record.
+            - This is only the default behavior, and can be changed per-basket.
         -
             - "The following <a href='http://schema.koha-community.org/__VERSION__/tables/items.html' target='blank'>database columns</a> should be unique in an item:"
             - pref: UniqueItemFields
index 9d1f2b9..f450d0e 100644 (file)
                             <p>This record has many physical items ([% items_count %]). <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber | html %]&amp;viewallitems=1">Click here to view them all.</a></p>
                         [% ELSIF ( itemloop.size ) %]
                             [% INCLUDE items_table items=itemloop tab="holdings" %]
-                            [% IF Koha.Preference('OPACAcquisitionDetails') and Koha.Preference('AcqCreateItem') != 'ordering' and acquisition_details.total_quantity > 0 %]
+                            [% IF Koha.Preference('OPACAcquisitionDetails') and acquisition_details.total_quantity > 0 %]
                               [% IF acquisition_details.total_quantity == 1 %]
                                 <span>1 item is on order.</span>
                               [% ELSE %]
                                     <div id="alternateholdings"><span class="holdings_label">Holdings:</span> [% ALTERNATEHOLDING.holding %]</div>
                                 [% END %]
                             [% ELSE %]
-                                [% IF Koha.Preference('OPACAcquisitionDetails') and Koha.Preference('AcqCreateItem') != 'ordering' and acquisition_details.total_quantity > 0 %]
+                                [% IF Koha.Preference('OPACAcquisitionDetails') and acquisition_details.total_quantity > 0 %]
                                   [% IF acquisition_details.total_quantity == 1 %]
                                     <span>1 item is on order.</span>
                                   [% ELSE %]
index 785589b..36763ea 100755 (executable)
@@ -54,6 +54,7 @@ use Koha::RecordProcessor;
 use Koha::AuthorisedValues;
 use Koha::Biblios;
 use Koha::ItemTypes;
+use Koha::Acquisition::Order;
 use Koha::Virtualshelves;
 use Koha::Patrons;
 use Koha::Ratings;
@@ -639,7 +640,8 @@ if ( C4::Context->preference('OPACAcquisitionDetails' ) ) {
     });
     my $total_quantity = 0;
     for my $order ( @$orders ) {
-        if ( C4::Context->preference('AcqCreateItem') eq 'ordering' ) {
+        my $basket = Koha::Acquisition::Order->find( $order->{ordernumber} )->basket;
+        if ( $basket->effective_create_items eq 'ordering' ) {
             for my $itemnumber ( C4::Acquisition::GetItemnumbersFromOrder( $order->{ordernumber} ) ) {
                 push @itemnumbers_on_order, $itemnumber;
             }
@@ -700,9 +702,7 @@ if ( not $viewallitems and @items > $max_items_to_display ) {
         $itm->{transfertto}   = $transfertto;
      }
     
-    if (    C4::Context->preference('OPACAcquisitionDetails')
-        and C4::Context->preference('AcqCreateItem') eq 'ordering' )
-    {
+    if ( C4::Context->preference('OPACAcquisitionDetails') ) {
         $itm->{on_order} = 1
           if grep /^$itm->{itemnumber}$/, @itemnumbers_on_order;
     }