Owen Leonard
56aa775602
This patch makes a number of changes to the vendor search/view template in order to make it work better in different contexts: - Add a vendor-specific toolbar under each vendor search result. This gives instant access to the options for a new basket, new contract, vendor edit, or to receive shipments. A delete button will appear if available. - Add a summary of the number of baskets and subscriptions. This helps the user know if there are closed baskets and whether an outstanding subscription might be blocking the option to delete. Each number is linked to the view of those entries. - Indicate whether a vendor is inactive. The vendor name appears in a different color when it is inactve and is labeled as such. To test, apply the patch and rebuild the staff interface CSS (https://wiki.koha-community.org/wiki/Working_with_SCSS_in_the_OPAC_and_staff_client). - To test you should have multiple vendors in your system, some active and some inactive. Add some baskets and subscriptions to one or more if necessary. - Go to Acquisitions and submit an empty vendor search to show all vendors. - Verify that the page looks correct and that all controls work as expected. - Open the basket view for a single vendor and compare the two views. Signed-off-by: Aleisha Amohia <aleishaamohia@hotmail.com> Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
291 lines
16 KiB
Text
291 lines
16 KiB
Text
[% PROCESS 'i18n.inc' %]
|
|
[% USE raw %]
|
|
[% USE Asset %]
|
|
[% USE KohaDates %]
|
|
[% SET footerjs = 1 %]
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
<title>Search for vendor [% supplier | html %] › Koha</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
<style>
|
|
#vendors td{
|
|
vertical-align: top;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body id="acq_booksellers" class="acq">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'acquisitions-search.inc' %]
|
|
|
|
<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/acqui/acqui-home.pl">Acquisitions</a>
|
|
</li>
|
|
<li>
|
|
<a href="#" aria-current="page">
|
|
Search for vendor <em>[% supplier | html %]</em>
|
|
</a>
|
|
</li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<div class="main container-fluid">
|
|
<div class="row">
|
|
<div class="col-sm-10 col-sm-push-2">
|
|
<main>
|
|
|
|
[% INCLUDE 'acquisitions-toolbar.inc' %]
|
|
[% UNLESS ( count == 1 ) %]
|
|
[% UNLESS count %]
|
|
<h1>Your vendor search returned no results.</h1>
|
|
[% ELSIF ( supplier.length < 1 ) %]
|
|
<h1>Vendor search: [% count | html %] results found</h1>
|
|
[% ELSE %]
|
|
<h1>Vendor search: [% count | html %] results found for '[% supplier | html %]'</h1>
|
|
[% END %]
|
|
[% END %]
|
|
[% IF ( loop_suppliers.size ) %]
|
|
[% UNLESS (count == 1) %]
|
|
<p>Choose a vendor in the list to jump directly to the right place.
|
|
<select id="supplierlist">
|
|
[% FOREACH supplier1 IN loop_suppliers %]
|
|
<option value="[% supplier1.booksellerid | html %]">[% supplier1.name | html %]</option>
|
|
[% END %]
|
|
</select>
|
|
</p>
|
|
[% IF ( allbaskets ) %]
|
|
<a href="/cgi-bin/koha/acqui/booksellers.pl?supplier=[% supplier | uri %]&booksellerid=[% booksellerid | uri %]">Show active baskets only</a>
|
|
[% ELSE %]
|
|
<a href="/cgi-bin/koha/acqui/booksellers.pl?supplier=[% supplier | uri %]&booksellerid=[% booksellerid | uri %]&allbaskets=1">Show all baskets</a>
|
|
[% END %]
|
|
[% END %]
|
|
[% UNLESS booksellerid %]
|
|
| <a href="#" id="show_active_vendors">Show active vendors only</a><a href="#" id="show_all_vendors">Show all vendors</a>
|
|
[% END %]
|
|
<div id="acqui_order_supplierlist">
|
|
[% FOREACH supplier IN loop_suppliers %]
|
|
[% IF ( supplier.active ) %]
|
|
<div class="supplier">
|
|
[% ELSE %]
|
|
<div class="supplier inactive">
|
|
[% END %]
|
|
[% IF ( supplier.active ) %]
|
|
<h2 class="suppliername">
|
|
[% ELSE %]
|
|
<h2 class="suppliername inactive">
|
|
[% END %]
|
|
<a name="[% supplier.booksellerid | html %]" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% supplier.booksellerid | uri %]">
|
|
[% IF (supplier.name) %]
|
|
[% supplier.name | html %]
|
|
[% ELSE %]
|
|
NO NAME
|
|
[% END %]
|
|
</a>
|
|
<a name="[% supplier.booksellerid | html %]" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% supplier.booksellerid | uri %]"></a>
|
|
[% IF ( !supplier.active ) %]<span class="vendor_inactive">(inactive)</span>[% END %]
|
|
</h2>
|
|
<span class="basketcounts">
|
|
[% IF ( count > 1 ) %]
|
|
<a href="/cgi-bin/koha/acqui/booksellers.pl?booksellerid=[% supplier.booksellerid | uri %]">[% supplier.basketcount | html %] [% tn('basket', 'baskets', supplier.basketcount) | $raw %]</a>,
|
|
[% ELSE %]
|
|
[% supplier.basketcount | html %] [% tn('basket', 'baskets', supplier.basketcount) | $raw %],
|
|
[% END %]
|
|
[% IF supplier.subscriptioncount > 0 %]
|
|
<a href="/cgi-bin/koha/serials/serials-search.pl?bookseller_filter=[% supplier.name | uri %]&searched=1">
|
|
[% supplier.subscriptioncount | html %] [% tn('subscription', 'subscriptions', supplier.subscriptioncount) | $raw %]
|
|
</a>
|
|
[% ELSE %]
|
|
[% supplier.subscriptioncount | html %] [% tn('subscription', 'subscriptions', supplier.subscriptioncount) | $raw %]
|
|
[% END %]
|
|
</span>
|
|
[% IF ( count == 1 ) %]
|
|
[% IF ( supplier.basketcount > 0 ) %]
|
|
<div>
|
|
[% IF ( allbaskets ) %]
|
|
<a href="/cgi-bin/koha/acqui/booksellers.pl?supplier=[% supplier.booksellerid | uri %]&booksellerid=[% booksellerid | uri %]">Show active baskets only</a>
|
|
[% ELSE %]
|
|
<a href="/cgi-bin/koha/acqui/booksellers.pl?supplier=[% supplier.booksellerid | uri %]&booksellerid=[% booksellerid | uri %]&allbaskets=1">Show all baskets</a>
|
|
[% END %]
|
|
</div>
|
|
[% END %]
|
|
[% ELSE %]
|
|
[% INCLUDE "acquisitions-toolbar.inc" booksellerid=supplier.booksellerid active=supplier.active basketcount=supplier.loop_basket.size basketcount=supplier.basketcount subscriptioncount=supplier.subscriptioncount %]
|
|
[% END %]
|
|
|
|
<div class="baskets">
|
|
[% IF ( supplier.loop_basket.size ) %]
|
|
<table class="baskets">
|
|
<thead>
|
|
<tr>
|
|
<th>No.</th>
|
|
<th>Name</th>
|
|
<th>Item count</th>
|
|
<th>Bibliographic record count</th>
|
|
<th>Items expected</th>
|
|
<th>[% tp('basket created by', 'Created by') | html %]</th>
|
|
<th>Date</th>
|
|
<th>Basket group</th>
|
|
<th>Closed</th>
|
|
<th class="noExport">Actions</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
[% FOREACH basket IN supplier.loop_basket %]
|
|
[% IF ( basket.uncertainprices ) %]
|
|
<tr class="problem">
|
|
[% ELSE %]
|
|
<tr>
|
|
[% END %]
|
|
<td>[% basket.basketno | html %]</td>
|
|
<td><a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basket.basketno | uri %]">[% basket.basketname | html %]</a></td>
|
|
<td data-order="[% basket.total_items | html %]">
|
|
[% basket.total_items | html %]
|
|
[% IF basket.total_items_cancelled %]
|
|
([% basket.total_items_cancelled | html %] cancelled)
|
|
[% END %]
|
|
</td>
|
|
<td data-order="[% basket.total_biblios | html %]">
|
|
[% basket.total_biblios | html %]
|
|
[% IF basket.total_biblios_cancelled %]
|
|
([% basket.total_biblios_cancelled | html %] cancelled)
|
|
[% END %]
|
|
</td>
|
|
<td>[% basket.expected_items | html %]</td>
|
|
<td>
|
|
[% IF basket.authorisedby %]
|
|
[% basket.authorisedby.firstname | html %]
|
|
[% basket.authorisedby.surname | html %]
|
|
[% END %]
|
|
</td>
|
|
<td data-order="[% basket.creationdate | html %]">[% basket.creationdate | $KohaDates %]</td>
|
|
<td>
|
|
[% IF basket.basketgroup %]
|
|
[% basketgroup = basket.basketgroup %]
|
|
[% IF basketgroup.closed %]
|
|
[% basketgroup.name | html %] <span>(closed)</span>
|
|
[% ELSE %]
|
|
<a href="/cgi-bin/koha/acqui/basketgroup.pl?op=add&booksellerid=[% basket.booksellerid | uri %]&basketgroupid=[% basketgroup.id | uri %]">[% basketgroup.name | html %]</a>
|
|
[% END %]
|
|
[% END %]
|
|
</td>
|
|
<td data-order="[% basket.closedate | html %]">
|
|
[% basket.closedate | $KohaDates %]
|
|
</td>
|
|
<td class="actions">
|
|
[% IF not basket.closedate and supplier.active %]
|
|
[% IF basket.uncertainprices OR ( basket.total_items && !basket.is_standing ) %]
|
|
<div class="dropup">
|
|
<div class="btn-group">
|
|
[%# There should be no space between these two buttons, it would render badly %]
|
|
<a class="btn btn-default btn-xs" id="addtoBasketLabel[% basket.basketno | html %]" href="#addtoBasket[% basket.basketno | html %]" role="button" data-toggle="modal"><i class="fa fa-plus"></i> Add to basket</a><a class="btn btn-default btn-xs dropdown-toggle" id="basketactions[% basket.basknetno | html %]" role="button" data-toggle="dropdown" href="#"><b class="caret"></b></a>
|
|
<ul class="dropdown-menu pull-right" role="menu" aria-labelledby="basketactions[% basketn.basketno | html %]">
|
|
[% IF basket.uncertainprices %]
|
|
<li><a href="/cgi-bin/koha/acqui/uncertainprice.pl?booksellerid=[% basket.booksellerid | uri %]&owner=1"><i class="fa fa-usd"></i> Uncertain prices</a></li>
|
|
[% ELSIF basket.total_items && !basket.is_standing %]
|
|
<li><a href="/cgi-bin/koha/acqui/basket.pl?op=close&basketno=[% basket.basketno | uri %]&booksellerid=[% basket.booksellerid | uri %]"><i class="fa fa-times-circle"></i> Close this basket</a></li>
|
|
[% END %]
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
[% ELSE %]
|
|
<a class="btn btn-default btn-xs" id="addtoBasketLabel[% basket.basketno | html %]" href="#addtoBasket[% basket.basketno | html %]" role="button" data-toggle="modal"><i class="fa fa-plus"></i> Add to basket</a>
|
|
[% END %]
|
|
<!-- Modal -->
|
|
<div id="addtoBasket[% basket.basketno | html %]" class="modal" tabindex="-1" role="dialog" aria-labelledby="addtoBasketLabel[% basket.basketno | html %]" aria-hidden="true" data-basketno="[% basket.basketname | html %]">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
<h4 class="modal-title" id="addtoBasketLabel[% basket.basketno | html %]">Add order to basket</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
[% INCLUDE 'acquisitions-add-to-basket.inc' booksellerid=supplier.booksellerid basketno=basket.basketno %]
|
|
</div>
|
|
<div class="modal-footer">
|
|
<a href="#" class="cancel" data-dismiss="modal" aria-hidden="true">Cancel</a>
|
|
</div>
|
|
</div><!-- /.modal-content -->
|
|
</div><!-- /.modal-dialog -->
|
|
</div><!-- /.modal -->
|
|
[% END %]
|
|
</td>
|
|
</tr>
|
|
[% END %][%# FOREACH basket IN supplier.loop_basket %]
|
|
</tbody>
|
|
</table>
|
|
|
|
[% ELSE %]
|
|
<p>
|
|
No pending baskets.
|
|
[% IF ( supplier.basketcount > 0 && count > 1 ) %]
|
|
<a href="/cgi-bin/koha/acqui/booksellers.pl?supplier=1&booksellerid=[% supplier.booksellerid | uri %]&allbaskets=1">View all baskets</a>.
|
|
[% END %]
|
|
</p>
|
|
|
|
[% END %][%# IF ( supplier.loop_basket.size ) %]
|
|
</div>
|
|
</div>
|
|
[% END %][%# FOREACH supplier IN loop_suppliers %]
|
|
</div>
|
|
[% END %][%# IF ( loop_suppliers.size ) %]
|
|
</main>
|
|
</div> <!-- /.col-sm-10.col-sm-push-2 -->
|
|
<div class="col-sm-2 col-sm-pull-10">
|
|
<aside>
|
|
[% IF ( booksellerid ) %]
|
|
[% INCLUDE 'vendor-menu.inc' %]
|
|
[% END %]
|
|
[% INCLUDE 'acquisitions-menu.inc' %]
|
|
</aside>
|
|
</div>
|
|
</div> <!-- /.row -->
|
|
|
|
[% MACRO jsinclude BLOCK %]
|
|
[% Asset.js("js/acquisitions-menu.js") | $raw %]
|
|
[% INCLUDE 'datatables.inc' %]
|
|
[% Asset.js("js/acq.js") | $raw %]
|
|
<script>
|
|
$(document).ready(function() {
|
|
$("table.baskets").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
'sDom': 't',
|
|
'bPaginate': false,
|
|
'bFilter': false,
|
|
'bInfo': false,
|
|
"aaSorting": [[ 1, "asc" ]],
|
|
"aoColumnDefs": [
|
|
{ 'aTargets': [-1], 'bSortable': false }
|
|
]
|
|
}));
|
|
$("#supplierlist").change(function() {
|
|
var id = $(this).find("option:selected").val();
|
|
window.location.href = "#" + id;
|
|
});
|
|
$(".modal").on("shown.bs.modal", function(){
|
|
var basket = $(this).data("basketno");
|
|
var legend = _("Add order to basket %s").format(basket);
|
|
$(this).find("h4").text( legend );
|
|
$(this).find("legend").html(legend);
|
|
$(this).find("input:text").focus();
|
|
});
|
|
$("#show_all_vendors").hide();
|
|
$("#show_active_vendors").on('click', function(e){
|
|
e.preventDefault();
|
|
$(".inactive").hide();
|
|
$("#show_active_vendors").hide();
|
|
$("#show_all_vendors").show();
|
|
});
|
|
$("#show_all_vendors").on('click', function(e){
|
|
e.preventDefault();
|
|
$(".inactive").show();
|
|
$("#show_all_vendors").hide();
|
|
$("#show_active_vendors").show();
|
|
});
|
|
});
|
|
</script>
|
|
[% END %]
|
|
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|