Koha/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcel.tt
Jonathan Druart 7f853584d5 Bug 20212: Search on fund's name instead of id
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Andrew Fuerste-Henry <andrew@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-01-28 16:44:12 +01:00

859 lines
42 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[% USE raw %]
[% USE Asset %]
[% USE Koha %]
[% USE KohaDates %]
[% USE Price %]
[% USE currency = format('%.2f') -%]
[% PROCESS 'i18n.inc' %]
[% SET footerjs = 1 %]
[% INCLUDE 'doc-head-open.inc' %]
<title>
Koha &rsaquo; Acquisitions &rsaquo;
[% IF ( invoiceclosedate ) %]
Receipt summary for [% name | html %] [% IF ( invoice ) %]invoice [% invoice | html %][% END %]
[% ELSE %]
Receive orders from [% name | html %]
[% END %]
</title>
[% INCLUDE 'doc-head-close.inc' %]
</head>
<body id="acq_parcel" class="acq">
[% INCLUDE 'header.inc' %]
[% INCLUDE 'acquisitions-search.inc' %]
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> &rsaquo; <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> &rsaquo;
[% IF invoiceclosedate %]
Receipt summary for <em>[% name | html %]</em>
[% IF ( invoice ) %]
<em>[ [% invoice | html %] ]</em>
[% END %]
[% ELSE %]
Receive orders from [% name | html %]
[% END %]
</div>
<div class="main container-fluid">
<div class="row">
<div class="col-sm-10 col-sm-push-2">
<main>
[% IF ( receive_error ) %]
<div class="dialog alert">
<h3>Error adding items:</h3>
<ul>
[% FOREACH error_loo IN error_loop %]
<li>[% error_loo.error_param | html %][% IF ( error_loo.error_duplicate_barcode ) %]Duplicate Barcode[% END %] <!-- todo: other error conditions come here. --></li>
[% END %]
</ul>
</div>
[% END %]
<h1>
[% IF ( invoiceclosedate ) %]
Receipt summary for <em>[% name | html %]</em> [% IF ( invoice ) %] <em> [ [% invoice | html %] ] </em>[% END %]
[% ELSE %]
Receive orders from [% name | html %]
[% END %]
</h1>
[% IF ( success_delorder ) %]
<div class="dialog message">The order has been successfully canceled.</div>
[% ELSE %]
[% IF ( error_delitem ) %]
<div class="dialog alert">The order has been canceled, although one or more items could not have been deleted.</div>
[% END %]
[% IF ( error_delbiblio ) %]
<div class="dialog alert">The order has been canceled, although the record has not been deleted.</div>
[% END %]
[% END %]
[% IF (error_cancelling_receipt) %]
<div class="dialog alert">
Cannot cancel receipt. Possible reasons :
<ul>
<li>
The order line you are trying to cancel was created from a partial receipt
of another order line which is already received. Try to cancel this
one first and retry.
</li>
<li>
The order line you are trying to cancel was created from a partial receipt
of another order line which has been deleted. Cancellation is not
possible.
</li>
</ul>
</div>
[% END %]
[% IF error_invoice_not_known %]
<div class="dialog alert">
The invoice referenced by this invoiceid does not exist.
</div>
[% END %]
[% UNLESS no_orders_to_display %]
<div id="acqui_receive_summary">
<p><strong>Invoice number:</strong> [% invoice | html %] <strong>Shipment date:</strong> [% shipmentdate | $KohaDates %]</p>
</div>
[% UNLESS (invoiceclosedate) %]
<div id="acqui_receive_search">
<h3>Pending orders</h3>
<table id="pending_orders" class="table table-bordered table-striped">
<thead>
<tr>
<th>Basket</th>
<th>Basket group</th>
<th>Order line</th>
<th class="hidden">Title</th>
<th class="hidden">Author</th>
<th class="hidden">ISBN</th>
<th>Summary</th>
<th>More</th>
<th>Replacement price</th>
<th>Quantity</th>
<th>Unit cost</th>
<th>Order cost</th>
<th>Fund</th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
<tr>
<th><div class="input-group input-group-sm"><input id="basket_name_column_search" type="text" class="form-control column-filter" data-search-fields='["basket.name"]'></div></th>
<th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["basket.basket_group.name"]'></div></th>
<th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["me.order_id"]'></div></th>
<th class="hidden">&nbsp;</th>
<th class="hidden">&nbsp;</th>
<th class="hidden">&nbsp;</th>
<th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["me.internal_note","me.vendor_note","biblio.title","biblio.author","biblio.isbn","biblio.publisher","biblio.publication_year","biblio.copyright_date","biblio.suggestions.suggester.surname","biblio.suggestions.suggester.firstname"]'></div></th>
<th>&nbsp;</th>
<th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["me.replacement_price"]'></div></th>
<th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["me.quantity"]'></div></th>
<th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["me.ecost"]'></div></th>
<th>&nbsp;</th>
<!--th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["order_cost"]'></div></th-->
<th><div class="input-group input-group-sm"><input type="text" class="form-control column-filter" data-search-fields='["fund.name"]'></div></th>
<th>&nbsp;</th>
<th>&nbsp;</th>
</tr>
</thead>
</table>
</div>
[% ELSE %]
<p>
Invoice is closed, so you can't receive orders anymore.
[% IF CAN_user_acquisition_reopen_closed_invoices %]
<a href="/cgi-bin/koha/acqui/invoice.pl?op=reopen&invoiceid=[% invoiceid | uri %]&referer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid | uri %]">Reopen it</a>.
[% END %]
</p>
[% END %]
<div id="acqui_receive_receivelist">
<h3>Already received</h3>
[% IF ( loop_received ) %]
<form action="/cgi-bin/koha/acqui/parcel.pl" method="get" name="orderform">
<table id="receivedt">
<thead>
<tr>
<th>Basket</th>
<th>Basket group</th>
<th>Order line</th>
<th title="Item holds / Total holds">Holds</th>
<th>Summary</th>
<th>More</th>
<th>Replacement price</th>
<th>Quantity</th>
<th>Fund</th>
<th>Est cost</th>
<th>Actual cost</th>
<th>TOTAL</th>
<th></th>
</tr>
</thead>
<tfoot>
[% FOREACH key IN subtotal_for_funds.keys.sort %]
<tr>
[% IF invoiceincgst %]
<td colspan="6" class="total">(Tax inc.)</td>
[% ELSE %]
<td colspan="6" class="total">(Tax exc.)</td>
[% END %]
<td colspan="3"><em>Subtotal for</em> [% key | html %]</td>
<td>[% subtotal_for_funds.$key.ecost | $Price %]</td>
<td>[% subtotal_for_funds.$key.unitprice | $Price %]</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
[% END %]
<tr>
<th colspan="11" class="total">Total tax exc.</th>
<th>[% total_tax_excluded | $Price %]</th>
<th></th>
</tr>
[% FOREACH book_foot IN book_foot_loop %]
<tr>
<th colspan="11">Total (GST [% book_foot.tax_rate * 100 | html %]%)</th>
<th>[% book_foot.tax_value | $Price %]</th>
<th></th>
</tr>
[% END %]
<tr>
<th colspan="11" class="total">Total tax inc.</th>
<th>[% total_tax_included | $Price %]</th>
<th></th>
</tr>
</tfoot>
<tbody class="filterclass">
[% FOREACH order IN loop_received %]
<tr>
<td><a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% order.basketno | uri %]"> [% order.basketname | html %] ([% order.basketno | html %])</a></td>
<td>
[% IF order.basketgroupid %]
<a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&amp;booksellerid=[% booksellerid | uri %]">[% order.basketgroupname | html %] ([% order.basketgroupid | html %])</a>
[% ELSE %]
No basket group
[% END %]
</td>
<td>
<a href="neworderempty.pl?ordernumber=[% order.ordernumber | uri %]&amp;booksellerid=[% booksellerid | uri %]">[% order.ordernumber | html %]</a>
[% IF (order.parent_ordernumber && (order.parent_ordernumber != order.ordernumber)) %]
(<a href="neworderempty.pl?ordernumber=[% order.parent_ordernumber | uri %]&amp;booksellerid=[% booksellerid | uri %]" title="Original order line">[% order.parent_ordernumber | html %]</a>)
[% END %]
</td>
<td>
[% IF order.total_holds > 0 %]
[% IF order.item_holds > 0 %]
<span class="error"><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% order.biblionumber | uri %]">[% order.item_holds | html %]</a></span>
[% ELSE %]
0
[% END %]
/
<span class="error"><a href="/cgi-bin/koha/reserve/request.pl?biblionumber=[% order.biblionumber | uri %]">[% order.total_holds | html %]</a></span>
[% ELSE %]
0
[% END %]
</td>
<td><a href="/cgi-bin/koha/catalogue/detail.pl?biblionumber=[% order.biblionumber | uri %]">[% order.title | html %]</a>
[% IF ( order.author ) %] / [% order.author | html %][% END %]
[% IF ( order.isbn ) %] - [% order.isbn | html %][% END %]
[% IF ( order.publishercode ) %]
<br />Publisher: [% order.publishercode | html %]
[%- IF ( order.publicationyear > 0) -%], [% order.publicationyear | html %]
[%- ELSIF ( order.copyrightdate > 0) -%] [% order.copyrightdate | html %]
[% END %]
[% END %]
[% IF ( order.suggestionid ) %]
<br/>
Suggested by: [% order.surnamesuggestedby | html %][% IF ( order.firstnamesuggestedby ) %], [% order.firstnamesuggestedby | html %] [% END %]
(<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% order.suggestionid | uri %]&amp;op=show">suggestion #[% order.suggestionid | html %]</a>)
[% END %]
<br />
[% IF ( order.order_internalnote ) %]
<p class="ordernote"><strong>Internal note: </strong>[% order.order_internalnote | html %] [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% order.ordernumber | uri %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid | uri %]&type=internal">Change internal note</a>]</p>
[% ELSE %]
[<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% order.ordernumber | uri %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid | uri %]&type=internal">Add internal note</a>]
[% END %]
[% IF ( order.order_vendornote ) %]
<p class="ordernote"><strong>Vendor note: </strong>[% order.order_vendornote | html %]</p>
[% ELSE %]
[<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber=[% order.ordernumber | uri %]&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid | uri %]&type=vendor">Add vendor note</a>]
[% END %]
</td>
<td>
<a href="/cgi-bin/koha/acqui/showorder.pl?ordernumber=[% order.ordernumber | uri %]" class="previewData">[% tp('noun', 'Order') | html %]</a><br>
<a href="/cgi-bin/koha/catalogue/showmarc.pl?id=[% order.biblionumber | uri %]" class="previewData">MARC</a><br>
<a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;id=[% order.biblionumber | uri %]" class="previewData">Card</a>
</td>
<td>[% order.replacementprice | $Price %]</td>
<td>[% order.quantityreceived | html %]</td>
<td>[% order.budget.budget_name | html %]</td>
<td>[% order.ecost | $Price %]</td>
<td>[% order.unitprice | $Price %]</td>
<td>[% order.total | $Price %]</td>
<td>
[% IF loop_receive.cannot_cancel or ( order.basket.effective_create_items == "receiving" and loop_receive.holds > 0 ) %]
[% IF loop_receive.cannot_cancel %]
[% span_title = BLOCK %]
Cannot cancel receipt of this order line because it
was created from a partial receipt of order line no.
[% order.parent_ordernumber | html %], which is
already received. Try cancelling this one first and
retry.
[% END %]
[% ELSE %]
[%# FIXME Here we block the cancellation if holds exist. Actually it could be possible if items will be exist after the deletion %]
[%# Some additional checks should be added in the pl file %]
[% span_title = BLOCK %]
Cannot cancel receipt of this order line because at least one reservation exists on the records.
[% END %]
[% END %]
<span title="[% span_title | collapse | html %]">
Can't cancel receipt
</span>
[% ELSE %]
<a href="/cgi-bin/koha/acqui/parcel.pl?invoiceid=[% invoiceid | uri %]&op=cancelreceipt&ordernumber=[% order.ordernumber | uri %]">Cancel receipt</a>
[% END %]
</td>
</tr>
[% END %]
</tbody>
</table>
</form>
[% ELSE %]There are no received orders.[% END %]
</div>
<div id="dataPreview" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="dataPreviewLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="dataPreviewLabel">MARC preview</h3>
</div>
<div class="modal-body">
<div id="loading"> <img src="[% interface | html %]/[% theme | html %]/img/spinner-small.gif" alt="" /> Loading </div>
</div>
<div class="modal-footer">
<button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Close</button>
</div>
</div>
</div>
</div>
[% IF (invoiceclosedate) %]
<a href="/cgi-bin/koha/acqui/invoice.pl?invoiceid=[% invoiceid | uri %]">View invoice</a>
[% ELSE %]
<form action="/cgi-bin/koha/acqui/invoice.pl" method="get">
<input type="hidden" name="invoiceid" value="[% invoiceid | html %]" />
<fieldset class="action">
<input type="submit" value="Finish receiving" />
</fieldset>
</form>
[% END %]
[% END %]
</main>
</div> <!-- /.col-sm-10.col-sm-push-2 -->
<div class="col-sm-2 col-sm-pull-10">
<aside>
<form action="/cgi-bin/koha/acqui/parcel.pl" id="filterform" method="post">
<fieldset class="brief">
<h4>Filter</h4>
<ol>
<li>
<label for="summaryfilter">ISBN, author or title:</label>
<input type="text" name="summaryfilter" id="summaryfilter" value="[% summaryfilter | html %]"/>
</li>
<li>
<label for="basketfilter">Basket name:</label>
<input type="text" name="basketfilter" id="basketfilter" value="[% basketfilter | html %]"/>
</li>
<li>
<label for="basketgroupnamefilter">Basket group name:</label>
<input type="text" name="basketgroupnamefilter" id="basketgroupnamefilter" value="[% basketgroupnamefilter | html %]" />
</li>
<li>
<label for="orderfilter">Order line:</label>
<input type="text" name="orderfilter" id="orderfilter" value="[% orderfilter | html %]"/>
</li>
[% IF (UNIMARC) %]
<li>
<label for="eanfilter">EAN:</label>
<input type="text" name="eanfilter" id="eanfilter" value="[% eanfilter | html %]"/>
</li>
[% END %]
</ol>
<fieldset class="action">
<input type="hidden" value="search" name="op" />
<input type="hidden" value="[% invoiceid | html %]" name="invoiceid" />
<input type="submit" value="Filter" />
<a href="#" id="clear_form_filters">Clear</a>
</fieldset>
</fieldset>
</form>
[% INCLUDE 'acquisitions-menu.inc' %]
</aside>
</div> <!-- /.col-sm-2.col-sm-pull-10 -->
</div> <!-- /.row -->
[% MACRO jsinclude BLOCK %]
[% Asset.js("js/acquisitions-menu.js") | $raw %]
[% INCLUDE 'datatables.inc' %]
[% Asset.js("lib/jquery/plugins/jquery.dataTables.columnFilter.js") | $raw %]
[% Asset.js("lib/jquery/plugins/jquery.cookie.min.js") | $raw %]
<style>#dataPreview { width : 80%; } @media (max-width: 767px) { #dataPreview { margin: 0; width : auto; } }</style>
<script>
dt_overwrite_html_sorting_localeCompare();
var sticky_filters = [% sticky_filters | html %];
var columns_filter = {};
function query_from_filters( base_query ) {
var query_and = [];
var summary = $("#summaryfilter").val();
var basket_group = $("#basketgroupnamefilter").val();
var basket_name = $("#basketfilter").val();
var order_id = $("#orderfilter").val();
var ean = $("#eanfilter").val();
// ean == undefined if the HTML doesn't have it
ean = (ean === undefined) ? '' : ean;
if ( basket_name != "" ) {
query_and.push( { "basket.name": { "like": '%'+basket_name+'%' } } );
}
if (basket_group != "") {
query_and.push( { "basket.basket_group.name": { "like": '%'+basket_group+'%' } } );
}
if (summary != "") {
query_and.push( { "-or": [{"biblio.title": { "like": '%'+summary+'%' } },
{"biblio.author": { "like": '%'+summary+'%' } },
{"biblio.isbn": { "like": '%'+summary+'%' } } ] } );
}
if (ean != "") {
query_and.push( { "biblio.ean": ean } );
}
$(".column-filter").each(function () {
var search_fields = $(this).data('search-fields');
var value = this.value;
if ( value != '' &&
value != undefined ) { // skip if empty
var columns_filters = [];
search_fields.forEach( function (item) {
if ( item === "me.order_id" ||
item === "me.replacement_price" ||
item === "me.quantity" ||
item === "me.ecost" ) {
// For numbers, we do 'starts with'
var object = {};
object[item] = { "like": value+'%' };
columns_filters.push( object );
}
else {
var object = {};
object[item] = { "like": '%'+value+'%' };
columns_filters.push( object );
}
});
if ( columns_filters.length > 1 ) {
query_and.push( { "-or": columns_filters } );
}
else if ( columns_filters.length > 0 ) {
query_and.push( columns_filters[0] );
}
}
});
var query_params = [];
if ( query_and.length > 0 ) {
query_and.push(base_query);
query_params.push('q=' + encodeURIComponent(JSON.stringify({ "-and": query_and })));
}
if ( order_id != "" ) {
query_params.push("order_id="+order_id);
}
return query_params;
}
function _escape_str(s){
return s != null ? s.escapeHtml() : "";
}
function _escape_price(p){
return p != null ? p.escapeHtml().format_price() : "";
}
$(document).ready(function(){
if ( $("#receivedt").length ) {
var receivedt = $("#receivedt").dataTable($.extend(true, {}, dataTablesDefaults, {
"bStateSave": true,
"iCookieDuration": 60*60*24*1000, // 1000 days
"iDisplayLength": 10,
"aLengthMenu": [[5, 10, 20, 50, 100, -1], [5, 10, 20, 50, 100, _("All")]],
"aoColumnDefs": [
{ "aTargets": [ 5, -1 ], "bSortable": false, "bSearchable": false },
],
"aoColumns": [
{ "sType": "html" },
{ "sType": "html" },
{ "sType": "html" },
{ "sType": "num-html" },
{ "sType": "anti-the" },
null,
null,
null,
null,
null,
null,
null,
null
],
"sPaginationType": "full"
}));
}
var base_query = { "basket.vendor_id": [% booksellerid | html %] };
var query_params = query_from_filters( base_query );
var THE_query = query_params.join("&");
var pending_orders_url = '/api/v1/acquisitions/orders?only_active=1';
var pending_orders_table = $("#pending_orders").api({
"ajax": {
"url": pending_orders_url + '&' + THE_query
},
"header_filter": true,
"embed": [
"basket.basket_group",
"biblio.active_orders+count",
"biblio.holds+count",
"biblio.items+count",
"biblio.suggestions.suggester",
"fund",
"current_item_level_holds+count",
"items"
],
"stateSave": true, // remember state on page reload
"orderCellsTop": true, // tell the datatable sorting is done on the top row
"fixedHeader": true,
'dom': 'C<"top pager"ilpfB><"#filter_c">tr<"bottom pager"ip>',
"drawCallback": function (settings) {
$(".previewData").on("click", function(e){
e.preventDefault();
var ltitle = $(this).text();
var page = $(this).attr("href");
$("#dataPreviewLabel").text(ltitle);
$("#dataPreview .modal-body").load(page + " div");
$('#dataPreview').modal({show:true});
});
},
"columnDefs": [ {
"targets": [3,4,5,9],
"render": function (data, type, row, meta) {
return _escape_str(data);
}
},
{
"targets": [8,10],
"render": function (data, type, row, meta) {
return _escape_price(data);
}
} ],
"columns": [
{ "data": "basket.name",
"orderable": true,
"render": function(data, type, row, meta) {
if (type != 'display') return _escape_str(data);
return "<a href=\"/cgi-bin/koha/acqui/basket.pl?basketno=" + encodeURIComponent(row.basket.basket_id) + "\">" + data.escapeHtml() + " (" + row.basket.basket_id.escapeHtml() + ")</a>";
}
},
{ "data": "basket.basket_group.name",
"orderable": true,
"render": function(data, type, row, meta) {
if ( type != 'display' ) {
return _escape_str(data);
}
if ( row.basket.basket_group_id == null ) {
return _("No basket group");
}
else {
return "<a href=\"/cgi-bin/koha/acqui/basketgroup.pl?op=add&amp;booksellerid="
+ encodeURIComponent(row.basket.vendor_id) + "&amp;basketgroupid="
+ encodeURIComponent(row.basket.basket_group_id) + "\">"
+ row.basket.basket_group.name.escapeHtml() + " (" + row.basket.basket_group_id.escapeHtml() + ")</a>";
}
}
},
{
"data": "order_id",
"render": function(data, type, row, meta) {
if (type != 'display') return _escape_str(data);
return "<a href=\"neworderempty.pl?ordernumber="+encodeURIComponent(data)+"&amp;booksellerid="+encodeURIComponent(row.basket.vendor_id)+"\">"+data.escapeHtml()+"</a>";
}
},
{
"data": "biblio.author",
"visible": false,
"searchable": true,
"orderable": false
},
{
"data": "biblio.title",
"visible": false,
"searchable": true,
"orderable": false
},
{
"data": "biblio.isbn",
"visible": false,
"searchable": true,
"orderable": false
},
{
"data": function(row, type, val, meta) {
var result = '';
if ( row.biblio_id != null ) {
result = "<p><a href=\"/cgi-bin/koha/catalogue/detail.pl?biblionumber="+encodeURIComponent(row.biblio_id)+"\">"+row.biblio.title.escapeHtml()+"</a>";
if ( row.biblio.author != null )
result += _(" by ") + row.biblio.author.escapeHtml();
if ( row.biblio.isbn != null )
result += " &ndash; " + row.biblio.isbn.escapeHtml();
if ( row.biblio.publisher != null ) {
result += "<br/>" + _("Publisher: ") + row.biblio.publisher.escapeHtml();
if ( row.biblio.publication_year != null ) {
result += ", " + row.biblio.publication_year.escapeHtml();
}
else if ( row.biblio.copyright_date != null ) {
result += row.biblio.copyright_date.escapeHtml();
}
}
var suggestions = row.biblio.suggestions;
if ( suggestions != null && suggestions.length > 0 ) {
var suggestion = suggestions[0];
if ( suggestion.suggester != null ) {
var suggester = suggestion.suggester;
var suggested_by = [];
if ( suggester.surname != null ) {
suggested_by.push(suggester.surname.escapeHtml());
}
if ( suggester.firstname != null ) {
suggested_by.push(suggester.firstname.escapeHtml());
}
result += "<br/>" + _("Suggested by: ") +
'<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid='
+ encodeURIComponent(suggestion.suggestionid)
+ '&amp;op=show">'
+ suggested_by.join(", ")
+ " (#" + suggestions[0].suggestionid.escapeHtml() + ")</a>"; // FIXME: could be changed if we allow matching multiple suggestions
}
}
result += '</p>';
}
var internal_note = row.internal_note;
if ( internal_note != null && internal_note != '' ) {
result += '<p class="ordernote"><strong>'
+ _("Internal note: ")
+ '</strong>' + internal_note.escapeHtml()
+ ' [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber='
+ encodeURIComponent(row.order_id) + '&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid | uri %]'
+ '&type=internal">' + _("Change internal note") + '</a>]</p>';
}
else {
result += ' [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber='
+ encodeURIComponent(row.order_id) + '&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid | uri %]'
+ '&type=internal">' + _("Add internal note") + '</a>]';
}
var vendor_note = row.vendor_note;
if ( vendor_note != null && vendor_note != '' ) {
result += '<p class="ordernote"><strong>'
+ _("Vendor note: ")
+ '</strong>' + vendor_note.escapeHtml() + '</p>';
}
else {
result += ' [<a href="/cgi-bin/koha/acqui/modordernotes.pl?ordernumber='
+ encodeURIComponent(row.order_id) + '&amp;referrer=/cgi-bin/koha/acqui/parcel.pl%3Finvoiceid=[% invoiceid | uri %]'
+ '&type=vendor">' + _("Add vendor note") + '</a>]';
}
return result;
},
"orderable": false
},
{
"data": function( row, type, val, meta) {
var result = '<a href="/cgi-bin/koha/acqui/showorder.pl?ordernumber=' + encodeURIComponent(row.order_id) + '" class="previewData">' + _("Order") + '</a><br>'
+ '<a href="/cgi-bin/koha/catalogue/showmarc.pl?id=' + encodeURIComponent(row.biblio_id) + '" class="previewData">' + _("MARC") + '</a><br>'
+ '<a href="/cgi-bin/koha/catalogue/showmarc.pl?viewas=card&amp;id=' + encodeURIComponent(row.biblio_id) + '" class="previewData">' + _("Card") + '</a>';
return result;
},
"orderable": false
},
{
"data": "replacement_price"
},
{
"data": "quantity",
"orderable": true
},
{
"data": "ecost"
},
{
"data": function ( row, type, val, meta ) {
return (row.quantity * row.ecost).format_price();
},
"orderable": false // FIXME: How can we do it in DBIC?
},
{
"data": "fund.name",
"render": function(data, type, row, meta) {
if (type != 'display') return data.escapeHtml();
return row.fund.name.escapeHtml();
}
},
{
"data": function( row, type, val, meta ) {
return '<a href="orderreceive.pl?ordernumber='
+ encodeURIComponent(row.order_id) + '&amp;invoiceid=[% invoiceid | uri %]' + '">'
+ _("Receive") + '</a><br/>'
+ '<a href="#" onclick="transfer_order_popup(' + row.order_id.escapeHtml() + '); return false;">'
+ _("Transfer") + '</a>';
},
"orderable": false
},
{
"data": function( row, type, val, meta ) {
var result = "";
if ( row.current_holds_count > 0 ) {
result += '<span class="button" title="'
+ _("Can't cancel order, (%s) holds are linked with this order. Cancel holds first").format( row.holds_count.escapeHtml() ) + '">'
+ _("Can't cancel order") + '</span><br/>';
}
else {
result += '<a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber='
+ encodeURIComponent(row.order_id)
+ '&biblionumber=' + encodeURIComponent(row.biblio_id)
+ '&referrer=/cgi-bin/koha/acqui/parcel.pl?invoiceid=[% invoiceid | uri %]">'
+ _("Cancel order") + '</a><br/>';
}
if ( row.biblio != null ) {
if ( row.biblio.items_count - row.items.length > 0 ||
row.biblio.active_orders_count > 1 ||
row.biblio.subscriptions_count > 0 ||
row.biblio.holds_count > 0 ) { // biblio can be deleted
result += '<span class="button" title="'
+ _("Can't delete catalog record, see constraints below") + '">'
+ _("Can't cancel order and delete catalog record") + '</span><br>';
}
else {
result += '<a href="/cgi-bin/koha/acqui/cancelorder.pl?ordernumber='
+ encodeURIComponent(row.order_id) + '&biblionumber=' + encodeURIComponent(row.biblio_id)
+ '&del_biblio=1&referrer="/cgi-bin/koha/acqui/parcel.pl?invoiceid=[$ invoiceid | uri ]">'
+ _("Cancel order and catalog record") + '</a><br/>';
}
if ( row.biblio.items_count - row.items.length > 0 ) {
result += '<strong title="'
+ _("Can't delete catalog record, because of %s existing item(s)").format(row.items.length)
+'">' + (row.biblio.items_count - row.items.length) + _(" item(s) left") + '</strong><br/>';
}
if ( row.biblio.active_orders_count > 1 ) {
result += '<strong title="'
+ _("Can't delete catalog record, delete other orders linked to it first") + '">'
+ (row.biblio.active_orders_count - 1) + _(" order(s) left") + '</strong><br/>';
}
if ( row.biblio.subscriptions_count > 0 ) {
result += '<strong title="' + _("Can't delete catalog record, delete subscriptions first") + '">'
+ _("%s subscription(s) left").format(row.biblio.subscriptions_count)
+ '</strong><br>';
}
if ( row.biblio.holds_count > 0 ) {
result += '<strong title="' + _("Can't delete catalog record or order, cancel holds first") + '">'
+ _("%s hold(s) left").format(row.biblio.holds_count) + '</strong>';
}
}
return result;
},
"orderable": false
}
]
});
// column filter events handling
$(".column-filter").each(function () {
$(this).on( 'keyup change', function () {
// recalculate the query
var query_params = query_from_filters( base_query );
// refresh the datatable as appropriate
if ( query_params.length > 0 ) {
pending_orders_table.api().ajax.url( pending_orders_url + '&' + query_params.join("&") );
}
else {
pending_orders_table.api().ajax.url( pending_orders_url + '&q=' + encodeURI(JSON.stringify(base_query)) );
}
pending_orders_table.api().ajax.reload( null, false );
});
});
$("#filterform").on("submit", function(e) {
e.preventDefault();
// Save the filters in the cookie
$.cookie("filter_parcel_summary", $("#summaryfilter").val());
$.cookie("filter_parcel_basketname", $("#basketfilter").val());
$.cookie("filter_parcel_orderno", $("#orderfilter").val());
$.cookie("filter_parcel_basketgroupname", $("#basketgroupnamefilter").val());
$.cookie("filter_parcel_ean", $("#eanfilter").val());
var query_params = query_from_filters( base_query );
if ( query_params.length > 0 ) {
pending_orders_table.api().ajax.url( pending_orders_url + '&' + query_params.join("&") );
}
else {
pending_orders_table.api().ajax.url( pending_orders_url + '&q=' + encodeURI(JSON.stringify(base_query)) );
}
pending_orders_table.api().ajax.reload( null, false );
});
$('#clear_form_filters').on("click", function(){
$(this).closest('form').find("input[type=text], textarea").val("");
pending_orders_table.api().ajax.url(pending_orders_url + '&q=' + encodeURI(JSON.stringify(base_query))).draw();
});
$(".previewData").on("click", function(e){
e.preventDefault();
var ltitle = $(this).text();
var page = $(this).attr("href");
$("#dataPreviewLabel").text(ltitle);
$("#dataPreview .modal-body").load(page + " div");
$('#dataPreview').modal({show:true});
});
$("#dataPreview").on("hidden.bs.modal", function(){
$("#dataPreviewLabel").html("");
$("#dataPreview .modal-body").html("<div id=\"loading\"><img src=\"[% interface | html %]/[% theme | html %]/img/spinner-small.gif\" alt=\"\" /> "+_("Loading")+"</div>");
});
});
// Case-insensitive version of jquery's contains function
jQuery.extend(jQuery.expr[':'], {
icontains : "jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase())>=0"
});
// Contains exactly function
jQuery.extend(jQuery.expr[':'], {
containsExactly: "$(a).text() == m[3]"
});
function transfer_order_popup(ordernumber) {
var url = "/cgi-bin/koha/acqui/transferorder.pl?"
+ "ordernumber=" + ordernumber
window.open(url, 'TransferOrder');
}
</script>
[% END %]
[% INCLUDE 'intranet-bottom.inc' %]