Owen Leonard
df1fb75404
This patch modifies several serials module templates to remove the use of event attributes. Events will now be defined in JavaScript. Also changed: - In Serials -> Check expiration, custom form validation has been removed in favor of validation with the plugin. - In Serials -> Claims, the "Clear filter" button has been replaced with a link. Error messages are now styled with the standard "alert" class. - In Serials -> New subscription -> Search for record, the "choose" link is now a Bootstrap button. Pagination links are now styled like other similar links. The "Close" button is now styled as in other popup windows. The "no results found" messages is styled as an informational dialog. - In Serials -> Subscription -> Edit routing list, the "add recipients" and "delete all" controls are now links with Font Awesome icons. To test, apply the patch and: - Go to Serials -> Check expiration. - Try to submit the form without filling in a date. The form validation plugin should warn you that the date field is required. - Submit the form using data which will return results. - Click the "Renew" button for any result. The subscription renewal popup should be triggered for the correct title. - Go to Serials -> Claims. - Select a vendor with missing issues. - Confirm that the date filter works correctly, and that the "Clear filter" link works. - Select one or more result and click the "Send notification" button. The notification should be sent. - Go to Serials -> New subscription. - Click the "Search for record" link to trigger the bibliographic search popup. - Perform a search. Confirm that the "Choose" button selects the correct record and populates the fields in the parent window. - Go to Serials -> Subscription -> Edit routing list. - Confirm that the process of adding recipients to the list works correctly. - Confirm that changing the rank of any recipient works correctly. - Save the routing list and click the "Save and preview routing slip" button on the confirmation page. The slip preview should open. - In the slip preview window, test that the print button works correctly. Signed-off-by: Aleisha <aleishaamohia@hotmail.com> QA revision: Removed stray '// -->' and corrected clear filter function Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
324 lines
14 KiB
Text
324 lines
14 KiB
Text
[% USE Branches %]
|
|
|
|
[% INCLUDE 'doc-head-open.inc' %]
|
|
[% USE AuthorisedValues %]
|
|
<title>Koha › Serials › Claims</title>
|
|
[% INCLUDE 'doc-head-close.inc' %]
|
|
[% INCLUDE 'calendar.inc' %]
|
|
<link rel="stylesheet" type="text/css" href="[% interface %]/[% theme %]/css/datatables.css" />
|
|
[% INCLUDE 'datatables.inc' %]
|
|
<script type="text/javascript">
|
|
//<![CDATA[
|
|
var sTable;
|
|
$(document).ready(function() {
|
|
sTable = $("#claimst").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
"sDom": 't',
|
|
"aoColumnDefs": [
|
|
{ "aTargets": [ 0 ], "bSortable": false, "bSearchable": false },
|
|
{ 'sType': "anti-the", 'aTargets' : [ 'anti-the'] },
|
|
{ 'sType': "title-string", 'aTargets' : [ 'title-string'] }
|
|
],
|
|
"bPaginate": false
|
|
}));
|
|
sTable.fnAddFilters("filter", "200");
|
|
$('#supplierid').change(function() {
|
|
$('#claims').submit();
|
|
});
|
|
|
|
// Checkboxes : Select All / None
|
|
$("span.checkall").html("<input type=\"checkbox\" name=\"CheckAll\"> "+_("Check All")+"</input>");
|
|
|
|
$("#CheckAll").click(function() {
|
|
$("#claimst tr:visible :checkbox").prop('checked', $("#CheckAll").is(':checked'));
|
|
});
|
|
|
|
// Generates a dynamic link for exporting the selections data as CSV
|
|
$("#ExportSelected").click(function() {
|
|
// We need to use "input[name=serialid]:checked" instead of "input:checked". Otherwise, the "check all" box will pass the value of "on" as a serialid, which produces a SQL error.
|
|
var selected = $("input[name=serialid]:checked");
|
|
|
|
if (selected.length == 0) {
|
|
alert(_("Please select at least one item to export."));
|
|
return false;
|
|
}
|
|
|
|
// Building the url from currently checked boxes
|
|
var url = '/cgi-bin/koha/serials/lateissues-export.pl?supplierid=&op=claims';
|
|
for (var i = 0; i < selected.length; i++) {
|
|
url += '&serialid=' + selected[i].value;
|
|
}
|
|
url += '&csv_profile=' + $("#csv_profile_for_export option:selected").val();
|
|
// And redirecting to the CSV page
|
|
location.href = url;
|
|
return false;
|
|
});
|
|
$("#filterByDate").on("click",function(e){
|
|
e.preventDefault();
|
|
filterByDate();
|
|
});
|
|
$("#clearfilter").on("click",function(e){
|
|
e.preventDefault();
|
|
$("#from,#to").val("");
|
|
$("table#claimst tbody tr").show();
|
|
});
|
|
$("#claims_form").on("submit",function(){
|
|
return checkForm();
|
|
});
|
|
$("#filter_claims_form").on("submit",function(){
|
|
return false;
|
|
});
|
|
});
|
|
|
|
// Checks if the form can be sent (at least one checkbox must be checked)
|
|
function checkForm() {
|
|
if ($("input:checked").length == 0) {
|
|
alert(_("Please select at least one issue."));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Filter by date
|
|
function filterByDate() {
|
|
var beginDate = Date_from_syspref($("#from").val()).getTime();
|
|
var endDate = Date_from_syspref($("#to").val()).getTime();
|
|
|
|
// Checks if the beginning date is valid
|
|
if (!parseInt(beginDate)) {
|
|
alert(_("The beginning date is missing or invalid."));
|
|
return false;
|
|
}
|
|
|
|
// Checks if the ending date is valid
|
|
if (!parseInt(endDate)) {
|
|
alert(_("The ending date is missing or invalid."));
|
|
return false;
|
|
}
|
|
|
|
// Checks if beginning date is before ending date
|
|
if (beginDate > endDate) {
|
|
// If not, we swap them
|
|
var tmpDate = endDate;
|
|
endDate = beginDate;
|
|
beginDate = tmpDate;
|
|
}
|
|
|
|
// We hide everything
|
|
$("table#claimst tbody tr").hide();
|
|
|
|
// For each date in the table
|
|
$(".planneddate").each(function() {
|
|
|
|
// We make a JS Date Object, according to the locale
|
|
var pdate = Date_from_syspref($(this).text()).getTime();
|
|
|
|
// And checks if the date is between the beginning and ending dates
|
|
if (pdate > beginDate &&
|
|
pdate < endDate) {
|
|
// If so, we can show the row
|
|
$(this).parent().show();
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
|
|
//]]>
|
|
</script>
|
|
</head>
|
|
<body id="ser_claims" class="ser">
|
|
[% INCLUDE 'header.inc' %]
|
|
[% INCLUDE 'serials-search.inc' %]
|
|
|
|
<div id="breadcrumbs"><a href="/cgi-bin/koha/mainpage.pl">Home</a> › <a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a> › Claims</div>
|
|
|
|
<div id="doc3" class="yui-t2">
|
|
|
|
<div id="bd">
|
|
<div id="yui-main">
|
|
<div class="yui-b">
|
|
|
|
<h1>Claims</h1>
|
|
|
|
[% IF error_claim %]
|
|
[% IF error_claim == 'no_vendor_email' %]
|
|
<div class="dialog alert">This vendor has no email defined for late issues.</div>
|
|
[% ELSIF error_claim == 'no_loggedin_user_email' %]
|
|
<div class="dialog alert">No email is configured for your user.</div>
|
|
[% ELSE %]
|
|
<div class="dialog alert">[% error_claim %]</div>
|
|
[% END %]
|
|
[% END %]
|
|
[% IF info_claim %]
|
|
<div class="dialog message">Email has been sent.</div>
|
|
[% END %]
|
|
|
|
[% IF letters %][% UNLESS ( missingissues ) %][% IF ( supplierid ) %] <div class="dialog alert">No missing issues found.</div>[% ELSE %]<div class="dialog message">Please choose a vendor.</div>[% END %][% END %][% END %]
|
|
|
|
[% IF ( SHOWCONFIRMATION ) %]
|
|
<div class="dialog alert">Your notification has been sent.</div>
|
|
[% END %]
|
|
[% UNLESS letters %]<div class="dialog alert">No claims notice defined. <a href="/cgi-bin/koha/tools/letter.pl">Please define one</a>.</div>[% END %]
|
|
<form id="claims" name="claims" action="claims.pl" method="post">
|
|
<fieldset>
|
|
<label for="supplierid">Vendor: </label>
|
|
<select id="supplierid" name="supplierid">
|
|
[% FOREACH suploo IN suploop %]
|
|
[% IF ( suploo.selected ) %]
|
|
<option value="[% suploo.id %]" selected="selected" >
|
|
[% ELSE %]
|
|
<option value="[% suploo.id %]">
|
|
[% END %]
|
|
[% suploo.name %]
|
|
([% suploo.count %])
|
|
</option>
|
|
[% END %]
|
|
</select>
|
|
<input type="submit" value="OK" />
|
|
</fieldset>
|
|
</form>
|
|
|
|
[% IF ( missingissues ) %]
|
|
<h3>Missing issues</h3>
|
|
<form action="claims.pl" id="filter_claims_form">
|
|
<fieldset class="rows">
|
|
<legend>Filters :</legend>
|
|
|
|
<ol>
|
|
<li>
|
|
<label for="from">From:</label>
|
|
<input type="text" name="begindate" id="from" value="[% begindate %]" size="10" maxlength="10" class="datepickerfrom" />
|
|
<label for="to" style="float:none;">To:</label>
|
|
<input type="text" name="enddate" id="to" value="[% enddate %]" size="10" maxlength="10" class="datepickerto" />
|
|
<span class="hint">[% INCLUDE 'date-format.inc' %]</span>
|
|
<input id="filterByDate" type="button" value="OK" />
|
|
<a href="#" id="clearfilter"><i class="fa fa-remove"></i> Clear filter</a>
|
|
</li>
|
|
</ol>
|
|
</fieldset>
|
|
</form>
|
|
|
|
<fieldset>
|
|
<form action="claims.pl" method="post" id="claims_form">
|
|
<table id="claimst">
|
|
<thead>
|
|
<tr>
|
|
<th><input type="checkbox" id="CheckAll"></th>
|
|
<th>Vendor</th>
|
|
<th>Library</th>
|
|
<th class="anti-the">Title</th>
|
|
<th>ISSN</th>
|
|
<th>Issue number</th>
|
|
<th>Status</th>
|
|
<th class="title-string">Since</th>
|
|
<th>Claims count</th>
|
|
<th class="title-string">Claim date</th>
|
|
[% FOR field IN additional_fields_for_subscription %]
|
|
<th>[% field.name %]</th>
|
|
[% END %]
|
|
</tr>
|
|
</thead>
|
|
<tfoot>
|
|
<tr>
|
|
<td></td>
|
|
<td><input type="text" class="filter" data-column_num="1" placeholder="Search vendor" /></td>
|
|
<td><input type="text" class="filter" data-column_num="2" placeholder="Search library" /></td>
|
|
<td><input type="text" class="filter" data-column_num="3" placeholder="Search title" /></td>
|
|
<td><input type="text" class="filter" data-column_num="4" placeholder="Search ISSN" /></td>
|
|
<td><input type="text" class="filter" data-column_num="5" placeholder="Search issue number" /></td>
|
|
<td><input type="text" class="filter" data-column_num="6" placeholder="Search status" /></td>
|
|
<td><input type="text" class="filter" data-column_num="7" placeholder="Search since" /></td>
|
|
<td><input type="text" class="filter" data-column_num="8" placeholder="Search claim count" /></td>
|
|
<td><input type="text" class="filter" data-column_num="9" placeholder="Search claim date" /></td>
|
|
[% FOR field IN additional_fields_for_subscription %]
|
|
<td><input type="text" class="filter" data-column_num="[% loop.count + 9 %]" placeholder="Search [% field.name %]" /></td>
|
|
[% END %]
|
|
</tr>
|
|
</tfoot>
|
|
<tbody>[% FOREACH missingissue IN missingissues %]
|
|
<tr>
|
|
<td>
|
|
[% UNLESS missingissue.cannot_claim %]
|
|
<input type="checkbox" name="serialid" value="[% missingissue.serialid %]" />
|
|
[% END %]
|
|
</td>
|
|
<td>[% missingissue.name %]</td>
|
|
<td>
|
|
<span class="branch-[% missingissue.branchcode %]">[% Branches.GetName( missingissue.branchcode ) %]</span>
|
|
</td>
|
|
<td>
|
|
<a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% missingissue.subscriptionid %]">[% missingissue.title |html %]</a>
|
|
</td>
|
|
<td>[% missingissue.issn %]</td>
|
|
<td>[% missingissue.serialseq %]</td>
|
|
<td>
|
|
[% IF ( missingissue.status1 ) %]<span class="status-expected">Expected</span>[% END %]
|
|
[% IF ( missingissue.status3 ) %]<span class="status-late">Late</span>[% END %]
|
|
[% IF ( missingissue.status4 ) %]<span class="status-missing">Missing</span>[% END %]
|
|
[% IF ( missingissue.status41 ) %]<span class="status-missing_never_received">Missing (never received)</span>[% END %]
|
|
[% IF ( missingissue.status42 ) %]<span class="status-missing_sold_out">Missing (sold out)</span>[% END %]
|
|
[% IF ( missingissue.status43 ) %]<span class="status-missing_damaged">Missing (damaged)</span>[% END %]
|
|
[% IF ( missingissue.status44 ) %]<span class="status-missing_lost">Missing (lost)</span>[% END %]
|
|
[% IF ( missingissue.status7 ) %]<span class="status-claimed">Claimed</span>[% END %]
|
|
</td>
|
|
<td class="planneddate">
|
|
[% IF ( missingissue.planneddate ) %]
|
|
<span title="[% missingissue.planneddateISO %]">[% missingissue.planneddate %]</span>
|
|
[% ELSE %]
|
|
<span title="0000-00-00"></span>
|
|
[% END %]
|
|
</td>
|
|
<td>[% missingissue.claims_count %]</td>
|
|
<td>
|
|
[% IF ( missingissue.claimdate ) %]
|
|
<span title="[% missingissue.claimdateISO %]">[% missingissue.claimdate %]</span>
|
|
[% ELSE %]
|
|
<span title="0000-00-00"></span>
|
|
[% END %]
|
|
</td>
|
|
[% FOR field IN additional_fields_for_subscription %]
|
|
[% IF field.authorised_value_category %]
|
|
<td>[% AuthorisedValues.GetByCode( field.authorised_value_category, missingissue.additional_fields.${field.name} ) %]</td>
|
|
[% ELSE %]
|
|
<td>[% missingissue.additional_fields.${field.name} %]</td>
|
|
[% END %]
|
|
[% END %]
|
|
</tr>
|
|
[% END %]</tbody>
|
|
</table>
|
|
|
|
[% IF csv_profiles %]
|
|
<fieldset class="action">
|
|
<label for="csv_code">Select CSV profile:</label>
|
|
<select id="csv_profile_for_export">
|
|
[% FOR csv IN csv_profiles %]
|
|
<option value="[% csv.export_format_id %]">[% csv.profile %]</option>
|
|
[% END %]
|
|
</select>
|
|
<span class="exportSelected"><a id="ExportSelected" href="/cgi-bin/koha/serials/claims.pl">Download selected claims</a></span>
|
|
[% END %]
|
|
|
|
[% IF letters %]
|
|
<fieldset class="action">
|
|
<label for="letter_code">Select notice:</label>
|
|
<select name="letter_code" id="letter_code">
|
|
[% FOREACH letter IN letters %]
|
|
<option value="[% letter.code %]">[% letter.name %]</option>
|
|
[% END %]
|
|
</select>
|
|
<input type="hidden" name="op" value="send_alert" />
|
|
<input type="hidden" name="supplierid" value="[% supplierid %]" />
|
|
<input type="submit" name="submit" class="button" value="Send notification" />
|
|
</fieldset>
|
|
[% END %]
|
|
</form>
|
|
</fieldset>
|
|
[% END %]
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="yui-b">
|
|
[% INCLUDE 'serials-menu.inc' %]
|
|
</div>
|
|
</div>
|
|
[% INCLUDE 'intranet-bottom.inc' %]
|