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 |
} |