From b29493265b3ae9f660eee2d4b911da036d100b0d Mon Sep 17 00:00:00 2001 From: Jesse Weaver Date: Thu, 28 Jan 2016 15:01:24 -0700 Subject: [PATCH] Bug 15685: Allow creation of items (AcqCreateItem) to be customizable per-basket 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 Signed-off-by: Barbara Fondren Signed-off-by: Katrin Fischer Signed-off-by: Tomas Cohen Arazi Signed-off-by: Jonathan Druart --- C4/Acquisition.pm | 24 +++++++++++-------- Koha/Acquisition/Basket.pm | 13 ++++++++++ Koha/Acquisition/Order.pm | 8 ++++++- acqui/addorder.pl | 4 +++- acqui/addorderiso2709.pl | 6 +++-- acqui/basket.pl | 1 + acqui/basketheader.pl | 2 ++ acqui/finishreceive.pl | 9 +++---- acqui/neworderempty.pl | 5 ++-- acqui/orderreceive.pl | 3 ++- acqui/parcel.pl | 2 ++ acqui/uncertainprice.pl | 3 +++ ...bug_15685-add_create_items_to_aqbasket.sql | 1 + installer/data/mysql/kohastructure.sql | 1 + .../prog/en/modules/acqui/basket.tt | 11 ++++++++- .../prog/en/modules/acqui/basketheader.tt | 18 +++++++++++++- .../prog/en/modules/acqui/parcel.tt | 2 +- .../prog/en/modules/acqui/uncertainprice.tt | 2 +- .../admin/preferences/acquisitions.pref | 1 + .../bootstrap/en/modules/opac-detail.tt | 4 ++-- opac/opac-detail.pl | 8 +++---- 21 files changed, 97 insertions(+), 31 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_15685-add_create_items_to_aqbasket.sql diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm index 950498e83a..70dd409b4b 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -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 diff --git a/Koha/Acquisition/Basket.pm b/Koha/Acquisition/Basket.pm index 3925fc6eff..9179c43a24 100644 --- a/Koha/Acquisition/Basket.pm +++ b/Koha/Acquisition/Basket.pm @@ -45,6 +45,19 @@ sub bookseller { return Koha::Acquisition::Bookseller->_new_from_dbic( $bookseller_rs ); } + +=head3 effective_create_items + +Returns C for this basket, falling back to C if unset. + +=cut + +sub effective_create_items { + my ( $self ) = @_; + + return $self->create_items || C4::Context->preference('AcqCreateItem'); +} + =head3 type =cut diff --git a/Koha/Acquisition/Order.pm b/Koha/Acquisition/Order.pm index 60324e3a41..c13f445bd8 100644 --- a/Koha/Acquisition/Order.pm +++ b/Koha/Acquisition/Order.pm @@ -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 diff --git a/acqui/addorder.pl b/acqui/addorder.pl index d3d2c9f551..8f9d7e42e2 100755 --- a/acqui/addorder.pl +++ b/acqui/addorder.pl @@ -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'); diff --git a/acqui/addorderiso2709.pl b/acqui/addorderiso2709.pl index 1aeaf3ca1f..8e8929c948 100755 --- a/acqui/addorderiso2709.pl +++ b/acqui/addorderiso2709.pl @@ -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'); diff --git a/acqui/basket.pl b/acqui/basket.pl index 071961817f..fe9285e2b2 100755 --- a/acqui/basket.pl +++ b/acqui/basket.pl @@ -390,6 +390,7 @@ if ( $op eq 'list' ) { } $template->param( + basket => $basket, basketno => $basketno, basket => $basket, basketname => $basket->{'basketname'}, diff --git a/acqui/basketheader.pl b/acqui/basketheader.pl index 0006e33412..6de0a4d47b 100755 --- a/acqui/basketheader.pl +++ b/acqui/basketheader.pl @@ -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); diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index b8854a6220..484f56206e 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -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'); diff --git a/acqui/neworderempty.pl b/acqui/neworderempty.pl index 85e0962349..ab92985b7b 100755 --- a/acqui/neworderempty.pl +++ b/acqui/neworderempty.pl @@ -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 diff --git a/acqui/orderreceive.pl b/acqui/orderreceive.pl index 116277df0e..4f9d4fdc12 100755 --- a/acqui/orderreceive.pl +++ b/acqui/orderreceive.pl @@ -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, diff --git a/acqui/parcel.pl b/acqui/parcel.pl index 5c73d97c08..c1e0c56eee 100755 --- a/acqui/parcel.pl +++ b/acqui/parcel.pl @@ -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; diff --git a/acqui/uncertainprice.pl b/acqui/uncertainprice.pl index 54668c4f0e..220805eb88 100755 --- a/acqui/uncertainprice.pl +++ b/acqui/uncertainprice.pl @@ -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 index 0000000000..145e6d45b1 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_15685-add_create_items_to_aqbasket.sql @@ -0,0 +1 @@ +ALTER TABLE aqbasket ADD COLUMN create_items ENUM('ordering', 'receiving', 'cataloguing') DEFAULT NULL; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index eb02c95e57..14c82e7af3 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -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`), diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt index bf37a372aa..aa081baf34 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt @@ -423,9 +423,18 @@ [% IF ( creationdate ) %]
  • Opened on: [% creationdate | $KohaDates %]
  • [% END %] [% IF ( closedate ) %]
  • Closed on: [% closedate | $KohaDates %]
  • [% END %] [% IF ( estimateddeliverydate ) %]
  • Estimated delivery date: [% estimateddeliverydate | $KohaDates %]
  • [% END %] - [% IF ( estimateddeliverydate ) %]
  • Estimated delivery date: [% estimateddeliverydate | $KohaDates %]
  • [% END %]
  • Orders are standing: [% IF is_standing %]Yes[% ELSE %]No[% END %]
  • + [% IF basket.create_items %] +
  • + Create items when: + [% SWITCH basket.create_items %] + [% CASE 'receiving' %]Receiving items + [% CASE 'cataloguing' %]Cataloguing items + [% CASE %]Placing orders + [% END %] +
  • + [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketheader.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketheader.tt index b3be24135a..9fc7786466 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketheader.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basketheader.tt @@ -1,4 +1,5 @@ [% USE Branches %] +[% USE Koha %] [% INCLUDE 'doc-head-open.inc' %] Koha › Acquisitions › [% 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> @@ -107,6 +108,21 @@ [% 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"> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt index 1bb2c69eba..ee4d8d655b 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt @@ -441,7 +441,7 @@ <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 diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/uncertainprice.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/uncertainprice.tt index 51d52a3d15..d916c803b4 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/uncertainprice.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/uncertainprice.tt @@ -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 %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref index 41bd29d671..dad79f3690 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/acquisitions.pref @@ -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 diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt index 9d1f2b9534..f450d0e94f 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt @@ -654,7 +654,7 @@ <p>This record has many physical items ([% items_count %]). <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber | html %]&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 %] @@ -681,7 +681,7 @@ <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 %] diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index 785589b75d..36763eae1c 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -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; } -- 2.39.5