Bug 15962: Block the currency deletion if used
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 8 Mar 2016 10:46:46 +0000 (10:46 +0000)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Mon, 21 Mar 2016 22:56:11 +0000 (22:56 +0000)
A currency should not be deleted if used by a vendor or a basket.

Test plan:
1/ Add a new currency
2/ Create a vendor using this currency
3/ Create a basket using this currency
4/ Try to delete the currency
5/ Delete the basket
6/ Try to delete the currency
7/ Delete the vendor
8/ Delete the currency

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
Koha/Acquisition/Bookseller.pm
admin/currency.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt

index 79b1510..57a6113 100644 (file)
@@ -31,8 +31,6 @@ sub fetch {
 sub search {
     my ( $class, $params ) = @_;
 
-    croak "Cannot search on other fields than aqbooksellers.name" if $params and grep { $_ !~ /^name$/ } keys %$params;
-
     my $schema = Koha::Database->new->schema;
 
     my $search_params;
index 4d791db..5258a2f 100755 (executable)
@@ -25,6 +25,7 @@ use C4::Auth;
 use C4::Context;
 use C4::Output;
 
+use Koha::Acquisition::Bookseller;
 use Koha::Acquisition::Currency;
 use Koha::Acquisition::Currencies;
 
@@ -94,9 +95,11 @@ if ( $op eq 'add_form' ) {
     # TODO rewrite the following when Koha::Acquisition::Orders will use Koha::Objects
     my $schema = Koha::Database->schema;
     my $nb_of_orders = $schema->resultset('Aqorder')->search( { currency => $currency->currency } )->count;
+    my $nb_of_vendors = Koha::Acquisition::Bookseller->search( { -or => { listprice => $currency->currency, invoiceprice => $currency->currency } });
     $template->param(
         currency     => $currency,
         nb_of_orders => $nb_of_orders,
+        nb_of_vendors => $nb_of_vendors,
     );
 } elsif ( $op eq 'delete_confirmed' ) {
     my $currency = Koha::Acquisition::Currencies->find($currency_code);
index ea438f2..e25f64a 100644 (file)
 [% END %]
 
 [% IF op =='delete_confirm' %]
-    [% IF nb_of_orders %]
+    [% IF nb_of_orders or nb_of_vendors %]
     <div class="dialog alert">
         <h3>Cannot delete currency <span class="ex">'[% currency.currency %]'</span></h3>
-        <p>This currency is used by [% nb_of_orders %] orders. Deletion not possible</p>
+        <p>
+            [% IF nb_of_orders %]
+                This currency is used by [% nb_of_orders %] orders.
+            [% ELSIF nb_of_vendors %]
+                This currency is used by [% nb_of_vendors %] vendors.
+            [% END %]
+            Deletion not possible
+        </p>
         <form action="/cgi-bin/koha/admin/currency.pl" method="post">
             <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> OK</button>
         </form>