3 [% USE AuthorisedValues %]
4 [% INCLUDE 'doc-head-open.inc' %]
5 <title>Serial edition [% bibliotitle | html %] › Serials › Koha</title>
6 [% INCLUDE 'doc-head-close.inc' %]
7 [% Asset.js("js/cataloging.js") | $raw %]
8 [% INCLUDE 'calendar.inc' %]
11 $(document).ready(function() {
12 $('#multi_receiving').on('show', function () {
13 $(this).find(".modal-body").html($(".serials_multi_receiving")[0].outerHTML);
17 function popup(subscriptionid) {
18 window.open("subscription-renew.pl?subscriptionid="+subscriptionid,"subscription_renewal",'width=700,height=400,toolbar=false,scrollbars=yes');
21 function unHideItems(index,labelindex, serialId) {
22 subfield = document.getElementById(index);
23 subfield.style.display = 'block';
24 label = document.getElementById(labelindex);
25 label.style.display='none';
27 // Prefilling enumcron subfield with serial enumeration/issue number
29 item_div = $("fieldset#" + index + " div.cataloguing_additem_itemlist div.items");
30 // Getting subfield with enumcron mapping
31 subfield_div = $(item_div).find("input[name='kohafield'][value='items.enumchron']").parent();
32 // Setting text field if no saved default value
33 if(! $(subfield_div).children("input[type='text'][name='field_value']").val() ){
34 $(subfield_div).children("input[type='text'][name='field_value']").val($("#serialseq" + serialId).val());
37 function HideItems(index,labelindex) {
38 subfield = document.getElementById(index);
39 subfield.style.display = 'none';
40 label = document.getElementById(labelindex);
41 label.style.display='block';
43 function setStatus(serialid){
44 $("#status"+serialid).val("2").attr("selected","selected");
46 function changeDate(elem, adate) {
47 $(elem).closest('tr').find('[name=planneddate]').val(adate);
50 $(document).ready(function() {
51 $("form#serials_edit").submit(function() {
53 $(this).find(".cataloguing_additem_itemlist:visible").each(function(){
54 total_errors = total_errors + CheckMandatorySubfields(this);
56 if ( total_errors > 0 ) {
57 var mes = _("Form not submitted because of the following problem(s)");
58 mes += "\n------------------------------------------------------------------------------------\n";
59 mes += "\n- " + _("%s mandatory fields empty (highlighted)").format(total_errors);
68 <style>#serials_edit fieldset.rows label, #serials_edit fieldset.rows span.label {
72 #serials_edit fieldset.rows select { max-width : 15em; }
73 #serials_edit fieldset.rows li {
76 #serials_edit .input_marceditor {
80 <body id="ser_serials-edit" class="ser">
81 [% WRAPPER 'header.inc' %]
82 [% INCLUDE 'serials-search.inc' %]
85 [% WRAPPER 'sub-header.inc' %]
86 [% WRAPPER breadcrumbs %]
87 [% WRAPPER breadcrumb_item %]
88 <a href="/cgi-bin/koha/serials/serials-home.pl">Serials</a>
90 [% WRAPPER breadcrumb_item %]
91 <a href="/cgi-bin/koha/serials/subscription-detail.pl?subscriptionid=[% subscriptionid | uri %]"><em>[% bibliotitle | html %]</em></a>
93 [% WRAPPER breadcrumb_item bc_active= 1 %]
94 <span>Serial edition</span> [% IF ( callnumber ) %]<em>([% callnumber | html %]</em>)[% END %]
96 [% END #/ WRAPPER breadcrumbs %]
97 [% END #/ WRAPPER sub-header.inc %]
99 <div class="main container-fluid">
101 <div class="col-sm-10 col-sm-push-2">
104 <h1>Serial edition <em>[% bibliotitle | html %]</em>
105 [% IF location %] ([% AuthorisedValues.GetByCode('LOC', location) | html %])[% END %]
106 [% IF ( callnumber ) %] callnumber: [% callnumber | html %][% END %]</h1>
108 [% INCLUDE 'modals/serials_multi_receiving.inc' %]
110 [% IF internalnotes %]<p>Nonpublic note: [% internalnotes | html | html_line_break %]</p>[% END %]
111 <form method="post" name="f" class="noEnterSubmit" action="serials-edit.pl" id="serials_edit">
114 <div class="dialog alert">
116 [% IF ( barcode_not_unique ) %]<li>Error: Barcode not unique for [% FOREACH errse IN errseq %]serialseq [% errse.serialseq | html %]<br/>[% END %]</li>[% END %]
121 <input type="hidden" name="op" value="serialchangestatus" />
122 [% FOREACH subscription IN subscriptions %]
123 <input type="hidden" name="subscriptionid" value="[% subscription.subscriptionid | html %]" />
128 <th>Published on</th>
129 <th>Published on (text)</th>
134 [% FOREACH serialslis IN serialslist %]
137 <input type="hidden" name="serialid" value="[% serialslis.serialid | html %]" />
138 <input type="hidden" name="biblionumber" value="[% serialslis.biblionumber | html %]" />
139 <input type="hidden" name="itemcount" value="[% serialslis.issuesatonce | html %]" />
140 <input type="hidden" name="user" value="[% serialslis.librarian | html %]" />
141 Issue <input type="text" name="serialseq" id="serialseq[% serialslis.serialid | html %]" value="[% serialslis.serialseq | html %]" size="20" maxlength="100" />
144 <input type="text" name="publisheddate" value="[% serialslis.publisheddate | html %]" size="10" maxlength="15" class="flatpickr" />
147 <input type="text" name="publisheddatetext" value="[% serialslis.publisheddatetext | html %]" size="10" maxlength="100" />
150 <input type="text" name="planneddate" value="[% serialslis.planneddate | html %]" size="10" maxlength="15" class="flatpickr" />
153 [% IF ( serialslis.editdisable ) %]
154 <input type="hidden" name="status" id="status[% serialslis.serialid | html %]" value="[% serialslis.serstatus | html %]">
155 <select name="status" disabled="disabled">
157 [% IF ( serialslis.serialsadditems ) %]
158 <select name="status" id="status[% serialslis.serialid | html %]" onchange="if (this.value==2){unHideItems('items'+[% serialslis.subscriptionid | html %][% serialslis.serialid | html %],'label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]','[% serialslis.serialid | html %]'); changeDate(this, '[% serialslis.arriveddate | html %]')} else if (this.value==7){changeDate(this, '[% serialslis.arriveddate | html %]')} else { HideItems('items'+[% serialslis.subscriptionid | html %]+[% serialslis.serialid | html %],'label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]'); changeDate(this, '[% serialslis.planneddate | html %]')}" >
160 <select name="status" id="status[% serialslis.serialid | html %]" onchange="if (this.value==2 || this.value==7){changeDate(this, '[% serialslis.arriveddate | html %]')} else {changeDate(this, '[% serialslis.planneddate | html %]')}" >
163 [% IF ( serialslis.status1 ) %]
164 <option value="1" selected="selected">Expected</option>
166 <option value="1">Expected</option>
168 [% IF ( serialslis.status2 ) %]
169 <option value="2" selected="selected">Arrived</option>
171 <option value="2">Arrived</option>
173 [% IF ( serialslis.status21 ) %]
174 <option value="21" selected="selected">Circulating</option>
176 [% IF ( !serialslis.status1 ) %]
177 <option value="21">Circulating</option>
180 [% IF ( serialslis.status22 ) %]
181 <option value="22" selected="selected">Out for binding</option>
183 [% IF ( !serialslis.status1 ) %]
184 <option value="22">Out for binding</option>
187 [% IF ( serialslis.status23 ) %]
188 <option value="23" selected="selected">Bound</option>
190 [% IF ( !serialslis.status1 ) %]
191 <option value="23">Bound</option>
194 [% IF ( serialslis.status3 ) %]
195 <option value="3" selected="selected">Late</option>
197 <option value="3">Late</option>
199 [% IF ( serialslis.status4 ) %]
200 <option value="4" selected="selected">Missing</option>
202 <option value="4">Missing</option>
204 [% IF ( serialslis.status41 ) %]
205 <option value="41" selected="selected">Missing (never received)</option>
207 <option value="41">Missing (never received)</option>
209 [% IF ( serialslis.status42 ) %]
210 <option value="42" selected="selected">Missing (sold out)</option>
212 <option value="42">Missing (sold out)</option>
214 [% IF ( serialslis.status43 ) %]
215 <option value="43" selected="selected">Missing (damaged)</option>
217 <option value="43">Missing (damaged)</option>
219 [% IF ( serialslis.status44 ) %]
220 <option value="44" selected="selected">Missing (lost)</option>
222 <option value="44">Missing (lost)</option>
224 [% IF ( serialslis.status7 ) %]
225 <option value="7" selected="selected">Claimed</option>
227 <option value="7">Claimed</option>
229 [% IF ( serialslis.status5 ) %]
230 <option value="5" selected="selected">Not available</option>
232 <option value="5">Not available</option>
234 [% IF ( serialslis.status6 ) %]
235 <option value="6" selected="selected">Delete</option>
237 <option value="6">Delete</option>
239 [% IF serialslis.status8 %]
240 <option value="8" selected="selected">Stopped</option>
246 <input type="text" name="notes" value="[% serialslis.sernotes | html %]" size="20" maxlength="255" />
249 [% UNLESS ( serialslis.subscriptionexpired ) %]
250 [% IF ( serialslis.serialsadditems ) %]
253 [% SET item_count = 0 %]
254 [% FOREACH item IN serialslis.items %]
255 [% IF ( item.itemnumber ) %]
256 [% item_count = item_count + 1 %]
259 [% IF item_count > 0 %]
260 <a id="label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]" class="btn btn-default btn-sm" onclick="unHideItems('items[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]','label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]', '[% serialslis.serialid | html %]');setStatus([% serialslis.serialid | html %]);">
263 <a id="label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]" class="btn btn-default btn-sm" onclick="unHideItems('items[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]','label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]', '[% serialslis.serialid | html %]');setStatus([% serialslis.serialid | html %]);">
266 <fieldset class="rows" style="display:none;" id="items[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]">
267 <legend><a style="cursor: pointer;" onclick="HideItems('items[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]','label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]')">
270 <div class="cataloguing_additem_itemlist">
271 [% FOREACH item IN serialslis.items %]
272 <div id="item[% item.serialid | html %][% item.countitems | html %]" class="items">
273 <ol>[% FOREACH iteminformatio IN item.iteminformation %]<li>
274 <div class="subfield_line" style="[% iteminformatio.hidden | html %]" id="subfield[% item.serialid | html %][% item.countitems | html %][% iteminformatio.subfield | html %][% iteminformatio.random | html %]">
275 [% IF (iteminformatio.mandatory) %]
276 <label class="required">[% iteminformatio.subfield | html %] - [% iteminformatio.marc_lib | $raw %]</label>
278 <label>[% iteminformatio.subfield | html %] - [% iteminformatio.marc_lib | $raw %]</label>
280 [% IF ( iteminformatio.marc_value.type == 'select' ) %]
281 <select name="field_value" class="select2 input_marceditor">
282 [% FOREACH value IN iteminformatio.marc_value.values %]
283 [% IF ( value == iteminformatio.marc_value.default ) %]
284 <option value="[% value | html %]" selected="selected">[% iteminformatio.marc_value.labels.$value | html %]</option>
286 <option value="[% value | html %]">[% iteminformatio.marc_value.labels.$value | html %]</option>
291 [% iteminformatio.marc_value | $raw %]
293 <input type="hidden" name="itemid" value="[% item.itemid | html %]" />
294 <input type="hidden" name="kohafield" value="[% iteminformatio.kohafield | html %]" />
295 <input type="hidden" name="tag" value="[% iteminformatio.tag | html %]" />
296 <input type="hidden" name="subfield" value="[% iteminformatio.subfield | html %]" />
297 <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory | html %]" />
298 [% IF ( iteminformatio.repeatable ) %]
299 <a href="#" class="buttonPlus" onclick="CloneItemSubfield(this.parentNode.parentNode); return false;">
300 <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
303 [% IF ( iteminformatio.mandatory ) %] <span class="required">Required</span>[% END %]
306 [% END %]</ol></div><!-- /iteminformation -->
309 <div class="subfield_line">
310 <label for="number_of_copies">Number of copies to be made of this item </label> <input type="text" id="number_of_copies[% newserialloo.serialid | html %][% newserialloo.countitems | html %][% iteminformatio.subfield | html %][% iteminformatio.random | html %]" name="number_of_copies" value="1" maxlength="3" size="2"> <span class="hint">Number of copies limited to under 1000. The barcode you enter will be incremented for each additional item.</p>
313 <input type="hidden" name="moditem" value="" />
314 <input type="hidden" name="tag" value="[% item.itemtagfield | html %]" />
315 <input type="hidden" name="subfield" value="[% item.itemtagsubfield | html %]" />
316 <input type="hidden" name="serial" value="[% item.serialid | html %]" />
317 <input type="hidden" name="bibnum" value="[% item.biblionumber | html %]" />
318 <input type="hidden" name="itemid" value="[% item.itemid | html %]" />
319 <input type="hidden" name="field_value" value="[% item.itemnumber | html %]" />
320 [% END %] <!-- /items -->
328 [% FOREACH newserialloo IN newserialloop %]
329 [% UNLESS ( newserialloo.subscriptionexpired ) %]
332 <input type="hidden" name="serialid" value="NEW" />
333 <input type="hidden" name="biblionumber" value="[% newserialloo.biblionumber | html %]" />
334 <input type="hidden" name="itemcount" value="[% newserialloo.issuesatonce | html %]" />
335 <input type="hidden" name="user" value="[% newserialloo.librarian | html %]" />
336 Supplemental issue <input type="text" name="serialseq" id="serialseq[% newserialloo.serialid | html %]" value="" size="20" maxlength="100" onchange="if (this.value!=''){unHideItems('items[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]','label[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]', '[% newserialloo.serialid | html %]')} else {HideItems('items[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]','label[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]')}" />
339 <input type="text" name="publisheddate" value="[% newserialloo.publisheddate | html %]" size="10" maxlength="15" class="flatpickr" />
342 <input type="text" name="publisheddatetext" value="[% newserialloo.publisheddatetext | html %]" size="10" maxlength="100" />
345 <input type="text" name="planneddate" value="[% newserialloo.planneddate | html %]" size="10" maxlength="15" class="flatpickr" />
348 <select name="status" id="addstatus[% newserialloo.serialid | html %]" onchange="if (this.value==2){unHideItems('items'+'[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]','label[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]','[% newserialloo.serialid | html %]'); changeDate(this, '[% newserialloo.arriveddate | html %]')} else if (this.value==7){changeDate(this, '[% newserialloo.arriveddate | html %]')} else { HideItems('items'+'[% newserialloo.subscriptionid | html %]'+[% newserialloo.serialid | html %],'label[% serialslis.subscriptionid | html %][% serialslis.serialid | html %]'); changeDate(this, '[% serialslis.planneddate | html %]')}" >
350 <option value="">----</option>
351 [% IF ( newserialloo.status1 ) %]
352 <option value="1" selected="selected">Expected</option>
354 [% IF ( newserialloo.status2 ) %]
355 <option value="2" selected="selected">Arrived</option>
357 <option value="2">Arrived</option>
359 [% IF ( newserialloo.status3 ) %]
360 <option value="3" selected="selected">Late</option>
362 <option value="3">Late</option>
364 [% IF ( newserialloo.status4 ) %]
365 <option value="4" selected="selected">Missing</option>
367 <option value="4">Missing</option>
369 [% IF ( newserialloo.status41 ) %]
370 <option value="41" selected="selected">Missing (never received)</option>
372 <option value="41">Missing (never received)</option>
374 [% IF ( newserialloo.status42 ) %]
375 <option value="42" selected="selected">Missing (sold out)</option>
377 <option value="42">Missing (sold out)</option>
379 [% IF ( newserialloo.status43 ) %]
380 <option value="43" selected="selected">Missing (damaged)</option>
382 <option value="43">Missing (damaged)</option>
384 [% IF ( newserialloo.status44 ) %]
385 <option value="44" selected="selected">Missing (lost)</option>
387 <option value="44">Missing (lost)</option>
389 [% IF ( newserialloo.status7 ) %]
390 <option value="7" selected="selected">Claimed</option>
392 <option value="7">Claimed</option>
394 [% IF ( newserialloo.status5 ) %]
395 <option value="5" selected="selected">Not available</option>
397 <option value="5">Not available</option>
399 [% IF ( newserialloo.status6 ) %]
400 <option value="6" selected="selected">Delete</option>
402 <option value="6">Delete</option>
404 [% IF newserialloo.status8 %]
405 <option value="8" selected="selected">Stopped</option>
411 <input type="text" name="notes" value="" size="20" maxlength="255" />
414 [% IF ( newserialloo.serialsadditems ) %]
417 <a id="label[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]" class="btn btn-default btn-sm" onclick="unHideItems('items[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]','label[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]', '[% newserialloo.serialid | html %]')">
419 <fieldset class="rows" style="display:none;" id="items[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]">
420 <legend><a style="cursor: pointer;" onclick="HideItems('items[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]','label[% newserialloo.subscriptionid | html %][% newserialloo.serialid | html %]')">
423 <div class="cataloguing_additem_itemlist">
424 <div id="item[% newserialloo.serialid | html %][% newserialloo.countitems | html %]" class="items">
425 <ol>[% FOREACH iteminformatio IN newserialloo.iteminformation %]<li>
426 <div class="subfield_line" style="[% iteminformatio.hidden | html %]" id="subfield[% newserialloo.serialid | html %][% newserialloo.countitems | html %][% iteminformatio.subfield | html %][% iteminformatio.random | html %]">
427 [% IF (iteminformatio.mandatory) %]
428 <label class="required">[% iteminformatio.subfield | html %] - [% iteminformatio.marc_lib | $raw %]</label>
430 <label>[% iteminformatio.subfield | html %] - [% iteminformatio.marc_lib | $raw %]</label>
432 [% IF ( iteminformatio.marc_value.type == 'select' ) %]
433 <select name="field_value" class="select2 input_marceditor">
434 [% FOREACH value IN iteminformatio.marc_value.values %]
435 [% IF ( value == iteminformatio.marc_value.default ) %]
436 <option value="[% value | html %]" selected="selected">[% iteminformatio.marc_value.labels.$value | html %]</option>
438 <option value="[% value | html %]">[% iteminformatio.marc_value.labels.$value | html %]</option>
443 [% iteminformatio.marc_value | $raw %]
445 <input type="hidden" name="itemid" value="[% newserialloo.itemid | html %]" />
446 <input type="hidden" name="kohafield" value="[% iteminformatio.kohafield | html %]" />
447 <input type="hidden" name="tag" value="[% iteminformatio.tag | html %]" />
448 <input type="hidden" name="subfield" value="[% iteminformatio.subfield | html %]" />
449 <input type="hidden" name="mandatory" value="[% iteminformatio.mandatory | html %]" />
450 [% IF ( iteminformatio.repeatable ) %]
451 <a href="#" class="buttonPlus" onclick="CloneItemSubfield(this.parentNode.parentNode); return false;">
452 <img src="[% interface | html %]/[% theme | html %]/img/clone-subfield.png" alt="Clone" title="Clone this subfield" />
455 [% IF ( iteminformatio.mandatory ) %] <span class="required">Required</span>[% END %]
460 <div class="subfield_line">
461 <label for="number_of_copies">Number of copies to be made of this item </label> <input type="text" id="number_of_copies[% newserialloo.serialid | html %][% newserialloo.countitems | html %][% iteminformatio.subfield | html %][% iteminformatio.random | html %]" name="number_of_copies" value="1" maxlength="3" size="2"> <span class="hint">Number of copies limited to under 1000. The barcode you enter will be incremented for each additional item.</p>
464 <input type="hidden" name="moditem" value="" />
465 <input type="hidden" name="tag" value="[% newserialloo.itemtagfield | html %]" />
466 <input type="hidden" name="subfield" value="[% newserialloo.itemtagsubfield | html %]" />
467 <input type="hidden" name="serial" value="[% newserialloo.serialid | html %]" />
468 <input type="hidden" name="bibnum" value="[% newserialloo.biblionumber | html %]" />
469 <input type="hidden" name="itemid" value="[% newserialloo.itemid | html %]" />
470 <input type="hidden" name="field_value" value="[% newserialloo.itemnumber | html %]" />
481 <fieldset class="action">
482 <div class="btn-group"><input type="submit" value="Save" class="btn btn-default" accesskey="w" /></div>
483 [% UNLESS ( serialsadditems ) %]
484 <div class="btn-group"><a href="#multi_receiving" role="button" class="btn btn-default" data-toggle="modal"><i class="fa fa-plus"></i> Multi receiving</a></div>
491 </div> <!-- /.col-sm-10.col-sm-push-2 -->
493 <div class="col-sm-2 col-sm-pull-10">
495 [% INCLUDE 'serials-menu.inc' %]
496 <div id="serialmenu">
497 <h5>Serial links</h5>
499 [% FOREACH subscription IN subscriptions %]
500 <li><a href="serials-collection.pl?subscriptionid=[% subscription.subscriptionid | uri %]" title="Serial collection for [% subscription.subscriptionid | html %]">Serial collection #[% subscription.subscriptionid | html %]</a></li>
501 <li><a href="subscription-detail.pl?subscriptionid=[% subscription.subscriptionid | uri %]" title="Detail of the subscription">Subscription #[% subscription.subscriptionid | html %]</a></li>
502 [% IF ( subscription.abouttoexpire ) %]
503 [% UNLESS subscription.closed %]
504 <li><a href="#" onclick="javascript:popup([% subscription.subscriptionid | html %])">Renew #[% subscription.subscriptionid | html %]</a></li>
508 <li><a href="[% PROCESS biblio_a_href biblionumber => biblionumber %]" title="Go to [% bibliotitle | html %]">Show bibliographic record</a></li>
512 </div> <!-- /.col-sm-2.col-sm-pull-10 -->
513 </div> <!-- /.row -->
515 [% INCLUDE 'intranet-bottom.inc' %]