Koha/koha-tmpl/intranet-tmpl/prog/en/modules/admin/aqbudgetperiods.tt
Jonathan Druart 48bf9b1d91
Bug 30718: Use flatpickr's altInput
The idea rely on the KohaDates TT plugin for the date formatting. We
should not have any output_pref calls in pl or pm (there are some
exceptions, for ILSDI for instance).

Also flatpickr will deal with the places where dates are inputed. We
will pass the raw SQL value (what we call 'iso' in Koha::DateUtils), and
the controller will receive the same value, no need to additional
conversion.
Note that DBIC has the capability to auto-deflate DateTime objects,
which makes things way easier. We can either pass the value we receive
from the controller, or pass a DT object to our methods.

Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2022-08-19 08:26:31 -03:00

660 lines
27 KiB
Text

[% USE raw %]
[% USE Asset %]
[% USE KohaDates %]
[% USE Price %]
[% SET footerjs = 1 %]
[%- BLOCK action_menu %]
<div class="btn-group dropup">
<a class="btn btn-default btn-xs dropdown-toggle" id="budgetmenu_[% block_budget.budget_period_id | html %]" role="button" data-toggle="dropdown" href="#">
Actions <b class="caret"></b>
</a>
<ul class="dropdown-menu pull-right" role="menu" aria-labelledby="budgetmenu_[% block_budget.budget_period_id | html %]">
<li>
<a href="[% script_name | url %]?op=add_form&amp;budget_period_id=[% block_budget.budget_period_id | uri %]"><i class="fa fa-pencil"></i> Edit</a>
</li>
[% IF block_budget.count %]
<li class="disabled">
<a data-toggle="tooltip" data-placement="left" title="[% block_budget.count | html %] fund(s) are attached to this budget. You must delete all attached funds before deleting this budget." href="#"><i class="fa fa-trash"></i> Delete</a>
</li>
[% ELSE %]
<li>
<a href="[% script_name | url %]?op=delete_confirm&amp;budget_period_id=[% block_budget.budget_period_id | uri %]"><i class="fa fa-trash"></i> Delete</a>
</li>
[% END %]
<li>
<a href="[% script_name | url %]?op=duplicate_form&amp;budget_period_id=[% block_budget.budget_period_id | uri %]"><i class="fa fa-copy"></i> Duplicate</a>
</li>
<li>
<a href="[% script_name | url %]?op=close_form&amp;budget_period_id=[% block_budget.budget_period_id | uri %]"><i class="fa fa-times-circle"></i> Close</a>
</li>
<li>
<a href="/cgi-bin/koha/admin/aqbudgets.pl?op=add_form&amp;budget_period_id=[% block_budget.budget_period_id | uri %]"><i class="fa fa-plus"></i> Add fund</a>
</li>
</ul>
</div>
[% END -%]
[% INCLUDE 'doc-head-open.inc' %]
[% INCLUDE 'doc-head-close.inc' %]
[% IF close_form %]
[% Asset.css("lib/jquery/plugins/treetable/stylesheets/jquery.treetable.css") | $raw %]
[% END %]
<title>
[% IF ( add_form ) %]
[% IF ( budget_period_id ) %]
Modify budget [% budget_period_description | html %]
[% ELSE %]
Add budget
[% END %] &rsaquo; [% END %]
[% IF ( duplicate_form ) %]
Duplicate budget &rsaquo; [% END %]
[% IF ( delete_confirm ) %]
Delete budget '[% budget_period_description | html %]'? &rsaquo; [% END %]
[% IF ( delete_confirmed ) %]
Data deleted &rsaquo; [% END %]
[% IF close_form %]
Close budget [% budget_period_description | html %] &rsaquo; [% END %]
[% IF closed %]
Budget [% budget_period_description | html %] closed &rsaquo; [% END %]
Budgets &rsaquo; Administration &rsaquo; Koha
</title>
</head>
<body id="admin_aqbudgetperiods" class="admin">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'budgets-admin-search.inc' %]
<!-- ################################################################################# -->
<!-- BREADCRUMBS -->
<!-- ################################################################################# -->
<nav id="breadcrumbs" aria-label="Breadcrumb" class="breadcrumb">
<ol>
<li>
<a href="/cgi-bin/koha/mainpage.pl">Home</a>
</li>
<li>
<a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a>
</li>
[% IF ( add_form ) %]
<li>
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a>
</li>
[% IF ( budget_period_id ) %]
<li>
<a href="#" aria-current="page">
Modify budget '[% budget_period_description | html %]'
</a>
</li>
[% ELSE %]
<li>
<a href="#" aria-current="page">
Add budget
</a>
</li>
[% END %]
[% END %]
[% IF ( delete_confirm ) %]
<li>
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a>
</li>
[% IF ( total || funds_exist ) %]
<li>
<a href="#" aria-current="page">
Cannot delete budget '[% budget_period_description | html %]'
</a>
</li>
[% ELSE %]
<li>
<a href="#" aria-current="page">
Delete budget '[% budget_period_description | html %]'?
</a>
</li>
[% END %]
[% END %]
[% IF ( duplicate_form ) %]
<li>
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a>
</li>
<li>
<a href="#" aria-current="page">
Duplicate budget
</a>
</li>
[% END %]
[% IF close_form %]
<li>
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a>
</li>
<li>
<a href="#" aria-current="page">
Close budget [% budget_period_description | html %]
</a>
</li>
[% END %]
[% IF closed %]
<li>
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a>
</li>
<li>
<a href="#" aria-current="page">
Budget [% budget_period_description | html %] closed
</a>
</li>
[% END %]
[% IF ( else ) %]
<li>
<a href="#" aria-current="page">
Budgets administration
</a>
</li>
[% END %]
</ol>
</nav>
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
[% UNLESS close_form OR closed OR duplicate_form %]
[% INCLUDE 'budgets-admin-toolbar.inc' %]
[% END %]
[% IF ( duplicate_form ) %]
<h1>Duplicate budget</h1>
<form action="/cgi-bin/koha/admin/aqbudgetperiods.pl" id="add_modify_budget" name="f" method="post">
<fieldset class="rows">
<input type="hidden" name="op" value="duplicate_budget" />
<input type="hidden" name="budget_period_id" value="[% budget_period_id | html %]" />
<ol>
<li>
<label class="required" for="from">Start date: </label>
<input type="text" size="10" id="from" name="budget_period_startdate" value="[% budget_period_startdate | html %]" class="flatpickr" data-date_to="to" />
<span class="required">Required</span>
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
<li>
<label class="required" for="to">End date: </label>
<input type="text" size="10" id="to" name="budget_period_enddate" value="[% budget_period_enddate | html %]" class="flatpickr" />
<span class="required">Required</span>
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
<li>
<label class="required" for="budget_period_description">Description</label>
<input type="text" id="budget_period_description" name="budget_period_description" value="[% budgetperiod.budget_period_description | html %]" />
<span class="required">Required</span>
</li>
<li>
<label for="amount_change_percentage">Change amounts by</label>
<input type="text" id="amount_change_percentage" name="amount_change_percentage" /> %
<div class="hint">(can be positive or negative)</div>
</li>
<li>
<label for="amount_change_round_increment">If amounts changed, round to a multiple of</label>
<input type="text" id="amount_change_round_increment" name="amount_change_round_increment" />
<div class="hint">(amounts will be rounded down)</div>
</li>
<li>
<label for="mark_as_inactive">Mark the original budget as inactive</label>
<input type="checkbox" id="mark_as_inactive" name="mark_original_budget_as_inactive" />
</li>
<li>
<label for="reset_all_budgets">Set all funds to zero</label>
<input type="checkbox" id="reset_all_budgets" name="reset_all_budgets" />
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="submit" value="Save" />
<a class="cancel" href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id | html %]">Cancel</a>
</fieldset>
</form>
[% END %]
[% IF ( add_form ) %]
<!-- add or modify a budget period -->
[% IF ( budget_period_id ) %]
<h1>Modify budget <em>[% budget_period_description | html %]</em></h1>
[% ELSE %]
<h1>Add budget</h1>
[% END %]
<form action="/cgi-bin/koha/admin/aqbudgetperiods.pl" id="add_modify_budget" name="f" method="post">
<fieldset class="rows">
<!-- ################################################################################# -->
<!-- display information about the budget period that must be added or modified -->
<!-- ################################################################################# -->
<input type="hidden" name="op" value="add_validate" />
<input type="hidden" name="budget_period_id" value="[% budget_period_id | html %]" />
<ol>
<li>
<label class="required" for="from">Start date: </label>
<input type="text" size="10" id="from" name="budget_period_startdate" value="[% budget_period_startdate | html %]" class="flatpickr" data-date_to="to" />
<span class="required">Required</span>
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
<li>
<label class="required" for="to">End date: </label>
<input type="text" size="10" id="to" name="budget_period_enddate" value="[% budget_period_enddate | html %]" class="flatpickr" />
<span class="required">Required</span>
<div class="hint">[% INCLUDE 'date-format.inc' %]</div>
</li>
<li>
<!-- DESCRIPTION -->
<!-- ############################## -->
<label class="required" for="budget_period_description">Description: </label>
<input type="text" id="budget_period_description" name="budget_period_description"
size="48" maxlength="80" value="[% budget_period_description | html %]" />
<span class="required">Required</span>
</li>
<li>
<!-- TOTAL -->
<!-- ############################## -->
<label for="budget_period_total">Total amount: </label>
<input type="text" id="budget_period_total" name="budget_period_total"
size="10" maxlength="80" value="[% budget_period_total | $Price on_editing => 1 %]" />
</li>
<li>
<!-- ACTIVE -->
<!-- ############################## -->
<label for="budget_period_active">Make budget active: </label>
[% IF ( budget_period_active ) %]<input type="checkbox" checked="checked" id="budget_period_active" name="budget_period_active" value="1" />[% ELSE %] <input type="checkbox" id="budget_period_active" name="budget_period_active" value="1"/> [% END %]
</li>
<li>
<!-- LOCK -->
<!-- ############################## -->
<label for="budget_period_locked">Lock budget: </label>
[% IF ( budget_period_locked ) %]<input type="checkbox" checked="checked" id="budget_period_locked" name="budget_period_locked" value="1" />[% ELSE %] <input type="checkbox" id="budget_period_locked" name="budget_period_locked" value="1"/> [% END %]
</li>
</ol>
</fieldset>
<fieldset class="action">
<!-- "save changes" button -->
<!-- ###################################### -->
<input type="submit" value="Save" />
[% IF ( budget_period_id ) %]
<a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id | uri %]" class="cancel">Cancel</a>
[% ELSE %]
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl" class="cancel">Cancel</a>
[% END %]
</fieldset>
</form>
[% END %]
<!-- ####################################################################### -->
<!-- delete a budget period -->
<!-- ####################################################################### -->
[% IF ( delete_confirm ) %]
[% IF ( total ) %]
<div class="dialog message">
<h1>Cannot delete budget</h1>
<p><strong>This record is used [% total | html %] times</strong>
. Deletion is not possible.</p>
[% ELSIF ( funds_exist ) %]
<div class="dialog message">
<h1>Cannot delete budget</h1>
<p>This budget has funds attached. You must delete all attached funds before you can delete this budget.</p>
[% ELSE %]
<div class="dialog alert">
<h1>Delete budget '[% budget_period_description | html %]'?</h1>
<!-- ############################################################# -->
<!-- "delete" and "cancel" buttons -->
<!-- ############################################################# -->
<form action="[% script_name | html %]" method="post">
<input type="hidden" name="op" value="delete_confirmed" />
<input type="hidden" name="budget_period_id" value="[% budget_period_id | html %]" />
<button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete</button>
</form>
<form action="[% script_name | html %]" method="post">
<button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
</form>
[% END %]
</div>
[% END %]
[% IF close_form %]
<h1>Close budget [% budget_period_description | html %]</h1>
[% IF budget_periods.size == 0 %]
<span>You cannot move funds of this budget, there is no active budget.
Please create a new active budget and retry.</span>
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Back</a>
[% ELSIF number_of_unreceived_orders == 0 %]
<span>There are no unreceived orders for this budget.</span>
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Back</a>
[% ELSE %]
<h3>The unreceived orders from the following funds will be moved</h3>
Fund list of budget <a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id | uri %]">[% budget_period_description | html %]</a>:
<table id="budgeth">
<thead>
<tr>
<th>Fund ID</th>
<th>Fund code</th>
<th>Fund name</th>
<th>Unreceived orders</th>
</tr>
</thead>
<tbody>
[% FOREACH budget IN budgets_to_move %]
<tr>
<td>[% budget.budget_id | html %]</td>
<td>[% budget.budget_code | html %]</td>
<td>[% budget.budget_name | html %]</td>
<td>[% budget.unreceived_orders.size | html %]</td>
</tr>
[% END %]
</tbody>
</table>
<form action="/cgi-bin/koha/admin/aqbudgetperiods.pl" name="f" method="post" id="move_form">
<fieldset class="rows">
<ol>
<li>
<label class="required" for="to_budget_period_id">Select a budget</label>
<select name="to_budget_period_id" id="to_budget_period_id" required="required">
<option value=""></option>
[% FOR budget_period IN budget_periods %]
<option value="[% budget_period.budget_period_id | html %]">[% budget_period.budget_period_description | html %]</option>
[% END %]
</select>
</li>
<li>
<label for="move_remaining_unspent">Move remaining unspent funds</label>
<input type="checkbox" name="move_remaining_unspent" id="move_remaining_unspent" />
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="hidden" name="op" value="close_confirmed" />
<input type="hidden" name="budget_period_id" value="[% budget_period_id | html %]" />
<input type="submit" value="Move unreceived orders" />
<a class="cancel" href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Cancel</a>
</fieldset>
</form>
[% END %]
[% ELSIF closed %]
<h1>Budget [% budget_period_description | html %] closed</h1>
<h3>Report after moving unreceived orders from budget [% from_budget_period.budget_period_description | html %] ([% from_budget_period.budget_period_startdate | $KohaDates %] - [% from_budget_period.budget_period_enddate | $KohaDates %]) to [% to_budget_period.budget_period_description | html %] ([% to_budget_period.budget_period_startdate | $KohaDates %] - [% to_budget_period.budget_period_enddate | $KohaDates%])</h3>
<table id="closed_report">
<thead>
<tr>
<td>Budget id</td>
<td>Basket</td>
<td>Ordernumber</td>
<td>Details</td>
</tr>
</thead>
<tbody>
[% FOR r IN report %]
[% IF r.moved %]
[% IF r.orders_moved.size > 0 %]
[% FOR order IN r.orders_moved %]
<tr>
<td>[% r.budget.budget_name | html %] (id=[% r.budget.budget_id | html %]) Amount=[% r.budget.budget_amount | $Price %][% IF r.unspent_moved %] ([% r.unspent_moved | $Price %] remaining has been moved)[% END %]</td>
<td>[% order.basketname | html %]</td>
<td>[% order.ordernumber | html %]</td>
<td>Moved!</td>
</tr>
[% END %]
[% ELSE %]
<tr>
<td>[% r.budget.budget_name | html %] (id=[% r.budget.budget_id | html %])</td>
<td></td>
<td></td>
<td>There were no unreceived orders for this fund.</td>
</tr>
[% END %]
[% ELSE %]
[% IF r.error == 'budget_code_not_exists' %]
<tr>
<td>[% r.budget.budget_id | html %] [% r.budget.budget_amount | $Price %][% IF r.unspent_moved %] ([% r.unspent_moved | $Price %] remaining has been moved)[% END %]</td>
<td></td>
<td></td>
<td>This fund code does not exist in the destination budget.</td>
</tr>
[% END %]
[% END %]
</tr>
[% END %]
</tbody>
</table>
<a class="cancel" href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Back</a>
[% END %]
<!-- DEFAULT display budget periods list -->
[% IF ( else ) %]
<h1>Budgets administration</h1>
[% IF ( failed_delete_funds_exist ) %]
<div class="dialog message">Failed to delete budget because funds exist.</div>
[% END %]
[% INCLUDE 'budgets-active-currency.inc' %]
<div id="budgetsTabs" class="toptabs">
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active">
<a href="#active" aria-controls="active" role="tab" data-toggle="tab">Active budgets</a>
</li>
<li role="presentation">
<a href="#inactive" aria-controls="inactive" role="tab" data-toggle="tab">Inactive budgets</a>
</li>
</ul>
<div class="tab-content">
<div id="active" role="tabpanel" class="tab-pane active">
[% IF ( period_active_loop ) %]
<table id="activeperiodst">
<thead>
<tr>
<th>Budget name</th>
<th>Start date</th>
<th>End date</th>
<th>Locked</th>
<th>Total</th>
<th class="noExport">Actions</th>
</tr>
</thead>
<tbody>
[% FOREACH period_active IN period_active_loop %]
<tr>
<td><a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% period_active.budget_period_id | uri %]" title="View funds for [% period_active.budget_period_description | html %]">[% period_active.budget_period_description | html %]</a></td>
<td data-order="[% period_active.budget_period_startdate | html %]">[% period_active.budget_period_startdate | $KohaDates %]</td>
<td data-order="[% period_active.budget_period_enddate | html %]">[% period_active.budget_period_enddate | $KohaDates %]</td>
<td>
[% IF ( period_active.budget_period_locked ) %]
<i class="fa fa-lock"></i> Locked</span>
[% END %]
</td>
<td class="data">[% period_active.budget_period_total | $Price %]</td>
<td>
[% PROCESS action_menu block_budget=period_active %]
</td>
</tr>
[% END %]
</tbody>
</table>
[% ELSE %]
No active budgets
[% END %]
</div>
<div id="inactive" role="tabpanel" class="tab-pane">
[% IF ( period_inactive_loop ) %]
<table id="inactiveperiodst">
<thead>
<tr>
<th>Budget name</th>
<th>Start date</th>
<th>End date</th>
<th>Locked</th>
<th>Total</th>
<th class="noExport">Actions</th>
</tr>
</thead>
<tbody>
[% FOREACH period_loo IN period_inactive_loop %]
<tr>
<td><a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% period_loo.budget_period_id | uri %]" title="View funds for [% period_loo.budget_period_description | html %]">[% period_loo.budget_period_description | html %]</a></td>
<td data-order="[% period_loo.budget_period_startdate | html %]">[% period_loo.budget_period_startdate | $KohaDates %]</td>
<td data-order="[% period_loo.budget_period_enddate | html %]">[% period_loo.budget_period_enddate | $KohaDates %]</td>
<td>[% IF ( period_loo.budget_period_locked ) %]<i class="fa fa-lock"></i> Locked[% END %]</td>
<td class="data">[% period_loo.budget_period_total | $Price %]</td>
<td>
[% PROCESS action_menu block_budget=period_loo %]
</td>
</tr>
[% END %]
</tbody>
</table>
[% ELSE %]
No inactive budgets
[% END %]
</div>
</div> <!-- /.tab-content -->
</div>
[% END %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
[% INCLUDE 'acquisitions-menu.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% MACRO jsinclude BLOCK %]
[% INCLUDE 'calendar.inc' %]
[% INCLUDE 'datatables.inc' %]
[% IF close_form %]
[% Asset.js("lib/jquery/plugins/treetable/jquery.treetable.js") | $raw %]
[% END %]
[% Asset.js("js/acq.js") | $raw %]
<script>
$(document).ready(function() {
[% IF ( tab ) %]
$("#budgetsTabs li:eq([% tab | html %]) a").tab("show");
[% END %]
$("#activeperiodst,#inactiveperiodst").dataTable($.extend(true, {}, dataTablesDefaults, {
"aoColumnDefs": [
{ "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
],
"sPaginationType": "full",
'bAutoWidth': false
} ) );
[% IF close_form %]
$("#budgeth").dataTable($.extend(true, {}, dataTablesDefaults, {
sDom: "t"
}));
$("#move_form").submit(function(){
var budget_from = "[% budget_period_description | html %]";
var budget_to = $("#to_budget_period_id").find("option:selected").html();
var alert_message = _("You have chosen to move all unreceived orders from '%s' to '%s'.").format(budget_from, budget_to);
alert_message += "\n" + _("This action cannot be reversed. Do you wish to continue?");
return confirm ( alert_message );
});
[% END %]
[% IF closed %]
var oTable = $("#closed_report").dataTable($.extend(true, {}, dataTablesDefaults, {
// The following is a c/p from aqbudgets.tt and is a candidate for refactoring.
"fnDrawCallback": function ( oSettings ) {
if ( oSettings.aiDisplay.length == 0 )
{
return;
}
var nTrs = $('#closed_report tbody tr');
var iColspan = nTrs[1].getElementsByTagName('td').length;
var sLastGroup = "";
for ( var i=0 ; i<nTrs.length ; i++ )
{
var iDisplayIndex = oSettings._iDisplayStart + i;
var sGroup = oSettings.aoData[ oSettings.aiDisplay[iDisplayIndex] ]._aData[0];
if ( sGroup != sLastGroup )
{
var nGroup = document.createElement( 'tr' );
var nCell = document.createElement( 'td' );
nCell.colSpan = iColspan;
nCell.className = "group";
nCell.innerHTML = sGroup;
nGroup.appendChild( nCell );
nTrs[i].parentNode.insertBefore( nGroup, nTrs[i] );
sLastGroup = sGroup;
}
}
},
"aoColumnDefs": [
{ "bVisible": false, "aTargets": [ 0, 1 ] },
{ "bSortable": false, "aTargets": ["_all"] }
],
'bSort': true,
'aaSortingFixed': [[ 1, 'asc' ]],
"bAutoWidth": false,
"sPaginationType": "full_numbers"
}));
[% END %]
$("#add_modify_budget").validate({
rules: {
budget_period_startdate: "required",
budget_period_enddate: {
required: true,
date_on_or_after: "#from"
},
budget_period_description: "required",
budget_period_total: {
number: true
}
},
messages: {
budget_period_enddate: {
date_on_or_after: _("Budget end date must be on or after budget start date")
}
}
});
});
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]