Bug 11371 - Add a new report : Orders by fund with more options

Add option show or no inactive budget and more options
 Use subroutine GetBudgetHierarchy for return all budgets
 Delete subroutine GetBudgetPeriodDescription and theire tests
 Use Price TT plugin
 Correct name of column and capitalization the first letter
 Add  checkbox for show inactive budgets, default the drop down list containt a active budget
 Not use [i] for inactive budgets, i add (inactive) at the end of inactive budget
 Add vendor note in the list of show attribute

 Test case:
    Go to Home > Reports > Orders by fund
    Select one or all budgets
    You can show the inactive budget, default the drop down list containt a active budget
    Choose output to screen ou csv file

Works as expected. QA tools OK with Bug 16104 applied.
Signed-off-by: Marc Véron <veron@veron.ch>

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
- changed 'Fund (budget):' back to 'Fund:', as the budget
  no longer shows in the pull down.
- Fixed number of tests in Budgets.t
- Removed &GetBudgetPeriodDescription

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Bouzid Fergani 2015-03-05 10:56:14 -05:00 committed by Kyle M Hall
parent ae40e5e4c6
commit 97e36c0264
8 changed files with 580 additions and 46 deletions

View File

@ -33,6 +33,9 @@ BEGIN {
&GetBudgetByOrderNumber
&GetBudgetByCode
&GetBudgets
&BudgetsByActivity
&GetBudgetsReport
&GetBudgetReport
&GetBudgetHierarchy
&AddBudget
&ModBudget
@ -71,7 +74,6 @@ BEGIN {
# ----------------------------BUDGETS.PM-----------------------------";
=head1 FUNCTIONS ABOUT BUDGETS
=cut
@ -451,7 +453,6 @@ sub GetBudgetPeriod {
return $data;
}
# -------------------------------------------------------------------
sub DelBudgetPeriod{
my ($budget_period_id) = @_;
my $dbh = C4::Context->dbh;
@ -595,6 +596,8 @@ sub DelBudget {
}
# -------------------------------------------------------------------
=head2 GetBudget
&GetBudget($budget_id);
@ -603,7 +606,6 @@ get a specific budget
=cut
# -------------------------------------------------------------------
sub GetBudget {
my ( $budget_id ) = @_;
my $dbh = C4::Context->dbh;
@ -618,6 +620,8 @@ sub GetBudget {
return $result;
}
# -------------------------------------------------------------------
=head2 GetBudgetByOrderNumber
&GetBudgetByOrderNumber($ordernumber);
@ -626,7 +630,6 @@ get a specific budget by order number
=cut
# -------------------------------------------------------------------
sub GetBudgetByOrderNumber {
my ( $ordernumber ) = @_;
my $dbh = C4::Context->dbh;
@ -642,6 +645,117 @@ sub GetBudgetByOrderNumber {
return $result;
}
=head2 GetBudgetReport
&GetBudgetReport( [$budget_id] );
Get all orders for a specific budget, without cancelled orders.
Returns an array of hashrefs.
=cut
# --------------------------------------------------------------------
sub GetBudgetReport {
my ( $budget_id ) = @_;
my $dbh = C4::Context->dbh;
my $query = '
SELECT o.*, b.budget_name
FROM aqbudgets b
INNER JOIN aqorders o
ON b.budget_id = o.budget_id
WHERE b.budget_id=?
AND (o.orderstatus != "cancelled")
ORDER BY b.budget_name';
my $sth = $dbh->prepare($query);
$sth->execute( $budget_id );
my @results = ();
while ( my $data = $sth->fetchrow_hashref ) {
push( @results, $data );
}
return @results;
}
=head2 GetBudgetsByActivity
&GetBudgetsByActivity( $budget_period_active );
Get all active or inactive budgets, depending of the value
of the parameter.
1 = active
0 = inactive
=cut
# --------------------------------------------------------------------
sub GetBudgetsByActivity {
my ( $budget_period_active ) = @_;
my $dbh = C4::Context->dbh;
my $query = "
SELECT DISTINCT b.*
FROM aqbudgetperiods bp
INNER JOIN aqbudgets b
ON bp.budget_period_id = b.budget_period_id
WHERE bp.budget_period_active=?
";
my $sth = $dbh->prepare($query);
$sth->execute( $budget_period_active );
my @results = ();
while ( my $data = $sth->fetchrow_hashref ) {
push( @results, $data );
}
return @results;
}
# --------------------------------------------------------------------
=head2 GetBudgetsReport
&GetBudgetsReport( [$activity] );
Get all but cancelled orders for all funds.
If the optionnal activity parameter is passed, returns orders for active/inactive budgets only.
active = 1
inactive = 0
Returns an array of hashrefs.
=cut
sub GetBudgetsReport {
my ($activity) = @_;
my $dbh = C4::Context->dbh;
my $query = '
SELECT o.*, b.budget_name
FROM aqbudgetperiods bp
INNER JOIN aqbudgets b
ON bp.budget_period_id = b.budget_period_id
INNER JOIN aqorders o
ON b.budget_id = o.budget_id ';
if($activity ne ''){
$query .= 'WHERE bp.budget_period_active=? ';
}
$query .= 'AND (o.orderstatus != "cancelled")
ORDER BY b.budget_name';
my $sth = $dbh->prepare($query);
if($activity ne ''){
$sth->execute($activity);
}
else{
$sth->execute;
}
my @results = ();
while ( my $data = $sth->fetchrow_hashref ) {
push( @results, $data );
}
return @results;
}
=head2 GetBudgetByCode
my $budget = &GetBudgetByCode($budget_code);

View File

@ -0,0 +1 @@
Fund[% sep %]"Basket num"[% sep %]"Basket name"[% sep %]"Authorised by"[% sep %]"Biblio number"[% sep %]Title[% sep %]Currency[% sep %]"Vendor price"[% sep %]RRP[% sep %]"Budgeted cost"[% sep %]Quantity[% sep %]"Total RRP"[% sep %]"Total cost"[% sep %]"Entry date"[% sep %]"Date received"[% sep %]"Internal note"[% sep %]"Vendor note"

View File

@ -0,0 +1,12 @@
[% INCLUDE csv_headers/reports/orders_by_budget.tt %]
[%- FOREACH row IN rows %]
[%- FOREACH field IN row;
field;
sep IF !loop.last;
END %]
[% END -%]
TOTAL
[%- FOREACH field IN totalrow;
field;
sep IF !loop.last;
END %]

View File

@ -0,0 +1,161 @@
[% USE Price %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Reports &rsaquo; Orders by fund</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body>
[% INCLUDE 'header.inc' %]
[% INCLUDE 'cat-search.inc' %]
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
[% INCLUDE 'datatables.inc' %]
<script type="text/javascript">
$(document).ready( function () {
$('#funds').DataTable($.extend(true, {}, dataTablesDefaults,{"sPaginationType": "full_numbers"}));
showallbudgets = $('#budgetfilter').html();
$('#budgetfilter .b_inactive').remove();
$('#showbudgets').click(function(){
if ($(this).is(":checked"))
$('#budgetfilter').html(showallbudgets);
else
$('#budgetfilter .b_inactive').remove();
});
} );
</script>
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/reports/reports-home.pl">Reports</a>[% IF ( get_orders ) %] &rsaquo; <a href="/cgi-bin/koha/reports/orders_by_fund.pl">Orders by fund</a> &rsaquo; Results[% ELSE %] &rsaquo; Orders by fund[% END %]</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
[% IF ( current_budget_name ) %]<h1>Orders for fund '[% current_budget_name %]'</h1>
[% ELSE %]<h1>Orders by fund</h1>
[% END %]
[% IF ( get_orders ) %]
<div class="results">
[% IF ( total ) %]
Orders found: [% total %]
[% ELSE %]
No order found
[% END %]
</div>
[% IF ( ordersloop ) %]<table id="funds">
<thead>
<tr>
<th>Fund</th>
<th>Basket</th>
<th>Basket name</th>
<th>Basket by</th>
<th>Title</th>
<th>Currency</th>
<th>List price</th>
<th>RRP</th>
<th>Budgeted cost</th>
<th>Quantity</th>
<th>Total RRP</th>
<th>Total cost</th>
<th>Entry date</th>
<th>Date deceived</th>
<th>Internal note</th>
<th>Vendor note</th>
</tr>
</thead>
<tbody>
[% FOREACH ordersloo IN ordersloop %]
[% UNLESS ( loop.odd ) %]<tr class="highlight">
[% ELSE %] <tr>
[% END %]
<td>[% ordersloo.budget_name |html %]</td>
<td><a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% ordersloo.basketno %]"> [% ordersloo.basketno |html %]</a></td>
<td>[% ordersloo.basketname |html %]</td>
<td>[% ordersloo.authorisedbyname %]</td>
<td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% ordersloo.biblionumber %]"> [% ordersloo.title |html %]</a></td>
<td>[% ordersloo.currency %]</td>
<td>[% ordersloo.listprice | $Price %]</td>
<td>[% ordersloo.rrp | $Price %]</td>
<td>[% ordersloo.ecost | $Price %]</td>
<td>[% ordersloo.quantity %]</td>
<td>[% ordersloo.total_rrp | $Price %]</td>
<td>[% ordersloo.total_ecost | $Price %]</td>
<td>[% ordersloo.entrydate %]</td>
<td>[% ordersloo.datereceived %]</td>
<td>[% ordersloo.order_internalnote |html %]</td>
<td>[% ordersloo.order_vendornote |html %]</td>
</tr>
[% END %]
</tbody>
<tfoot><tr><th>TOTAL</th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th></th><th>[% total_quantity %]</th><th>[% total_rrp | $Price %]</th><th>[% total_ecost | $Price %]</th><th></th><th></th><th></th></tr></tfoot>
</table>
[% END %]
[% ELSE %]
<form name="f" action="/cgi-bin/koha/reports/orders_by_fund.pl" method="post">
<fieldset class="rows">
<legend>Filters</legend>
<ol><li><label for="budgetfilter">Fund: </label>
<select name="budgetfilter" id="budgetfilter">
<option value="">All funds</option>
<option value="activebudgets">All active funds</option>
[% FOREACH budgetsloo IN budgetsloop %]
[% IF ( budgetsloo.selected ) %]
<option value="[% budgetsloo.value %]" selected="selected">
[% ELSE %]
[% bdgclass=budgetsloo.active? "": "b_inactive" %]
<option class="[% bdgclass %]" value="[% budgetsloo.value %]">
[% END %]
[% budgetsloo.description %] [% IF !budgetsloo.active %](inactive)[% END %]
</option>
[% END %]
</select>
<label for="showallbudgets" style="float:none;">&nbsp;Show inactive:</label>
<input type="checkbox" id="showbudgets" />
</li></ol>
</fieldset>
<fieldset class="rows">
<legend>Output</legend>
<ol><li><label for="outputscreen">To screen into the browser: </label><input type="radio" checked="checked" name="output" id="outputscreen" value="screen" /> </li>
<li><label for="outputfile">To a file:</label>
<input type="radio" name="output" value="file" id="outputfile" />
<label class="inline" for="basename">Named: </label>
<input type="text" name="basename" id="basename" value="Export" />
<label class="inline" for="MIME">Into an application </label>
<select id='MIME' name='MIME' size='1'>
[% FOREACH outputFormatloo IN outputFormatloop %]
<option value="[% outputFormatloo %]">[% outputFormatloo %]</option>
[% END %]
</select>
<select id='sep' name='sep' size='1'>
[% FOREACH delimiterloo IN delimiterloop %]
[% IF delimiterloo == delimiterPreference %]
<option value="[% delimiterloo %]">[% delimiterloo %]</option>
[% END %]
[% END %]
[% FOREACH delimiterloo IN delimiterloop %]
[% IF delimiterloo != delimiterPreference %]
<option value="[% delimiterloo %]">[% delimiterloo %]</option>
[% END %]
[% END %]
</select>
</li></ol>
</fieldset>
<fieldset class="action">
<input type="submit" value="Submit" />
<input type="hidden" name="get_orders" value="1" /></fieldset>
</form>
[% END %]
</div>
</div>
<div class="yui-b">
[% INCLUDE 'reports-menu.inc' %]
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]

View File

@ -13,30 +13,30 @@
<div id="bd">
<div id="yui-main">
<div class="yui-g">
<h1>Reports</h1>
<div class="yui-g">
<h1>Reports</h1>
<div class="yui-u first"><h2>Guided reports</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/guided_reports.pl">Guided reports wizard</a></li>
[% IF ( CAN_user_reports_create_reports ) %]<li><a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Build%20new">Build new</a></li>[% END %]
[% IF ( CAN_user_reports_execute_reports ) %]<li><a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Use saved</a></li>[% END %]
[% IF ( CAN_user_reports_create_reports ) %]<li><a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Create%20report%20from%20SQL">Create from SQL</a></li>[% END %]
</ul>
<h5>Reports dictionary</h5>
<ul>
<li><a href="/cgi-bin/koha/reports/dictionary.pl?phase=View%20Dictionary">View dictionary</a></li>
</ul>
<ul>
<li><a href="/cgi-bin/koha/reports/guided_reports.pl">Guided reports wizard</a></li>
[% IF ( CAN_user_reports_create_reports ) %]<li><a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Build%20new">Build new</a></li>[% END %]
[% IF ( CAN_user_reports_execute_reports ) %]<li><a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Use%20saved">Use saved</a></li>[% END %]
[% IF ( CAN_user_reports_create_reports ) %]<li><a href="/cgi-bin/koha/reports/guided_reports.pl?phase=Create%20report%20from%20SQL">Create from SQL</a></li>[% END %]
</ul>
<h2>Statistics wizards</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/acquisitions_stats.pl">Acquisitions</a></li>
<li><a href="/cgi-bin/koha/reports/borrowers_stats.pl">Patrons</a></li>
<li><a href="/cgi-bin/koha/reports/catalogue_stats.pl">Catalog</a></li>
<li><a href="/cgi-bin/koha/reports/issues_stats.pl">Circulation</a></li>
<li><a href="/cgi-bin/koha/reports/serials_stats.pl">Serials</a></li>
<li><a href="/cgi-bin/koha/reports/reserves_stats.pl">Holds</a></li>
</ul>
<h5>Reports dictionary</h5>
<ul>
<li><a href="/cgi-bin/koha/reports/dictionary.pl?phase=View%20Dictionary">View dictionary</a></li>
</ul>
<h2>Statistics wizards</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/acquisitions_stats.pl">Acquisitions</a></li>
<li><a href="/cgi-bin/koha/reports/borrowers_stats.pl">Patrons</a></li>
<li><a href="/cgi-bin/koha/reports/catalogue_stats.pl">Catalog</a></li>
<li><a href="/cgi-bin/koha/reports/issues_stats.pl">Circulation</a></li>
<li><a href="/cgi-bin/koha/reports/serials_stats.pl">Serials</a></li>
<li><a href="/cgi-bin/koha/reports/reserves_stats.pl">Holds</a></li>
</ul>
[% IF UseKohaPlugins %]
<h2>Report Plugins</h2>
@ -51,23 +51,24 @@
<ul>
<li><a href="/cgi-bin/koha/reports/bor_issues_top.pl">Patrons with the most checkouts</a></li>
<li><a href="/cgi-bin/koha/reports/cat_issues_top.pl">Most-circulated items</a></li>
</ul>
<h2>Inactive</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/borrowers_out.pl">Patrons who haven't checked out</a></li>
<li><a href="/cgi-bin/koha/reports/catalogue_out.pl">Items with no checkouts</a></li>
</ul>
<h2>Other</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/itemslost.pl">Items lost</a></li>
<li><a href="/cgi-bin/koha/reports/manager.pl?report_name=itemtypes">Catalog by item type</a></li>
<li><a href="/cgi-bin/koha/reports/issues_avg_stats.pl">Average loan time</a></li>
<li><a href="http://schema.koha-community.org/" target="blank">Koha database schema</a></li>
<li><a href="http://wiki.koha-community.org/wiki/SQL_Reports_Library" target="blank">Koha reports library</a></li>
<!--<li><a href="/cgi-bin/koha/reports/stats.screen.pl">Till reconciliation</a></li> -->
</ul></div>
</ul>
<h2>Inactive</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/borrowers_out.pl">Patrons who haven't checked out</a></li>
<li><a href="/cgi-bin/koha/reports/catalogue_out.pl">Items with no checkouts</a></li>
</ul>
<h2>Other</h2>
<ul>
<li><a href="/cgi-bin/koha/reports/itemslost.pl">Items lost</a></li>
<li><a href="/cgi-bin/koha/reports/orders_by_fund.pl">Orders by fund</a></li>
<li><a href="/cgi-bin/koha/reports/manager.pl?report_name=itemtypes">Catalog by itemtype</a></li>
<li><a href="/cgi-bin/koha/reports/issues_avg_stats.pl">Average loan time</a></li>
<li><a href="http://schema.koha-community.org/" target="blank">Koha database schema</a></li>
<li><a href="http://wiki.koha-community.org/wiki/SQL_Reports_Library" target="blank">Koha reports library</a></li>
<!--<li><a href="/cgi-bin/koha/reports/stats.screen.pl">Till reconciliation</a></li> -->
</ul></div>
</div>

216
reports/orders_by_fund.pl Executable file
View File

@ -0,0 +1,216 @@
#!/usr/bin/perl
# This file is part of Koha.
#
# Author : Frédérick Capovilla, 2011 - SYS-TECH
# Modified by : Élyse Morin, 2012 - Libéo
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
=head1 orders_by_budget
This script displays all orders associated to a selected budget.
=cut
use strict;
use warnings;
use Modern::Perl;
use CGI;
use C4::Auth;
use C4::Output;
use C4::Budgets;
use C4::Biblio;
use C4::Reports;
use C4::Acquisition; #GetBasket()
my $query = new CGI;
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{
template_name => "reports/orders_by_budget.tt",
query => $query,
type => "intranet",
authnotrequired => 0,
flagsrequired => { reports => '*' },
debug => 1,
}
);
my $params = $query->Vars;
my $get_orders = $params->{'get_orders'};
if ( $get_orders ) {
my $budgetfilter = $params->{'budgetfilter'} || undef;
my $total_quantity = 0;
my $total_rrp = 0;
my $total_ecost = 0;
my %budget_name;
# Fetch the orders
my @orders;
unless($budgetfilter) {
# If no budget filter was selected, get the orders of all budgets
my @budgets = C4::Budgets::GetBudgetsReport();
foreach my $budget (@budgets) {
push(@orders, $budget);
$budget_name{$budget->{'budget_id'}} = $budget->{'budget_name'};
}
}
else {
if ($budgetfilter eq 'activebudgets') {
# If all active budgets's option was selected, get the orders of all active budgets
my @active_budgets = C4::Budgets::GetBudgetsReport(1);
foreach my $active_budget (@active_budgets)
{
push(@orders, $active_budget);
$budget_name{$active_budget->{'budget_id'}} = $active_budget->{'budget_name'};
}
}
else {
# A budget filter was selected, only get the orders for the selected budget
my @filtered_budgets = C4::Budgets::GetBudgetReport($budgetfilter);
foreach my $budget (@filtered_budgets)
{
push(@orders, $budget);
$budget_name{$budget->{'budget_id'}} = $budget->{'budget_name'};
}
if ($filtered_budgets[0]) {
$template->param(
current_budget_name => $filtered_budgets[0]->{'budget_name'},
);
}
}
}
# Format the order's informations
foreach my $order (@orders) {
# Get the title of the ordered item
my $biblio = C4::Biblio::GetBiblio($order->{'biblionumber'});
my $basket = C4::Acquisition::GetBasket($order->{'basketno'});
$order->{'basketname'} = $basket->{'basketname'};
$order->{'authorisedbyname'} = $basket->{'authorisedbyname'};
$order->{'title'} = $biblio->{'title'} || $order->{'biblionumber'};
$order->{'total_rrp'} = $order->{'quantity'} * $order->{'rrp'};
$order->{'total_ecost'} = $order->{'quantity'} * $order->{'ecost'};
# Format the dates and currencies correctly
$order->{'datereceived'} = Koha::DateUtils::output_pref(Koha::DateUtils::dt_from_string($order->{'datereceived'}));
$order->{'entrydate'} = Koha::DateUtils::output_pref(Koha::DateUtils::dt_from_string($order->{'entrydate'}));
$total_quantity += $order->{'quantity'};
$total_rrp += $order->{'total_rrp'};
$total_ecost += $order->{'total_ecost'};
# Get the budget's name
$order->{'budget_name'} = $budget_name{$order->{'budget_id'}};
}
# If we are outputting to screen, output to the template.
if($params->{"output"} eq 'screen') {
$template->param(
total => scalar @orders,
ordersloop => \@orders,
get_orders => $get_orders,
total_quantity => $total_quantity,
total_rrp => $total_rrp,
total_ecost => $total_ecost,
);
}
# If we are outputting to a file, create it and exit.
else {
my $basename = $params->{"basename"};
my $sep = $params->{"sep"};
$sep = "\t" if ($sep eq 'tabulation');
print $query->header(
-type => 'application/vnd.sun.xml.calc',
-encoding => 'utf-8',
-attachment => "$basename.csv",
-name => "$basename.csv"
);
#binmode STDOUT, ":encoding(UTF-8)";
# Surrounds a string with double-quotes and escape the double-quotes inside
sub _surround {
my $string = shift || "";
$string =~ s/"/""/g;
return "\"$string\"";
}
my @rows;
foreach my $order (@orders) {
my @row;
push(@row, _surround($order->{'budget_name'}));
push(@row, _surround($order->{'basketno'}));
push(@row, _surround($order->{'basketname'}));
push(@row, _surround($order->{'authorisedbyname'}));
push(@row, _surround($order->{'biblionumber'}));
push(@row, _surround($order->{'title'}));
push(@row, _surround($order->{'currency'}));
push(@row, _surround($order->{'listprice'}));
push(@row, _surround($order->{'rrp'}));
push(@row, _surround($order->{'ecost'}));
push(@row, _surround($order->{'quantity'}));
push(@row, _surround($order->{'total_rrp'}));
push(@row, _surround($order->{'total_ecost'}));
push(@row, _surround($order->{'entrydate'}));
push(@row, _surround($order->{'datereceived'}));
push(@row, _surround($order->{'order_internalnote'}));
push(@row, _surround($order->{'order_vendornote'}));
push(@rows, \@row);
}
my @totalrow;
for(1..9){push(@totalrow, "")};
push(@totalrow, _surround($total_quantity));
push(@totalrow, _surround($total_rrp));
push(@totalrow, _surround($total_ecost));
my $csvTemplate = C4::Templates::gettemplate('reports/csv/orders_by_budget.tt', 'intranet', $query);
$csvTemplate->param(sep => $sep, rows => \@rows, totalrow => \@totalrow);
print $csvTemplate->output;
exit(0);
}
}
else {
# Set file export choices
my @outputFormats = ('CSV');
my @CSVdelimiters =(',','#',qw(; tabulation \\ /));
# getting all budgets
my $budgets = GetBudgetHierarchy;
my $budgetloop = [];
foreach my $budget (@{$budgets}) {
push @{$budgetloop},{
value => $budget->{budget_id},
description => $budget->{budget_name},
period => $budget->{budget_period_description},
active => $budget->{budget_period_active},
};
}
@{$budgetloop} =sort { uc( $a->{description}) cmp uc( $b->{description}) } @{$budgetloop};
$template->param( budgetsloop => \@{$budgetloop},
outputFormatloop => \@outputFormats,
delimiterloop => \@CSVdelimiters,
delimiterPreference => C4::Context->preference('delimiter')
);
}
# writing the template
output_html_with_http_headers $query, $cookie, $template->output;

View File

@ -19,7 +19,7 @@ use Modern::Perl;
use POSIX qw(strftime);
use Test::More tests => 87;
use Test::More tests => 91;
use Koha::Database;
BEGIN {
@ -147,10 +147,18 @@ ok(
);
ok( $basket = GetBasket($basketno), "GetBasket($basketno) returns $basket" );
my $bpid=AddBudgetPeriod({
budget_period_startdate => '2008-01-01'
, budget_period_enddate => '2008-12-31'
, budget_period_active => 1
, budget_period_description => "MAPERI"
});
my $budgetid = C4::Budgets::AddBudget(
{
budget_code => "budget_code_test_getordersbybib",
budget_name => "budget_name_test_getordersbybib",
budget_period_id => $bpid,
}
);
my $budget = C4::Budgets::GetBudget($budgetid);
@ -934,3 +942,15 @@ ok((not defined GetBiblio($order4->{biblionumber})), "biblio does not exist anym
# End of tests for DelOrder
$schema->storage->txn_rollback();
# Budget reports
#my @report = GetBudgetReport(1);
#ok(@report >= 1, "GetBudgetReport OK");
my $all_count = scalar GetBudgetsReport();
ok($all_count >= 1, "GetBudgetReport OK");
my $active_count = scalar GetBudgetsReport(1);
ok($active_count >= 1 , "GetBudgetsReport(1) OK");
ok($all_count == scalar GetBudgetsReport(), "GetBudgetReport returns inactive budget period acquisitions.");
ok($active_count >= scalar GetBudgetsReport(1), "GetBudgetReport doesn't return inactive budget period acquisitions.");

View File

@ -1,6 +1,6 @@
#!/usr/bin/perl
use Modern::Perl;
use Test::More tests => 130;
use Test::More tests => 133;
BEGIN {
use_ok('C4::Budgets')
}
@ -468,6 +468,15 @@ for my $budget (@$budget_hierarchy_cloned) {
is( $number_of_budgets_not_reset, 0,
'CloneBudgetPeriod has reset all budgets (funds)' );
#GetBudgetsByActivity
my $result=C4::Budgets::GetBudgetsByActivity(1);
isnt( $result, undef ,'GetBudgetsByActivity return correct value with parameter 1');
$result=C4::Budgets::GetBudgetsByActivity(0);
isnt( $result, undef ,'GetBudgetsByActivity return correct value with parameter 0');
$result=C4::Budgets::GetBudgetsByActivity();
is( $result, 0 , 'GetBudgetsByActivity return 0 with none parameter or other 0 or 1' );
DelBudget($budget_id);
DelBudgetPeriod($bpid);
# CloneBudgetPeriod with param amount_change_*
$budget_period_id_cloned = C4::Budgets::CloneBudgetPeriod(