Koha/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/booksellers.tt
Owen Leonard 56aa775602 Bug 28082: Add acquisitions toolbar to vendors on vendor search page
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>
2022-05-10 15:17:17 -10:00

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 %] &rsaquo; 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 %]&amp;booksellerid=[% booksellerid | uri %]">Show active baskets only</a>
[% ELSE %]
<a href="/cgi-bin/koha/acqui/booksellers.pl?supplier=[% supplier | uri %]&amp;booksellerid=[% booksellerid | uri %]&amp;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 %]&amp;booksellerid=[% booksellerid | uri %]">Show active baskets only</a>
[% ELSE %]
<a href="/cgi-bin/koha/acqui/booksellers.pl?supplier=[% supplier.booksellerid | uri %]&amp;booksellerid=[% booksellerid | uri %]&amp;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&amp;booksellerid=[% basket.booksellerid | uri %]&amp;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">&times;</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' %]