4ce0848fe3
1) Sorting on "Billing date" (functionality introduced by bug 10794) doesn't work properly any longer after bug 10401 was pushed (another side-effect being that "Vendor" column is currently not sortable at all). 2) Only "top ten" invoices are always displayed in the table, and it's not possible to change that without missing top/bottom DataTables pagination bars. This patch fixes sorting for "Billing date" & "Vendor" columns in invoices table and restores the ability to see all table rows/search results (not just "top ten"). Test plan (you'll need to have 11+ invoices with various billing dates entered in the system): 1) apply patch, 2) view the Acquisitions invoices page (acqui/invoices.pl), do some search (= as broad search as possible) and confirm that "Billing date" and "Vendor" columns now do sort correctly, 3) in situations when there are more than 10 search results, they should all be visible in the invoices table. NOTE: Generating invoices is a painfully convoluted mess. All my "Billing date" entries were blank, so was not able to confirm Billing date issues. However, Vendor sorting issues, seeing more than 10, and in my bizarre initial case the non-visible checkboxes were all fixed. Signed-off-by: Mark Tompsett <mtompset@hotmail.com> Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> Signed-off-by: Galen Charlton <gmc@esilibrary.com>
327 lines
15 KiB
Text
327 lines
15 KiB
Text
[% USE KohaDates %]
|
|
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Koha › Acquisitions › Invoices</title>
|
|
<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" />
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
[% INCLUDE 'calendar.inc' %]
|
|
<script type="text/javascript">
|
|
//<![CDATA[
|
|
$(document).ready(function() {
|
|
$("#resultst").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
sDom: "t",
|
|
bPaginate: false,
|
|
bFilter: false,
|
|
bInfo: false,
|
|
"aoColumns": [
|
|
null,null,null,{ "sType": "title-string" },null,null,null,null
|
|
],
|
|
aoColumnDefs: [
|
|
{ "bSortable": false, "aTargets": [0, 7] }
|
|
]
|
|
}));
|
|
|
|
$('#merge').click(function (ev) {
|
|
var booksellerid;
|
|
var mismatch;
|
|
var invoices = [ ];
|
|
if ($('.select-invoice:checked').size() < 2) {
|
|
alert(_("You must select at least two invoices to merge."));
|
|
return false;
|
|
}
|
|
$('.select-invoice:checked').each(function () {
|
|
var row = $(this).parents('tr');
|
|
booksellerid = booksellerid || $(row).attr('data-booksellerid');
|
|
if (booksellerid !== $(row).attr('data-booksellerid')) {
|
|
mismatch = true;
|
|
}
|
|
invoices.push({ 'invoiceid': $(row).attr('data-invoiceid'),
|
|
'invoicenumber': $(row).find('td:nth-child(2) a').text(),
|
|
'shipmentdate': $(row).attr('data-shipmentdate'),
|
|
'billingdate': $(row).attr('data-billingdate'),
|
|
'shipmentcost': $(row).attr('data-shipmentcost'),
|
|
'shipment_budgetid': $(row).attr('data-shipment_budgetid'),
|
|
'closedate': $(row).attr('data-closedate'), });
|
|
$('#merge_invoice_form').append('<input type="hidden" name="merge" value="' + $(row).attr('data-invoiceid') + '" />');
|
|
});
|
|
if (mismatch) {
|
|
alert(_("All invoices for merging must be from the same vendor"));
|
|
} else {
|
|
$('#merge_table tbody').empty();
|
|
$.each(invoices, function (idx, invoice) {
|
|
var row = $('<tr data-invoiceid="' + invoice.invoiceid + '"><td>' + invoice.invoicenumber + '</td><td>' + invoice.shipmentdate + '</td><td>' + invoice.billingdate + '</td><td>' + invoice.shipmentcost + '</td></tr>');
|
|
$(row).appendTo('#merge_table tbody');
|
|
$(row).click(function () {
|
|
$('#merge_table tbody tr').removeClass('active');
|
|
$(this).addClass('active');
|
|
$('#merge_invoicenumber').text(invoice.invoicenumber);
|
|
$.each(['invoiceid', 'shipmentdate', 'billingdate', 'shipmentcost', 'shipment_budgetid'], function (idx, prop) {
|
|
$('#merge_' + prop).val(invoice[prop]);
|
|
});
|
|
if (invoice.closedate) {
|
|
$('#merge_status').text(_("Closed on " + invoice.closedate + ""));
|
|
} else {
|
|
$('#merge_status').text(_("Open"));
|
|
}
|
|
});
|
|
});
|
|
$('#merge_table tbody tr:first').click();
|
|
$('#merge_invoices').show();
|
|
}
|
|
});
|
|
});
|
|
//]]>
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
[% 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> › Invoices</div>
|
|
|
|
<div id="doc3" class="yui-t2">
|
|
|
|
<div id="bd">
|
|
<div id="yui-main">
|
|
<div class="yui-b">
|
|
<h1>Invoices</h1>
|
|
[% IF ( do_search ) %]
|
|
[% IF invoices %]
|
|
<table id="resultst">
|
|
<thead>
|
|
<tr>
|
|
<th> </th>
|
|
<th>Invoice no.</th>
|
|
<th>Vendor</th>
|
|
<th>Billing date</th>
|
|
<th>Received biblios</th>
|
|
<th>Received items</th>
|
|
<th>Status</th>
|
|
<th> </th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH invoice IN invoices %]
|
|
<tr data-invoiceid="[% invoice.invoiceid %]" data-booksellerid="[% invoice.booksellerid %]" data-shipmentdate="[% invoice.shipmentdate | $KohaDates %]" data-billingdate="[% invoice.billingdate | $KohaDates %]" data-shipmentcost="[% invoice.shipmentcost %]" data-shipment_budgetid="[% invoice.shipmentcost_budgetid %]" data-closedate="[% invoice.closedate | $KohaDates %]">
|
|
<td><input type="checkbox" class="select-invoice" value="[% invoice.invoiceid %]"></input></td>
|
|
<td><a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% invoice.invoiceid %]">[% invoice.invoicenumber %]</a></td>
|
|
<td><a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% invoice.booksellerid %]">[% invoice.suppliername %]</a></td>
|
|
<td>
|
|
[% IF invoice.billingdate %]
|
|
<span title="[% invoice.billingdate %]">[% invoice.billingdate | $KohaDates %]</span>
|
|
[% ELSE %]
|
|
<span title="0000-00-00"></span>
|
|
[% END %]
|
|
</td>
|
|
<td>[% invoice.receivedbiblios %]</td>
|
|
<td>[% invoice.receiveditems %]</td>
|
|
<td>
|
|
[% IF invoice.closedate %]
|
|
Closed on [% invoice.closedate | $KohaDates %]
|
|
[% ELSE %]
|
|
Open
|
|
[% END %]
|
|
</td>
|
|
<td>
|
|
<a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% invoice.invoiceid %]">Details</a> /
|
|
[% IF invoice.closedate %]
|
|
<a href="invoice.pl?op=reopen&invoiceid=[% invoice.invoiceid %]&referer=/cgi-bin/koha/acqui/invoices.pl%3Fop=do_search%26invoicenumber=[% invoicenumber %]%26supplier=[% booksellerid %]%26billingdatefrom=[% billingdatefrom %]%26billingdateto=[% billingdateto %]%26isbneanissn=[% isbneanissn %]%26title=[% title %]%26author=[% author %]%26publisher=[% publisher %]%26publicationyear=[% publicationyear %]%26branch=[% branch %]">Reopen</a>
|
|
[% ELSE %]
|
|
<a href="invoice.pl?op=close&invoiceid=[% invoice.invoiceid %]&referer=/cgi-bin/koha/acqui/invoices.pl%3Fop=do_search%26invoicenumber=[% invoicenumber %]%26supplier=[% booksellerid %]%26billingdatefrom=[% billingdatefrom %]%26billingdateto=[% billingdateto %]%26isbneanissn=[% isbneanissn %]%26title=[% title %]%26author=[% author %]%26publisher=[% publisher %]%26publicationyear=[% publicationyear %]%26branch=[% branch %]">Close</a>
|
|
[% END %]
|
|
[% UNLESS invoice.receivedbiblios || invoice.receiveditems %]
|
|
/ <a href="invoice.pl?op=delete&invoiceid=[% invoice.invoiceid %]&referer=/cgi-bin/koha/acqui/invoices.pl%3Fop=do_search%26invoicenumber=[% invoicenumber %]%26supplier=[% booksellerid %]%26billingdatefrom=[% billingdatefrom %]%26billingdateto=[% billingdateto %]%26isbneanissn=[% isbneanissn %]%26title=[% title %]%26author=[% author %]%26publisher=[% publisher %]%26publicationyear=[% publicationyear %]%26branch=[% branch %]">Delete</a>
|
|
[% END %]
|
|
</td>
|
|
</tr>
|
|
[% END %]
|
|
</tbody>
|
|
</table>
|
|
<a class="submit" id="merge" href="#merge_invoices">Merge selected invoices</a>
|
|
<div id="merge_invoices">
|
|
<form id="merge_invoice_form" action="/cgi-bin/koha/acqui/invoice.pl" method="post">
|
|
<fieldset class="rows">
|
|
<ol>
|
|
<li><h2>Merge invoices</h2></li>
|
|
<li><table id="merge_table">
|
|
<thead><tr><th>Invoice no.</th><th>Shipment date</th><th>Billing date</th><th>Shipment cost</th></tr></thead>
|
|
<tbody>
|
|
</tbody>
|
|
</table></li>
|
|
<li><label for="merge_invoicenumber">Invoice number:</label><span id="merge_invoicenumber"></span></li>
|
|
<li><label for="merge_shipmentdate">Shipment date:</label>
|
|
<input type="text" size="10" id="merge_shipmentdate" name="shipmentdate" value="" readonly="readonly" class="datepicker" /></li>
|
|
|
|
<li><label for="merge_billingdate">Billing date:</label>
|
|
<input type="text" size="10" id="merge_billingdate" name="billingdate" value="" readonly="readonly" class="datepicker" /></li>
|
|
|
|
<li><label for="merge_shipmentcost">Shipment cost:</label>
|
|
<input type="text" size="10" id="merge_shipmentcost" name="shipmentcost" value="" /></li>
|
|
<li><label for="merge_shipment_budgetid">Fund:</label>
|
|
<select id="merge_shipment_budgetid" name="shipment_budget_id">
|
|
<option value="">No fund</option>
|
|
[% FOREACH budget IN budgets_loop %]
|
|
<option value="[% budget.budget_id %]">
|
|
[% budget.budget_name %]
|
|
</option>
|
|
[% END %]
|
|
</select></li>
|
|
|
|
<li><span class="label">Status:</span> <span id="merge_status"></span></li>
|
|
<li><input type="submit" value="Merge" /></li>
|
|
</ol>
|
|
<input type="hidden" name="op" value="mod" />
|
|
<input type="hidden" id="merge_invoiceid" name="invoiceid" value="" />
|
|
</fieldset>
|
|
</form>
|
|
</div>
|
|
[% ELSE %]
|
|
<p>Sorry, but there is no results for your search.</p>
|
|
<p>Search was:
|
|
<ul>
|
|
[% IF ( invoicenumber ) %]
|
|
<li>Invoice no.: [% invoicenumber %]</li>
|
|
[% END %]
|
|
[% IF booksellerid %]
|
|
<li>Vendor: [% suppliername %]</li>
|
|
[% END %]
|
|
[% IF ( billingdatefrom ) %]
|
|
<li>Billing date:
|
|
[% IF ( billingdateto ) %]
|
|
From [% billingdatefrom %]
|
|
To [% billingdateto %]
|
|
[% ELSE %]
|
|
All since [% billingdatefrom %]
|
|
[% END %]
|
|
</li>
|
|
[% ELSE %]
|
|
[% IF ( billingdateto ) %]
|
|
<li>Billing date:
|
|
All until [% billingdateto %]
|
|
</li>
|
|
[% END %]
|
|
[% END %]
|
|
[% IF ( isbneanissn ) %]
|
|
<li>ISBN/EAN/ISSN: [% isbneanissn %]</li>
|
|
[% END %]
|
|
[% IF ( title ) %]
|
|
<li>Title: [% title %]</li>
|
|
[% END %]
|
|
[% IF ( author ) %]
|
|
<li>Author: [% author %]</li>
|
|
[% END %]
|
|
[% IF ( publisher ) %]
|
|
<li>Publisher: [% publisher %]</li>
|
|
[% END %]
|
|
[% IF ( publicationyear ) %]
|
|
<li>Publication year: [% publicationyear %]</li>
|
|
[% END %]
|
|
[% IF ( branch ) %]
|
|
<li>Library: [% branchname %]</li>
|
|
[% END %]
|
|
</ul>
|
|
</p>
|
|
[% END %]<!-- invoices -->
|
|
[% ELSE %]
|
|
<p>Use the search form on the left to find invoices.</p>
|
|
[% END %]<!-- do_search -->
|
|
</div>
|
|
</div>
|
|
<div class="yui-b">
|
|
<form action="" method="get">
|
|
<fieldset class="brief">
|
|
<h3>Search filters</h3>
|
|
<ol>
|
|
<li>
|
|
<label for="invoicenumber">Invoice no:</label>
|
|
<input type="text" id="invoicenumber" name="invoicenumber" value="[% invoicenumber %]" class="focus" />
|
|
</li>
|
|
<li>
|
|
<label for="supplier">Vendor:</label>
|
|
<select id="supplier" name="supplierid">
|
|
<option value="">All</option>
|
|
[% FOREACH supplier IN suppliers_loop %]
|
|
[% IF ( supplier.selected ) %]
|
|
<option selected="selected" value="[% supplier.booksellerid %]">[% supplier.suppliername %]</option>
|
|
[% ELSE %]
|
|
<option value="[% supplier.booksellerid %]">[% supplier.suppliername %]</option>
|
|
[% END %]
|
|
[% END %]
|
|
</select>
|
|
</li>
|
|
<li>
|
|
<fieldset class="brief">
|
|
<legend>Shipment date</legend>
|
|
<ol>
|
|
<li>
|
|
<label for="shipmentdatefrom">From:</label>
|
|
<input type="text" id="shipmentdatefrom" name="shipmentdatefrom" size="10" value="[% shipmentdatefrom %]" class="datepicker" />
|
|
</li>
|
|
<li>
|
|
<label for="shipmentdateto">To:</label>
|
|
<input type="text" id="shipmentdateto" name="shipmentdateto" size="10" value="[% shipmentdateto %]" class="datepicker" />
|
|
</li>
|
|
</ol>
|
|
</fieldset>
|
|
</li>
|
|
<li>
|
|
<fieldset class="brief">
|
|
<legend>Billing date</legend>
|
|
<ol>
|
|
<li>
|
|
<label for="billingdatefrom">From:</label>
|
|
<input type="text" id="billingdatefrom" name="billingdatefrom" size="10" value="[% billingdatefrom %]" class="datepicker" />
|
|
</li>
|
|
<li>
|
|
<label for="billingdateto">To:</label>
|
|
<input type="text" id="billingdateto" name="billingdateto" size="10" value="[% billingdateto %]" class="datepicker" />
|
|
</li>
|
|
</ol>
|
|
</fieldset>
|
|
</li>
|
|
<li>
|
|
<label for="isbneanissn">ISBN / EAN / ISSN:</label>
|
|
<input type="text" id="isbneanissn" name="isbneanissn" value="[% isbneanissn %]" />
|
|
</li>
|
|
<li>
|
|
<label for="title">Title:</label>
|
|
<input type="text" id="title" name="title" value="[% title %]" />
|
|
</li>
|
|
<li>
|
|
<label for="author">Author:</label>
|
|
<input type="text" id="author" name="author" value="[% author %]" />
|
|
</li>
|
|
<li>
|
|
<label for="publisher">Publisher:</label>
|
|
<input type="text" id="publisher" name="publisher" value="[% publisher %]" />
|
|
</li>
|
|
<li>
|
|
<label for="publicationyear">Publication year:</label>
|
|
<input type="text" id="publicationyear" name="publicationyear" value="[% publicationyear %]" />
|
|
</li>
|
|
<li>
|
|
<label for="branch">Library:</label>
|
|
<select id="branch" name="branch">
|
|
<option value="">All</option>
|
|
[% FOREACH branch IN branches_loop %]
|
|
[% IF ( branch.selected ) %]
|
|
<option selected="selected" value="[% branch.branchcode %]">[% branch.branchname %]</option>
|
|
[% ELSE %]
|
|
<option value="[% branch.branchcode %]">[% branch.branchname %]</option>
|
|
[% END %]
|
|
[% END %]
|
|
</select>
|
|
</li>
|
|
</ol>
|
|
<fieldset class="action">
|
|
<input type="submit" value="Search" />
|
|
</fieldset>
|
|
</fieldset>
|
|
<input type="hidden" name="op" id="op" value="do_search" />
|
|
</form>
|
|
[% INCLUDE 'acquisitions-menu.inc' %]
|
|
</div>
|
|
</div>
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|