From 7b6a189fb748bb62be7d3c8ecdf6831cef0bc94c 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 --- C4/Acquisition.pm | 24 ++++++---- Koha/Acquisition/Basket.pm | 54 ++++++++++++++++++++++ Koha/Acquisition/Baskets.pm | 51 ++++++++++++++++++++ Koha/Acquisition/Order.pm | 6 +++ 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 + .../intranet-tmpl/prog/en/modules/acqui/basket.tt | 11 ++++- .../prog/en/modules/acqui/basketheader.tt | 18 +++++++- .../intranet-tmpl/prog/en/modules/acqui/parcel.tt | 2 +- .../prog/en/modules/acqui/uncertainprice.tt | 2 +- .../en/modules/admin/preferences/acquisitions.pref | 1 + .../opac-tmpl/bootstrap/en/modules/opac-detail.tt | 4 +- opac/opac-detail.pl | 9 ++-- 22 files changed, 190 insertions(+), 29 deletions(-) create mode 100644 Koha/Acquisition/Basket.pm create mode 100644 Koha/Acquisition/Baskets.pm 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 6ad5ff7..999273a 100644 --- a/C4/Acquisition.pm +++ b/C4/Acquisition.pm @@ -186,7 +186,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 @@ -205,7 +205,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) ' @@ -217,7 +217,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; } @@ -544,21 +544,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=?"; @@ -1530,6 +1533,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 @@ -1590,7 +1594,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 @@ -1601,7 +1605,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 ) { @@ -1624,11 +1628,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 new file mode 100644 index 0000000..1255ff7 --- /dev/null +++ b/Koha/Acquisition/Basket.pm @@ -0,0 +1,54 @@ +package Koha::Acquisition::Basket; + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use Modern::Perl; + +use Carp; + +use Koha::Database; + +use base qw(Koha::Object); + +=head1 NAME + +Koha::Acquisition::Basket - Koha Basket Object class + +=head1 API + +=head2 Class Methods + +=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 + +sub _type { + return 'Aqbasket'; +} + +1; diff --git a/Koha/Acquisition/Baskets.pm b/Koha/Acquisition/Baskets.pm new file mode 100644 index 0000000..5bbf795 --- /dev/null +++ b/Koha/Acquisition/Baskets.pm @@ -0,0 +1,51 @@ +package Koha::Acquisition::Baskets; + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 3 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use Modern::Perl; + +use Carp; + +use C4::Context; +use Koha::Database; + +use Koha::Acquisition::Basket; + +use base qw(Koha::Objects); + +=head1 NAME + +Koha::Acquisition::Baskets - Koha Basket Object set class + +=head1 API + +=head2 Class Methods + +=cut + +=head3 type + +=cut + +sub _type { + return 'Aqbasket'; +} + +sub object_class { + return 'Koha::Acquisition::Basket'; +} + +1; diff --git a/Koha/Acquisition/Order.pm b/Koha/Acquisition/Order.pm index ede8ddf..1e0e76c 100644 --- a/Koha/Acquisition/Order.pm +++ b/Koha/Acquisition/Order.pm @@ -2,6 +2,7 @@ package Koha::Acquisition::Order; use Modern::Perl; +use Koha::Acquisition::Baskets; use Koha::Database; use Koha::DateUtils qw( dt_from_string output_pref ); @@ -68,6 +69,11 @@ sub add_item { $rs->create({ ordernumber => $self->{ordernumber}, itemnumber => $itemnumber }); } +sub basket { + my ( $self ) = @_; + return Koha::Acquisition::Baskets->find( $self->{basketno} ); +} + # TODO Move code from ModItemOrder sub update_item { die "not implemented yet"; diff --git a/acqui/addorder.pl b/acqui/addorder.pl index 81064ff..937eec7 100755 --- a/acqui/addorder.pl +++ b/acqui/addorder.pl @@ -233,6 +233,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' @@ -290,7 +292,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 74ea8e2..2d034ee 100755 --- a/acqui/addorderiso2709.pl +++ b/acqui/addorderiso2709.pl @@ -43,6 +43,7 @@ use C4::Members; use Koha::Number::Price; use Koha::Acquisition::Currencies; +use Koha::Acquisition::Baskets; use Koha::Acquisition::Order; use Koha::Acquisition::Bookseller; @@ -75,6 +76,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 @@ -99,7 +101,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' ); @@ -264,7 +266,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 ca2d2d2..2e6c600 100755 --- a/acqui/basket.pl +++ b/acqui/basket.pl @@ -376,6 +376,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 c0db854..388a1e7 100755 --- a/acqui/basketheader.pl +++ b/acqui/basketheader.pl @@ -142,6 +142,7 @@ if ( $op eq 'add_form' ) { $input->param('deliveryplace'), $input->param('billingplace'), $input->param('is_standing') ? 1 : undef, + $input->param('create_items'), ); } else { #New basket $basketno = NewBasket( @@ -154,6 +155,7 @@ if ( $op eq 'add_form' ) { $input->param('deliveryplace'), $input->param('billingplace'), $input->param('is_standing') ? 1 : undef, + $input->param('create_items'), ); } print $input->redirect('basket.pl?basketno='.$basketno); diff --git a/acqui/finishreceive.pl b/acqui/finishreceive.pl index 10a0e0c..820d1a2 100755 --- a/acqui/finishreceive.pl +++ b/acqui/finishreceive.pl @@ -33,6 +33,7 @@ use C4::Items; use C4::Search; use Koha::Acquisition::Bookseller; +use Koha::Acquisition::Order; use List::MoreUtils qw/any/; @@ -58,11 +59,13 @@ my $bookfund = $input->param("bookfund"); my $order = GetOrder($ordernumber); my $new_ordernumber = $ordernumber; +my $basket = Koha::Acquisition::Order->fetch({ordernumber => $ordernumber})->basket; + #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); @@ -110,7 +113,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 57a22e4..98dab15 100755 --- a/acqui/neworderempty.pl +++ b/acqui/neworderempty.pl @@ -129,6 +129,7 @@ if(!$basketno) { } our $basket = GetBasket($basketno); +my $basketobj = Koha::Acquisition::Baskets->find( $basketno ); $booksellerid = $basket->{booksellerid} unless $booksellerid; my $bookseller = Koha::Acquisition::Bookseller->fetch({ id => $booksellerid }); @@ -242,7 +243,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) { @@ -357,7 +358,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 51017a4..28590ea 100755 --- a/acqui/orderreceive.pl +++ b/acqui/orderreceive.pl @@ -109,6 +109,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 } ); @@ -116,7 +117,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 8f2d46f..0602c99 100755 --- a/acqui/parcel.pl +++ b/acqui/parcel.pl @@ -67,6 +67,7 @@ use C4::Output; use C4::Suggestions; use C4::Reserves qw/GetReservesFromBiblionumber/; +use Koha::Acquisition::Baskets; use Koha::Acquisition::Bookseller; use Koha::DateUtils; @@ -270,6 +271,7 @@ unless( defined $invoice->{closedate} ) { $line{left_holds_on_order} = 1 if $line{left_holds}==1 && ($line{items} == 0 || $itemholds ); $line{holds} = $holds; $line{holds_on_order} = $itemholds?$itemholds:$holds 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 a90c75f..5d9332b 100755 --- a/acqui/uncertainprice.pl +++ b/acqui/uncertainprice.pl @@ -54,6 +54,7 @@ use C4::Bookseller::Contact; use C4::Acquisition qw/SearchOrders GetOrder ModOrder/; use C4::Biblio qw/GetBiblioData/; +use Koha::Acquisition::Baskets; use Koha::Acquisition::Bookseller; my $input=new CGI; @@ -73,6 +74,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::Bookseller->fetch({ id => $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 0000000..145e6d4 --- /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 514c13d..fa969a9 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -2964,6 +2964,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 77ec72e..2c7269a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/basket.tt @@ -379,9 +379,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 5cc8cc7..ab91ce2 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 57755df..8bdc08f 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt @@ -431,7 +431,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 b5491cf..db24994 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/uncertainprice.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/uncertainprice.tt @@ -123,7 +123,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 26ec49a..113da10 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/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 e4fb61f..6c64d77 100644 --- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt +++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-detail.tt @@ -642,7 +642,7 @@ <p>This record has many physical items ([% items_count %]). <a href="/cgi-bin/koha/opac-detail.pl?biblionumber=[% biblionumber %]&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 %] 1 item is on order. [% ELSE %] @@ -669,7 +669,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 %] 1 item is on order. [% ELSE %] diff --git a/opac/opac-detail.pl b/opac/opac-detail.pl index 41c1d22..0439f62 100755 --- a/opac/opac-detail.pl +++ b/opac/opac-detail.pl @@ -49,6 +49,8 @@ use C4::HTML5Media; use C4::CourseReserves qw(GetItemCourseReservesInfo); use Koha::RecordProcessor; use Koha::AuthorisedValues; + +use Koha::Acquisition::Order; use Koha::Virtualshelves; use Koha::Ratings; use Koha::Reviews; @@ -625,7 +627,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; } @@ -686,9 +689,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.1.4