From c5ff2c7eba59f9f8248c308931a1596667e148b4 Mon Sep 17 00:00:00 2001
From: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Date: Tue, 8 Mar 2016 10:46:46 +0000
Subject: [PATCH] Bug 15962: Block the currency deletion if used
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
---
Koha/Acquisition/Bookseller.pm | 2 --
admin/currency.pl | 3 +++
koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt | 11 +++++++++--
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/Koha/Acquisition/Bookseller.pm b/Koha/Acquisition/Bookseller.pm
index 79b1510..57a6113 100644
--- a/Koha/Acquisition/Bookseller.pm
+++ b/Koha/Acquisition/Bookseller.pm
@@ -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;
diff --git a/admin/currency.pl b/admin/currency.pl
index 4d791db..5258a2f 100755
--- a/admin/currency.pl
+++ b/admin/currency.pl
@@ -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);
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt
index 8de224f..6b91775 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt
@@ -147,10 +147,17 @@
[% 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>
--
2.7.0