Koha/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/neworderempty.tt
Jonathan Druart 9e4c289d3f Bug 9507: prevent submit: refactor some code in a js file
This patch refactors some code in a js file.

Test plan:
On acqui/neworderempty.pl, acqui/orderreceive.pl and
serials/serials-edit.tt try to scan a barcode (or press enter) on the
form and check that it is not sent.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Have to note that the code for IE9 does not work. Before and after this patch.
If we refactor code, it would have been nice to resolve this too.
But I do not oppose pushing this patch.
The test uses 'an ancient Netscape property' window.Event (uppercase!) to make
the distinction between browers and event models. Some more documentation here
would be welcome too.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2013-05-22 07:49:15 -07:00

606 lines
27 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.

[% USE KohaDates %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha &rsaquo; Acquisitions &rsaquo; Basket [% basketno %] &rsaquo; [% IF ( ordernumber ) %]Modify order details (line #[% ordernumber %])[% ELSE %]New order[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<script type="text/javascript" src="[% themelang %]/js/acq.js"></script>
[% INCLUDE 'additem.js.inc' %]
<script type="text/javascript" src="[% themelang %]/js/additem.js"></script>
<script type="text/javascript" src="[% themelang %]/js/prevent_submit.js"></script>
<script type="text/javascript">
//<![CDATA[
actTotal = "";
function Check(ff) {
[% IF (AcqCreateItemOrdering) %]
// Remove last itemblock if it is not in items_list
var lastitemblock = $("#outeritemblock > div:last");
var tobedeleted = true;
var listitems = $("#items_list tr");
$(listitems).each(function(){
if($(this).attr('idblock') == $(lastitemblock).attr('id')){
tobedeleted = false;
}
});
if(tobedeleted){
$(lastitemblock).remove();
}
[% END %]
var ok=0;
var _alertString= _("Form not submitted because of the following problem(s)")+"\n";
_alertString +="-------------------------------------------------------------------\n\n";
if ( isNull(ff.title,1) && isNull(ff.entertitle,1) ){
ok=1;
_alertString += "\n- " + _("Title cannot be empty");
}
if(isNull(ff.budget_id,1)){
ok=1;
_alertString += "\n- "+ _("You must select a budget");
}
if (!(isNum(ff.quantity,0)) || ff.quantity.value == 0){
ok=1;
_alertString += "\n- " + _("Quantity must be greater than '0'");
}
if (!(isNum(ff.listprice,0))){
ok=1;
_alertString += "\n- " + _("Vendor price must be a number");
}
if (!(isNum(ff.total,0))){
ok=1;
_alertString += "\n- " + _("Total must be a number");
}
if (totalExceedsBudget(ff.budget_id.value, ff.total.value ) ) {
ok=1;
_alertString += "\n- " + _("Order total (") + ff.total.value +
_(") exceeds budget available (") + actTotal+")";
}
if ( ff.field_value ) {
var empty_item_mandatory = 0;
for (i = 0; i < ff.field_value.length; i++) {
//alert("i = " + i + " => " + ff.kohafield[i] );
if (ff.field_value[i].value.length == 0 && ff.mandatory[i].value == 1) {
empty_item_mandatory++;
}
}
if (empty_item_mandatory > 0) {
ok = 1;
_alertString +=
"\n- " + empty_item_mandatory + _(" item mandatory fields empty");
}
}
if (ok) {
alert(_alertString);
[% IF (AcqCreateItemOrdering) %]
if(tobedeleted) {
$(lastitemblock).appendTo('#outeritemblock');
}
[% END %]
return false;
}
[% IF (AcqCreateItemOrdering) %]
if(check_additem('[% UniqueItemFields %]') == false) {
alert(_("Duplicate values detected. Please correct the errors and resubmit.") );
if(tobedeleted) {
$(lastitemblock).appendTo('#outeritemblock');
}
return false;
}
[% END %]
}
$(document).ready(function()
{
[% IF (AcqCreateItemOrdering) %]
cloneItemBlock(0, '[% UniqueItemFields %]');
[% END %]
$("#quantity").change(function() {
updateCosts();
});
//We apply the fonction only for modify option
[% IF ( quantityrec ) %]
[% IF ( acqcreate ) %]
$('#quantity').blur(function()
{
// if user decreases the quantity
if($(this).val() < [% quantityrec %])
{
alert(_("You have deleted item(s) in the order, don't forget to delete it(them) in the catalog"));
return true;
}
else
{
// if user increases the quantity
alert(_("You can't add a new item, please create a new order line"));
// and we replace the original value
$(this).val([% quantityrec %])
updateCosts(); // blur is invoked after change which updated values
return false;
}
});
[% END %]
[% END %]
//keep a copy of all budgets before removing the inactives
disabledBudgetsCopy = $('#budget_id').html();
$('#budget_id .b_inactive').remove();
$('#showallbudgets').click(function() {
if ($(this).is(":checked")) {
$('#budget_id').html(disabledBudgetsCopy); //Puts back all the funds
}
else {
$('#budget_id .b_inactive').remove();
}
});
});
//]]>
</script>
</head>
<body id="acq_neworderempty" 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; <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid %]">[% name %]</a> &rsaquo; <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno %]">Basket [% basketno %]</a> &rsaquo; [% IF ( ordernumber ) %]Modify order details (line #[% ordernumber %])[% ELSE %]New order[% END %]</div>
<div id="doc3" class="yui-t2">
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<h2>
[% IF ( ordernumber ) %]
Modify order line
[% ELSE %]
New order
[% END %]
</h2>
<div class="error" style="display:none"></div>
[% IF ( basketno ) %]
<div id="acqui_basket_summary" class="yui-g">
<fieldset class="rows">
<legend>Basket details</legend>
<ol>
[% IF ( basketnote ) %]<li><span class="label">Internal note:</span> [% basketnote %]</li>[% END %]
[% IF ( basketbooksellernote ) %]<li><span class="label">Vendor note:</span> [% basketbooksellernote %]</li>[% END %]
[% IF ( basketcontractno ) %]
<li><span class="label">Contract number: </span>[% basketcontractno %]</li>
<li><span class="label">Contract name:</span> <a href="/cgi-bin/koha/admin/aqcontract.pl?op=add_form&amp;contractnumber=[% basketcontractno %]">[% basketcontractname %]</a></li>
[% END %]
[% IF ( authorisedbyname ) %]<li><span class="label">Managed by:</span> [% authorisedbyname %]</li>[% END %]
[% IF ( creationdate ) %]<li><span class="label">Open on:</span> [% creationdate | $KohaDates %]</li>[% END %]
[% IF ( closedate ) %]
<form action="/cgi-bin/koha/acqui/basketgroup.pl" method="post">
<li><span class="label">Closed on:</span> [% closedate | $KohaDates %]</li>
[% IF ( basketgroups ) %]
<li>Basketgroup: <select id="basketgroupid" name="basketgroupid">
[% FOREACH basketgroup IN basketgroups %]
[% IF ( basketgroup.default ) %]
<option value="[% basketgroup.id %]" selected="selected">[% basketgroup.name %]</option>
[% ELSE %]
<option value="[% basketgroup.id %]">[% basketgroup.name %]</option>
[% END %]
[% END %]
</select>
<input type="hidden" id="basketno" value="[% basketno %]" name="basketno" />
<input type="hidden" value="mod_basket" name="op" />
<input type="hidden" name="booksellerid" value="[% booksellerid %]" />
</li>
<fieldset class="action"><input type="submit" value="Change basketgroup" /></fieldset>
[% END %]
</form>
[% END %]
</ol>
</fieldset>
</div>
[% END %]
<form action="/cgi-bin/koha/acqui/addorder.pl" method="post" id="Aform" onsubmit="return Check(this);">
<fieldset class="rows">
<legend>
Catalog details
[% IF ( biblionumber ) %]
<span><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber %]"> Edit record</a></span>
[% END %]
</legend>
[% UNLESS ( existing ) %]
<input type="hidden" name="existing" value="no" />
[% END %]
<input type="hidden" name="ordernumber" value="[% ordernumber %]" />
<input type="hidden" name="basketno" value="[% basketno %]" />
<input type="hidden" name="booksellerid" value="[% booksellerid %]" />
<input type="hidden" name="biblionumber" value="[% biblionumber %]" />
<input type="hidden" name="biblioitemnumber" value="[% biblioitemnumber %]" />
<input type="hidden" name="listinc" id="listinc" value="[% listincgst %]" />
<input type="hidden" name="applygst" id="applygst" value="[% gstreg %]" />
<input type="hidden" name="invoiceincgst" id="invoiceincgst" value="[% invoiceincgst %]" />
<input type="hidden" name="suggestionid" value="[% suggestionid %]" />
<input type="hidden" name="import_batch_id" value="[% import_batch_id %]" />
[% FOREACH loop_currencie IN loop_currencies %]
<input type="hidden" id="currency_rate_[% loop_currencie.currcode %]" name="[% loop_currencie.currcode %]" value="[% loop_currencie.rate %]" />
[% END %]
<ol><li>
[% IF ( biblionumber ) %]
<span class="label">Title</span>
<input type="hidden" size="50" name="title" value="[% title |html %]" /> <span class="title">[% title |html %]</span>
[% ELSE %]
<label for="entertitle" class="required">Title: </label>
<input type="text" id="entertitle" size="50" name="title" value="[% title |html %]" />
[% END %]
</li>
<li>
[% IF ( biblionumber ) %]
<span class="label">Author: </span>
<input type="hidden" size="50" name="author" id="author" value="[% author %]" />[% author %]
[% ELSE %]
<label for="author">Author: </label>
<input type="text" size="50" name="author" id="author" value="[% author %]" />
[% END %]
</li>
<li>
[% IF ( biblionumber ) %]
<span class="label">Publisher: </span>
<input type="hidden" size="50" name="publishercode" id="publishercode" value="[% publishercode %]" />[% publishercode %]
[% ELSE %]
<label for="publishercode"> Publisher: </label>
<input type="text" size="50" name="publishercode" id="publishercode" value="[% publishercode %]" />
[% END %]
</li>
<li>
[% IF ( biblionumber ) %]
<span class="label">Edition: </span>
<input type="hidden" size="20" name="editionstatement" id="editionstatement" value="[% editionstatement %]" />[% editionstatement %]
[% ELSE %]
<label for="editionstatement">Edition: </label>
<input type="text" size="20" name="editionstatement" id="editionstatement" value="[% editionstatement %]" />
[% END %]
</li>
<li>
[% IF ( biblionumber ) %]
<span class="label">Publication year: </span>
<input type="hidden" size="10" name="publicationyear" id="publicationyear" value="[% publicationyear %]" />[% publicationyear %]
[% ELSE %]
<label for="publicationyear">Publication year: </label>
<input type="text" size="10" name="publicationyear" id="publicationyear" value="[% publicationyear %]" />
[% END %]
</li>
<li>
[% IF ( biblionumber ) %]
<span class="label">ISBN: </span>
<input type="hidden" size="50" name="isbn" id="ISBN" value="[% isbn %]" />[% isbn %]
[% ELSE %]
<label for="ISBN">ISBN: </label>
<input type="text" size="50" name="isbn" id="ISBN" value="[% isbn %]" />
[% END %]
</li>
[% IF (UNIMARC) %]
<li>
[% IF ( biblionumber ) %]
<span class="label">EAN: </span>
<input type="hidden" size="20" name="ean" id="EAN" value="[% ean %]" />[% ean %]
[% ELSE %]
<label for="EAN">EAN: </label>
<input type="text" size="20" name="ean" id="EAN" value="[% ean %]" />
[% END %]
</li>
[% END %]
<li>
[% IF ( biblionumber ) %]
<span class="label">Series: </span>
<input type="hidden" size="50" name="series" id="series" value="[% seriestitle %]" />[% seriestitle %]
[% ELSE %]
<label for="series">Series: </label>
<input type="text" size="50" name="series" id="series" value="[% seriestitle %]" />
[% END %]
</li>
</li>
[% UNLESS ( biblionumber ) %]
[% IF ( itemtypeloop ) %]
<li>
<span class="label">Item type:</span>
<select name="itemtype" style="width:12em;">
[% FOREACH itemtype IN itemtypeloop %]
[% IF ( itemtype.selected ) %]
<option value="[% itemtype.itemtype %]" selected="selected">[% itemtype.description %]</option>
[% ELSE %]
<option value="[% itemtype.itemtype %]">[% itemtype.description %]</option>
[% END %]
[% END %]
</select>
</li>
[% END %]
[% END %]
</ol>
</fieldset>
[% IF ( suggestionid ) %]
<fieldset class="rows">
<legend>Suggestion</legend>
<ol>
<li>
<span class="label">Suggested by: </span>
[% surnamesuggestedby %][% IF ( firstnamesuggestedby ) %], [% firstnamesuggestedby %][% END %] (<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestionid %]&amp;op=show">suggestion #[% suggestionid %]</a>)
</li>
</ol>
</fieldset>
[% END %]
[% UNLESS subscriptionid %][% # it is a suggestion, we have not items %]
[% IF (AcqCreateItemOrdering) %]
<div id="items_list" style="display:none">
<p><b>Items list</b></p>
<div style="width:100%;overflow:auto;">
<table>
<thead>
<tr>
<th>&nbsp;</th>
<th>&nbsp;</th>
<th>Barcode</th>
<th>Home library</th>
<th>Holding library</th>
<th>Not for loan</th>
<th>Restricted</th>
<th>Location</th>
<th>Call number</th>
<th>Copy number</th>
<th>Stock number</th>
<th>Collection code</th>
<th>Item type</th>
<th>Materials</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
<fieldset class="rows" id="itemfieldset">
<legend>Item</legend>
[% IF ( NoACQframework ) %]
<div class="dialog message">No ACQ framework, using default. You should create a framework with code ACQ, the items framework would be used</div>
[% END %]
<div id="outeritemblock"></div>
</fieldset>
[% END %][%# UNLESS subscriptionid %]
[% END %][%# IF (AcqCreateItemOrdering) %]
<fieldset class="rows">
<legend>Accounting Details</legend>
<ol>
<li>
[% IF ( close ) %]
<span class="label required">Quantity: </span>
<input type="hidden" size="20" name="quantity" value="[% quantity %]" />[% quantity %]
[% ELSE %]
<label class="required" for="quantity">Quantity: </label>
[% IF (AcqCreateItemOrdering) %]
[% IF subscriptionid %]
<input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="1" />
[% ELSE %]
<input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="0" />
[% END %]
[% ELSE %]
[% IF subscriptionid %]
<input type="text" readonly="readonly" size="20" id="quantity" name="quantity" value="1" />
[% ELSE %]
<input type="text" size="20" id="quantity" name="quantity" value="[% quantityrec %]" onchange="updateCosts();" />
[% END %]
[% END %]
[% END %]
<!-- origquantityrec only here for javascript compatibility (additem.js needs it, useless here, usefull when receiveing an order -->
<input id="origquantityrec" readonly="readonly" type="hidden" name="origquantityrec" value="1" />
</li>
<li>
[% IF ( close ) %]
<span class="label required">Fund: </span>
<input type="hidden" size="20" name="budget_id" id="budget_id" value="[% budget_id %]" />[% Budget_name %]
[% ELSE %]
<label class="required" for="budget_id">Fund: </label>
<select id="budget_id" onchange="fetchSortDropbox(this.form)" size="1" name="budget_id">
<option value="">Select a budget</option>
[% FOREACH budget_loo IN budget_loop %]
[% IF ( budget_loo.b_sel ) %]
<option value="[% budget_loo.b_id %]" selected="selected">[% budget_loo.b_txt %]</option>
[% ELSE %]
[% IF ( budget_loo.b_active ) %]<option value="[% budget_loo.b_id %]">[% budget_loo.b_txt %]</option>
[% ELSE %]<option value="[% budget_loo.b_id %]" class="b_inactive">[% budget_loo.b_txt %]</option>
[% END %]
[% END %]
[% END %]
</select>
<label for="showallbudgets" style="float:none;width:auto;">&nbsp;Show all:</label>
<input type="checkbox" id="showallbudgets" />
[% END %]
</li>
<li>
[% IF ( close ) %]
<span class="label">Currency: </span>
<input type="hidden" size="10" name="currency" id="currency" value="[% currency %]" />[% currency %]
[% ELSE %]
<label for="currency">Currency:</label>
<select name="currency" id="currency" onchange="updateCosts();">
[% FOREACH loop_currencie IN loop_currencies %]
[% IF ( loop_currencie.selected ) %]<option value="[% loop_currencie.currcode %]" selected="selected">[% loop_currencie.currcode %]</option>[% ELSE %]<option value="[% loop_currencie.currcode %]">[% loop_currencie.currcode %]</option>[% END %][% END %]
</select>
[% END %]
</li>
<li>
[% IF ( close ) %]
<span class="label">Vendor price: </span>
<input type="hidden" size="20" name="listprice" id="listprice" value="[% listprice %]" />[% listprice %]
[% ELSE %]
<label for="listprice">Vendor price: </label>
<input type="text" size="20" name="listprice" id="listprice" value="[% listprice %]" onchange="updateCosts()" />
[% END %]
</li>
[% UNLESS ( close ) %]
<li>
<label for="uncertainprice">Uncertain price: </label>
[% IF ( uncertainprice ) %]
<input type="checkbox" name="uncertainprice" id="uncertainprice" value="1" checked="checked" />
[% ELSE %]
<input type="checkbox" name="uncertainprice" id="uncertainprice" value="1" />
[% END %]
</li>
[% END %]
[% IF ( gst_values ) %]
<li>
[% IF ( close ) %]
<span class="label">Tax rate: </span>
<input type="hidden" size="20" name="gstrate" id="gstrate" value="[% gstrate %]" />[% gstrate %]%
[% ELSE %]
<label for="gst">Tax rate: </label>
<select name="gstrate" id="gstrate" onchange="updateCosts();">
[% FOREACH gst IN gst_values %]
[% IF ( gst.option == gstrate ) %]
<option value="[% gst.option %]" selected="selected">[% gst.option * 100 | format("%.1f") %]%</option>
[% ELSE %]
<option value="[% gst.option %]">[% gst.option * 100 | format("%.1f") %]%</option>
[% END %]
[% END %]
</select>
[% END %]
[% ELSE %]
<input type="hidden" name="gstrate" value="0" />
</li>
[% END %]
<li>
<label for="discount">Discount: </label>
[% IF ( close ) %]
[% IF ( orderdiscount ) %]
<input type="hidden" name="discount" id="discount" value="[% orderdiscount %]" />[% orderdiscount_2dp %]%
[% ELSE %]
<input type="hidden" name="discount" id="discount" value="[% discount %]" />[% discount_2dp %]%
[% END %]
[% ELSE %]
[% IF ( orderdiscount ) %]
<input type="text" size="6" name="discount" id="discount" value="[% orderdiscount %]" onchange="updateCosts();" />%
[% ELSE %]
<input type="text" size="6" name="discount" id="discount" value="[% discount %]" onchange="updateCosts();" />%
[% END %]
[% END %]
</li>
<li>
[% IF ( close ) %]
<span class="label">Replacement cost: </span>
<input type="hidden" size="20" name="rrp" id="rrp" value="[% rrp %]" />[% rrp %]
[% ELSE %]
<label for="rrp">Replacement cost: </label>
<input type="text" size="20" name="rrp" id="rrp" value="[% rrp %]" /> (adjusted for [% cur_active %])
[% END %]
</li>
<li>
[% IF ( close ) %]
<label for="ecost">Budgeted cost: </label>
<input type="text" size="20" name="ecost" id="ecost" value="[% ecost %]" readonly="readonly" />
[% ELSE %]
<label for="ecost">Budgeted cost: </label>
<input type="text" size="20" name="ecost" id="ecost" value="[% ecost %]" />
[% END %]
</li>
<li>
[% IF ( close ) %]
<label for="total">Total: </label>
<input type="text" id="total" size="20" name="total" value="[% total %]" readonly="readonly" />
[% ELSE %]
<label for="total">Total: </label>
<input type="text" id="total" size="20" name="total" value="[% total %]" /> (budgeted cost * quantity)
[% END %]
</li>
<li>
[% IF ( close ) %]
<label for="unitprice">Actual cost: </label>
<input type="text" id="unitprice" size="20" name="unitprice" value="[% unitprice %]" readonly="readonly" />
[% ELSE %]
<label for="unitprice">Actual cost: </label>
<input type="text" id="unitprice" size="20" name="unitprice" value="[% unitprice %]" />
[% END %]
</li>
<li>
<label for="notes">Notes: </label>
<textarea id="notes" cols="30" rows="3" name="notes" >[% IF ( notes ) %][% notes %][% END %]</textarea>
</li>
<li><div class="hint">The 2 following fields are available for your own usage. They can be useful for statistical purposes</div>
<label for="sort1">Statistic 1: </label>
<span id="sort1_zone">
[% IF CGIsort1 %]
<select id="sort1" size="1" name="sort1">
[% FOREACH sort_opt IN CGIsort1 %]
[% IF sort_opt.default %]
<option value="[% sort_opt.value %]" selected="selected">[% sort_opt.label %]</option>
[% ELSE %]
<option value="[% sort_opt.value %]">[% sort_opt.label %]</option>
[% END %]
[% END %]
</select>
[% ELSE %]
<input type="text" id="sort1" size="20" name="sort1" value="[% sort1 %]" />
[% END %]
</span>
</li>
<li>
<label for="sort2">Statistic 2: </label>
<span id="sort2_zone">
[% IF CGIsort2 %]
<select id="sort2" size="1" name="sort2">
[% FOREACH sort_opt IN CGIsort2 %]
[% IF sort_opt.default %]
<option value="[% sort_opt.value %]" selected="selected">[% sort_opt.label %]</option>
[% ELSE %]
<option value="[% sort_opt.value %]">[% sort_opt.label %]</option>
[% END %]
[% END %]
</select>
[% ELSE %]
<input type="text" id="sort2" size="20" name="sort2" value="[% sort2 %]" />
[% END %]
</span>
</li>
</ol>
</fieldset>
<fieldset class="action">
<input type="hidden" name="subscriptionid" value="[% subscriptionid %]" />
<input type="submit" value="Save" />
[% IF (suggestionid) %]
<a class="cancel" href="/cgi-bin/koha/acqui/newordersuggestion.pl?booksellerid=[% booksellerid %]&amp;basketno=[% basketno %]">Cancel</a>
[% ELSE %]
[% IF subscriptionid %]
<a class="cancel" href="/cgi-bin/koha/acqui/newordersubscription.pl?booksellerid=[% booksellerid %]&amp;basketno=[% basketno %]">Cancel</a>
[% ELSE %]
<a class="cancel" href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno %]">Cancel</a>
[% END %]
[% END %]
</fieldset>
</form>
</div>
</div>
<div class="yui-b">
[% INCLUDE 'acquisitions-menu.inc' %]
</div>
</div>
[% INCLUDE 'intranet-bottom.inc' %]