Nick Clemens
19aebacf7c
To test: 1 - Try to add some adjustments to an invoice (receive shipments, create invoice, click 'finish receiving') 2 - Note the fund dropdown has only 'No fund' 3 - Apply patch 4 - Refresh page 5 - Note you can now select funds, hooray! Signed-off-by: Janet McGowan <janet.mcgowan@ptfs-europe.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
450 lines
23 KiB
Text
450 lines
23 KiB
Text
[% USE raw %]
|
|
[% USE Asset %]
|
|
[% USE Koha %]
|
|
[% USE KohaDates %]
|
|
[% USE Price %]
|
|
[% SET footerjs = 1 %]
|
|
[% USE AuthorisedValues %]
|
|
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Koha › Acquisitions › Invoice</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
</head>
|
|
|
|
<body id="acq_invoice" class="acq">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'acquisitions-search.inc' %]
|
|
|
|
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › <a href="/cgi-bin/koha/acqui/invoices.pl">Invoices</a> › <a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% invoiceid | html %]">[% invoicenumber | html %]</a></div>
|
|
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-10 col-sm-push-2">
|
|
<main>
|
|
|
|
[% IF ( modified ) %]
|
|
<div class="dialog message">
|
|
<p>Invoice has been modified</p>
|
|
</div>
|
|
[% END %]
|
|
<h1>Invoice: [% invoicenumber | html %]</h1>
|
|
|
|
<p>Vendor: <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid | uri %]">[% suppliername | html %]</a></p>
|
|
<form action="/cgi-bin/koha/acqui/invoice.pl" method="post" class="validated">
|
|
<fieldset class="rows">
|
|
<ol>
|
|
<li>
|
|
<label for="shipmentdate" class="required">Invoice number:</label>
|
|
<input type="text" id="invoicenumber" name="invoicenumber" value="[% invoicenumber | html %]" class="required" required="required"/>
|
|
<span class="required">Required</span>
|
|
</li>
|
|
|
|
<li><label for="shipmentdate">Shipment date:</label>
|
|
<input type="text" size="10" id="shipmentdate" name="shipmentdate" value="[% shipmentdate | $KohaDates %]" class="datepicker" /></li>
|
|
|
|
<li><label for="billingdate">Billing date:</label>
|
|
<input type="text" size="10" id="billingdate" name="billingdate" value="[% billingdate | $KohaDates %]" class="datepicker" /></li>
|
|
|
|
<li><label for="shipmentcost">Shipping cost:</label>
|
|
<input type="text" size="10" id="shipmentcost" name="shipmentcost" value="[% shipmentcost | $Price on_editing => 1 %]" /></li>
|
|
|
|
<li>
|
|
<label for="shipment_budget_id">Shipping fund: </label>
|
|
<select id="shipment_budget_id" name="shipment_budget_id">
|
|
<option value="">No fund</option>
|
|
[% FOREACH budget IN budgets %]
|
|
[% IF ( budget.selected ) %]
|
|
<option value="[% budget.b_id | html %]" selected="selected">[% budget.b_txt | html %] [% IF ( !budget.b_active ) %](inactive)[% END %]</option>
|
|
[% ELSIF ( budget.b_active ) %]
|
|
<option value="[% budget.b_id | html %]">[% budget.b_txt | html %]</option>
|
|
[% ELSE %]
|
|
<option value="[% budget.b_id | html %]" class="b_inactive">[% budget.b_txt | html %] (inactive)</option>
|
|
[% END %]
|
|
[% END %]
|
|
</select>
|
|
<label for="showallfunds" style="float:none;width:auto;"> Show inactive:</label>
|
|
<input type="checkbox" id="showallfunds" />
|
|
|
|
</li>
|
|
|
|
[% IF ( invoiceclosedate ) %]
|
|
<li><span class="label">Status:</span>
|
|
Closed on [% invoiceclosedate | $KohaDates %].</li>
|
|
|
|
<li><label for="reopen">Reopen: </label> <input type="checkbox" name="reopen" id="reopen" /></li>
|
|
[% ELSE %]
|
|
<li><span class="label">Status:</span>
|
|
Open.</li>
|
|
|
|
<li><label for="close">Close: </label> <input type="checkbox" name="close" id="close" />
|
|
</li>
|
|
[% END %]
|
|
</ol>
|
|
<input type="hidden" name="op" value="mod" />
|
|
<input type="hidden" name="invoiceid" value="[% invoiceid | html %]" />
|
|
<fieldset class="action">
|
|
<input type="submit" value="Save" />
|
|
[% UNLESS orders_loop.size %]
|
|
<a href="invoice.pl?op=delete&invoiceid=[% invoiceid | uri %]" id="delete">Delete</a>
|
|
[% END %]
|
|
</fieldset>
|
|
</fieldset>
|
|
</form>
|
|
|
|
<hr />
|
|
|
|
<h3>Adjustments</h3>
|
|
|
|
<form action="/cgi-bin/koha/acqui/invoice.pl" method="post" class="validated">
|
|
<fieldset class="rows">
|
|
<input type="hidden" name="invoiceid" value="[% invoiceid | html %]" />
|
|
[% IF (adjustments && adjustments.count > 0) %]
|
|
<table id="invoice_adj_table">
|
|
<tr>
|
|
<th>Id</th>
|
|
<th>Amount</th>
|
|
<th>Reason</th>
|
|
<th>Note</th>
|
|
<th>Fund</th>
|
|
<th>Encumber while invoice open</th>
|
|
<th> </th>
|
|
</tr>
|
|
[% total_adj = 0 %]
|
|
[% FOREACH adjustment IN adjustments %]
|
|
[% total_adj = total_adj + adjustment.adjustment %]
|
|
<tr>
|
|
<td><input type="hidden" name="adjustment_id" value="[% adjustment.adjustment_id | html %]" />[% adjustment.adjustment_id | html %]</td>
|
|
<td><input type="text" name="adjustment" id="adjustment_[% adjustment.adjustment_id | html %]" value="[% adjustment.adjustment | $Price on_editing => 1 %]" /></td>
|
|
<td>
|
|
[% reasons = AuthorisedValues.Get("ADJ_REASON") %]
|
|
[% IF reasons.0 %]
|
|
<select id="reason_[% adjustment.adjustment_id | html %]" name="reason">
|
|
<option value="">No reason</option>
|
|
[% FOREACH reason IN reasons %]
|
|
[% IF ( adjustment.reason == reason.authorised_value ) %]
|
|
<option selected="selected" value="[% reason.authorised_value | html %]">
|
|
[% ELSE %]
|
|
<option value="[% reason.authorised_value | html %]">
|
|
[% END %]
|
|
[% reason.lib | html %]
|
|
</option>
|
|
[% END %]
|
|
</select>
|
|
[% ELSE %]
|
|
<p title="Define values in authorised value category ADJ_REASON to enable">None</p>
|
|
<input type="hidden" name="reason" id="reason_[% adjustment.adjustment_id | html %]" value="" />
|
|
[% END %]
|
|
</td>
|
|
<td><input type="text" name="note" id="note_new" value="[% adjustment.note | html %]"/></td>
|
|
<td>
|
|
<select id="budget_id_[% adjustment.adjustment_id | html %]" name="budget_id">
|
|
<option value="">No fund</option>
|
|
[% FOREACH budget IN budgets %]
|
|
[% IF ( budget.b_id == adjustment.budget_id ) %]
|
|
<option selected="selected" value="[% budget.b_id | html %]">
|
|
[% ELSE %]
|
|
<option value="[% budget.b_id | html %]">
|
|
[% END %]
|
|
[% budget.b_txt | html %]
|
|
</option>
|
|
[% END %]
|
|
</select>
|
|
</td>
|
|
[% IF adjustment.encumber_open %]
|
|
<td>
|
|
<input type="checkbox" name="encumber_open" id="encumber_[% adjustment.adjustment_id | html %]" value="[% adjustment.adjustment_id | html %]" checked/>
|
|
</td>
|
|
[% ELSE %]
|
|
<td>
|
|
<input type="checkbox" name="encumber_open" id="encumber_[% adjustment.adjustment_id | html %]" value="[% adjustment.adjustment_id | html %]" />
|
|
</td>
|
|
[% END %]
|
|
<td>
|
|
<a class="btn btn-default btn-xs delete_adjustment" href="/cgi-bin/koha/acqui/invoice.pl?op=del_adj&adjustment_id=[% adjustment.adjustment_id | html %]&invoiceid=[% invoiceid | html %]"><i class="fa fa-trash"></i> Delete</a>
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</table>
|
|
[% END %]
|
|
|
|
<p>
|
|
<a href="#" id="show_invoice_adjustment" class="toggle_invoice_adjustment"><i class="fa fa-plus"></i> Add an adjustment</a>
|
|
</p>
|
|
|
|
<fieldset id="add_invoice_adjustment" style="display:none">
|
|
<h4>Add an adjustment</h4>
|
|
<input type="hidden" name="adjustment_id" value="new" />
|
|
<ol>
|
|
<li>
|
|
<label for="adjustment_new">Amount: </label>
|
|
<input type="text" name="adjustment" id="adjustment_new" />
|
|
</li>
|
|
[% reasons = AuthorisedValues.Get("ADJ_REASON") %]
|
|
[% IF reasons.0 %]
|
|
<li>
|
|
<label for="reason_[% adjustment.adjustment_id | html %]">Reason: </label>
|
|
<select id="reason_[% adjustment.adjustment_id | html %]" name="reason">
|
|
<option value="">No reason</option>
|
|
[% FOREACH reason IN reasons %]
|
|
<option value="[% reason.authorised_value | html %]">
|
|
[% reason.lib | html %]
|
|
</option>
|
|
[% END %]
|
|
</select>
|
|
</li>
|
|
[% ELSE %]
|
|
<li>
|
|
<span class="label">Reason: </span>
|
|
<span>None</span>
|
|
<div class="hint">Define values in authorised value category ADJ_REASON to enable</div>
|
|
</li>
|
|
[% END %]
|
|
<li>
|
|
<label for="note_new">Note: </label>
|
|
<input type="text" name="note" id="note_new" value=""/>
|
|
</li>
|
|
<li>
|
|
<label for="budget_id_new">Fund: </label>
|
|
<select id="budget_id_new" name="budget_id">
|
|
<option selected="selected" value="">No fund</option>
|
|
[% FOREACH budget IN budgets %]
|
|
<option value="[% budget.b_id | html %]">
|
|
[% budget.b_txt | html %]
|
|
</option>
|
|
[% END %]
|
|
</select>
|
|
</li>
|
|
<li>
|
|
<label for="encumber_new">Encumber while invoice open? </label>
|
|
<input type="checkbox" name="encumber_open" id="encumber_new" value="new" />
|
|
<input type="hidden" name="delete" value="">
|
|
</li>
|
|
<li>
|
|
<span class="label"> </span>
|
|
<a href="#" id="cancel_invoice_adjustment" class="toggle_invoice_adjustment" style="display:none"><i class="fa fa-remove"></i> Cancel</a>
|
|
</li>
|
|
</ol>
|
|
</fieldset>
|
|
<fieldset class="action">
|
|
<input type="hidden" name="op" value="mod_adj" />
|
|
<input type="submit" value="Update adjustments" />
|
|
</fieldset>
|
|
</fieldset>
|
|
</form>
|
|
<p>
|
|
<a href="/cgi-bin/koha/acqui/parcel.pl?invoiceid=[% invoiceid | uri %]">Go to receipt page</a>
|
|
[% IF Koha.Preference('AcqEnableFiles') %]| <a href="/cgi-bin/koha/acqui/invoice-files.pl?invoiceid=[% invoiceid | uri %]">Manage invoice files</a>[% END %]
|
|
</p>
|
|
<h2>Invoice details</h2>
|
|
<fieldset>
|
|
[% IF orders_loop.size %]
|
|
<label for="show_all_details">
|
|
<input type="checkbox" style="vertical-align: middle;" id="show_all_details" />
|
|
Show all details
|
|
</label>
|
|
<table id="orderst">
|
|
<thead>
|
|
<tr>
|
|
<th class="anti-the">Summary</th>
|
|
<th>Library</th>
|
|
<th class="tax_excluded">Actual cost tax exc.</th>
|
|
<th class="tax_included">Actual cost tax inc.</th>
|
|
<th class="replacementprice">Replacement price</th>
|
|
<th>Qty.</th>
|
|
<th class="tax_excluded">Total tax exc. ([% currency.symbol | html %])</th>
|
|
<th class="tax_included">Total tax inc. ([% currency.symbol | html %])</th>
|
|
<th>GST %</th>
|
|
<th>GST</th>
|
|
<th>Fund</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH order IN orders_loop %]
|
|
<tr>
|
|
<td>
|
|
[% IF order.biblionumber %]
|
|
<a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% order.biblionumber | uri %]">[% order.title | html %]</a>
|
|
[% IF ( order.author ) %]
|
|
<br /><em>by</em> [% order.author | html %]
|
|
[% END %]
|
|
[% ELSE %]
|
|
<em>Deleted bibliographic record, can't find title</em>
|
|
[% END %]
|
|
[% IF ( order.isbn ) %] – [% order.isbn | html %][% END %]
|
|
[% IF ( order.publishercode ) %]
|
|
<br/>[% order.publishercode | html %]
|
|
[% IF order.publicationyear %], [% order.publicationyear | html %]
|
|
[% ELSIF ( order.copyrightdate ) %][% order.copyrightdate | html %][% END %]
|
|
[% END %]
|
|
</td>
|
|
<td><p>[% order.branchcode | html %]</p></td>
|
|
<td class="number tax_excluded">[% order.unitprice_tax_excluded | $Price %]</td>
|
|
<td class="number tax_included">[% order.unitprice_tax_included | $Price %]</td>
|
|
<td class="number replacementprice">[% order.replacementprice | $Price %]</td>
|
|
<td class="number">[% order.quantity | html %]</td>
|
|
<td class="number tax_excluded">[% order.total_tax_excluded | $Price %]</td>
|
|
<td class="number tax_included">[% order.total_tax_included | $Price %]</td>
|
|
<td class="number">[% order.tax_rate * 100 | html %]</td>
|
|
<td class="number">[% order.tax_value | $Price %]</td>
|
|
<td>[% order.budget_name | html %]</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
<tfoot>
|
|
[% FOR tf IN foot_loop %]
|
|
<tr>
|
|
<th colspan="2">Total (GST [% tf.tax_rate * 100 | html %] %)</th>
|
|
<th class="tax_excluded"></th>
|
|
<th class="tax_included"></th>
|
|
<th class="replacementprice"/>
|
|
<th>[% tf.quantity | html %]</th>
|
|
<th class="tax_excluded">[% tf.total_tax_excluded | $Price %]</th>
|
|
<th class="tax_included">[% tf.total_tax_included | $Price %]</th>
|
|
<th> </th>
|
|
<th>[% tf.tax_value | $Price %]</th>
|
|
<th> </th>
|
|
</tr>
|
|
[% END %]
|
|
<tr>
|
|
<th colspan="2">Total ([% currency.symbol | html %])</th>
|
|
<th class="tax_excluded"></th>
|
|
<th class="tax_included"></th>
|
|
<th class="replacementprice"/>
|
|
<th>[% total_quantity | html %]</th>
|
|
<th class="tax_excluded">[% total_tax_excluded | $Price %]</th>
|
|
<th class="tax_included">[% total_tax_included | $Price %]</th>
|
|
<th> </th>
|
|
<th>[% total_tax_value | $Price %]</th>
|
|
<th> </th>
|
|
</tr>
|
|
<tr>
|
|
<th colspan="2">Total + Adjustments + Shipment cost ([% currency.symbol | html %])</th>
|
|
<th class="tax_excluded"></th>
|
|
<th class="tax_included"></th>
|
|
<th class="replacementprice"/>
|
|
<th>[% total_quantity | html %]</th>
|
|
<th class="tax_excluded">[% total_tax_excluded_shipment + total_adj | $Price %]</th>
|
|
<th class="tax_included">[% total_tax_included_shipment | $Price %]</th>
|
|
<th> </th>
|
|
<th>[% total_tax_value | $Price %]</th>
|
|
<th> </th>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
[% ELSE %]
|
|
<div class="dialog message"><p>No orders yet</p>
|
|
[% IF adjustments && adjustments.count > 0 || shipmentcost && shipmentcost > 0 %]
|
|
<p>Adjustments plus shipping:[% total_adj + shipmentcost | $Price %]</p>
|
|
[% END %]
|
|
</div>
|
|
[% END %]
|
|
[% IF ( (Koha.Preference('AcqEnableFiles')) && files ) %]
|
|
<br />
|
|
<h2>Files attached to invoice</h2>
|
|
<table id="invoice_files_table">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
<th>Uploaded</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH f IN files %]
|
|
<tr>
|
|
<td><a href="/cgi-bin/koha/acqui/invoice-files.pl?invoiceid=[% invoiceid | uri %]&op=download&view=1&file_id=[% f.file_id | uri %]">[% f.file_name | html %]</a></td>
|
|
<td>[% f.file_type | html %]</td>
|
|
<td>[% f.file_description | html %]</td>
|
|
<td class="title-string">
|
|
<span title="[% f.date_uploaded | html %]">[% f.date_uploaded | $KohaDates %]</span>
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
[% END %]
|
|
</fieldset>
|
|
</main>
|
|
</div> <!-- /.col-sm-10.col-sm-push-2 -->
|
|
|
|
<aside>
|
|
<div class="col-sm-2 col-sm-pull-10">
|
|
[% INCLUDE 'acquisitions-menu.inc' %]
|
|
</div>
|
|
</aside>
|
|
</div> <!-- /.row -->
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% Asset.js("js/acquisitions-menu.js") | $raw %]
|
|
[% INCLUDE 'calendar.inc' %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
<script>
|
|
function updateColumnsVisibility(visible) {
|
|
if ( visible ) {
|
|
$("table .tax_excluded, .tax_included").show();
|
|
} else {
|
|
[% IF ( invoiceincgst ) %]
|
|
$("table .tax_excluded").hide();
|
|
[% ELSE %]
|
|
$("table .tax_included").hide();
|
|
[% END %]
|
|
}
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
$("#delete").click(function(){
|
|
return confirmDelete(_("Are you sure you want to delete this invoice?"));
|
|
});
|
|
$("#orderst").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
bInfo: false,
|
|
bPaginate: false,
|
|
bFilter: false,
|
|
sDom: "t",
|
|
"aoColumnDefs": [
|
|
{ "sType": "anti-the", "aTargets": [ "anti-the" ] }
|
|
]
|
|
}));
|
|
[% IF ( (Koha.Preference('AcqEnableFiles')) && files ) %]
|
|
$("#invoice_files_table").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
"aoColumnDefs": [
|
|
{ "aTargets": [ "title-string" ], "sType": "title-string" }
|
|
],
|
|
bInfo: false,
|
|
bPaginate: false,
|
|
bFilter: false,
|
|
sDom: "t"
|
|
}));
|
|
[% END %]
|
|
$("#show_all_details").click(function(){
|
|
updateColumnsVisibility( $(this).is(":checked") );
|
|
});
|
|
|
|
$("#show_all_details").prop('checked', false);
|
|
updateColumnsVisibility(false);
|
|
$(".toggle_invoice_adjustment").on("click", function(e){
|
|
e.preventDefault();
|
|
$("#show_invoice_adjustment, #cancel_invoice_adjustment, #add_invoice_adjustment").toggle();
|
|
});
|
|
$("a.delete_adjustment").click(function(){
|
|
return ( confirm( _("Are you sure you want to delete this file ?") ) );
|
|
});
|
|
|
|
//keep a copy of all budgets before removing the inactives
|
|
var budgetId = $("#shipment_budget_id");
|
|
var disabledBudgetsCopy = budgetId.html();
|
|
$('.b_inactive').remove();
|
|
|
|
$('#showallfunds').click(function() {
|
|
if ($(this).is(":checked")) {
|
|
budgetId.html(disabledBudgetsCopy); //Puts back all the funds
|
|
}
|
|
else {
|
|
$('.b_inactive').remove();
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|