Bugzilla – Attachment 45809 Details for
Bug 15084
Move the currency related code to Koha::Acquisition::Currenc[y|ies]
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 15084: use Koha::Acquisition::Currenc[y|ies] in admin/currency
Bug-15084-use-KohaAcquisitionCurrencyies-in-adminc.patch (text/plain), 21.87 KB, created by
Josef Moravec
on 2015-12-18 10:18:33 UTC
(
hide
)
Description:
Bug 15084: use Koha::Acquisition::Currenc[y|ies] in admin/currency
Filename:
MIME Type:
Creator:
Josef Moravec
Created:
2015-12-18 10:18:33 UTC
Size:
21.87 KB
patch
obsolete
>From c2e877a9f52236509a671cdead8d169368519eba Mon Sep 17 00:00:00 2001 >From: Jonathan Druart <jonathan.druart@bugs.koha-community.org> >Date: Thu, 29 Oct 2015 11:43:29 +0000 >Subject: [PATCH] Bug 15084: use Koha::Acquisition::Currenc[y|ies] in > admin/currency > >Signed-off-by: Josef Moravec <josef.moravec@gmail.com> >--- > admin/currency.pl | 262 +++++++-------------- > .../prog/en/modules/admin/currency.tt | 173 +++++++------- > 2 files changed, 168 insertions(+), 267 deletions(-) > >diff --git a/admin/currency.pl b/admin/currency.pl >index f62f761..9c8f825 100755 >--- a/admin/currency.pl >+++ b/admin/currency.pl >@@ -1,26 +1,8 @@ > #!/usr/bin/perl > >-#script to administer the aqbudget table >-#written 20/02/2002 by paul.poulain@free.fr >-# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html) >- >-# ALGO : >-# this script use an $op to know what to do. >-# if $op is empty or none of the above values, >-# - the default screen is build (with all records, or filtered datas). >-# - the user can clic on add, modify or delete record. >-# if $op=add_form >-# - if primkey exists, this is a modification,so we read the $primkey record >-# - builds the add/modify form >-# if $op=add_validate >-# - the user has just send datas, so we create/modify the record >-# if $op=delete_form >-# - we show the record having primkey=$primkey and ask for deletion validation form >-# if $op=delete_confirm >-# - we delete the record having primkey=$primkey >- >- > # Copyright 2000-2002 Katipo Communications >+# Copyright 2002 Paul Poulain >+# Copyright Koha Development Team > # > # This file is part of Koha. > # >@@ -37,180 +19,112 @@ > # You should have received a copy of the GNU General Public License > # along with Koha; if not, see <http://www.gnu.org/licenses>. > >-use strict; >-use warnings; >+use Modern::Perl; > use CGI qw ( -utf8 ); >-use C4::Context; > use C4::Auth; >+use C4::Context; > use C4::Output; >-use C4::Budgets qw/GetCurrency GetCurrencies/; >- >-our $input = CGI->new; >-my $searchfield = $input->param('searchfield') || $input->param('description') || q{}; >-our $offset = $input->param('offset') || 0; >-my $op = $input->param('op') || q{}; >-my $script_name = '/cgi-bin/koha/admin/currency.pl'; >-our $pagesize = 20; > >-our ($template, $loggedinuser, $cookie) = get_template_and_user({ >- template_name => 'admin/currency.tt', >- query => $input, >- type => 'intranet', >- flagsrequired => {parameters => 'parameters_remaining_permissions'}, >- authnotrequired => 0, >-}); >- >-$searchfield=~ s/\,//g; >- >- >-$template->param(searchfield => $searchfield, >- script_name => $script_name); >- >-our $dbh = C4::Context->dbh; >+use Koha::Acquisition::Currency; >+use Koha::Acquisition::Currencies; >+ >+my $input = CGI->new; >+my $searchfield = $input->param('searchfield') || $input->param('description') || q{}; >+my $currency_code = $input->param('currency_code'); >+my $op = $input->param('op') || 'list'; >+my @messages; >+ >+our ( $template, $loggedinuser, $cookie ) = get_template_and_user( >+ { template_name => 'admin/currency.tt', >+ query => $input, >+ type => 'intranet', >+ authnotrequired => 0, >+ flagsrequired => { parameters => 'parameters_remaining_permissions' }, >+ } >+); > > if ( $op eq 'add_form' ) { >- add_form($searchfield); >-} elsif ( $op eq 'save' ) { >- add_validate(); >- print $input->redirect('/cgi-bin/koha/admin/currency.pl'); >-} elsif ( $op eq 'delete_confirm' ) { >- delete_confirm($searchfield); >-} elsif ( $op eq 'delete_confirmed' ) { >- delete_currency($searchfield); >-} else { >- default_path($searchfield); >-} >- >-output_html_with_http_headers $input, $cookie, $template->output; >- >-sub default_path { >- my $searchfield = shift; >- $template->param( else => 1 ); >- >- my @currencies = GetCurrencies(); >- if ($searchfield) { >- @currencies = grep { $_->{currency} =~ m/^$searchfield/o } @currencies; >+ my $currency; >+ if ($currency_code) { >+ $currency = Koha::Acquisition::Currencies->find($currency_code); > } >- my $end_of_page = $offset + $pagesize; >- if ( $end_of_page > @currencies ) { >- $end_of_page = @currencies; >+ >+ $template->param( currency => $currency, ); >+} elsif ( $op eq 'add_validate' ) { >+ my $currency_code = $input->param('currency_code'); >+ my $symbol = $input->param('symbol'); >+ my $isocode = $input->param('isocode'); >+ my $rate = $input->param('rate'); >+ my $active = $input->param('active'); >+ my $is_a_modif = $input->param('is_a_modif'); >+ >+ if ($is_a_modif) { >+ my $currency = Koha::Acquisition::Currencies->find($currency_code); >+ $currency->symbol($symbol); >+ $currency->isocode($isocode); >+ $currency->rate($rate); >+ $currency->active($active); >+ eval { $currency->store; }; >+ if ($@) { >+ push @messages, { type => 'error', code => 'error_on_update' }; >+ } else { >+ push @messages, { type => 'message', code => 'success_on_update' }; >+ } > } else { >- $template->param( >- ltcount => 1, >- nextpage => $end_of_page >+ my $currency = Koha::Acquisition::Currency->new( >+ { currency => $currency_code, >+ symbol => $symbol, >+ isocode => $isocode, >+ rate => $rate, >+ active => $active, >+ } > ); >+ eval { $currency->store; }; >+ if ($@) { >+ push @messages, { type => 'error', code => 'error_on_insert' }; >+ } else { >+ push @messages, { type => 'message', code => 'success_on_insert' }; >+ } > } >- $end_of_page--; >- my @display_curr = @currencies[ $offset .. $end_of_page ]; >- my $activecurrency = GetCurrency(); >+ $searchfield = q||; >+ $op = 'list'; >+} elsif ( $op eq 'delete_confirm' ) { >+ my $currency = Koha::Acquisition::Currencies->find($currency_code); > >+ # 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; > $template->param( >- loop => \@display_curr, >- activecurrency => defined $activecurrency, >+ currency => $currency, >+ nb_of_orders => $nb_of_orders, > ); >+} elsif ( $op eq 'delete' ) { >+ my $currency = Koha::Acquisition::Currencies->find($currency_code); >+ my $deleted = eval { $currency->delete; }; > >- if ( $offset > 0 ) { >- $template->param( >- offsetgtzero => 1, >- prevpage => $offset - $pagesize >- ); >+ if ( $@ or not $deleted ) { >+ push @messages, { type => 'error', code => 'error_on_delete' }; >+ } else { >+ push @messages, { type => 'message', code => 'success_on_delete' }; > } >- return; >-} >- >-sub delete_currency { >- my $curr = shift; >- >- # TODO This should be a method of Currency >- # also what about any orders using this currency >- $template->param( delete_confirmed => 1 ); >- $dbh->do( 'delete from currency where currency=?', {}, $curr ); >- return; >+ $op = 'list'; > } > >-sub delete_confirm { >- my $curr = shift; >- >- $template->param( delete_confirm => 1 ); >- my $total_row = $dbh->selectrow_hashref( >- 'select count(*) as total from aqbooksellers where currency=?', >- {}, $curr ); >- >- my $curr_ref = $dbh->selectrow_hashref( >- 'select currency,rate from currency where currency=?', >- {}, $curr ); >- >- if ( $total_row->{total} ) { >- $template->param( totalgtzero => 1 ); >- } >+if ( $op eq 'list' ) { >+ $searchfield =~ s/\,//g; >+ my $currencies = Koha::Acquisition::Currencies->search( { currency => { -like => "$searchfield%" } } ); > >+ my $no_active_currency = not Koha::Acquisition::Currencies->search( { active => 1 } )->count; > $template->param( >- rate => $curr_ref->{rate}, >- total => $total_row->{total} >+ currencies => $currencies, >+ no_active_currency => $no_active_currency, > ); >- >- return; >-} >- >-sub add_form { >- my $curr = shift; >- >- $template->param( add_form => 1 ); >- >- #---- if primkey exists, it's a modify action, so read values to modify... >- my $date; >- if ($curr) { >- my $curr_rec = >- $dbh->selectrow_hashref( 'select * from currency where currency=?', >- {}, $curr ); >- for ( keys %{$curr_rec} ) { >- if($_ eq "timestamp"){ $date = $curr_rec->{$_}; } >- $template->param( $_ => $curr_rec->{$_} ); >- } >- } >- >- return; > } > >-sub add_validate { >- $template->param( add_validate => 1 ); >- >- my $rec = { >- rate => $input->param('rate'), >- symbol => $input->param('symbol') || q{}, >- isocode => $input->param('isocode') || q{}, >- active => $input->param('active') || 0, >- currency => $input->param('currency'), >- }; >- >- if ( $rec->{active} == 1 ) { >- $dbh->do('UPDATE currency SET active = 0'); >- } >- >- my ($row_count) = $dbh->selectrow_array( >- 'select count(*) as count from currency where currency = ?', >- {}, $input->param('currency') ); >- if ($row_count) { >- $dbh->do( >-q|UPDATE currency SET rate = ?, symbol = ?, isocode = ?, active = ? WHERE currency = ? |, >- {}, >- $rec->{rate}, >- $rec->{symbol}, >- $rec->{isocode}, >- $rec->{active}, >- $rec->{currency} >- ); >- } else { >- $dbh->do( >-q|INSERT INTO currency (currency, rate, symbol, isocode, active) VALUES (?,?,?,?,?) |, >- {}, >- $rec->{currency}, >- $rec->{rate}, >- $rec->{symbol}, >- $rec->{isocode}, >- $rec->{active} >- ); >+$template->param( >+ searchfield => $searchfield, >+ messages => \@messages, >+ op => $op, >+); > >- } >- return; >-} >+output_html_with_http_headers $input, $cookie, $template->output; >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 6c94bb2..8aefa41 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/currency.tt >@@ -2,10 +2,9 @@ > [% USE ColumnsSettings %] > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Administration › Currencies & Exchange rates › >-[% IF ( add_form ) %][% IF ( searchfield ) %]Modify currency '[% searchfield %]'[% ELSE %]New currency[% END %][% END %] >-[% IF ( delete_confirm ) %]Confirm deletion of currency '[% searchfield %]'[% END %] >-[% IF ( delete_confirmed ) %]Currency deleted[% END %] >-[% IF ( else ) %]Currencies[% END %]</title> >+[% IF op == 'add_form' %][% IF currency %]Modify currency '[% currency.currency %]'[% ELSE %]New currency[% END %][% END %] >+[% IF op == 'delete_' %]Confirm deletion of currency '[% searchfield %]'[% END %] >+[% IF op == 'list' %]Currencies[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] > <link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" /> > [% INCLUDE 'datatables.inc' %] >@@ -51,10 +50,10 @@ > > > >-<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> › <a href="/cgi-bin/koha/admin/currency.pl">Currencies & Exchange rates</a> › [% IF ( add_form ) %][% IF ( searchfield ) %]Modify currency '[% searchfield %]'[% ELSE %]New currency[% END %][% END %] >-[% IF ( delete_confirm ) %]Confirm deletion of currency '<span class="ex">[% searchfield %]</span>'[% END %] >-[% IF ( delete_confirmed ) %]Currency deleted[% END %] >-[% IF ( else ) %]Currencies[% END %] >+<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> › <a href="/cgi-bin/koha/admin/currency.pl">Currencies & Exchange rates</a> › [% IF op == 'add_form' %][% IF currency %]Modify currency '[% currency.currency %]'[% ELSE %]New currency[% END %][% END %] >+[% IF op == 'delete_confirm' %]Confirm deletion of currency '<span class="ex">[% searchfield %]</span>' >+[% ELSIF op == 'list' %]Currencies >+[% END %] > </div> > > <div id="doc3" class="yui-t2"> >@@ -62,59 +61,61 @@ > <div id="bd"> > <div id="yui-main"> > <div class="yui-b"> >-[% IF ( else ) %] >+[% IF op == 'list' %] > <div id="toolbar" class="btn-toolbar"> >- <a class="btn btn-small" id="newcurrency" href="[% script_name %]?op=add_form"><i class="fa fa-plus"></i> New currency</a> >+ <a class="btn btn-small" id="newcurrency" href="/cgi-bin/koha/admin/currency.pl?op=add_form"><i class="fa fa-plus"></i> New currency</a> > </div> > [% END %] > >-[% IF ( add_form ) %] >+[% IF op == 'add_form' %] > >-<form action="[% script_name %]" name="Aform" method="post" class="validated"> >- <input type="hidden" name="op" value="save" /> >+<form action="/cgi-bin/koha/admin/currency.pl" name="Aform" method="post" class="validated"> >+ <input type="hidden" name="op" value="add_validate" /> > <fieldset class="rows"> >- <legend>[% IF ( searchfield ) %] >- Modify currency >- [% ELSE %] >- New currency >- [% END %]</legend> >- <ol> >- <li> >- [% IF ( searchfield ) %] >- <span class="label">Currency: </span> >- <input type="hidden" name="currency" id="currency" value="[% searchfield %]" />[% searchfield %] >- [% ELSE %] >- <label for="currency" class="required">Currency: </label> >- <input type="text" name="currency" id="currency" size="50" maxlength="50" onblur="toUC(this);" required="required" class="required" /> <span class="required">Required</span> >- [% END %] >- </li> >- <li> >- <label for="rate" class="required">Rate: </label> >- <input type="text" name="rate" id="rate" size="10" maxlength="10" value="[% rate %]" required="required" class="required" /> <span class="required">Required</span> >- </li> >- <li> >- <label for="symbol" class="required">Symbol: </label> >- <input type="text" name="symbol" id="symbol" size="5" maxlength="5" value="[% symbol %]" required="required" class="required" /> <span class="required">Required</span> >- </li> >- <li> >- <label for="isocode">ISO code: </label> >- <input type="text" name="isocode" id="isocode" size="5" maxlength="5" value="[% isocode %]" /> >- </li> >- <li> >- <span class="label">Last updated: </span>[% timestamp | $KohaDates %] >- </li> >- <li> >- <label for="active">Active: </label> >- [% IF ( active ) %] >- <input type="checkbox" id="active" name="active" value="1" checked="checked" /> >+ <legend> >+ [% IF currency %] >+ Modify currency > [% ELSE %] >- <input type="checkbox" id="active" name="active" value="1" /> >+ New currency > [% END %] >- <span id="hint" class="hint"></span> >- </li> >- >+ </legend> >+ <ol> >+ <li> >+ [% IF currency %] >+ <span class="label">Currency: </span> >+ <input type="hidden" name="is_a_modif" value="1" /> >+ <input type="hidden" name="currency_code" id="currency" value="[% currency.currency %]" />[% currency.currency %] >+ [% ELSE %] >+ <label for="currency_code" class="required">Currency: </label> >+ <input type="text" name="currency_code" id="currency_code" size="50" maxlength="50" onblur="toUC(this);" required="required" class="required" /> <span class="required">Required</span> >+ [% END %] >+ </li> >+ <li> >+ <label for="rate" class="required">Rate: </label> >+ <input type="text" name="rate" id="rate" size="10" maxlength="10" value="[% currency.rate %]" required="required" class="required" /> <span class="required">Required</span> >+ </li> >+ <li> >+ <label for="symbol" class="required">Symbol: </label> >+ <input type="text" name="symbol" id="symbol" size="5" maxlength="5" value="[% currency.symbol %]" required="required" class="required" /> <span class="required">Required</span> >+ </li> >+ <li> >+ <label for="isocode">ISO code: </label> >+ <input type="text" name="isocode" id="isocode" size="5" maxlength="5" value="[% currency.isocode %]" /> >+ </li> >+ <li> >+ <span class="label">Last updated: </span>[% currency.timestamp | $KohaDates %] >+ </li> >+ <li> >+ <label for="active">Active: </label> >+ [% IF currency.active %] >+ <input type="checkbox" id="active" name="active" value="1" checked="checked" /> >+ [% ELSE %] >+ <input type="checkbox" id="active" name="active" value="1" /> >+ [% END %] >+ <span id="hint" class="hint"></span> >+ </li> > </ol> >- </fieldset> >+ </fieldset> > > <fieldset class="action"> > <input type="submit" value="Submit" /> >@@ -124,53 +125,47 @@ > > [% END %] > >-[% IF ( delete_confirm ) %] >- [% IF ( totalgtzero ) %] >- <div class="dialog message"> >- <h3>Cannot delete currency <span class="ex">'[% searchfield %]'</span></h3> >- <p>This currency is used [% total %] times. Deletion not possible</p> >- <form action="[% script_name %]" method="post"> >+[% IF op =='delete_confirm' %] >+ [% IF nb_of_orders %] >+ <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> >+ <form action="/cgi-bin/koha/admin/currency.pl" method="post"> > <input type="submit" value="OK" class="approve" /> > </form> > </div> > [% ELSE %] > <div class="dialog alert"> >- <h3>Confirm deletion of currency <span class="ex">'[% searchfield %]'</span></h3> >+ <h3>Confirm deletion of currency <span class="ex">'[% currency.currency %]'</span></h3> > <table> > <tr><th>Currency</th> >- <td>[% searchfield %]</td> >+ <td>[% currency.currency %]</td> > </tr> > <tr><th>Rate</th> >- <td>[% rate %]</td> >+ <td>[% currency.rate %]</td> > </tr> > </table> >- <form action="[% script_name %]" method="post"> >+ <form action="/cgi-bin/koha/admin/currency.pl" method="post"> > <input type="hidden" name="op" value="delete_confirmed" /> >- <input type="hidden" name="searchfield" value="[% searchfield %]" /> >+ <input type="hidden" name="currency_code" value="[% currency.currency_code %]" /> > <input type="submit" class="approve" value="Delete this currency" /> > </form> >- <form action="[% script_name %]" method="post"> >+ <form action="/cgi-bin/koha/admin/currency.pl" method="post"> > <input type="submit" class="deny" value="No, do not delete" /> > </form> > </div> > [% END %] > [% END %] > >-[% IF ( delete_confirmed ) %] >-<div class="dialog message"><h3>Currency deleted</h3> >-<form action="[% script_name %]" method="post"> >- <input type="submit" class="approve" value="OK" /> >-</form></div> >-[% END %] >- >-[% IF ( else ) %] >+[% IF op == 'list' %] > > <h2>Currencies and exchange rates</h2> > >-[% IF ( loop ) %][% UNLESS ( activecurrency ) %]<div class="dialog alert"><h3>No active currency is defined</h3><p>Please edit one currency and mark it as active.</p></div>[% END %][% END %] >- >+ [% IF currencies and no_active_currency %] >+ <div class="dialog alert"><h3>No active currency is defined</h3><p>Please edit one currency and mark it as active.</p></div> >+ [% END %] > >- [% IF ( searchfield ) %] >+ [% IF searchfield %] > You searched for [% searchfield %]</span> > [% END %] > >@@ -187,33 +182,25 @@ > </tr> > </thead> > <tbody> >- [% FOREACH loo IN loop %] >+ [% FOREACH currency IN currencies %] > <tr> >- <td>[% loo.currency %]</td> >- <td>[% loo.rate %]</td> >- <td>[% loo.symbol |html %]</td> >- <td>[% loo.isocode |html %]</td> >- <td><span title="[% loo.timestamp %]">[% loo.timestamp | $KohaDates %]</span></td> >- <td style="color:green;">[% IF ( loo.active ) %]â[% END %]</td> >+ <td>[% currency.currency %]</td> >+ <td>[% currency.rate %]</td> >+ <td>[% currency.symbol |html %]</td> >+ <td>[% currency.isocode |html %]</td> >+ <td><span title="[% currency.timestamp %]">[% currency.timestamp | $KohaDates %]</span></td> >+ <td style="color:green;">[% IF currency.active %]â[% END %]</td> > <td> >- <a href="[% loo.script_name %]?op=add_form&searchfield=[% loo.currency %]">Edit</a> >+ <a href="/cgi-bin/koha/admin/currency.pl?op=add_form&currency_code=[% currency.currency %]">Edit</a> > | >- <a href="[% loo.script_name %]?op=delete_confirm&searchfield=[% loo.currency %]">Delete</a> >+ <a href="/cgi-bin/koha/admin/currency.pl?op=delete_confirm&currency_code=[% currency.currency %]">Delete</a> > </td> > </tr> > [% END %] > </tbody> > </table> >-<br /> >- >- [% IF ( offsetgtzero ) %] >- <a href="[% script_name %]?offset=[% prevpage %]"><< Previous</a> >- [% END %] >- >- [% IF ( ltcount ) %] >- <a href="[% script_name %]?offset=[% nextpage %]">Next >></a> >- [% END %] > >+ <br /> > <div class="hint"> > <p> > When importing MARC files via the staging tools, the tool will attempt to find and use the price of the currently active currency. >-- >2.1.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 15084
:
44162
|
44163
|
44164
|
44165
|
44166
|
44167
|
44168
|
45690
|
45691
|
45692
|
45693
|
45694
|
45695
|
45696
|
45759
|
45761
|
45807
|
45808
|
45809
|
45810
|
45811
|
45812
|
45813
|
45814
|
47213
|
47214
|
47215
|
47216
|
47217
|
47218
|
47219
|
47220
|
47221
|
48594
|
48595
|
48596
|
48597
|
48598
|
48599
|
48600
|
48601
|
48602
|
48603
|
48703
|
48747
|
48772
|
48783
|
48858