dcd1f5d48c
Here we go, next step then. As we did not fix the performance issue when autofiltering the variables (see bug 20975), the only solution we have is to add the filters explicitely. This patch has been autogenerated (using add_html_filters.pl, see next pathces) and add the html filter to all the variables displayed in the template. Exceptions are made (using the new 'raw' TT filter) to the variable we already listed in the previous versions of this patch. To test: - Use t/db_dependent/Koha/Patrons.t to populate your DB with autogenerated data which contain <script> tags - Remove them from borrower_debarments.comments (there are allowed here) update borrower_debarments set comment="html tags possible here"; - From the interface hit page and try to catch alert box. If you find one it means you find a possible XSS. To know where it comes from: * note the exact URL where you found it * note the alert box content * Dump your DB and search for the string in the dump to identify its location (for instance table.field) Next: * Ideally we would like to use the raw filter when it is not necessary to HTML escape the variables (in big loop for instance) * Provide a QA script to catch missing filters (we want html, uri, url or raw, certainly others that I am forgetting now) * Replace the html filters with uri when needed (!) Signed-off-by: Owen Leonard <oleonard@myacpl.org> Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
744 lines
35 KiB
Text
744 lines
35 KiB
Text
[% USE raw %]
|
||
[% USE Asset %]
|
||
[% USE Koha %]
|
||
[% USE KohaDates %]
|
||
[% SET footerjs = 1 %]
|
||
[% INCLUDE 'doc-head-open.inc' %]
|
||
<title>Koha › Acquisitions › Basket [% basketno | html %] › [% IF ( ordernumber ) %]Modify order details (line #[% ordernumber | html %])[% ELSE %]New order[% END %]</title>
|
||
[% INCLUDE 'doc-head-close.inc' %]
|
||
</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> › <a href="/cgi-bin/koha/acqui/acqui-home.pl">Acquisitions</a> › <a href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid | html %]">[% name | html %]</a> › <a href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno | html %]">Basket [% basketno | html %]</a> › [% IF ( ordernumber ) %]Modify order details (line #[% ordernumber | html %])[% 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 | html %]</li>[% END %]
|
||
[% IF ( basketbooksellernote ) %]<li><span class="label">Vendor note:</span> [% basketbooksellernote | html %]</li>[% END %]
|
||
[% IF ( basketcontractno ) %]
|
||
<li><span class="label">Contract number: </span>[% basketcontractno | html %]</li>
|
||
<li><span class="label">Contract name:</span> <a href="/cgi-bin/koha/admin/aqcontract.pl?op=add_form&contractnumber=[% basketcontractno | html %]">[% basketcontractname | html %]</a></li>
|
||
[% END %]
|
||
[% IF ( authorisedbyname ) %]<li><span class="label">Managed by:</span> [% authorisedbyname | html %]</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 | html %]" selected="selected">[% basketgroup.name | html %]</option>
|
||
[% ELSE %]
|
||
<option value="[% basketgroup.id | html %]">[% basketgroup.name | html %]</option>
|
||
[% END %]
|
||
[% END %]
|
||
</select>
|
||
<input type="hidden" id="basketno" value="[% basketno | html %]" name="basketno" />
|
||
<input type="hidden" value="mod_basket" name="op" />
|
||
<input type="hidden" name="booksellerid" value="[% booksellerid | html %]" />
|
||
</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" class="validated" id="Aform" onsubmit="return Check(this);" >
|
||
|
||
<fieldset class="rows">
|
||
<legend>Patrons</legend>
|
||
<ol>
|
||
<li>
|
||
<span class="label">To notify on receiving:</span>
|
||
<div style="float:left">
|
||
<ul id="users_names" style="padding-left:0">
|
||
[% FOREACH user IN users %]
|
||
<li id="user_[% user.borrowernumber | html %]">
|
||
[% user.firstname | html %] [% user.surname | html %]
|
||
[<a onclick="del_user([% user.borrowernumber | html %]);" style="cursor:pointer">Delete user</a>]
|
||
</li>
|
||
[% END %]
|
||
</ul>
|
||
<input type="hidden" id="users_ids" name="users_ids" value="[% users_ids | html %]" />
|
||
<input type="hidden" id="op" name="op" value="mod_users" />
|
||
<input type="button" id="add_user" onclick="UserSearchPopup();" value="Add user" />
|
||
</div>
|
||
</li>
|
||
</ol>
|
||
</fieldset>
|
||
|
||
<fieldset class="rows">
|
||
<legend>
|
||
Catalog details
|
||
[% IF ( biblionumber ) %]
|
||
<span><a href="/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=[% biblionumber | html %]"> Edit record</a></span>
|
||
[% END %]
|
||
</legend>
|
||
[% UNLESS ( existing ) %]
|
||
<input type="hidden" name="existing" value="no" />
|
||
[% END %]
|
||
<input type="hidden" name="ordernumber" value="[% ordernumber | html %]" />
|
||
<input type="hidden" name="basketno" value="[% basketno | html %]" />
|
||
<input type="hidden" name="booksellerid" value="[% booksellerid | html %]" />
|
||
<input type="hidden" name="biblionumber" value="[% biblionumber | html %]" />
|
||
<input type="hidden" name="listinc" id="listinc" value="[% listincgst | html %]" />
|
||
<input type="hidden" name="invoiceincgst" id="invoiceincgst" value="[% invoiceincgst | html %]" />
|
||
<input type="hidden" name="suggestionid" value="[% suggestionid | html %]" />
|
||
<input type="hidden" name="import_batch_id" value="[% import_batch_id | html %]" />
|
||
|
||
[% FOREACH c IN currencies %]
|
||
<input type="hidden" id="currency_rate_[% c.currency | html %]" name="[% c.currency | html %]" value="[% c.rate | html %]" />
|
||
[% END %]
|
||
|
||
[% IF NOT Koha.Preference('UseACQFrameworkForBiblioRecords') OR NoACQframework %]
|
||
<ol><li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">Title</span>
|
||
<input type="hidden" name="title" value="[% title | html %]" /> <span class="title">[% title | html %]</span>
|
||
[% ELSE %]
|
||
<label for="entertitle">Title: </label>
|
||
<input type="text" id="entertitle" size="50" name="title" value="[% title | html %]" class="focus" required="required" />
|
||
<span class="required">Required</span>
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">Author: </span>
|
||
<input type="hidden" name="author" id="author" value="[% author | html %]" />[% author | html %]
|
||
[% ELSE %]
|
||
<label for="author">Author: </label>
|
||
<input type="text" size="50" name="author" id="author" value="[% author | html %]" />
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">Publisher: </span>
|
||
<input type="hidden" name="publishercode" id="publishercode" value="[% publishercode | html %]" />[% publishercode | html %]
|
||
[% ELSE %]
|
||
<label for="publishercode"> Publisher: </label>
|
||
<input type="text" size="50" name="publishercode" id="publishercode" value="[% publishercode | html %]" />
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">Edition: </span>
|
||
<input type="hidden" name="editionstatement" id="editionstatement" value="[% editionstatement | html %]" />[% editionstatement | html %]
|
||
|
||
[% ELSE %]
|
||
<label for="editionstatement">Edition: </label>
|
||
<input type="text" size="20" name="editionstatement" id="editionstatement" value="[% editionstatement | html %]" />
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">Publication year: </span>
|
||
<input type="hidden" name="publicationyear" id="publicationyear" value="[% publicationyear | html %]" />[% publicationyear | html %]
|
||
[% ELSE %]
|
||
<label for="publicationyear">Publication year: </label>
|
||
<input type="text" size="10" name="publicationyear" id="publicationyear" value="[% publicationyear | html %]" />
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">ISBN: </span>
|
||
<input type="hidden" name="isbn" id="ISBN" value="[% isbn | html %]" />[% isbn | html %]
|
||
[% ELSE %]
|
||
<label for="ISBN">ISBN: </label>
|
||
<input type="text" size="50" name="isbn" id="ISBN" value="[% isbn | html %]" />
|
||
[% END %]
|
||
</li>
|
||
[% IF (UNIMARC) %]
|
||
<li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">EAN: </span>
|
||
<input type="hidden" name="ean" id="EAN" value="[% ean | html %]" />[% ean | html %]
|
||
[% ELSE %]
|
||
<label for="EAN">EAN: </label>
|
||
<input type="text" size="20" name="ean" id="EAN" value="[% ean | html %]" />
|
||
[% END %]
|
||
</li>
|
||
[% END %]
|
||
<li>
|
||
[% IF ( biblionumber ) %]
|
||
<span class="label">Series: </span>
|
||
<input type="hidden" name="series" id="series" value="[% seriestitle | html %]" />[% seriestitle | html %]
|
||
[% ELSE %]
|
||
<label for="series">Series: </label>
|
||
<input type="text" size="50" name="series" id="series" value="[% seriestitle | html %]" />
|
||
[% END %]
|
||
</li>
|
||
[% UNLESS ( biblionumber ) %]
|
||
[% IF ( itemtypeloop ) %]
|
||
<li>
|
||
<span class="label">Item type:</span>
|
||
<select name="itemtype" style="width:12em;">
|
||
[% FOREACH itemtype IN itemtypeloop %]
|
||
<option value="[% itemtype.itemtype | html %]">[% itemtype.description | html %]</option>
|
||
[% END %]
|
||
</select>
|
||
</li>
|
||
[% END %]
|
||
[% END %]
|
||
</ol>
|
||
[% ELSE %]
|
||
<input type="hidden" name="use_ACQ_framework" value="1" />
|
||
[% IF biblionumber %]
|
||
<ol>
|
||
[% FOREACH field IN catalog_details %]
|
||
<li>
|
||
<div class="subfield_line">
|
||
<label>[% field.lib | html %] ([% field.tag | html %][% field.subfield | html %])</label>
|
||
[% field.value | html %]
|
||
</div>
|
||
</li>
|
||
[% END %]
|
||
</ol>
|
||
[% ELSE %]
|
||
<ol>
|
||
[% FOREACH field IN catalog_details %]
|
||
<li>
|
||
<div class="subfield_line">
|
||
[% PROCESS display_subfield field=field %]
|
||
</div>
|
||
</li>
|
||
[% END %]
|
||
</ol>
|
||
[% END %]
|
||
[% END %]
|
||
</fieldset>
|
||
|
||
[% IF ( suggestionid ) %]
|
||
<fieldset class="rows">
|
||
<legend>Suggestion</legend>
|
||
<ol>
|
||
<li>
|
||
<span class="label">Suggested by: </span>
|
||
[% surnamesuggestedby | html %][% IF ( firstnamesuggestedby ) %], [% firstnamesuggestedby | html %][% END %] (<a href="/cgi-bin/koha/suggestion/suggestion.pl?suggestionid=[% suggestionid | html %]&op=show">suggestion #[% suggestionid | html %]</a>)
|
||
</li>
|
||
</ol>
|
||
</fieldset>
|
||
[% END %]
|
||
|
||
[% UNLESS subscriptionid || basket.is_standing %][% # 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> </th>
|
||
<th> </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>Inventory 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 %]
|
||
|
||
[% UNLESS Koha.Preference('autoBarcode') == 'OFF' %]
|
||
<div class="dialog message">The autoBarcode system preference is set to [% Koha.Preference('autoBarcode') | html %] and items with blank barcodes will have barcodes generated upon save to database</div>
|
||
[% END %]
|
||
|
||
<div id="outeritemblock"></div>
|
||
|
||
</fieldset>
|
||
[% END %][%# | html 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" name="quantity" value="[% quantity | html %]" />[% quantity | html %]
|
||
[% ELSE %]
|
||
<label class="required" for="quantity">Quantity: </label>
|
||
[% IF (AcqCreateItemOrdering) %]
|
||
[% IF subscriptionid || basket.is_standing %]
|
||
<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 || basket.is_standing %]
|
||
<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 | html %]" onchange="updateCosts();" />
|
||
[% END %]
|
||
[% END %]
|
||
<span class="required">Required</span>
|
||
[% 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" name="budget_id" id="budget_id" value="[% budget_id | html %]" />[% Budget_name | html %]
|
||
[% ELSE %]
|
||
<label class="required" for="budget_id">Fund: </label>
|
||
[% active_count = 0 | html %]
|
||
[% IF !ordernumber %]
|
||
[% FOREACH budget_loo IN budget_loop %]
|
||
[% active_count= active_count + budget_loo.b_active | html %]
|
||
[% END %]
|
||
[% END %]
|
||
<select id="budget_id" size="1" name="budget_id">
|
||
<option value="">Select a fund</option>
|
||
[% FOREACH budget_loo IN budget_loop %]
|
||
[% IF ( budget_loo.b_sel ) %]
|
||
[% active_count = 0 #select no other fund | html %]
|
||
<option value="[% budget_loo.b_id | html %]" selected="selected" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]"
|
||
style="padding-left:[% budget_loo.b_level | html %]em;"
|
||
>
|
||
[% ELSIF active_count==1 && budget_loo.b_active %]
|
||
<option value="[% budget_loo.b_id | html %]" selected="selected" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]"
|
||
style="padding-left:[% budget_loo.b_level | html %]em;"
|
||
>
|
||
[% ELSE %]
|
||
[% bdgclass=budget_loo.b_active? "": "b_inactive" | html %]
|
||
<option value="[% budget_loo.b_id | html %]" class="[% bdgclass | html %]" data-sort1-authcat="[% budget_loo.b_sort1_authcat | html %]" data-sort2-authcat="[% budget_loo.b_sort2_authcat | html %]"
|
||
style="padding-left:[% budget_loo.b_level | html %]em;"
|
||
>
|
||
[% END %]
|
||
[% budget_loo.b_txt | html %][% IF !budget_loo.b_active %] (inactive)[% END %]
|
||
</option>
|
||
[% END %]
|
||
</select>
|
||
<span class="required">Required</span>
|
||
<label for="showallbudgets" style="float:none;"> Show inactive:</label>
|
||
<input type="checkbox" id="showallbudgets" />
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( close ) %]
|
||
<span class="label">Currency: </span>
|
||
<input type="hidden" name="currency" id="currency" value="[% currency | html %]" />[% currency | html %]
|
||
[% ELSE %]
|
||
<label for="currency">Currency:</label>
|
||
<select name="currency" id="currency" onchange="updateCosts();">
|
||
[% FOREACH c IN currencies %]
|
||
[% IF ordernumber and c.currency == currency or not ordernumber and c.currency == vendor_currency %]
|
||
<option value="[% c.currency | html %]" selected="selected">[% c.currency | html %]</option>
|
||
[% ELSIF not c.archived %]
|
||
<option value="[% c.currency | html %]">[% c.currency | html %]</option>
|
||
[% END %]
|
||
[% END %]
|
||
</select>
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( close ) %]
|
||
<span class="label">Vendor price: </span>
|
||
<input type="hidden" name="listprice" id="listprice" value="[% listprice | html %]" />[% listprice | html %] [% IF (listincgst == 1) %](tax inc.)[% ELSE %](tax exc.)[% END %]
|
||
[% ELSE %]
|
||
<label for="listprice">Vendor price: </label>
|
||
<input type="text" size="20" name="listprice" id="listprice" value="[% listprice | html %]" onchange="updateCosts()" /> [% IF (listincgst == 1) %](tax inc.)[% ELSE %](tax exc.)[% END %]
|
||
[% 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" name="tax_rate" id="tax_rate" value="[% tax_rate | html %]" />[% tax_rate | html %]%
|
||
[% ELSE %]
|
||
<label for="tax_rate">Tax rate: </label>
|
||
<select name="tax_rate" id="tax_rate" onchange="updateCosts();">
|
||
[% FOREACH gst IN gst_values %]
|
||
[% IF ( gst.option == tax_rate ) %]
|
||
<option value="[% gst.option | html %]" selected="selected">[% gst.option * 100 | html %]%</option>
|
||
[% ELSE %]
|
||
<option value="[% gst.option | html %]">[% gst.option * 100 | html %]%</option>
|
||
[% END %]
|
||
[% END %]
|
||
</select>
|
||
[% END %]
|
||
[% ELSE %]
|
||
<input type="hidden" name="tax_rate" value="0" />
|
||
</li>
|
||
[% END %]
|
||
<li>
|
||
<label for="discount">Discount: </label>
|
||
[% IF ( close ) %]
|
||
[% IF ( orderdiscount ) %]
|
||
<input type="hidden" name="discount" id="discount" value="[% orderdiscount | html %]" />[% orderdiscount_2dp | html %]%
|
||
[% ELSE %]
|
||
<input type="hidden" name="discount" id="discount" value="[% discount | html %]" />[% discount_2dp | html %]%
|
||
[% END %]
|
||
[% ELSE %]
|
||
[% IF ( orderdiscount ) %]
|
||
<input type="text" size="6" name="discount" id="discount" value="[% orderdiscount | html %]" onchange="updateCosts();" />%
|
||
[% ELSE %]
|
||
<input type="text" size="6" name="discount" id="discount" value="[% discount | html %]" onchange="updateCosts();" />%
|
||
[% END %]
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
[% IF ( close ) %]
|
||
<span class="label">Replacement cost: </span>
|
||
<input type="hidden" name="rrp" id="rrp" value="[% rrp | html %]" />[% rrp | html %] (adjusted for [% cur_active | html %], [% IF (listincgst == 1) %]tax inc.[% ELSE %]tax exc.[% END %])
|
||
[% ELSE %]
|
||
<label for="rrp">Replacement cost: </label>
|
||
<input type="text" size="20" name="rrp" id="rrp" value="[% rrp | html %]" /> (adjusted for [% cur_active | html %], [% IF (listincgst == 1) %]tax inc.[% ELSE %]tax exc.[% END %])
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
<label for="ecost">Budgeted cost: </label>
|
||
<input type="text" size="20" name="ecost" id="ecost" value="[% ecost | html %]" readonly="readonly" /> [% IF (listincgst == 1) %](tax inc.)[% ELSE %](tax exc.)[% END %]
|
||
</li>
|
||
<li>
|
||
<label for="total">Total: </label>
|
||
<input type="text" id="total" size="20" name="total" value="[% total | html %]" readonly="readonly" /> (budgeted cost * quantity)
|
||
</li>
|
||
<li>
|
||
[% IF ( close ) %]
|
||
<label for="unitprice">Actual cost: </label>
|
||
<input type="text" id="unitprice" size="20" name="unitprice" value="[% unitprice | html %]" readonly="readonly" /> [% IF (invoiceincgst == 1) %](tax inc.)[% ELSE %](tax exc.)[% END %]
|
||
[% ELSE %]
|
||
<label for="unitprice">Actual cost: </label>
|
||
<input type="text" id="unitprice" size="20" name="unitprice" value="[% unitprice | html %]" /> [% IF (invoiceincgst == 1) %](tax inc.)[% ELSE %](tax exc.)[% END %]
|
||
[% END %]
|
||
</li>
|
||
<li>
|
||
<label for="order_internalnote">Internal note: </label>
|
||
<textarea id="order_internalnote" cols="30" rows="3" name="order_internalnote" >[% IF ( order_internalnote ) %][% order_internalnote | html %][% END %]</textarea>
|
||
</li>
|
||
<li>
|
||
<label for="order_vendornote">Vendor note: </label>
|
||
<textarea id="order_vendornote" cols="30" rows="3" name="order_vendornote" >[% IF ( order_vendornote ) %][% order_vendornote | html %][% 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>
|
||
<input id="sort1" type="text" id="sort1" size="20" name="sort1" value="[% sort1 | html %]" />
|
||
<li>
|
||
<label for="sort2">Statistic 2: </label>
|
||
<input id="sort2" type="text" id="sort2" size="20" name="sort2" value="[% sort2 | html %]" />
|
||
</li>
|
||
</ol>
|
||
</fieldset>
|
||
<fieldset class="action">
|
||
<input type="hidden" name="subscriptionid" value="[% subscriptionid | html %]" />
|
||
<input type="submit" value="Save" />
|
||
[% IF (suggestionid) %]
|
||
<a class="cancel" href="/cgi-bin/koha/acqui/newordersuggestion.pl?booksellerid=[% booksellerid | html %]&basketno=[% basketno | html %]">Cancel</a>
|
||
[% ELSE %]
|
||
[% IF subscriptionid %]
|
||
<a class="cancel" href="/cgi-bin/koha/acqui/newordersubscription.pl?booksellerid=[% booksellerid | html %]&basketno=[% basketno | html %]">Cancel</a>
|
||
[% ELSE %]
|
||
<a class="cancel" href="/cgi-bin/koha/acqui/basket.pl?basketno=[% basketno | html %]">Cancel</a>
|
||
[% END %]
|
||
[% END %]
|
||
</fieldset>
|
||
</form>
|
||
|
||
<div id="procModal" data-backdrop="static" class="modal fade" aria-labelledby="procModal" aria-hidden="true">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<div class="modal-body">
|
||
<h3>Processing multiple items</h3>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="multiCountModal" class="modal fade" aria-labelledby="multiCountModal" aria-hidden="true">
|
||
<div class="modal-dialog">
|
||
<div class="modal-content">
|
||
<h3>Invalid number of copies</h3>
|
||
<p>Please enter a <b>number</b>, greater than or equal to 1</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="yui-b">
|
||
[% INCLUDE 'acquisitions-menu.inc' %]
|
||
</div>
|
||
</div>
|
||
|
||
[% MACRO jsinclude BLOCK %]
|
||
[% Asset.js("js/acquisitions-menu.js") | $raw %]
|
||
[% Asset.js("js/acq.js") | $raw %]
|
||
[% INCLUDE 'additem.js.inc' %]
|
||
[% Asset.js("js/additem.js") | $raw %]
|
||
[% Asset.js("js/cataloging.js") | $raw %]
|
||
[% Asset.js("js/prevent_submit.js") | $raw %]
|
||
<script type="text/javascript">
|
||
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.budget_id,1)){
|
||
ok=1;
|
||
_alertString += "\n- "+ _("You must select a fund");
|
||
}
|
||
|
||
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 (%s) exceeds budget available (%s)").format(ff.total.value, actTotal);
|
||
}
|
||
|
||
if ( ff.field_value ) {
|
||
var empty_item_mandatory = CheckMandatorySubfields(ff);
|
||
if (empty_item_mandatory > 0) {
|
||
ok = 1;
|
||
_alertString +=
|
||
"\n- " + _("%s item mandatory fields empty").format(empty_item_mandatory);
|
||
}
|
||
|
||
}
|
||
|
||
if (ok) {
|
||
alert(_alertString);
|
||
[% IF (AcqCreateItemOrdering) %]
|
||
if(tobedeleted) {
|
||
$(lastitemblock).appendTo('#outeritemblock');
|
||
}
|
||
[% END %]
|
||
return false;
|
||
}
|
||
|
||
[% IF (AcqCreateItemOrdering) %]
|
||
if(check_additem('[% UniqueItemFields | html %]') == false) {
|
||
alert(_("Duplicate values detected. Please correct the errors and resubmit.") );
|
||
if(tobedeleted) {
|
||
$(lastitemblock).appendTo('#outeritemblock');
|
||
}
|
||
return false;
|
||
}
|
||
[% END %]
|
||
}
|
||
|
||
$(document).ready(function(){
|
||
[% IF AcqCreateItemOrdering and not basket.is_standing %]
|
||
cloneItemBlock(0, '[% UniqueItemFields | html %]');
|
||
[% END %]
|
||
|
||
[% IF ( suggestionid ) %]updateCosts();[% 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 | html %]){
|
||
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 | html %])
|
||
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();
|
||
}
|
||
});
|
||
|
||
$("#budget_id").change(function(){
|
||
var destination_sort1 = $(this).parents('fieldset.rows').find('input[name="sort1"]');
|
||
var sort1_authcat = $(this).find("option:selected").attr('data-sort1-authcat');
|
||
var sort1 = $(destination_sort1).val() || "";
|
||
if ( destination_sort1.length < 1 ) {
|
||
destination_sort1 = $(this).parents('fieldset.rows').find('select[name="sort1"]');
|
||
}
|
||
var destination_sort2 = $(this).parents('fieldset.rows').find('input[name="sort2"]');
|
||
var sort2_authcat = $(this).find("option:selected").attr('data-sort2-authcat');
|
||
var sort2 = $(destination_sort2).val() || "";
|
||
if ( destination_sort2.length < 1 ) {
|
||
destination_sort2 = $(this).parents('fieldset.rows').find('select[name="sort2"]');
|
||
}
|
||
getAuthValueDropbox( 'sort1', sort1_authcat, destination_sort1, sort1 );
|
||
getAuthValueDropbox( 'sort2', sort2_authcat, destination_sort2, sort2 );
|
||
});
|
||
$("#budget_id").change();
|
||
});
|
||
|
||
function UserSearchPopup(f) {
|
||
window.open(
|
||
"/cgi-bin/koha/acqui/add_user_search.pl",
|
||
'UserSearchPopup',
|
||
'width=740, height=450, scrollbars=yes, toolbar=no,'
|
||
);
|
||
}
|
||
|
||
function add_user(borrowernumber, borrowername) {
|
||
var ids = $("#users_ids").val();
|
||
if(ids.length > 0) {
|
||
ids = ids.split(':');
|
||
} else {
|
||
ids = new Array;
|
||
}
|
||
if (ids.indexOf(borrowernumber.toString()) < 0) {
|
||
ids.push(borrowernumber);
|
||
$("#users_ids").val(ids.join(':'));
|
||
var li = '<li id="user_'+borrowernumber+'">'+borrowername
|
||
+ ' [<a style="cursor:pointer" onclick="del_user('+borrowernumber+');">'
|
||
+ _("Delete user") + '</a>]</li>';
|
||
$("#users_names").append(li);
|
||
return 0;
|
||
}
|
||
return -1;
|
||
}
|
||
|
||
function del_user(borrowernumber) {
|
||
$("#user_"+borrowernumber).remove();
|
||
var ids = $("#users_ids").val().split(':');
|
||
ids.splice(ids.indexOf(borrowernumber.toString()), 1);
|
||
$("#users_ids").val(ids.join(':'));
|
||
}
|
||
</script>
|
||
[% END %]
|
||
|
||
[% INCLUDE 'intranet-bottom.inc' %]
|
||
|
||
[% BLOCK display_subfield %]
|
||
<label>[% field.lib | html %] ([% field.tag | html %][% field.subfield | html %])</label>
|
||
[% IF field.authorised_value %]
|
||
[% SWITCH field.authorised_value %]
|
||
[% CASE 'branches' %]
|
||
[% IF field.mandatory %]
|
||
<select name="bib_field_value" required="required">
|
||
[% ELSE %]
|
||
<select name="bib_field_value">
|
||
[% END %]
|
||
<option value=""></option>
|
||
[% PROCESS options_for_libraries libraries => Branches.all( selected => "FIXME" ) %]
|
||
</select>
|
||
[% CASE 'itemtypes' %]
|
||
[% IF field.mandatory %]
|
||
<select name="bib_field_value" required="required">
|
||
[% ELSE %]
|
||
<select name="bib_field_value">
|
||
[% END %]
|
||
<option value=""></option>
|
||
[% PROCESS options_for_itemtypes itemtypes => ItemTypes.Get(), selected_itemtype => "FIXME" %]
|
||
</select>
|
||
[% CASE 'cn_source' %]
|
||
[% CASE %]
|
||
[% PROCESS 'av-build-dropbox.inc' name="bib_field_value", category=field.authorised_value, default="FIXME" %]
|
||
[% END %]
|
||
[% ELSE %]
|
||
[% IF field.mandatory %]
|
||
<input type="text" name="bib_field_value" value="[% field.value | html %]" required="required" size="50" />
|
||
[% ELSE %]
|
||
<input type="text" name="bib_field_value" value="[% field.value | html %]" size="50" />
|
||
[% END %]
|
||
|
||
[% END %]
|
||
<input type="hidden" name="bib_kohafield" value="[% field.kohafield | html %]" />
|
||
<input type="hidden" name="bib_tag" value="[% field.tag | html %]" />
|
||
<input type="hidden" name="bib_subfield" value="[% field.subfield | html %]" />
|
||
[% IF field.mandatory %] <span class="required">Required</span>[% END %]
|
||
[% END %]
|