|
Lines 1-26
Link Here
|
| 1 |
#!/usr/bin/perl |
1 |
#!/usr/bin/perl |
| 2 |
|
2 |
|
| 3 |
#script to administer the aqbudget table |
|
|
| 4 |
#written 20/02/2002 by paul.poulain@free.fr |
| 5 |
# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) |
| 6 |
|
| 7 |
# ALGO : |
| 8 |
# this script use an $op to know what to do. |
| 9 |
# if $op is empty or none of the above values, |
| 10 |
# - the default screen is build (with all records, or filtered datas). |
| 11 |
# - the user can clic on add, modify or delete record. |
| 12 |
# if $op=add_form |
| 13 |
# - if primkey exists, this is a modification,so we read the $primkey record |
| 14 |
# - builds the add/modify form |
| 15 |
# if $op=add_validate |
| 16 |
# - the user has just send datas, so we create/modify the record |
| 17 |
# if $op=delete_form |
| 18 |
# - we show the record having primkey=$primkey and ask for deletion validation form |
| 19 |
# if $op=delete_confirm |
| 20 |
# - we delete the record having primkey=$primkey |
| 21 |
|
| 22 |
|
| 23 |
# Copyright 2000-2002 Katipo Communications |
3 |
# Copyright 2000-2002 Katipo Communications |
|
|
4 |
# Copyright 2002 Paul Poulain |
| 5 |
# Copyright Koha Development Team |
| 24 |
# |
6 |
# |
| 25 |
# This file is part of Koha. |
7 |
# This file is part of Koha. |
| 26 |
# |
8 |
# |
|
Lines 37-216
Link Here
|
| 37 |
# You should have received a copy of the GNU General Public License |
19 |
# You should have received a copy of the GNU General Public License |
| 38 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
20 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
| 39 |
|
21 |
|
| 40 |
use strict; |
22 |
use Modern::Perl; |
| 41 |
use warnings; |
|
|
| 42 |
use CGI qw ( -utf8 ); |
23 |
use CGI qw ( -utf8 ); |
| 43 |
use C4::Context; |
|
|
| 44 |
use C4::Auth; |
24 |
use C4::Auth; |
|
|
25 |
use C4::Context; |
| 45 |
use C4::Output; |
26 |
use C4::Output; |
| 46 |
use C4::Budgets qw/GetCurrency GetCurrencies/; |
|
|
| 47 |
|
| 48 |
our $input = CGI->new; |
| 49 |
my $searchfield = $input->param('searchfield') || $input->param('description') || q{}; |
| 50 |
our $offset = $input->param('offset') || 0; |
| 51 |
my $op = $input->param('op') || q{}; |
| 52 |
my $script_name = '/cgi-bin/koha/admin/currency.pl'; |
| 53 |
our $pagesize = 20; |
| 54 |
|
27 |
|
| 55 |
our ($template, $loggedinuser, $cookie) = get_template_and_user({ |
28 |
use Koha::Acquisition::Currency; |
| 56 |
template_name => 'admin/currency.tt', |
29 |
use Koha::Acquisition::Currencies; |
| 57 |
query => $input, |
30 |
|
| 58 |
type => 'intranet', |
31 |
my $input = CGI->new; |
| 59 |
flagsrequired => {parameters => 'parameters_remaining_permissions'}, |
32 |
my $searchfield = $input->param('searchfield') || $input->param('description') || q{}; |
| 60 |
authnotrequired => 0, |
33 |
my $currency_code = $input->param('currency_code'); |
| 61 |
}); |
34 |
my $op = $input->param('op') || 'list'; |
| 62 |
|
35 |
my @messages; |
| 63 |
$searchfield=~ s/\,//g; |
36 |
|
| 64 |
|
37 |
our ( $template, $loggedinuser, $cookie ) = get_template_and_user( |
| 65 |
|
38 |
{ template_name => 'admin/currency.tt', |
| 66 |
$template->param(searchfield => $searchfield, |
39 |
query => $input, |
| 67 |
script_name => $script_name); |
40 |
type => 'intranet', |
| 68 |
|
41 |
authnotrequired => 0, |
| 69 |
our $dbh = C4::Context->dbh; |
42 |
flagsrequired => { parameters => 'parameters_remaining_permissions' }, |
|
|
43 |
} |
| 44 |
); |
| 70 |
|
45 |
|
| 71 |
if ( $op eq 'add_form' ) { |
46 |
if ( $op eq 'add_form' ) { |
| 72 |
add_form($searchfield); |
47 |
my $currency; |
| 73 |
} elsif ( $op eq 'save' ) { |
48 |
if ($currency_code) { |
| 74 |
add_validate(); |
49 |
$currency = Koha::Acquisition::Currencies->find($currency_code); |
| 75 |
print $input->redirect('/cgi-bin/koha/admin/currency.pl'); |
|
|
| 76 |
} elsif ( $op eq 'delete_confirm' ) { |
| 77 |
delete_confirm($searchfield); |
| 78 |
} elsif ( $op eq 'delete_confirmed' ) { |
| 79 |
delete_currency($searchfield); |
| 80 |
} else { |
| 81 |
default_path($searchfield); |
| 82 |
} |
| 83 |
|
| 84 |
output_html_with_http_headers $input, $cookie, $template->output; |
| 85 |
|
| 86 |
sub default_path { |
| 87 |
my $searchfield = shift; |
| 88 |
$template->param( else => 1 ); |
| 89 |
|
| 90 |
my @currencies = GetCurrencies(); |
| 91 |
if ($searchfield) { |
| 92 |
@currencies = grep { $_->{currency} =~ m/^$searchfield/o } @currencies; |
| 93 |
} |
50 |
} |
| 94 |
my $end_of_page = $offset + $pagesize; |
51 |
|
| 95 |
if ( $end_of_page > @currencies ) { |
52 |
$template->param( currency => $currency, ); |
| 96 |
$end_of_page = @currencies; |
53 |
} elsif ( $op eq 'add_validate' ) { |
|
|
54 |
my $currency_code = $input->param('currency_code'); |
| 55 |
my $symbol = $input->param('symbol'); |
| 56 |
my $isocode = $input->param('isocode'); |
| 57 |
my $rate = $input->param('rate'); |
| 58 |
my $active = $input->param('active'); |
| 59 |
my $is_a_modif = $input->param('is_a_modif'); |
| 60 |
|
| 61 |
if ($is_a_modif) { |
| 62 |
my $currency = Koha::Acquisition::Currencies->find($currency_code); |
| 63 |
$currency->symbol($symbol); |
| 64 |
$currency->isocode($isocode); |
| 65 |
$currency->rate($rate); |
| 66 |
$currency->active($active); |
| 67 |
eval { $currency->store; }; |
| 68 |
if ($@) { |
| 69 |
push @messages, { type => 'error', code => 'error_on_update' }; |
| 70 |
} else { |
| 71 |
push @messages, { type => 'message', code => 'success_on_update' }; |
| 72 |
} |
| 97 |
} else { |
73 |
} else { |
| 98 |
$template->param( |
74 |
my $currency = Koha::Acquisition::Currency->new( |
| 99 |
ltcount => 1, |
75 |
{ currency => $currency_code, |
| 100 |
nextpage => $end_of_page |
76 |
symbol => $symbol, |
|
|
77 |
isocode => $isocode, |
| 78 |
rate => $rate, |
| 79 |
active => $active, |
| 80 |
} |
| 101 |
); |
81 |
); |
|
|
82 |
eval { $currency->store; }; |
| 83 |
if ($@) { |
| 84 |
push @messages, { type => 'error', code => 'error_on_insert' }; |
| 85 |
} else { |
| 86 |
push @messages, { type => 'message', code => 'success_on_insert' }; |
| 87 |
} |
| 102 |
} |
88 |
} |
| 103 |
$end_of_page--; |
89 |
$searchfield = q||; |
| 104 |
my @display_curr = @currencies[ $offset .. $end_of_page ]; |
90 |
$op = 'list'; |
| 105 |
my $activecurrency = GetCurrency(); |
91 |
} elsif ( $op eq 'delete_confirm' ) { |
|
|
92 |
my $currency = Koha::Acquisition::Currencies->find($currency_code); |
| 106 |
|
93 |
|
|
|
94 |
# TODO rewrite the following when Koha::Acquisition::Orders will use Koha::Objects |
| 95 |
my $schema = Koha::Database->schema; |
| 96 |
my $nb_of_orders = $schema->resultset('Aqorder')->search( { currency => $currency->currency } )->count; |
| 107 |
$template->param( |
97 |
$template->param( |
| 108 |
loop => \@display_curr, |
98 |
currency => $currency, |
| 109 |
activecurrency => defined $activecurrency, |
99 |
nb_of_orders => $nb_of_orders, |
| 110 |
); |
100 |
); |
|
|
101 |
} elsif ( $op eq 'delete' ) { |
| 102 |
my $currency = Koha::Acquisition::Currencies->find($currency_code); |
| 103 |
my $deleted = eval { $currency->delete; }; |
| 111 |
|
104 |
|
| 112 |
if ( $offset > 0 ) { |
105 |
if ( $@ or not $deleted ) { |
| 113 |
$template->param( |
106 |
push @messages, { type => 'error', code => 'error_on_delete' }; |
| 114 |
offsetgtzero => 1, |
107 |
} else { |
| 115 |
prevpage => $offset - $pagesize |
108 |
push @messages, { type => 'message', code => 'success_on_delete' }; |
| 116 |
); |
|
|
| 117 |
} |
109 |
} |
| 118 |
return; |
110 |
$op = 'list'; |
| 119 |
} |
|
|
| 120 |
|
| 121 |
sub delete_currency { |
| 122 |
my $curr = shift; |
| 123 |
|
| 124 |
# TODO This should be a method of Currency |
| 125 |
# also what about any orders using this currency |
| 126 |
$template->param( delete_confirmed => 1 ); |
| 127 |
$dbh->do( 'delete from currency where currency=?', {}, $curr ); |
| 128 |
return; |
| 129 |
} |
111 |
} |
| 130 |
|
112 |
|
| 131 |
sub delete_confirm { |
113 |
if ( $op eq 'list' ) { |
| 132 |
my $curr = shift; |
114 |
$searchfield =~ s/\,//g; |
| 133 |
|
115 |
my $currencies = Koha::Acquisition::Currencies->search( { currency => { -like => "$searchfield%" } } ); |
| 134 |
$template->param( delete_confirm => 1 ); |
|
|
| 135 |
my $total_row = $dbh->selectrow_hashref( |
| 136 |
'select count(*) as total from aqbooksellers where currency=?', |
| 137 |
{}, $curr ); |
| 138 |
|
| 139 |
my $curr_ref = $dbh->selectrow_hashref( |
| 140 |
'select currency,rate from currency where currency=?', |
| 141 |
{}, $curr ); |
| 142 |
|
| 143 |
if ( $total_row->{total} ) { |
| 144 |
$template->param( totalgtzero => 1 ); |
| 145 |
} |
| 146 |
|
116 |
|
|
|
117 |
my $no_active_currency = not Koha::Acquisition::Currencies->search( { active => 1 } )->count; |
| 147 |
$template->param( |
118 |
$template->param( |
| 148 |
rate => $curr_ref->{rate}, |
119 |
currencies => $currencies, |
| 149 |
total => $total_row->{total} |
120 |
no_active_currency => $no_active_currency, |
| 150 |
); |
121 |
); |
| 151 |
|
|
|
| 152 |
return; |
| 153 |
} |
| 154 |
|
| 155 |
sub add_form { |
| 156 |
my $curr = shift; |
| 157 |
|
| 158 |
$template->param( add_form => 1 ); |
| 159 |
|
| 160 |
#---- if primkey exists, it's a modify action, so read values to modify... |
| 161 |
my $date; |
| 162 |
if ($curr) { |
| 163 |
my $curr_rec = |
| 164 |
$dbh->selectrow_hashref( 'select * from currency where currency=?', |
| 165 |
{}, $curr ); |
| 166 |
for ( keys %{$curr_rec} ) { |
| 167 |
if($_ eq "timestamp"){ $date = $curr_rec->{$_}; } |
| 168 |
$template->param( $_ => $curr_rec->{$_} ); |
| 169 |
} |
| 170 |
} |
| 171 |
|
| 172 |
return; |
| 173 |
} |
122 |
} |
| 174 |
|
123 |
|
| 175 |
sub add_validate { |
124 |
$template->param( |
| 176 |
$template->param( add_validate => 1 ); |
125 |
searchfield => $searchfield, |
| 177 |
|
126 |
messages => \@messages, |
| 178 |
my $rec = { |
127 |
op => $op, |
| 179 |
rate => $input->param('rate'), |
128 |
); |
| 180 |
symbol => $input->param('symbol') || q{}, |
|
|
| 181 |
isocode => $input->param('isocode') || q{}, |
| 182 |
active => $input->param('active') || 0, |
| 183 |
currency => $input->param('currency'), |
| 184 |
}; |
| 185 |
|
| 186 |
if ( $rec->{active} == 1 ) { |
| 187 |
$dbh->do('UPDATE currency SET active = 0'); |
| 188 |
} |
| 189 |
|
| 190 |
my ($row_count) = $dbh->selectrow_array( |
| 191 |
'select count(*) as count from currency where currency = ?', |
| 192 |
{}, $input->param('currency') ); |
| 193 |
if ($row_count) { |
| 194 |
$dbh->do( |
| 195 |
q|UPDATE currency SET rate = ?, symbol = ?, isocode = ?, active = ? WHERE currency = ? |, |
| 196 |
{}, |
| 197 |
$rec->{rate}, |
| 198 |
$rec->{symbol}, |
| 199 |
$rec->{isocode}, |
| 200 |
$rec->{active}, |
| 201 |
$rec->{currency} |
| 202 |
); |
| 203 |
} else { |
| 204 |
$dbh->do( |
| 205 |
q|INSERT INTO currency (currency, rate, symbol, isocode, active) VALUES (?,?,?,?,?) |, |
| 206 |
{}, |
| 207 |
$rec->{currency}, |
| 208 |
$rec->{rate}, |
| 209 |
$rec->{symbol}, |
| 210 |
$rec->{isocode}, |
| 211 |
$rec->{active} |
| 212 |
); |
| 213 |
|
129 |
|
| 214 |
} |
130 |
output_html_with_http_headers $input, $cookie, $template->output; |
| 215 |
return; |
|
|
| 216 |
} |