[% USE KohaDates %]
-[% USE format %]
+[% USE Price %]
+[% SET footerjs = 1 %]
+[%- BLOCK action_menu %]
+ <div class="dropdown">
+ <a class="btn btn-default btn-xs dropdown-toggle" id="budgetmenu_[% block_budget.budget_period_id %]" 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 %]">
+ <li>
+ <a href="[% script_name %]?op=add_form&budget_period_id=[% block_budget.budget_period_id |html %]"><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 %] 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 %]?op=delete_confirm&budget_period_id=[% block_budget.budget_period_id %]"><i class="fa fa-trash"></i> Delete</a>
+ </li>
+ [% END %]
+ <li>
+ <a href="[% script_name %]?op=duplicate_form&budget_period_id=[% block_budget.budget_period_id %]"><i class="fa fa-copy"></i> Duplicate</a>
+ </li>
+ <li>
+ <a href="[% script_name %]?op=close_form&budget_period_id=[% block_budget.budget_period_id %]"><i class="fa fa-times-circle"></i> Close</a>
+ </li>
+ <li>
+ <a href="/cgi-bin/koha/admin/aqbudgets.pl?op=add_form&budget_period_id=[% block_budget.budget_period_id %]"><i class="fa fa-plus"></i> Add fund</a>
+ </li>
+ </ul>
+ </div>
+[% END -%]
+
[% INCLUDE 'doc-head-open.inc' %]
-<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
[% INCLUDE 'doc-head-close.inc' %]
-[% INCLUDE 'calendar.inc' %]
-[% INCLUDE 'datatables.inc' %]
+<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
[% IF close_form %]
<link href="[% interface %]/lib/jquery/plugins/treetable/stylesheets/jquery.treetable.css" rel="stylesheet" type="text/css" />
- <script type="text/javascript" src="[% interface %]/lib/jquery/plugins/treetable/jquery.treetable.js"></script>
[% END %]
-<script type="text/javascript" src="[% themelang %]/js/acq.js"></script>
-<script type="text/javascript">
-// #################################################################################
-// Javascript
-// #################################################################################
- function CheckDuplicateForm(f){
- var ok=1;
- var _alertString="";
- var alertString="";
- if(!(isNotNull(f.budget_period_startdate,1))){
- _alertString += "\n- " + _("Start date missing");
- }
- if (!(isNotNull(f.budget_period_enddate,1))){
- _alertString += "\n- " + _("End date missing");
- }
- if( f.budget_period_startdate > f.budget_period_enddate ) {
- _alertString += "\n- " + _("Start date must be before end date");
- }
- if (!(isNotNull(f.budget_period_description,1))){
- _alertString += "\n- " + _("Budget description missing");
- }
-
- if(_alertString.length==0){
- f.submit();
- } else {
- alertString += _("Form not submitted because of the following problem(s)");
- alertString += "\n-----------------------------------------\n";
- alertString += _alertString;
- alert(alertString);
- }
- }
- function Check(f) {
- var ok=1;
- var _alertString="";
- var alertString2;
-
- if (!(isNotNull(f.budget_period_startdate,1))) {
- _alertString += "\n- " + _("Start date missing");
- }
-
- if (!(isNotNull(f.budget_period_enddate,1))) {
- _alertString += "\n- " + _("End date missing");
- }
-
- if ( f.budget_period_startdate > f.budget_period_enddate ) {
- _alertString += "\n- " + _("Start date must be before end date");
- }
-
- if (!(isNotNull(f.budget_period_description,1))) {
- _alertString += "\n- " + _("Description missing");
- }
-
- if (!(isNum(f.budget_period_total))) {
- _alertString += "\n- " + _("Amount must be a valid number, or empty");
- }
-
-/*
- checkBudgetTotal(f) {
- }
-*/
-
- if (_alertString.length==0) {
- f.submit();
- } else {
- alertString2 = _("Form not submitted because of the following problem(s)");
- alertString2 += "\n------------------------------------------------------------------------------------\n";
- alertString2 += _alertString;
- alert(alertString2);
- }
- }
-
- $(document).ready(function() {
- var tabs = $('#budgetsTabs').tabs();
- [% IF ( tab ) %]
- tabs.tabs("option", "active", [% tab %]);
- [% END %]
- $("#activeperiodst,#inactiveperiodst").dataTable($.extend(true, {}, dataTablesDefaults, {
- "sDom": 't',
- "aaSorting": [],
- "aoColumnDefs": [
- { "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
- { "sType": "title-string", "aTargets" : [ "title-string" ] }
- ],
- "bPaginate": false,
- 'bAutoWidth': false
- } ) );
-
- [% IF close_form %]
- $("#budgeth").dataTable($.extend(true, {}, dataTablesDefaults, {
- sDom: "t"
- }));
- $("#move_form").submit(function(){
- var budget_from = "[% budget_period_description %]";
- 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 += _("\nThis 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' ]],
- 'bPaginate': false,
- "bAutoWidth": false
- }));
- [% END %]
- });
-</script>
<title>
Koha › Administration › Budgets
[% IF ( add_form ) %]›
[% IF ( budget_period_id ) %]
- Modify budget'[% budget_period_id %]'
+ Modify budget [% budget_period_description %]
[% ELSE %]
Add budget
[% END %]
<a href="/cgi-bin/koha/mainpage.pl">Home</a> ›
<a href="/cgi-bin/koha/admin/admin-home.pl">Administration</a> ›
- <!-- add or modify a budget period -->
- <!-- ####################################### -->
[% IF ( add_form ) %]
- <a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budget</a> ›
+ <a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a> ›
[% IF ( budget_period_id ) %]
- Modify budget [% budget_period_description %]
-
+ <span>Modify budget '[% budget_period_description %]'</span>
[% ELSE %]
- Add budget
+ <span>Add budget</span>
[% END %]
[% END %]
-
- <!-- delete a budget period -->
- <!-- ################################ -->
[% IF ( delete_confirm ) %]
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a> ›
- [% IF ( total ) %]
- Cannot delete budget '[% budget_period_description %]'
+ [% IF ( total || funds_exist ) %]
+ <span>Cannot delete budget '[% budget_period_description %]'</span>
[% ELSE %]
- Delete budget '[% budget_period_description %]'?
+ <span>Delete budget '[% budget_period_description %]'?</span>
[% END %]
[% END %]
- <!-- duplicate a budget -->
[% IF ( duplicate_form ) %]
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a> › Duplicate budget
[% END %]
-
- <!-- close a budget -->
[% IF close_form %]
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a> ›
- Close budget <a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id %]">[% budget_period_description %]</a>
+ <span>Close budget <a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id %]">[% budget_period_description %]</a></span>
[% END %]
-
- <!-- budget closed -->
[% IF closed %]
<a href="/cgi-bin/koha/admin/aqbudgetperiods.pl">Budgets</a> ›
- Budget <a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id %]">[% budget_period_description %]</a> closed
+ <span>Budget <a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id %]">[% budget_period_description %]</a> closed</span>
[% END %]
- <!-- display budget periods list -->
- <!-- ########################################## -->
[% IF ( else ) %]
- Budgets administration
+ <span>Budgets administration</span>
[% END %]
</div>
<input type="text" id="budget_period_description" name="budget_period_description" value="[% budgetperiod.budget_period_description %]" />
</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" />
<!-- add or modify a budget period -->
[% IF ( budget_period_id ) %]
- <h3>Modify budget</h3>
+ <h3>Modify budget <i>[% budget_period_description %]</i></h3>
[% ELSE %]
<h3>Add budget</h3>
[% END %]
<!-- ############################## -->
<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 %]" />
+ size="10" maxlength="80" value="[% budget_period_total | $Price on_editing => 1 %]" />
</li>
<li>
<fieldset class="action">
<!-- "save changes" button -->
<!-- ###################################### -->
- <input type="button" value="Save changes" onclick="Check(this.form)" />
+ <input type="button" value="Save" onclick="Check(this.form)" />
<!-- <input type="submit" value="Save Changes" /> -->
- [% IF ( budget_period_id ) %]<a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id %]" class="cancel">Cancel</a>[% END %]
+ [% IF ( budget_period_id ) %]
+ <a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% budget_period_id %]" class="cancel">Cancel</a>
+ [% ELSE %]
+ <a href="/cgi-bin/koha/admin/aqbudgetperiods.pl" class="cancel">Cancel</a>
+ [% END %]
</fieldset>
</form>
<h3>Cannot delete budget</h3>
<p><strong>This record is used [% total %] times</strong>
. Deletion is not possible.</p>
+ [% ELSIF ( funds_exist ) %]
+ <div class="dialog message">
+ <h3>Cannot delete budget</h3>
+ <p>This budget has funds attached. You must delete all attached funds before you can delete this budget.</p>
[% ELSE %]
<div class="dialog alert">
<h3>Delete budget '[% budget_period_description %]'?</h3>
- [% END %]
<!-- ############################################################# -->
<!-- "delete" and "cancel" buttons -->
<form action="[% script_name %]" method="post">
<input type="hidden" name="op" value="delete_confirmed" />
<input type="hidden" name="budget_period_id" value="[% budget_period_id %]" />
- <input type="submit" class="approve" value="Delete" />
+ <button type="submit" class="approve"><i class="fa fa-fw fa-check"></i> Yes, delete</button>
</form>
-
<form action="[% script_name %]" method="post">
- <input type="submit" class="deny" value="Cancel" />
+ <button type="submit" class="deny"><i class="fa fa-fw fa-remove"></i> No, do not delete</button>
</form>
+ [% END %]
</div>
[% END %]
[% IF r.orders_moved.size > 0 %]
[% FOR order IN r.orders_moved %]
<tr>
- <td>[% r.budget.budget_name %] (id=[% r.budget.budget_id %]) Amount=[% r.budget.budget_amount | format ("%.2f") %][% IF r.unspent_moved %] ([% r.unspent_moved | format ("%.2f")%] remaining has been moved)[% END %]</td>
+ <td>[% r.budget.budget_name %] (id=[% r.budget.budget_id %]) Amount=[% r.budget.budget_amount | $Price %][% IF r.unspent_moved %] ([% r.unspent_moved | $Price %] remaining has been moved)[% END %]</td>
<td>[% order.basketname %]</td>
<td>[% order.ordernumber %]</td>
<td>Moved!</td>
[% ELSE %]
[% IF r.error == 'budget_code_not_exists' %]
<tr>
- <td>[% r.budget.budget_id %] [% r.budget.budget_amount | format ("%.2f") %][% IF r.unspent_moved %] ([% r.unspent_moved | format ("%.2f") %] remaining has been moved)[% END %]</td>
+ <td>[% r.budget.budget_id %] [% 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>
[% IF ( else ) %]
<h2>Budgets administration</h2>
+ [% 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">
<span style="color:green;">Locked</span>
[% END %]
</td>
- <td class="data">[% period_active.budget_period_total %]</td>
+ <td class="data">[% period_active.budget_period_total | $Price %]</td>
<td>
- <a href="[% script_name %]?op=add_form&budget_period_id=[% period_active.budget_period_id |html %]">Edit</a>
- <a href="[% script_name %]?op=delete_confirm&budget_period_id=[% period_active.budget_period_id %]">Delete</a>
- <a href="[% script_name %]?op=duplicate_form&budget_period_id=[% period_active.budget_period_id %]">Duplicate</a>
- <a href="[% script_name %]?op=close_form&budget_period_id=[% period_active.budget_period_id %]">Close</a>
- <a href="/cgi-bin/koha/admin/aqbudgets.pl?op=add_form&budget_period_id=[% period_active.budget_period_id %]">Add fund</a>
+ [% PROCESS action_menu block_budget=period_active %]
</td>
</tr>
[% END %]
[% ELSE %]
No active budgets
[% END %]
- <div class="paginationBar">[% active_pagination_bar %]</div>
</div>
<div id="inactive">
[% IF ( period_inactive_loop ) %]
</thead>
<tbody>
[% FOREACH period_loo IN period_inactive_loop %]
- [% IF ( loop.odd ) %]
- <tr>
- [% ELSE %]
- <tr class="highlight">
- [% END %]
+ <tr>
<td><a href="/cgi-bin/koha/admin/aqbudgets.pl?budget_period_id=[% period_loo.budget_period_id %]" title="View funds for [% period_loo.budget_period_description %]">[% period_loo.budget_period_description %]</a></td>
<td><span title="[% period_loo.budget_period_startdate %]">[% period_loo.budget_period_startdate | $KohaDates %]</span></td>
<td><span title="[% period_loo.budget_period_enddate %]">[% period_loo.budget_period_enddate | $KohaDates %]</span></td>
<td> [% IF ( period_loo.budget_period_locked ) %]<span style="color:green;">Locked</span> [% ELSE %][% END %] </td>
- <td class="data">[% period_loo.budget_period_total %]</td>
+ <td class="data">[% period_loo.budget_period_total | $Price %]</td>
<td>
- <a href="[% script_name %]?op=add_form&budget_period_id=[% period_loo.budget_period_id |html %]">Edit</a>
- <a href="[% script_name %]?op=delete_confirm&budget_period_id=[% period_loo.budget_period_id %]">Delete</a>
- <a href="[% script_name %]?op=duplicate_form&budget_period_id=[% period_loo.budget_period_id %]">Duplicate</a>
- <a href="[% script_name %]?op=close_form&budget_period_id=[% period_loo.budget_period_id %]">Close</a>
- <a href="/cgi-bin/koha/admin/aqbudgets.pl?op=add_form&budget_period_id=[% period_loo.budget_period_id %]">Add fund</a>
+ [% PROCESS action_menu block_budget=period_loo %]
</td>
</tr>
[% END %]
[% ELSE %]
No inactive budgets
[% END %]
- <div class="pages">[% inactive_pagination_bar %]</div>
</div>
</div>
[% END %]
-
</div>
</div>
<div class="yui-b">
</div>
</div>
+[% MACRO jsinclude BLOCK %]
+ [% INCLUDE 'calendar.inc' %]
+ [% INCLUDE 'datatables.inc' %]
+ [% IF close_form %]
+ <script type="text/javascript" src="[% interface %]/lib/jquery/plugins/treetable/jquery.treetable.js"></script>
+ [% END %]
+ <script type="text/javascript" src="[% interface %]/[% theme %]/js/acq.js"></script>
+ <script type="text/javascript">
+ // #################################################################################
+ // Javascript
+ // #################################################################################
+ function CheckDuplicateForm(f){
+ var ok=1;
+ var _alertString="";
+ var alertString="";
+ if(!(isNotNull(f.budget_period_startdate,1))){
+ _alertString += "\n- " + _("Start date missing");
+ }
+ if (!(isNotNull(f.budget_period_enddate,1))){
+ _alertString += "\n- " + _("End date missing");
+ }
+ if( f.budget_period_startdate > f.budget_period_enddate ) {
+ _alertString += "\n- " + _("Start date must be before end date");
+ }
+ if (!(isNotNull(f.budget_period_description,1))){
+ _alertString += "\n- " + _("Budget description missing");
+ }
+
+ if(_alertString.length==0){
+ f.submit();
+ } else {
+ alertString += _("Form not submitted because of the following problem(s)");
+ alertString += "\n-----------------------------------------\n";
+ alertString += _alertString;
+ alert(alertString);
+ }
+ }
+ function Check(f) {
+ var ok=1;
+ var _alertString="";
+ var alertString2;
+
+ if (!(isNotNull(f.budget_period_startdate,1))) {
+ _alertString += "\n- " + _("Start date missing");
+ }
+
+ if (!(isNotNull(f.budget_period_enddate,1))) {
+ _alertString += "\n- " + _("End date missing");
+ }
+
+ if ( f.budget_period_startdate > f.budget_period_enddate ) {
+ _alertString += "\n- " + _("Start date must be before end date");
+ }
+
+ if (!(isNotNull(f.budget_period_description,1))) {
+ _alertString += "\n- " + _("Description missing");
+ }
+
+ if (!(isNum(f.budget_period_total))) {
+ _alertString += "\n- " + _("Amount must be a valid number, or empty");
+ }
+
+ if (_alertString.length==0) {
+ f.submit();
+ } else {
+ alertString2 = _("Form not submitted because of the following problem(s)");
+ alertString2 += "\n------------------------------------------------------------------------------------\n";
+ alertString2 += _alertString;
+ alert(alertString2);
+ }
+ }
+
+ $(document).ready(function() {
+ var tabs = $('#budgetsTabs').tabs();
+ [% IF ( tab ) %]
+ tabs.tabs("option", "active", [% tab %]);
+ [% END %]
+ $("#activeperiodst,#inactiveperiodst").dataTable($.extend(true, {}, dataTablesDefaults, {
+ "aoColumnDefs": [
+ { "aTargets": [ -1 ], "bSortable": false, "bSearchable": false },
+ { "sType": "title-string", "aTargets" : [ "title-string" ] }
+ ],
+ "sPaginationType": "four_button",
+ 'bAutoWidth': false
+ } ) );
+
+ [% IF close_form %]
+ $("#budgeth").dataTable($.extend(true, {}, dataTablesDefaults, {
+ sDom: "t"
+ }));
+ $("#move_form").submit(function(){
+ var budget_from = "[% budget_period_description %]";
+ 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 %]
+ });
+ </script>
+[% END %]
[% INCLUDE 'intranet-bottom.inc' %]