View | Details | Raw Unified | Return to bug 32028
Collapse All | Expand All

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/smart-rules.tt (-1287 / +1279 lines)
Lines 55-1396 Link Here
55
    <div class="row">
55
    <div class="row">
56
        <div class="col-sm-10 col-sm-push-2">
56
        <div class="col-sm-10 col-sm-push-2">
57
            <main>
57
            <main>
58
58
                <h1 class="parameters">
59
    <h1 class="parameters">
59
                    [% IF humanbranch %]
60
        [% IF humanbranch %]
60
                        Defining circulation and fine rules for "[% Branches.GetName( humanbranch ) | html %]"
61
            Defining circulation and fine rules for "[% Branches.GetName( humanbranch ) | html %]"
61
                    [% ELSE %]
62
        [% ELSE %]
62
                        Defining circulation and fine rules for all libraries
63
            Defining circulation and fine rules for all libraries
64
        [% END %]
65
    </h1>
66
    <div class="page-section">
67
        <div class="help">
68
            <p>The rules are applied from most specific to less specific, using the first found in this order:</p>
69
            <ul>
70
                <li>same library, same patron category, same item type</li>
71
                <li>same library, same patron category, all item types</li>
72
                <li>same library, all patron categories, same item type</li>
73
                <li>same library, all patron categories, all item types</li>
74
                <li>default (all libraries), same patron category, same item type</li>
75
                <li>default (all libraries), same patron category, all item types</li>
76
                <li>default (all libraries), all patron categories, same item type</li>
77
                <li>default (all libraries), all patron categories, all item types</li>
78
            </ul>
79
80
            <p>Where an itemtype has a parent, the rule will display as "Parent->Child" and the number of
81
            current checkouts allowed will be limited to either the maximum for the parent (counting sibling types)
82
            or the specific rule's type, whichever is less.</p>
83
            <p>To modify a rule, create a new one with the same patron category and item type.</p>
84
        </div>
85
        <div>
86
            [% UNLESS restricted_to_own_library %]
87
                <form method="get" action="/cgi-bin/koha/admin/smart-rules.pl" id="selectlibrary">
88
                Select a library :
89
                    <select name="branch" id="branch" style="width:20em;">
90
                        <option value="*">Standard rules for all libraries</option>
91
                        [% PROCESS options_for_libraries libraries => Branches.all( selected => current_branch, unfiltered => 1 ) %]
92
                    </select>
93
                </form>
94
                [% IF ( definedbranch ) %]
95
                    <form action="/cgi-bin/koha/admin/clone-rules.pl" method="post">
96
                        <label for="tobranch"><strong>Clone these rules to:</strong></label>
97
                        <input type="hidden" name="frombranch" value="[% current_branch | html %]" />
98
                        <select name="tobranch" id="tobranch">
99
                            [% PROCESS options_for_libraries libraries => Branches.all( unfiltered => 1 ) %]
100
                        </select>
101
                        <input type="submit" id="clone_rules" class="btn btn-primary" value="Clone" />
102
                    </form>
103
                [% END %]
104
            [% END %]
105
106
            <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
107
                <input type="hidden" name="op" value="add" />
108
                <input type="hidden" name="branch" value="[% current_branch | html %]"/>
109
                <table id="default-circulation-rules">
110
                <thead>
111
                <tr>
112
                    <th>&nbsp;</th>
113
                    <th class="fixed_sort">Patron category</th>
114
                    <th>&nbsp;</th>
115
                    <th class="fixed_sort">Item type</th>
116
                    <th class="noExport">Actions</th>
117
                    <th>Note</th>
118
                    <th>Current checkouts allowed</th>
119
                    <th>Current on-site checkouts allowed</th>
120
                    <th>Loan period</th>
121
                    <th>Days mode</th>
122
                    <th>Unit</th>
123
                    <th>Hard due date</th>
124
                    <th>Decreased loan period for high holds (day)</th>
125
                    <th>Fine amount</th>
126
                    <th>Fine charging interval</th>
127
                    <th>When to charge</th>
128
                    <th>Fine grace period</th>
129
                    <th>Overdue fines cap (amount)</th>
130
                    <th>Cap fine at replacement price</th>
131
                    <th>Suspension in days (day)</th>
132
                    <th>Max. suspension duration (day)</th>
133
                    <th>Suspension charging interval</th>
134
                    <th>Renewals allowed (count)</th>
135
                    [% IF Koha.Preference('UnseenRenewals') %]
136
                    <th>Unseen renewals allowed (count)</th>
137
                    [% END %]
138
                    <th>Renewal period</th>
139
                    <th>No renewal before</th>
140
                    <th>Automatic renewal</th>
141
                    <th>No automatic renewal after</th>
142
                    <th>No automatic renewal after (hard limit)</th>
143
                    <th>Holds allowed (total)</th>
144
                    <th>Holds allowed (daily)</th>
145
                    <th>Holds per record (count)</th>
146
                    <th>On shelf holds allowed</th>
147
                    <th>OPAC item level holds</th>
148
                    [% IF Koha.Preference('ArticleRequests') %]
149
                    <th>Article requests</th>
150
                    [% END %]
151
                    <th>Rental discount (%)</th>
152
                    [% IF Koha.Preference('UseRecalls') %]
153
                        <th>Recalls allowed (total)</th>
154
                        <th>Recalls per record (count)</th>
155
                        <th>On shelf recalls allowed</th>
156
                        <th>Recall due date interval (day)</th>
157
                        <th>Recall overdue fine amount</th>
158
                        <th>Recall pickup period (day)</th>
159
                    [% END %]
63
                    [% END %]
160
                    <th class="noExport">Actions</th>
64
                </h1>
161
                </tr>
162
                </thead>
163
                <tbody>
164
                    [% SET row_count = 0 %]
165
                    [% FOREACH c IN categorycodes %]
166
                        [% SET c = '' UNLESS c.defined %]
167
                        [% FOREACH i IN itemtypes %]
168
                            [% SET i = '' UNLESS i.defined %]
169
                            [% SET note = all_rules.$c.$i.note %]
170
                            [% SET maxissueqty = all_rules.$c.$i.maxissueqty %]
171
                            [% SET maxonsiteissueqty = all_rules.$c.$i.maxonsiteissueqty %]
172
                            [% SET issuelength = all_rules.$c.$i.issuelength %]
173
                            [% SET daysmode = all_rules.$c.$i.daysmode %]
174
                            [% SET lengthunit = all_rules.$c.$i.lengthunit %]
175
                            [% SET hardduedate = all_rules.$c.$i.hardduedate %]
176
                            [% SET hardduedatecompare = all_rules.$c.$i.hardduedatecompare %]
177
                            [% SET fine = all_rules.$c.$i.fine %]
178
                            [% SET chargeperiod = all_rules.$c.$i.chargeperiod %]
179
                            [% SET chargeperiod_charge_at = all_rules.$c.$i.chargeperiod_charge_at %]
180
                            [% SET firstremind = all_rules.$c.$i.firstremind %]
181
                            [% SET overduefinescap = all_rules.$c.$i.overduefinescap %]
182
                            [% SET cap_fine_to_replacement_price = all_rules.$c.$i.cap_fine_to_replacement_price %]
183
                            [% SET finedays = all_rules.$c.$i.finedays %]
184
                            [% SET maxsuspensiondays = all_rules.$c.$i.maxsuspensiondays %]
185
                            [% SET suspension_chargeperiod = all_rules.$c.$i.suspension_chargeperiod %]
186
                            [% SET renewalsallowed = all_rules.$c.$i.renewalsallowed %]
187
                            [% SET unseenrenewalsallowed = all_rules.$c.$i.unseen_renewals_allowed %]
188
                            [% SET renewalperiod = all_rules.$c.$i.renewalperiod %]
189
                            [% SET norenewalbefore = all_rules.$c.$i.norenewalbefore %]
190
                            [% SET auto_renew = all_rules.$c.$i.auto_renew %]
191
                            [% SET no_auto_renewal_after = all_rules.$c.$i.no_auto_renewal_after %]
192
                            [% SET no_auto_renewal_after_hard_limit = all_rules.$c.$i.no_auto_renewal_after_hard_limit %]
193
                            [% SET reservesallowed = all_rules.$c.$i.reservesallowed %]
194
                            [% SET holds_per_day = all_rules.$c.$i.holds_per_day %]
195
                            [% SET holds_per_record = all_rules.$c.$i.holds_per_record %]
196
                            [% SET onshelfholds = all_rules.$c.$i.onshelfholds %]
197
                            [% SET opacitemholds = all_rules.$c.$i.opacitemholds %]
198
                            [% SET article_requests = all_rules.$c.$i.article_requests %]
199
                            [% SET rentaldiscount = all_rules.$c.$i.rentaldiscount %]
200
                            [% SET decreaseloanholds = all_rules.$c.$i.decreaseloanholds %]
201
                            [% SET recalls_allowed = all_rules.$c.$i.recalls_allowed %]
202
                            [% SET recalls_per_record = all_rules.$c.$i.recalls_per_record %]
203
                            [% SET on_shelf_recalls = all_rules.$c.$i.on_shelf_recalls %]
204
                            [% SET recall_due_date_interval = all_rules.$c.$i.recall_due_date_interval %]
205
                            [% SET recall_overdue_fine = all_rules.$c.$i.recall_overdue_fine %]
206
                            [% SET recall_shelf_time = all_rules.$c.$i.recall_shelf_time %]
207
65
208
                            [% SET show_rule = note || maxissueqty || maxonsiteissueqty || issuelength || daysmode || lengthunit || hardduedate || hardduedatecompare || fine || chargeperiod || chargeperiod_charge_at || firstremind || overduefinescap || cap_fine_to_replacement_price || finedays || maxsuspensiondays || suspension_chargeperiod || renewalsallowed || unseenrenewalsallowed || renewalperiod || norenewalbefore || auto_renew || no_auto_renewal_after || no_auto_renewal_after_hard_limit || reservesallowed || holds_per_day || holds_per_record || onshelfholds || opacitemholds || article_requests || rentaldiscount || decreaseloanholds || recalls_allowed || recalls_per_record || on_shelf_recalls || recall_due_date_interval || recall_overdue_fine || recall_shelf_time %]
66
                <div class="page-section bg-info">
209
                            [% IF show_rule %]
67
                    <p>The rules are applied from most specific to less specific, using the first found in this order:</p>
210
                                [% SET row_count = row_count + 1 %]
68
                    <ul>
211
                                <tr row_countd="row_[% row_count | html %]">
69
                        <li>same library, same patron category, same item type</li>
212
                                        <td>[% IF ( c == undef ) %]
70
                        <li>same library, same patron category, all item types</li>
213
                                                1
71
                        <li>same library, all patron categories, same item type</li>
214
                                            [% ELSE %]
72
                        <li>same library, all patron categories, all item types</li>
215
                                                0
73
                        <li>default (all libraries), same patron category, same item type</li>
216
                                            [% END %]</td>
74
                        <li>default (all libraries), same patron category, all item types</li>
217
                                        <td>
75
                        <li>default (all libraries), all patron categories, same item type</li>
218
                                            [% IF c == undef %]
76
                        <li>default (all libraries), all patron categories, all item types</li>
219
                                                <em>All</em>
77
                    </ul>
220
                                            [% ELSE %]
78
        
221
                                                [% Categories.GetName(c) | html %]
79
                    <p>Where an itemtype has a parent, the rule will display as "Parent->Child" and the number of
222
                                            [% END %]
80
                    current checkouts allowed will be limited to either the maximum for the parent (counting sibling types)
223
                                        </td>
81
                    or the specific rule's type, whichever is less.</p>
224
                                        <td>[% IF ( i == undef ) %]
82
                    <p>To modify a rule, create a new one with the same patron category and item type.</p>
225
                                                1
83
                </div>
226
                                            [% ELSE %]
84
        
227
                                                0
85
                <div class="page-section">
228
                                            [% END %]</td>
86
                    [% UNLESS restricted_to_own_library %]
229
                                        <td>
87
                        <form method="get" action="/cgi-bin/koha/admin/smart-rules.pl" id="selectlibrary">
230
                                            [% IF i == undef %]
88
                        Select a library :
231
                                                <em>All</em>
89
                            <select name="branch" id="branch" style="width:20em;">
232
                                            [% ELSE %]
90
                                <option value="*">Standard rules for all libraries</option>
233
                                                [% ItemTypes.GetDescription(i,1) | html %]
91
                                [% PROCESS options_for_libraries libraries => Branches.all( selected => current_branch, unfiltered => 1 ) %]
234
                                            [% END %]
235
                                        </td>
236
                                        <td class="actions">
237
                                          <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a>
238
                                          <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&amp;itemtype=[% i || '*' | html %]&amp;categorycode=[% c || '*' | html %]&amp;branch=[% current_branch | html %]"><i class="fa fa-trash"></i> Delete</a>
239
                                        </td>
240
                                        <td>
241
                                            [% IF note.defined && note != '' %]
242
                                                <a name="viewnote" data-toggle="popover" title="Note" data-content="[% note | html %]" data-placement="top" data-trigger="hover">View note</a>
243
                                            [% ELSE %]<span>&nbsp;</span>[% END %]
244
                                        </td>
245
                                        <td>
246
                                            [% IF maxissueqty.defined && maxissueqty != '' %]
247
                                                [% maxissueqty | html %]
248
                                            [% ELSE %]
249
                                                <span>Unlimited</span>
250
                                            [% END %]
251
                                        </td>
252
                                        <td>
253
                                            [% IF maxonsiteissueqty.defined && maxonsiteissueqty != ''  %]
254
                                                [% maxonsiteissueqty | html %]
255
                                            [% ELSE %]
256
                                                <span>Unlimited</span>
257
                                            [% END %]
258
                                        </td>
259
                                        <td>[% issuelength | html %]</td>
260
                                        <td>
261
                                            [% SWITCH daysmode %]
262
                                            [% CASE 'Calendar' %]<span title="Use the calendar to skip days the library is closed">Skip closed days</span>
263
                                            [% CASE 'Datedue' %]<span title="Use the calendar to push the due date to the next open day">Next open day</span>
264
                                            [% CASE 'Days' %]<span title="Ignore the calendar">Ignore the calendar</span>
265
                                            [% CASE 'Dayweek' %]<span title="Use the calendar to push the due date to the next open matching weekday for weekly loan periods, or the next open day otherwise">Same week day</span>
266
                                            [% CASE %]<span title="Use the system preference 'useDaysMode' as a default value">Default</span>
267
                                            [% END %]
268
                                        </td>
269
                                        <td>
270
                                            [% IF ( lengthunit == 'days' ) %]
271
                                                <span>Days</span>
272
                                            [% ELSIF ( lengthunit == 'hours') %]
273
                                                <span>Hours</span>
274
                                            [% ELSE %]
275
                                                <span>Undefined</span>
276
                                            [% END %]
277
                                        </td>
278
                                        <td>
279
                                          [% IF ( hardduedate ) %]
280
                                            [% IF ( hardduedatecompare == '-1' ) %]
281
                                              before [% hardduedate | $KohaDates %]
282
                                              <input type="hidden" name="hardduedatecomparebackup" value="-1" />
283
                                            [% ELSIF ( hardduedatecompare == '0' ) %]
284
                                              on [% hardduedate | $KohaDates %]
285
                                              <input type="hidden" name="hardduedatecomparebackup" value="0" />
286
                                            [% ELSIF ( hardduedatecompare == '1' ) %]
287
                                              after [% hardduedate | $KohaDates %]
288
                                              <input type="hidden" name="hardduedatecomparebackup" value="1" />
289
                                            [% END %]
290
                                          [% ELSE %]
291
                                            <span>None defined</span>
292
                                          [% END %]
293
                                        </td>
294
                                        <td>[% decreaseloanholds | html %]</td>
295
                                        <td>[% fine | html %]</td>
296
                                        <td>[% chargeperiod | html %]</td>
297
                                        <td>[% IF chargeperiod_charge_at %]Start of interval[% ELSE %]End of interval[% END %]</td>
298
                                        <td>[% firstremind | html %]</td>
299
                                        <td>[% overduefinescap | $Price %]</td>
300
                                        <td>
301
                                            [% IF cap_fine_to_replacement_price %]
302
                                                <input type="checkbox" checked="checked" disabled="disabled" />
303
                                            [% ELSE %]
304
                                                <input type="checkbox" disabled="disabled" />
305
                                            [% END %]
306
                                        </td>
307
                                        <td>[% finedays | html %]</td>
308
                                        <td>[% maxsuspensiondays | html %]</td>
309
                                        <td>[% suspension_chargeperiod | html %]</td>
310
                                        <td>[% renewalsallowed | html %]</td>
311
                                        [% IF Koha.Preference('UnseenRenewals') %]
312
                                            <td>
313
                                                [% IF unseenrenewalsallowed.defined && unseenrenewalsallowed != '' %]
314
                                                    [% unseenrenewalsallowed | html %]
315
                                                [% ELSE %]
316
                                                    <span>Unlimited</span>
317
                                                [% END %]
318
                                            </td>
319
                                        [% END %]
320
                                        <td>[% renewalperiod | html %]</td>
321
                                        <td>[% norenewalbefore | html %]</td>
322
                                        <td>
323
                                            [% IF auto_renew %]
324
                                                <span>Yes</span>
325
                                            [% ELSE %]
326
                                                <span>No</span>
327
                                            [% END %]
328
                                        </td>
329
                                        <td>[% no_auto_renewal_after | html %]</td>
330
                                        <td>[% no_auto_renewal_after_hard_limit | $KohaDates %]</td>
331
                                        <td>
332
                                            [% IF reservesallowed.defined && reservesallowed != '' %]
333
                                                [% reservesallowed | html %]
334
                                            [% ELSE %]
335
                                                <span>Unlimited</span>
336
                                            [% END %]
337
                                        </td>
338
                                        <td>
339
                                            [% IF holds_per_day.defined && holds_per_day != '' %]
340
                                                [% holds_per_day | html %]
341
                                            [% ELSE %]
342
                                                <span>Unlimited</span>
343
                                            [% END %]
344
                                        </td>
345
                                        <td>
346
                                            [% IF holds_per_record.defined && holds_per_record != '' %]
347
                                                [% holds_per_record | html %]
348
                                            [% ELSE %]
349
                                                <span>Unlimited</span>
350
                                            [% END %]
351
                                        </td>
352
                                        <td>
353
                                            [% IF onshelfholds == 1 %]
354
                                                <span>Yes</span>
355
                                            [% ELSIF onshelfholds == 2 %]
356
                                                <span>If all unavailable</span>
357
                                            [% ELSE %]
358
                                                <span>If any unavailable</span>
359
                                            [% END %]
360
                                        </td>
361
                                        <td>
362
                                            [% IF opacitemholds == 'F'%]
363
                                                <span>Force</span>
364
                                            [% ELSIF opacitemholds == 'Y'%]
365
                                                <span>Allow</span>
366
                                            [% ELSE %]
367
                                                <span>Don't allow</span>
368
                                            [% END %]
369
                                        </td>
370
                                        [% IF Koha.Preference('ArticleRequests') %]
371
                                        <td>
372
                                            [% IF article_requests == 'no' %]
373
                                                <span>No</span>
374
                                            [% ELSIF article_requests == 'yes' %]
375
                                                <span>Yes</span>
376
                                            [% ELSIF article_requests == 'bib_only' %]
377
                                                <span>Record only</span>
378
                                            [% ELSIF article_requests == 'item_only' %]
379
                                                <span>Item only</span>
380
                                            [% END %]
381
                                        </td>
382
                                        [% END %]
383
                                        <td>[% rentaldiscount | html %]</td>
384
                                        [% IF Koha.Preference('UseRecalls') %]
385
                                            <td>[% recalls_allowed | html %]</td>
386
                                            <td>[% recalls_per_record | html %]</td>
387
                                            <td>
388
                                                [% IF on_shelf_recalls == 'all' %]
389
                                                    <span>If all unavailable</span>
390
                                                [% ELSE %]
391
                                                    <span>If any unavailable</span>
392
                                                [% END %]
393
                                            </td>
394
                                            <td>[% recall_due_date_interval | html %]</td>
395
                                            <td>[% recall_overdue_fine | $Price %]</td>
396
                                            <td>[% recall_shelf_time | html %]</td>
397
                                        [% END %]
398
                                        <td class="actions">
399
                                          <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a>
400
                                          <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&amp;itemtype=[% i || '*' | uri %]&amp;categorycode=[% c || '*' | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
401
                                        </td>
402
                                </tr>
403
                            [% END %]
404
                        [% END %]
405
                    [% END %]
406
                    <tr class="noExport" id="edit_row">
407
                        <td>2</td>
408
                        <td>
409
                            <select name="categorycode" id="categorycode">
410
                                <option value="*">All</option>
411
                            [% FOREACH patron_category IN patron_categories%]
412
                                <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
413
                            [% END %]
414
                            </select>
415
                        </td>
416
                        <td>0</td>
417
                        <td>
418
                            <select name="itemtype" id="matrixitemtype" style="width:13em;">
419
                                <option value="*">All</option>
420
                                [% FOREACH itemtypeloo IN itemtypeloop %]
421
                                    [% NEXT IF itemtypeloo.parent_type %]
422
                                    [% SET children = itemtypeloo.children_with_localization %]
423
                                    [% IF children.count %]
424
                                        <optgroup label="[% itemtypeloo.translated_description | html %]">
425
                                            <option value="[% itemtypeloo.itemtype | html %]">[% itemtypeloo.translated_description | html %] (All)</option>
426
                                            [% FOREACH child IN children %]
427
                                                <option value="[% child.itemtype | html %]">[% child.translated_description | html %]</option>
428
                                            [% END %]
429
                                        </optgroup>
430
                                    [% ELSE %]
431
                                        <option value="[% itemtypeloo.itemtype | html %]">[% itemtypeloo.translated_description | html %]</option>
432
                                    [% END %]
433
                                [% END %]
434
                            </select>
435
                        </td>
436
                        <td class="actions">
437
                            <input type="hidden" name="branch" value="[% current_branch | html %]"/>
438
                            <button type="submit" class="btn btn-primary btn-xs"><i class="fa fa-save"></i> Save</button>
439
                            <button name="cancel" class="clear_edit btn btn-default btn-xs"><i class="fa fa-undo"></i> Clear</button>
440
                        </td>
441
                        <td><input type="text" name="note" id="note" size="15" value="" maxlength="100"></td>
442
                        <td><input type="text" name="maxissueqty" id="maxissueqty" size="3" /></td>
443
                        <td><input type="text" name="maxonsiteissueqty" id="maxonsiteissueqty" size="3" /></td>
444
                        <td><input type="text" name="issuelength" id="issuelength" size="3" /> </td>
445
                        <td>
446
                            <select name="daysmode" id="daysmode">
447
                                <option value="" title="Use the system preference 'useDaysMode' as a default value">Default</option>
448
                                <option value="Calendar" title="Use the calendar to skip days the library is closed">Skip closed days</option>
449
                                <option value="Datedue" title="Use the calendar to push the due date to the next open day">Next open day</option>
450
                                <option value="Days" title="Ignore the calendar">Ignore the calendar</option>
451
                                <option value="Dayweek" title="Use the calendar to push the due date to the next open matching weekday for weekly loan periods, or the next open day otherwise">Same week day</option>
452
                            </select>
92
                            </select>
453
                        </td>
93
                        </form>
454
                        <td>
94
                        [% IF ( definedbranch ) %]
455
                          <select name="lengthunit" id="lengthunit">
95
                            <form action="/cgi-bin/koha/admin/clone-rules.pl" method="post">
456
                            <option value="days" selected="selected">Days</option>
96
                                <label for="tobranch"><strong>Clone these rules to:</strong></label>
457
                            <option value="hours">Hours</option>
97
                                <input type="hidden" name="frombranch" value="[% current_branch | html %]" />
458
                          </select>
98
                                <select name="tobranch" id="tobranch">
459
                        </td>
99
                                    [% PROCESS options_for_libraries libraries => Branches.all( unfiltered => 1 ) %]
460
                        <td>
461
                            <select name="hardduedatecompare" id="hardduedatecompare">
462
                               <option value="-1">Before</option>
463
                               <option value="0">Exactly on</option>
464
                               <option value="1">After</option>
465
                            </select>
466
                            <input type="text" size="10" id="hardduedate" name="hardduedate" value="[% hardduedate | html %]" class="flatpickr" />
467
                            <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
468
                        </td>
469
                        <td><input type="text" name="decreaseloanholds" id="decreaseloanholds" size="2" /></td>
470
                        <td><input type="text" name="fine" id="fine" size="4" /></td>
471
                        <td><input type="text" name="chargeperiod" id="chargeperiod" size="2" /></td>
472
                        <td>
473
                            <select name="chargeperiod_charge_at" id="chargeperiod_charge_at">
474
                               <option value="0">End of interval</option>
475
                               <option value="1">Start of interval</option>
476
                            </select>
477
                        </td>
478
                        <td><input type="text" name="firstremind" id="firstremind" size="2" /> </td>
479
                        <td><input type="text" name="overduefinescap" id="overduefinescap" size="6" /> </td>
480
                        <td><input type="checkbox" name="cap_fine_to_replacement_price" id="cap_fine_to_replacement_price" /></td>
481
                        <td><input type="text" name="finedays" id="fined" size="3" /> </td>
482
                        <td><input type="text" name="maxsuspensiondays" id="maxsuspensiondays" size="3" /> </td>
483
                        <td><input type="text" name="suspension_chargeperiod" id="suspension_chargeperiod" size="3" /> </td>
484
                        <td><input type="text" name="renewalsallowed" id="renewalsallowed" size="2" /></td>
485
                        [% IF Koha.Preference('UnseenRenewals') %]
486
                            <td><input type="text" name="unseen_renewals_allowed" id="unseen_renewals_allowed" size="2" /></td>
487
                        [% END %]
488
                        <td><input type="text" name="renewalperiod" id="renewalperiod" size="3" /></td>
489
                        <td><input type="text" name="norenewalbefore" id="norenewalbefore" size="3" /></td>
490
                        <td>
491
                            <select name="auto_renew" id="auto_renew">
492
                                <option value="no" selected>No</option>
493
                                <option value="yes">Yes</option>
494
                            </select>
495
                        </td>
496
                        <td><input type="text" name="no_auto_renewal_after" id="no_auto_renewal_after" size="3" /></td>
497
                        <td>
498
                            <input type="text" size="10" name="no_auto_renewal_after_hard_limit" id="no_auto_renewal_after_hard_limit" value="[% no_auto_renewal_after_hard_limit | html %]" class="flatpickr"/>
499
                            <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
500
                        </td>
501
                        <td><input type="text" name="reservesallowed"  id="reservesallowed"  size="2" /></td>
502
                        <td><input type="text" name="holds_per_day"    id="holds_per_day"    size="2" /></td>
503
                        <td><input type="text" name="holds_per_record" id="holds_per_record" size="2" /></td>
504
                        <td>
505
                            <select name="onshelfholds" id="onshelfholds">
506
                                <option value="1">Yes</option>
507
                                <option value="0">If any unavailable</option>
508
                                <option value="2">If all unavailable</option>
509
                            </select>
510
                        </td>
511
                        <td>
512
                            <select id="opacitemholds" name="opacitemholds">
513
                                <option value="N">Don't allow</option>
514
                                <option value="Y">Allow</option>
515
                                <option value="F">Force</option>
516
                            </select>
517
                        </td>
518
                        [% IF Koha.Preference('ArticleRequests') %]
519
                        <td>
520
                            <select id="article_requests" name="article_requests">
521
                                <option value="no">No</option>
522
                                <option value="yes">Yes</option>
523
                                <option value="bib_only">Record only</option>
524
                                <option value="item_only">Item only</option>
525
                            </select>
526
                        </td>
527
                        [% END %]
528
                        <td><input type="text" name="rentaldiscount" id="rentaldiscount" size="2" /></td>
529
                        [% IF Koha.Preference('UseRecalls') %]
530
                            <td><input type="text" name="recalls_allowed" id="recalls_allowed" size="3"></td>
531
                            <td><input type="text" name="recalls_per_record" id="recalls_per_record" size="3"></td>
532
                            <td>
533
                                <select name="on_shelf_recalls" id="on_shelf_recalls">
534
                                    <option value="any">If any unavailable</option>
535
                                    <option value="all">If all unavailable</option>
536
                                </select>
100
                                </select>
537
                            </td>
101
                                <input type="submit" id="clone_rules" class="btn btn-primary" value="Clone" />
538
                            <td><input type="text" name="recall_due_date_interval" id="recall_due_date_interval" size="3"></td>
102
                            </form>
539
                            <td><input type="text" name="recall_overdue_fine" id="recall_overdue_fine" size="6"></td>
540
                            <td><input type="text" name="recall_shelf_time" id="recall_shelf_time" size="3"></td>
541
                        [% END %]
103
                        [% END %]
542
                        <td class="actions">
104
                    [% END %]
543
                            <input type="hidden" name="branch" value="[% current_branch | html %]"/>
105
                </div>
544
                            <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-save"></i> Save</button>
106
        
545
                            <button name="cancel" class="clear_edit btn btn-default btn-xs"><i class="fa fa-undo"></i> Clear</button>
107
                <div class="page-section">
546
                        </td>
108
                    <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
547
                    </tr>
109
                        <input type="hidden" name="op" value="add" />
548
                    </tbody>
110
                        <input type="hidden" name="branch" value="[% current_branch | html %]"/>
549
                    <tfoot>
111
                        <table id="default-circulation-rules">
112
                        <thead>
550
                        <tr>
113
                        <tr>
551
                          <th>&nbsp;</th>
114
                            <th>&nbsp;</th>
552
                          <th>Patron category</th>
115
                            <th class="fixed_sort">Patron category</th>
553
                          <th>&nbsp;</th>
116
                            <th>&nbsp;</th>
554
                          <th>Item type</th>
117
                            <th class="fixed_sort">Item type</th>
555
                          <th>&nbsp;</th>
118
                            <th class="noExport">Actions</th>
556
                          <th>Note</th>
119
                            <th>Note</th>
557
                          <th>Current checkouts allowed</th>
120
                            <th>Current checkouts allowed</th>
558
                          <th>Current on-site checkouts allowed</th>
121
                            <th>Current on-site checkouts allowed</th>
559
                          <th>Loan period</th>
122
                            <th>Loan period</th>
560
                          <th>Days mode</th>
123
                            <th>Days mode</th>
561
                          <th>Unit</th>
124
                            <th>Unit</th>
562
                          <th>Hard due date</th>
125
                            <th>Hard due date</th>
563
                          <th>Decreased loan period for high holds (day)</th>
126
                            <th>Decreased loan period for high holds (day)</th>
564
                          <th>Fine amount</th>
127
                            <th>Fine amount</th>
565
                          <th>Fine charging interval</th>
128
                            <th>Fine charging interval</th>
566
                          <th>Charge when?</th>
129
                            <th>When to charge</th>
567
                          <th>Fine grace period</th>
130
                            <th>Fine grace period</th>
568
                          <th>Overdue fines cap (amount)</th>
131
                            <th>Overdue fines cap (amount)</th>
569
                          <th>Cap fine at replacement price</th>
132
                            <th>Cap fine at replacement price</th>
570
                          <th>Suspension in days (day)</th>
133
                            <th>Suspension in days (day)</th>
571
                          <th>Max. suspension duration (day)</th>
134
                            <th>Max. suspension duration (day)</th>
572
                          <th>Suspension charging interval</th>
135
                            <th>Suspension charging interval</th>
573
                          <th>Renewals allowed (count)</th>
136
                            <th>Renewals allowed (count)</th>
574
                          [% IF Koha.Preference('UnseenRenewals') %]
137
                            [% IF Koha.Preference('UnseenRenewals') %]
575
                          <th>Unseen renewals allowed (count)</th>
138
                            <th>Unseen renewals allowed (count)</th>
576
                          [% END %]
577
                          <th>Renewal period</th>
578
                          <th>No renewal before</th>
579
                          <th>Automatic renewal</th>
580
                          <th>No automatic renewal after</th>
581
                          <th>No automatic renewal after (hard limit)</th>
582
                          <th>Holds allowed (total)</th>
583
                          <th>Holds allowed (daily)</th>
584
                          <th>Holds per record (count)</th>
585
                          <th>On shelf holds allowed</th>
586
                          <th>OPAC item level holds</th>
587
                          [% IF Koha.Preference('ArticleRequests') %]
588
                          <th>Article requests</th>
589
                          [% END %]
590
                          <th>Rental discount (%)</th>
591
                          [% IF Koha.Preference('UseRecalls') %]
592
                            <th>Recalls allowed (total)</th>
593
                            <th>Recalls per record (count)</th>
594
                            <th>On shelf recalls allowed</th>
595
                            <th>Recall due date interval (day)</th>
596
                            <th>Recall overdue fine amount</th>
597
                            <th>Recall pickup period (day)</th>
598
                          [% END %]
599
                          <th>&nbsp;</th>
600
                        </tr>
601
                    </tfoot>
602
                </table>
603
            </form>
604
        </div><!-- ./page-section -->
605
    </div>
606
    <div id="defaults-for-this-library" class="container">
607
    <h3>Default checkout, hold and return policy[% IF humanbranch %] for [% Branches.GetName( humanbranch ) | html %][% END %]</h3>
608
        <div class="page-section">
609
            <p>You can set a default maximum number of checkouts, hold policy and return policy that will be used if none is defined below for a particular item type or category.</p>
610
            <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
611
                <input type="hidden" name="op" value="set-branch-defaults" />
612
                <input type="hidden" name="branch" value="[% current_branch | html %]"/>
613
                <table>
614
                    <tr>
615
                        <th>&nbsp;</th>
616
                        <th>Total current checkouts allowed</th>
617
                        <th>Total current on-site checkouts allowed</th>
618
                        <th>Maximum total holds allowed (count)</th>
619
                        <th>Hold policy</th>
620
                        <th>Hold pickup library match</th>
621
                        <th>Return policy</th>
622
                        <th class="noExport">Actions</th>
623
                    </tr>
624
                    [% SET patron_maxissueqty = CirculationRules.Search( current_branch, undef, undef, 'patron_maxissueqty', { want_rule => 1 } ) %]
625
                    [% SET patron_maxonsiteissueqty = CirculationRules.Search( current_branch, undef, undef, 'patron_maxonsiteissueqty', { want_rule => 1 } ) %]
626
                    [% SET rule_value = CirculationRules.Search( current_branch, undef , undef, 'max_holds', { want_rule => 1 } ) %]
627
                    [% SET holdallowed = CirculationRules.Search( current_branch, undef, undef, 'holdallowed', { want_rule => 1 } ) %]
628
                    [% SET hold_fulfillment_policy = CirculationRules.Search( current_branch, undef, undef, 'hold_fulfillment_policy', { want_rule => 1 }) %]
629
                    [% SET returnbranch = CirculationRules.Search( current_branch, undef, undef, 'returnbranch', { want_rule => 1 }) %]
630
                    [% SET default_checkout_hold_and_return_policy = ( patron_maxissueqty || patron_maxonsiteissueqty || rule_value || holdallowed || hold_fulfillment_policy || returnbranch ) %]
631
                    <tr>
632
                        <td>
633
                            [% IF ( default_checkout_hold_and_return_policy ) %]
634
                                <em>
635
                                Defaults
636
                                </em>
637
                            [% ELSE %]
638
                                Not set
639
                            [% END %]
139
                            [% END %]
640
                        </td>
140
                            <th>Renewal period</th>
641
                        <td>
141
                            <th>No renewal before</th>
642
                            <input type="text" name="patron_maxissueqty" size="9" value="[% patron_maxissueqty.rule_value | html %]" placeholder="Unlimited"/>
142
                            <th>Automatic renewal</th>
643
                        </td>
143
                            <th>No automatic renewal after</th>
644
                        <td>
144
                            <th>No automatic renewal after (hard limit)</th>
645
                            <input type="text" name="patron_maxonsiteissueqty" size="9" value="[% patron_maxonsiteissueqty.rule_value | html %]" placeholder="Unlimited"/>
145
                            <th>Holds allowed (total)</th>
646
                        </td>
146
                            <th>Holds allowed (daily)</th>
647
                        <td>
147
                            <th>Holds per record (count)</th>
648
                            <input name="max_holds" size="9" value="[% rule_value.rule_value | html %]" placeholder="Unlimited"/>
148
                            <th>On shelf holds allowed</th>
649
                        </td>
149
                            <th>OPAC item level holds</th>
650
                        <td>
150
                            [% IF Koha.Preference('ArticleRequests') %]
651
                            <select name="holdallowed">
151
                            <th>Article requests</th>
652
                                <option value="">
653
                                    Not set
654
                                </option>
655
656
                                [% IF holdallowed.rule_value == 'from_any_library' %]
657
                                    <option value="from_any_library" selected="selected">
658
                                [% ELSE %]
659
                                    <option value="from_any_library">
660
                                [% END %]
661
                                    From any library
662
                                </option>
663
664
                                [% IF holdallowed.rule_value == 'from_local_hold_group' %]
665
                                <option value="from_local_hold_group" selected="selected">
666
                                [% ELSE %]
667
                                <option value="from_local_hold_group">
668
                                [% END %]
669
                                    From local hold group
670
                                </option>
671
672
                                [% IF holdallowed.rule_value == 'from_home_library' %]
673
                                    <option value="from_home_library" selected="selected">
674
                                [% ELSE %]
675
                                    <option value="from_home_library">
676
                                [% END %]
677
                                    From home library
678
                                </option>
679
680
                                [% IF holdallowed.rule_value == 'not_allowed' %]
681
                                    <option value="not_allowed" selected="selected">
682
                                [% ELSE %]
683
                                    <option value="not_allowed">
684
                                [% END %]
685
                                    No holds allowed
686
                                </option>
687
                            </select>
688
                        </td>
689
                        <td>
690
                            <select name="hold_fulfillment_policy">
691
692
                                <option value="">
693
                                    Not set
694
                                </option>
695
696
                                [% IF hold_fulfillment_policy.rule_value == 'any' %]
697
                                    <option value="any" selected="selected">
698
                                        any library
699
                                    </option>
700
                                [% ELSE %]
701
                                    <option value="any">
702
                                        any library
703
                                    </option>
704
                                [% END %]
705
706
                                [% IF hold_fulfillment_policy.rule_value == 'holdgroup' %]
707
                                    <option value="holdgroup" selected="selected">
708
                                        item's hold group
709
                                    </option>
710
                                [% ELSE %]
711
                                    <option value="holdgroup">
712
                                        item's hold group
713
                                    </option>
714
                                [% END %]
715
716
                                [% IF hold_fulfillment_policy.rule_value == 'patrongroup' %]
717
                                    <option value="patrongroup" selected="selected">
718
                                        patron's hold group
719
                                    </option>
720
                                [% ELSE %]
721
                                    <option value="patrongroup">
722
                                        patron's hold group
723
                                    </option>
724
                                [% END %]
725
726
                                [% IF hold_fulfillment_policy.rule_value == 'homebranch' %]
727
                                    <option value="homebranch" selected="selected">
728
                                        item's home library
729
                                    </option>
730
                                [% ELSE %]
731
                                    <option value="homebranch">
732
                                        item's home library
733
                                    </option>
734
                                [% END %]
735
736
                                [% IF hold_fulfillment_policy.rule_value == 'holdingbranch' %]
737
                                    <option value="holdingbranch" selected="selected">
738
                                        item's holding library
739
                                    </option>
740
                                [% ELSE %]
741
                                    <option value="holdingbranch">
742
                                        item's holding library
743
                                    </option>
744
                                [% END %]
745
                            </select>
746
                        </td>
747
                        <td>
748
                            <select name="returnbranch">
749
750
                                <option value="">
751
                                    Not set
752
                                </option>
753
754
                                [% IF returnbranch.rule_value == 'homebranch' %]
755
                                <option value="homebranch" selected="selected">
756
                                [% ELSE %]
757
                                <option value="homebranch">
758
                                [% END %]
759
                                    Item returns home
760
                                </option>
761
                                [% IF returnbranch.rule_value == 'holdingbranch' %]
762
                                <option value="holdingbranch" selected="selected">
763
                                [% ELSE %]
764
                                <option value="holdingbranch">
765
                                [% END %]
766
                                    Item returns to issuing library
767
                                </option>
768
                                [% IF returnbranch.rule_value == 'noreturn' %]
769
                                <option value="noreturn" selected="selected">
770
                                [% ELSE %]
771
                                <option value="noreturn">
772
                                [% END %]
773
                                    Item floats
774
                                </option>
775
                            </select>
776
                        </td>
777
                        <td class="actions">
778
                            <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-save"></i> Save</button>
779
                            [% IF ( default_checkout_hold_and_return_policy ) %]
780
                                <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete-branch-cat&amp;categorycode=*&amp;branch=[% current_branch | html %]" id="unset"><i class="fa fa-undo"></i> Unset</a>
781
                            [% END %]
152
                            [% END %]
782
                        </td>
153
                            <th>Rental discount (%)</th>
783
                    </tr>
154
                            [% IF Koha.Preference('UseRecalls') %]
784
                </table>
155
                                <th>Recalls allowed (total)</th>
785
            </form>
156
                                <th>Recalls per record (count)</th>
786
        </div><!-- /.page-section -->
157
                                <th>On shelf recalls allowed</th>
787
    </div>
158
                                <th>Recall due date interval (day)</th>
788
    [% IF ( show_branch_cat_rule_form ) %]
159
                                <th>Recall overdue fine amount</th>
789
    <div id="holds-policy-by-patron-category" class="container">
160
                                <th>Recall pickup period (day)</th>
790
    <h3>[% IF humanbranch %]Checkout, hold policy by patron category for [% Branches.GetName( humanbranch ) | html %][% ELSE %]Default checkout, hold policy by patron category[% END %]</h3>
161
                            [% END %]
791
        <div class="page-section">
162
                            <th class="noExport">Actions</th>
792
            <p>For this library, you can specify the maximum number of loans that
163
                        </tr>
793
                a patron of a given category can make, regardless of the item type.
164
                        </thead>
794
            </p>
165
                        <tbody>
795
            <p>If the total amount loanable for a given patron category is left blank,
166
                            [% SET row_count = 0 %]
796
               no limit applies, except possibly for a limit you define for a specific item type.
167
                            [% FOREACH c IN categorycodes %]
797
            </p>
168
                                [% SET c = '' UNLESS c.defined %]
798
            <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
169
                                [% FOREACH i IN itemtypes %]
799
                <input type="hidden" name="op" value="add-branch-cat" />
170
                                    [% SET i = '' UNLESS i.defined %]
800
                <input type="hidden" name="branch" value="[% current_branch | html %]"/>
171
                                    [% SET note = all_rules.$c.$i.note %]
801
                <table>
172
                                    [% SET maxissueqty = all_rules.$c.$i.maxissueqty %]
802
                    <tr>
173
                                    [% SET maxonsiteissueqty = all_rules.$c.$i.maxonsiteissueqty %]
803
                        <th>Patron category</th>
174
                                    [% SET issuelength = all_rules.$c.$i.issuelength %]
804
                        <th>Total current checkouts allowed</th>
175
                                    [% SET daysmode = all_rules.$c.$i.daysmode %]
805
                        <th>Total current on-site checkouts allowed</th>
176
                                    [% SET lengthunit = all_rules.$c.$i.lengthunit %]
806
                        <th>Total holds allowed</th>
177
                                    [% SET hardduedate = all_rules.$c.$i.hardduedate %]
807
                        <th>&nbsp;</th>
178
                                    [% SET hardduedatecompare = all_rules.$c.$i.hardduedatecompare %]
808
                    </tr>
179
                                    [% SET fine = all_rules.$c.$i.fine %]
809
                    [% FOREACH c IN categorycodes %]
180
                                    [% SET chargeperiod = all_rules.$c.$i.chargeperiod %]
810
                        [% NEXT UNLESS c %]
181
                                    [% SET chargeperiod_charge_at = all_rules.$c.$i.chargeperiod_charge_at %]
811
                        [% SET patron_maxissueqty = CirculationRules.Search( branchcode, c, undef, 'patron_maxissueqty' ) %]
182
                                    [% SET firstremind = all_rules.$c.$i.firstremind %]
812
                        [% SET patron_maxonsiteissueqty = CirculationRules.Search( branchcode, c, undef, 'patron_maxonsiteissueqty' ) %]
183
                                    [% SET overduefinescap = all_rules.$c.$i.overduefinescap %]
813
                        [% SET max_holds = CirculationRules.Search( branchcode, c, undef, 'max_holds' ) %]
184
                                    [% SET cap_fine_to_replacement_price = all_rules.$c.$i.cap_fine_to_replacement_price %]
814
185
                                    [% SET finedays = all_rules.$c.$i.finedays %]
815
                        [% IF  ( patron_maxissueqty.defined && patron_maxissueqty != '' ) || ( patron_maxonsiteissueqty.defined && patron_maxonsiteissueqty != '' ) || ( max_holds.defined && max_holds != '' ) %]
186
                                    [% SET maxsuspensiondays = all_rules.$c.$i.maxsuspensiondays %]
816
                        <tr>
187
                                    [% SET suspension_chargeperiod = all_rules.$c.$i.suspension_chargeperiod %]
817
                            <td>
188
                                    [% SET renewalsallowed = all_rules.$c.$i.renewalsallowed %]
818
                                [% IF c == undef %]
189
                                    [% SET unseenrenewalsallowed = all_rules.$c.$i.unseen_renewals_allowed %]
819
                                    <em>Default</em>
190
                                    [% SET renewalperiod = all_rules.$c.$i.renewalperiod %]
820
                                [% ELSE %]
191
                                    [% SET norenewalbefore = all_rules.$c.$i.norenewalbefore %]
821
                                    [% Categories.GetName(c) | html %]
192
                                    [% SET auto_renew = all_rules.$c.$i.auto_renew %]
193
                                    [% SET no_auto_renewal_after = all_rules.$c.$i.no_auto_renewal_after %]
194
                                    [% SET no_auto_renewal_after_hard_limit = all_rules.$c.$i.no_auto_renewal_after_hard_limit %]
195
                                    [% SET reservesallowed = all_rules.$c.$i.reservesallowed %]
196
                                    [% SET holds_per_day = all_rules.$c.$i.holds_per_day %]
197
                                    [% SET holds_per_record = all_rules.$c.$i.holds_per_record %]
198
                                    [% SET onshelfholds = all_rules.$c.$i.onshelfholds %]
199
                                    [% SET opacitemholds = all_rules.$c.$i.opacitemholds %]
200
                                    [% SET article_requests = all_rules.$c.$i.article_requests %]
201
                                    [% SET rentaldiscount = all_rules.$c.$i.rentaldiscount %]
202
                                    [% SET decreaseloanholds = all_rules.$c.$i.decreaseloanholds %]
203
                                    [% SET recalls_allowed = all_rules.$c.$i.recalls_allowed %]
204
                                    [% SET recalls_per_record = all_rules.$c.$i.recalls_per_record %]
205
                                    [% SET on_shelf_recalls = all_rules.$c.$i.on_shelf_recalls %]
206
                                    [% SET recall_due_date_interval = all_rules.$c.$i.recall_due_date_interval %]
207
                                    [% SET recall_overdue_fine = all_rules.$c.$i.recall_overdue_fine %]
208
                                    [% SET recall_shelf_time = all_rules.$c.$i.recall_shelf_time %]
209
        
210
                                    [% SET show_rule = note || maxissueqty || maxonsiteissueqty || issuelength || daysmode || lengthunit || hardduedate || hardduedatecompare || fine || chargeperiod || chargeperiod_charge_at || firstremind || overduefinescap || cap_fine_to_replacement_price || finedays || maxsuspensiondays || suspension_chargeperiod || renewalsallowed || unseenrenewalsallowed || renewalperiod || norenewalbefore || auto_renew || no_auto_renewal_after || no_auto_renewal_after_hard_limit || reservesallowed || holds_per_day || holds_per_record || onshelfholds || opacitemholds || article_requests || rentaldiscount || decreaseloanholds || recalls_allowed || recalls_per_record || on_shelf_recalls || recall_due_date_interval || recall_overdue_fine || recall_shelf_time %]
211
                                    [% IF show_rule %]
212
                                        [% SET row_count = row_count + 1 %]
213
                                        <tr row_countd="row_[% row_count | html %]">
214
                                                <td>[% IF ( c == undef ) %]
215
                                                        1
216
                                                    [% ELSE %]
217
                                                        0
218
                                                    [% END %]</td>
219
                                                <td>
220
                                                    [% IF c == undef %]
221
                                                        <em>All</em>
222
                                                    [% ELSE %]
223
                                                        [% Categories.GetName(c) | html %]
224
                                                    [% END %]
225
                                                </td>
226
                                                <td>[% IF ( i == undef ) %]
227
                                                        1
228
                                                    [% ELSE %]
229
                                                        0
230
                                                    [% END %]</td>
231
                                                <td>
232
                                                    [% IF i == undef %]
233
                                                        <em>All</em>
234
                                                    [% ELSE %]
235
                                                        [% ItemTypes.GetDescription(i,1) | html %]
236
                                                    [% END %]
237
                                                </td>
238
                                                <td class="actions">
239
                                                  <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a>
240
                                                  <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&amp;itemtype=[% i || '*' | html %]&amp;categorycode=[% c || '*' | html %]&amp;branch=[% current_branch | html %]"><i class="fa fa-trash"></i> Delete</a>
241
                                                </td>
242
                                                <td>
243
                                                    [% IF note.defined && note != '' %]
244
                                                        <a name="viewnote" data-toggle="popover" title="Note" data-content="[% note | html %]" data-placement="top" data-trigger="hover">View note</a>
245
                                                    [% ELSE %]<span>&nbsp;</span>[% END %]
246
                                                </td>
247
                                                <td>
248
                                                    [% IF maxissueqty.defined && maxissueqty != '' %]
249
                                                        [% maxissueqty | html %]
250
                                                    [% ELSE %]
251
                                                        <span>Unlimited</span>
252
                                                    [% END %]
253
                                                </td>
254
                                                <td>
255
                                                    [% IF maxonsiteissueqty.defined && maxonsiteissueqty != ''  %]
256
                                                        [% maxonsiteissueqty | html %]
257
                                                    [% ELSE %]
258
                                                        <span>Unlimited</span>
259
                                                    [% END %]
260
                                                </td>
261
                                                <td>[% issuelength | html %]</td>
262
                                                <td>
263
                                                    [% SWITCH daysmode %]
264
                                                    [% CASE 'Calendar' %]<span title="Use the calendar to skip days the library is closed">Skip closed days</span>
265
                                                    [% CASE 'Datedue' %]<span title="Use the calendar to push the due date to the next open day">Next open day</span>
266
                                                    [% CASE 'Days' %]<span title="Ignore the calendar">Ignore the calendar</span>
267
                                                    [% CASE 'Dayweek' %]<span title="Use the calendar to push the due date to the next open matching weekday for weekly loan periods, or the next open day otherwise">Same week day</span>
268
                                                    [% CASE %]<span title="Use the system preference 'useDaysMode' as a default value">Default</span>
269
                                                    [% END %]
270
                                                </td>
271
                                                <td>
272
                                                    [% IF ( lengthunit == 'days' ) %]
273
                                                        <span>Days</span>
274
                                                    [% ELSIF ( lengthunit == 'hours') %]
275
                                                        <span>Hours</span>
276
                                                    [% ELSE %]
277
                                                        <span>Undefined</span>
278
                                                    [% END %]
279
                                                </td>
280
                                                <td>
281
                                                  [% IF ( hardduedate ) %]
282
                                                    [% IF ( hardduedatecompare == '-1' ) %]
283
                                                      before [% hardduedate | $KohaDates %]
284
                                                      <input type="hidden" name="hardduedatecomparebackup" value="-1" />
285
                                                    [% ELSIF ( hardduedatecompare == '0' ) %]
286
                                                      on [% hardduedate | $KohaDates %]
287
                                                      <input type="hidden" name="hardduedatecomparebackup" value="0" />
288
                                                    [% ELSIF ( hardduedatecompare == '1' ) %]
289
                                                      after [% hardduedate | $KohaDates %]
290
                                                      <input type="hidden" name="hardduedatecomparebackup" value="1" />
291
                                                    [% END %]
292
                                                  [% ELSE %]
293
                                                    <span>None defined</span>
294
                                                  [% END %]
295
                                                </td>
296
                                                <td>[% decreaseloanholds | html %]</td>
297
                                                <td>[% fine | html %]</td>
298
                                                <td>[% chargeperiod | html %]</td>
299
                                                <td>[% IF chargeperiod_charge_at %]Start of interval[% ELSE %]End of interval[% END %]</td>
300
                                                <td>[% firstremind | html %]</td>
301
                                                <td>[% overduefinescap | $Price %]</td>
302
                                                <td>
303
                                                    [% IF cap_fine_to_replacement_price %]
304
                                                        <input type="checkbox" checked="checked" disabled="disabled" />
305
                                                    [% ELSE %]
306
                                                        <input type="checkbox" disabled="disabled" />
307
                                                    [% END %]
308
                                                </td>
309
                                                <td>[% finedays | html %]</td>
310
                                                <td>[% maxsuspensiondays | html %]</td>
311
                                                <td>[% suspension_chargeperiod | html %]</td>
312
                                                <td>[% renewalsallowed | html %]</td>
313
                                                [% IF Koha.Preference('UnseenRenewals') %]
314
                                                    <td>
315
                                                        [% IF unseenrenewalsallowed.defined && unseenrenewalsallowed != '' %]
316
                                                            [% unseenrenewalsallowed | html %]
317
                                                        [% ELSE %]
318
                                                            <span>Unlimited</span>
319
                                                        [% END %]
320
                                                    </td>
321
                                                [% END %]
322
                                                <td>[% renewalperiod | html %]</td>
323
                                                <td>[% norenewalbefore | html %]</td>
324
                                                <td>
325
                                                    [% IF auto_renew %]
326
                                                        <span>Yes</span>
327
                                                    [% ELSE %]
328
                                                        <span>No</span>
329
                                                    [% END %]
330
                                                </td>
331
                                                <td>[% no_auto_renewal_after | html %]</td>
332
                                                <td>[% no_auto_renewal_after_hard_limit | $KohaDates %]</td>
333
                                                <td>
334
                                                    [% IF reservesallowed.defined && reservesallowed != '' %]
335
                                                        [% reservesallowed | html %]
336
                                                    [% ELSE %]
337
                                                        <span>Unlimited</span>
338
                                                    [% END %]
339
                                                </td>
340
                                                <td>
341
                                                    [% IF holds_per_day.defined && holds_per_day != '' %]
342
                                                        [% holds_per_day | html %]
343
                                                    [% ELSE %]
344
                                                        <span>Unlimited</span>
345
                                                    [% END %]
346
                                                </td>
347
                                                <td>
348
                                                    [% IF holds_per_record.defined && holds_per_record != '' %]
349
                                                        [% holds_per_record | html %]
350
                                                    [% ELSE %]
351
                                                        <span>Unlimited</span>
352
                                                    [% END %]
353
                                                </td>
354
                                                <td>
355
                                                    [% IF onshelfholds == 1 %]
356
                                                        <span>Yes</span>
357
                                                    [% ELSIF onshelfholds == 2 %]
358
                                                        <span>If all unavailable</span>
359
                                                    [% ELSE %]
360
                                                        <span>If any unavailable</span>
361
                                                    [% END %]
362
                                                </td>
363
                                                <td>
364
                                                    [% IF opacitemholds == 'F'%]
365
                                                        <span>Force</span>
366
                                                    [% ELSIF opacitemholds == 'Y'%]
367
                                                        <span>Allow</span>
368
                                                    [% ELSE %]
369
                                                        <span>Don't allow</span>
370
                                                    [% END %]
371
                                                </td>
372
                                                [% IF Koha.Preference('ArticleRequests') %]
373
                                                <td>
374
                                                    [% IF article_requests == 'no' %]
375
                                                        <span>No</span>
376
                                                    [% ELSIF article_requests == 'yes' %]
377
                                                        <span>Yes</span>
378
                                                    [% ELSIF article_requests == 'bib_only' %]
379
                                                        <span>Record only</span>
380
                                                    [% ELSIF article_requests == 'item_only' %]
381
                                                        <span>Item only</span>
382
                                                    [% END %]
383
                                                </td>
384
                                                [% END %]
385
                                                <td>[% rentaldiscount | html %]</td>
386
                                                [% IF Koha.Preference('UseRecalls') %]
387
                                                    <td>[% recalls_allowed | html %]</td>
388
                                                    <td>[% recalls_per_record | html %]</td>
389
                                                    <td>
390
                                                        [% IF on_shelf_recalls == 'all' %]
391
                                                            <span>If all unavailable</span>
392
                                                        [% ELSE %]
393
                                                            <span>If any unavailable</span>
394
                                                        [% END %]
395
                                                    </td>
396
                                                    <td>[% recall_due_date_interval | html %]</td>
397
                                                    <td>[% recall_overdue_fine | $Price %]</td>
398
                                                    <td>[% recall_shelf_time | html %]</td>
399
                                                [% END %]
400
                                                <td class="actions">
401
                                                  <a href="#" class="editrule btn btn-default btn-xs"><i class="fa fa-pencil"></i> Edit</a>
402
                                                  <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete&amp;itemtype=[% i || '*' | uri %]&amp;categorycode=[% c || '*' | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
403
                                                </td>
404
                                        </tr>
405
                                    [% END %]
822
                                [% END %]
406
                                [% END %]
823
                            </td>
407
                            [% END %]
824
                            <td>
408
                            <tr class="noExport" id="edit_row">
825
                                [% IF patron_maxissueqty.defined && patron_maxissueqty != '' %]
409
                                <td>2</td>
826
                                    [% patron_maxissueqty | html %]
410
                                <td>
827
                                [% ELSE %]
411
                                    <select name="categorycode" id="categorycode">
828
                                    <span>Unlimited</span>
412
                                        <option value="*">All</option>
413
                                    [% FOREACH patron_category IN patron_categories%]
414
                                        <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
415
                                    [% END %]
416
                                    </select>
417
                                </td>
418
                                <td>0</td>
419
                                <td>
420
                                    <select name="itemtype" id="matrixitemtype" style="width:13em;">
421
                                        <option value="*">All</option>
422
                                        [% FOREACH itemtypeloo IN itemtypeloop %]
423
                                            [% NEXT IF itemtypeloo.parent_type %]
424
                                            [% SET children = itemtypeloo.children_with_localization %]
425
                                            [% IF children.count %]
426
                                                <optgroup label="[% itemtypeloo.translated_description | html %]">
427
                                                    <option value="[% itemtypeloo.itemtype | html %]">[% itemtypeloo.translated_description | html %] (All)</option>
428
                                                    [% FOREACH child IN children %]
429
                                                        <option value="[% child.itemtype | html %]">[% child.translated_description | html %]</option>
430
                                                    [% END %]
431
                                                </optgroup>
432
                                            [% ELSE %]
433
                                                <option value="[% itemtypeloo.itemtype | html %]">[% itemtypeloo.translated_description | html %]</option>
434
                                            [% END %]
435
                                        [% END %]
436
                                    </select>
437
                                </td>
438
                                <td class="actions">
439
                                    <input type="hidden" name="branch" value="[% current_branch | html %]"/>
440
                                    <button type="submit" class="btn btn-primary btn-xs"><i class="fa fa-save"></i> Save</button>
441
                                    <button name="cancel" class="clear_edit btn btn-default btn-xs"><i class="fa fa-undo"></i> Clear</button>
442
                                </td>
443
                                <td><input type="text" name="note" id="note" size="15" value="" maxlength="100"></td>
444
                                <td><input type="text" name="maxissueqty" id="maxissueqty" size="3" /></td>
445
                                <td><input type="text" name="maxonsiteissueqty" id="maxonsiteissueqty" size="3" /></td>
446
                                <td><input type="text" name="issuelength" id="issuelength" size="3" /> </td>
447
                                <td>
448
                                    <select name="daysmode" id="daysmode">
449
                                        <option value="" title="Use the system preference 'useDaysMode' as a default value">Default</option>
450
                                        <option value="Calendar" title="Use the calendar to skip days the library is closed">Skip closed days</option>
451
                                        <option value="Datedue" title="Use the calendar to push the due date to the next open day">Next open day</option>
452
                                        <option value="Days" title="Ignore the calendar">Ignore the calendar</option>
453
                                        <option value="Dayweek" title="Use the calendar to push the due date to the next open matching weekday for weekly loan periods, or the next open day otherwise">Same week day</option>
454
                                    </select>
455
                                </td>
456
                                <td>
457
                                  <select name="lengthunit" id="lengthunit">
458
                                    <option value="days" selected="selected">Days</option>
459
                                    <option value="hours">Hours</option>
460
                                  </select>
461
                                </td>
462
                                <td>
463
                                    <select name="hardduedatecompare" id="hardduedatecompare">
464
                                       <option value="-1">Before</option>
465
                                       <option value="0">Exactly on</option>
466
                                       <option value="1">After</option>
467
                                    </select>
468
                                    <input type="text" size="10" id="hardduedate" name="hardduedate" value="[% hardduedate | html %]" class="flatpickr" />
469
                                    <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
470
                                </td>
471
                                <td><input type="text" name="decreaseloanholds" id="decreaseloanholds" size="2" /></td>
472
                                <td><input type="text" name="fine" id="fine" size="4" /></td>
473
                                <td><input type="text" name="chargeperiod" id="chargeperiod" size="2" /></td>
474
                                <td>
475
                                    <select name="chargeperiod_charge_at" id="chargeperiod_charge_at">
476
                                       <option value="0">End of interval</option>
477
                                       <option value="1">Start of interval</option>
478
                                    </select>
479
                                </td>
480
                                <td><input type="text" name="firstremind" id="firstremind" size="2" /> </td>
481
                                <td><input type="text" name="overduefinescap" id="overduefinescap" size="6" /> </td>
482
                                <td><input type="checkbox" name="cap_fine_to_replacement_price" id="cap_fine_to_replacement_price" /></td>
483
                                <td><input type="text" name="finedays" id="fined" size="3" /> </td>
484
                                <td><input type="text" name="maxsuspensiondays" id="maxsuspensiondays" size="3" /> </td>
485
                                <td><input type="text" name="suspension_chargeperiod" id="suspension_chargeperiod" size="3" /> </td>
486
                                <td><input type="text" name="renewalsallowed" id="renewalsallowed" size="2" /></td>
487
                                [% IF Koha.Preference('UnseenRenewals') %]
488
                                    <td><input type="text" name="unseen_renewals_allowed" id="unseen_renewals_allowed" size="2" /></td>
829
                                [% END %]
489
                                [% END %]
830
                            </td>
490
                                <td><input type="text" name="renewalperiod" id="renewalperiod" size="3" /></td>
831
                            <td>
491
                                <td><input type="text" name="norenewalbefore" id="norenewalbefore" size="3" /></td>
832
                                [% IF patron_maxonsiteissueqty.defined && patron_maxonsiteissueqty != '' %]
492
                                <td>
833
                                    [% patron_maxonsiteissueqty | html %]
493
                                    <select name="auto_renew" id="auto_renew">
834
                                [% ELSE %]
494
                                        <option value="no" selected>No</option>
835
                                    <span>Unlimited</span>
495
                                        <option value="yes">Yes</option>
496
                                    </select>
497
                                </td>
498
                                <td><input type="text" name="no_auto_renewal_after" id="no_auto_renewal_after" size="3" /></td>
499
                                <td>
500
                                    <input type="text" size="10" name="no_auto_renewal_after_hard_limit" id="no_auto_renewal_after_hard_limit" value="[% no_auto_renewal_after_hard_limit | html %]" class="flatpickr"/>
501
                                    <div class="hint">[% INCLUDE 'date-format.inc' %]</div>
502
                                </td>
503
                                <td><input type="text" name="reservesallowed"  id="reservesallowed"  size="2" /></td>
504
                                <td><input type="text" name="holds_per_day"    id="holds_per_day"    size="2" /></td>
505
                                <td><input type="text" name="holds_per_record" id="holds_per_record" size="2" /></td>
506
                                <td>
507
                                    <select name="onshelfholds" id="onshelfholds">
508
                                        <option value="1">Yes</option>
509
                                        <option value="0">If any unavailable</option>
510
                                        <option value="2">If all unavailable</option>
511
                                    </select>
512
                                </td>
513
                                <td>
514
                                    <select id="opacitemholds" name="opacitemholds">
515
                                        <option value="N">Don't allow</option>
516
                                        <option value="Y">Allow</option>
517
                                        <option value="F">Force</option>
518
                                    </select>
519
                                </td>
520
                                [% IF Koha.Preference('ArticleRequests') %]
521
                                <td>
522
                                    <select id="article_requests" name="article_requests">
523
                                        <option value="no">No</option>
524
                                        <option value="yes">Yes</option>
525
                                        <option value="bib_only">Record only</option>
526
                                        <option value="item_only">Item only</option>
527
                                    </select>
528
                                </td>
836
                                [% END %]
529
                                [% END %]
837
                            </td>
530
                                <td><input type="text" name="rentaldiscount" id="rentaldiscount" size="2" /></td>
838
                            <td>
531
                                [% IF Koha.Preference('UseRecalls') %]
839
                                [% IF max_holds.defined && max_holds != '' %]
532
                                    <td><input type="text" name="recalls_allowed" id="recalls_allowed" size="3"></td>
840
                                    [% max_holds | html %]
533
                                    <td><input type="text" name="recalls_per_record" id="recalls_per_record" size="3"></td>
841
                                [% ELSE %]
534
                                    <td>
842
                                    <span>Unlimited</span>
535
                                        <select name="on_shelf_recalls" id="on_shelf_recalls">
536
                                            <option value="any">If any unavailable</option>
537
                                            <option value="all">If all unavailable</option>
538
                                        </select>
539
                                    </td>
540
                                    <td><input type="text" name="recall_due_date_interval" id="recall_due_date_interval" size="3"></td>
541
                                    <td><input type="text" name="recall_overdue_fine" id="recall_overdue_fine" size="6"></td>
542
                                    <td><input type="text" name="recall_shelf_time" id="recall_shelf_time" size="3"></td>
843
                                [% END %]
543
                                [% END %]
844
                            </td>
544
                                <td class="actions">
845
545
                                    <input type="hidden" name="branch" value="[% current_branch | html %]"/>
846
                            <td class="actions">
546
                                    <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-save"></i> Save</button>
847
                                <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete-branch-cat&amp;categorycode=[% c | html %]&amp;branch=[% current_branch | html %]"><i class="fa fa-trash"></i> Delete</a>
547
                                    <button name="cancel" class="clear_edit btn btn-default btn-xs"><i class="fa fa-undo"></i> Clear</button>
848
                            </td>
548
                                </td>
849
                        </tr>
549
                            </tr>
850
                        [% END %]
550
                            </tbody>
851
                    [% END %]
551
                            <tfoot>
852
                    <tr>
552
                                <tr>
853
                        <td>
553
                                  <th>&nbsp;</th>
854
                            <select name="categorycode">
554
                                  <th>Patron category</th>
855
                            [% FOREACH patron_category IN patron_categories%]
555
                                  <th>&nbsp;</th>
856
                                <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
556
                                  <th>Item type</th>
857
                            [% END %]
557
                                  <th>&nbsp;</th>
858
                            </select>
558
                                  <th>Note</th>
859
                        </td>
559
                                  <th>Current checkouts allowed</th>
860
                        <td><input name="patron_maxissueqty" size="3" type="text" /></td>
560
                                  <th>Current on-site checkouts allowed</th>
861
                        <td><input name="patron_maxonsiteissueqty" size="3" type="text" /></td>
561
                                  <th>Loan period</th>
862
                        <td><input name="max_holds" size="3" type="text" /></td>
562
                                  <th>Days mode</th>
863
                        <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
563
                                  <th>Unit</th>
864
                    </tr>
564
                                  <th>Hard due date</th>
865
                </table>
565
                                  <th>Decreased loan period for high holds (day)</th>
866
            </form>
566
                                  <th>Fine amount</th>
867
        </div><!-- ./page-section -->
567
                                  <th>Fine charging interval</th>
868
    </div>
568
                                  <th>Charge when?</th>
869
    [% END %]
569
                                  <th>Fine grace period</th>
870
570
                                  <th>Overdue fines cap (amount)</th>
871
    <div id="waiting-hold-cancel-category" class="container">
571
                                  <th>Cap fine at replacement price</th>
872
    [% IF humanbranch %]
572
                                  <th>Suspension in days (day)</th>
873
        <h3>Waiting hold cancellation policy for [% Branches.GetName( humanbranch ) | html %]</h3>
573
                                  <th>Max. suspension duration (day)</th>
874
    [% ELSE %]
574
                                  <th>Suspension charging interval</th>
875
        <h3>Default waiting hold cancellation policy</h3>
575
                                  <th>Renewals allowed (count)</th>
876
    [% END %]
576
                                  [% IF Koha.Preference('UnseenRenewals') %]
877
        <div class="page-section">
577
                                  <th>Unseen renewals allowed (count)</th>
878
            <p>Specify if waiting holds can be cancelled for a given patron category.</p>
578
                                  [% END %]
879
            <form id="set-waiting-hold-cancellation" method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
579
                                  <th>Renewal period</th>
880
                <input type="hidden" name="op" value="set-waiting-hold-cancellation" />
580
                                  <th>No renewal before</th>
881
                <input type="hidden" name="branch" value="[% current_branch | html %]"/>
581
                                  <th>Automatic renewal</th>
882
                <table>
582
                                  <th>No automatic renewal after</th>
883
                    <tr>
583
                                  <th>No automatic renewal after (hard limit)</th>
884
                        <th>Patron category</th>
584
                                  <th>Holds allowed (total)</th>
885
                        <th>Item type</th>
585
                                  <th>Holds allowed (daily)</th>
886
                        <th>Cancellation allowed</th>
586
                                  <th>Holds per record (count)</th>
887
                        <th>&nbsp;</th>
587
                                  <th>On shelf holds allowed</th>
888
                    </tr>
588
                                  <th>OPAC item level holds</th>
889
                    [% FOREACH c IN categorycodes %]
589
                                  [% IF Koha.Preference('ArticleRequests') %]
890
                        [% SET c = '*' UNLESS c.defined AND c != '' %]
590
                                  <th>Article requests</th>
891
                        [% FOREACH i IN itemtypes %]
591
                                  [% END %]
892
                            [% SET i = '*' UNLESS i.defined AND i != '' %]
592
                                  <th>Rental discount (%)</th>
893
593
                                  [% IF Koha.Preference('UseRecalls') %]
894
                            [% SET waiting_hold_cancellation = CirculationRules.Search( current_branch, c, i, 'waiting_hold_cancellation' ) %]
594
                                    <th>Recalls allowed (total)</th>
895
595
                                    <th>Recalls per record (count)</th>
896
                            [% IF ( waiting_hold_cancellation.defined && waiting_hold_cancellation != '' ) %]
596
                                    <th>On shelf recalls allowed</th>
597
                                    <th>Recall due date interval (day)</th>
598
                                    <th>Recall overdue fine amount</th>
599
                                    <th>Recall pickup period (day)</th>
600
                                  [% END %]
601
                                  <th>&nbsp;</th>
602
                                </tr>
603
                            </tfoot>
604
                        </table>
605
                    </form>
606
                </div><!-- ./page-section -->
607
        
608
                <div id="defaults-for-this-library" class="page-section">
609
                    <h2>Default checkout, hold and return policy[% IF humanbranch %] for [% Branches.GetName( humanbranch ) | html %][% END %]</h2>
610
                    <p>You can set a default maximum number of checkouts, hold policy and return policy that will be used if none is defined below for a particular item type or category.</p>
611
                    <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
612
                        <input type="hidden" name="op" value="set-branch-defaults" />
613
                        <input type="hidden" name="branch" value="[% current_branch | html %]"/>
614
                        <table>
615
                            <tr>
616
                                <th>&nbsp;</th>
617
                                <th>Total current checkouts allowed</th>
618
                                <th>Total current on-site checkouts allowed</th>
619
                                <th>Maximum total holds allowed (count)</th>
620
                                <th>Hold policy</th>
621
                                <th>Hold pickup library match</th>
622
                                <th>Return policy</th>
623
                                <th class="noExport">Actions</th>
624
                            </tr>
625
                            [% SET patron_maxissueqty = CirculationRules.Search( current_branch, undef, undef, 'patron_maxissueqty', { want_rule => 1 } ) %]
626
                            [% SET patron_maxonsiteissueqty = CirculationRules.Search( current_branch, undef, undef, 'patron_maxonsiteissueqty', { want_rule => 1 } ) %]
627
                            [% SET rule_value = CirculationRules.Search( current_branch, undef , undef, 'max_holds', { want_rule => 1 } ) %]
628
                            [% SET holdallowed = CirculationRules.Search( current_branch, undef, undef, 'holdallowed', { want_rule => 1 } ) %]
629
                            [% SET hold_fulfillment_policy = CirculationRules.Search( current_branch, undef, undef, 'hold_fulfillment_policy', { want_rule => 1 }) %]
630
                            [% SET returnbranch = CirculationRules.Search( current_branch, undef, undef, 'returnbranch', { want_rule => 1 }) %]
631
                            [% SET default_checkout_hold_and_return_policy = ( patron_maxissueqty || patron_maxonsiteissueqty || rule_value || holdallowed || hold_fulfillment_policy || returnbranch ) %]
632
                            <tr>
633
                                <td>
634
                                    [% IF ( default_checkout_hold_and_return_policy ) %]
635
                                        <em>
636
                                        Defaults
637
                                        </em>
638
                                    [% ELSE %]
639
                                        Not set
640
                                    [% END %]
641
                                </td>
642
                                <td>
643
                                    <input type="text" name="patron_maxissueqty" size="9" value="[% patron_maxissueqty.rule_value | html %]" placeholder="Unlimited"/>
644
                                </td>
645
                                <td>
646
                                    <input type="text" name="patron_maxonsiteissueqty" size="9" value="[% patron_maxonsiteissueqty.rule_value | html %]" placeholder="Unlimited"/>
647
                                </td>
648
                                <td>
649
                                    <input name="max_holds" size="9" value="[% rule_value.rule_value | html %]" placeholder="Unlimited"/>
650
                                </td>
651
                                <td>
652
                                    <select name="holdallowed">
653
                                        <option value="">
654
                                            Not set
655
                                        </option>
656
        
657
                                        [% IF holdallowed.rule_value == 'from_any_library' %]
658
                                            <option value="from_any_library" selected="selected">
659
                                        [% ELSE %]
660
                                            <option value="from_any_library">
661
                                        [% END %]
662
                                            From any library
663
                                        </option>
664
        
665
                                        [% IF holdallowed.rule_value == 'from_local_hold_group' %]
666
                                        <option value="from_local_hold_group" selected="selected">
667
                                        [% ELSE %]
668
                                        <option value="from_local_hold_group">
669
                                        [% END %]
670
                                            From local hold group
671
                                        </option>
672
        
673
                                        [% IF holdallowed.rule_value == 'from_home_library' %]
674
                                            <option value="from_home_library" selected="selected">
675
                                        [% ELSE %]
676
                                            <option value="from_home_library">
677
                                        [% END %]
678
                                            From home library
679
                                        </option>
680
        
681
                                        [% IF holdallowed.rule_value == 'not_allowed' %]
682
                                            <option value="not_allowed" selected="selected">
683
                                        [% ELSE %]
684
                                            <option value="not_allowed">
685
                                        [% END %]
686
                                            No holds allowed
687
                                        </option>
688
                                    </select>
689
                                </td>
690
                                <td>
691
                                    <select name="hold_fulfillment_policy">
692
        
693
                                        <option value="">
694
                                            Not set
695
                                        </option>
696
        
697
                                        [% IF hold_fulfillment_policy.rule_value == 'any' %]
698
                                            <option value="any" selected="selected">
699
                                                any library
700
                                            </option>
701
                                        [% ELSE %]
702
                                            <option value="any">
703
                                                any library
704
                                            </option>
705
                                        [% END %]
706
        
707
                                        [% IF hold_fulfillment_policy.rule_value == 'holdgroup' %]
708
                                            <option value="holdgroup" selected="selected">
709
                                                item's hold group
710
                                            </option>
711
                                        [% ELSE %]
712
                                            <option value="holdgroup">
713
                                                item's hold group
714
                                            </option>
715
                                        [% END %]
716
        
717
                                        [% IF hold_fulfillment_policy.rule_value == 'patrongroup' %]
718
                                            <option value="patrongroup" selected="selected">
719
                                                patron's hold group
720
                                            </option>
721
                                        [% ELSE %]
722
                                            <option value="patrongroup">
723
                                                patron's hold group
724
                                            </option>
725
                                        [% END %]
726
        
727
                                        [% IF hold_fulfillment_policy.rule_value == 'homebranch' %]
728
                                            <option value="homebranch" selected="selected">
729
                                                item's home library
730
                                            </option>
731
                                        [% ELSE %]
732
                                            <option value="homebranch">
733
                                                item's home library
734
                                            </option>
735
                                        [% END %]
736
        
737
                                        [% IF hold_fulfillment_policy.rule_value == 'holdingbranch' %]
738
                                            <option value="holdingbranch" selected="selected">
739
                                                item's holding library
740
                                            </option>
741
                                        [% ELSE %]
742
                                            <option value="holdingbranch">
743
                                                item's holding library
744
                                            </option>
745
                                        [% END %]
746
                                    </select>
747
                                </td>
748
                                <td>
749
                                    <select name="returnbranch">
750
        
751
                                        <option value="">
752
                                            Not set
753
                                        </option>
754
        
755
                                        [% IF returnbranch.rule_value == 'homebranch' %]
756
                                        <option value="homebranch" selected="selected">
757
                                        [% ELSE %]
758
                                        <option value="homebranch">
759
                                        [% END %]
760
                                            Item returns home
761
                                        </option>
762
                                        [% IF returnbranch.rule_value == 'holdingbranch' %]
763
                                        <option value="holdingbranch" selected="selected">
764
                                        [% ELSE %]
765
                                        <option value="holdingbranch">
766
                                        [% END %]
767
                                            Item returns to issuing library
768
                                        </option>
769
                                        [% IF returnbranch.rule_value == 'noreturn' %]
770
                                        <option value="noreturn" selected="selected">
771
                                        [% ELSE %]
772
                                        <option value="noreturn">
773
                                        [% END %]
774
                                            Item floats
775
                                        </option>
776
                                    </select>
777
                                </td>
778
                                <td class="actions">
779
                                    <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-save"></i> Save</button>
780
                                    [% IF ( default_checkout_hold_and_return_policy ) %]
781
                                        <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete-branch-cat&amp;categorycode=*&amp;branch=[% current_branch | html %]" id="unset"><i class="fa fa-undo"></i> Unset</a>
782
                                    [% END %]
783
                                </td>
784
                            </tr>
785
                        </table>
786
                    </form>
787
                </div>
788
        
789
                [% IF ( show_branch_cat_rule_form ) %]
790
                <div id="holds-policy-by-patron-category" class="page-section">
791
                    <h2>[% IF humanbranch %]Checkout, hold policy by patron category for [% Branches.GetName( humanbranch ) | html %][% ELSE %]Default checkout, hold policy by patron category[% END %]</h2>
792
                    <p>For this library, you can specify the maximum number of loans that
793
                        a patron of a given category can make, regardless of the item type.
794
                    </p>
795
                    <p>If the total amount loanable for a given patron category is left blank,
796
                       no limit applies, except possibly for a limit you define for a specific item type.
797
                    </p>
798
                    <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
799
                        <input type="hidden" name="op" value="add-branch-cat" />
800
                        <input type="hidden" name="branch" value="[% current_branch | html %]"/>
801
                        <table>
802
                            <tr>
803
                                <th>Patron category</th>
804
                                <th>Total current checkouts allowed</th>
805
                                <th>Total current on-site checkouts allowed</th>
806
                                <th>Total holds allowed</th>
807
                                <th>&nbsp;</th>
808
                            </tr>
809
                            [% FOREACH c IN categorycodes %]
810
                                [% NEXT UNLESS c %]
811
                                [% SET patron_maxissueqty = CirculationRules.Search( branchcode, c, undef, 'patron_maxissueqty' ) %]
812
                                [% SET patron_maxonsiteissueqty = CirculationRules.Search( branchcode, c, undef, 'patron_maxonsiteissueqty' ) %]
813
                                [% SET max_holds = CirculationRules.Search( branchcode, c, undef, 'max_holds' ) %]
814
        
815
                                [% IF  ( patron_maxissueqty.defined && patron_maxissueqty != '' ) || ( patron_maxonsiteissueqty.defined && patron_maxonsiteissueqty != '' ) || ( max_holds.defined && max_holds != '' ) %]
897
                                <tr>
816
                                <tr>
898
                                    <td>
817
                                    <td>
899
                                        [% IF c == '*' %]
818
                                        [% IF c == undef %]
900
                                            <em>All</em>
819
                                            <em>Default</em>
901
                                        [% ELSE %]
820
                                        [% ELSE %]
902
                                            [% Categories.GetName(c) | html %]
821
                                            [% Categories.GetName(c) | html %]
903
                                        [% END %]
822
                                        [% END %]
904
                                    </td>
823
                                    </td>
905
                                    <td>
824
                                    <td>
906
                                        [% IF i == '*' %]
825
                                        [% IF patron_maxissueqty.defined && patron_maxissueqty != '' %]
907
                                            <em>All</em>
826
                                            [% patron_maxissueqty | html %]
908
                                        [% ELSE %]
827
                                        [% ELSE %]
909
                                            [% ItemTypes.GetDescription(i,1) | html %]
828
                                            <span>Unlimited</span>
910
                                        [% END %]
829
                                        [% END %]
911
                                    </td>
830
                                    </td>
912
                                    <td>
831
                                    <td>
913
                                        [% IF waiting_hold_cancellation %]
832
                                        [% IF patron_maxonsiteissueqty.defined && patron_maxonsiteissueqty != '' %]
914
                                            <span>Yes</span>
833
                                            [% patron_maxonsiteissueqty | html %]
915
                                        [% ELSE %]
834
                                        [% ELSE %]
916
                                            <span>No</span>
835
                                            <span>Unlimited</span>
917
                                        [% END %]
836
                                        [% END %]
918
                                    </td>
837
                                    </td>
838
                                    <td>
839
                                        [% IF max_holds.defined && max_holds != '' %]
840
                                            [% max_holds | html %]
841
                                        [% ELSE %]
842
                                            <span>Unlimited</span>
843
                                        [% END %]
844
                                    </td>
845
        
919
                                    <td class="actions">
846
                                    <td class="actions">
920
                                        <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=del-waiting-hold-cancellation&amp;waiting_hold_cancellation_category=[% c | uri %]&amp;waiting_hold_cancellation_itemtype=[% i | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
847
                                        <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete-branch-cat&amp;categorycode=[% c | html %]&amp;branch=[% current_branch | html %]"><i class="fa fa-trash"></i> Delete</a>
921
                                    </td>
848
                                    </td>
922
                                </tr>
849
                                </tr>
850
                                [% END %]
923
                            [% END %]
851
                            [% END %]
924
                        [% END %]
852
                            <tr>
925
                    [% END %]
853
                                <td>
926
                    <tr>
854
                                    <select name="categorycode">
927
                        <td>
855
                                    [% FOREACH patron_category IN patron_categories%]
928
                            <select name="waiting_hold_cancellation_category" id="waiting_hold_cancellation_category">
856
                                        <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
929
                                <option value="*">All</option>
857
                                    [% END %]
930
                            [% FOREACH patron_category IN patron_categories %]
858
                                    </select>
931
                                <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
859
                                </td>
932
                            [% END %]
860
                                <td><input name="patron_maxissueqty" size="3" type="text" /></td>
933
                            </select>
861
                                <td><input name="patron_maxonsiteissueqty" size="3" type="text" /></td>
934
                        </td>
862
                                <td><input name="max_holds" size="3" type="text" /></td>
935
                        <td>
863
                                <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
936
                            <select name="waiting_hold_cancellation_itemtype" id="waiting_hold_cancellation_itemtype">
864
                            </tr>
937
                                <option value="*">All</option>
865
                        </table>
938
                            [% FOREACH itemtype IN itemtypeloop %]
866
                    </form>
939
                                <option value="[% itemtype.itemtype | html %]">[% ItemTypes.GetDescription(itemtype.itemtype) | html %]</option>
867
                </div>
940
                            [% END %]
941
                            </select>
942
                        </td>
943
                        <td>
944
                            <select name="waiting_hold_cancellation_policy" id="waiting_hold_cancellation_policy">
945
                                <option value="0" selected>No</option>
946
                                <option value="1">Yes</option>
947
                            </select>
948
                        </td>
949
                        <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
950
                    </tr>
951
                </table>
952
            </form>
953
        </div><!-- /.page-section -->
954
    </div>
955
956
[% IF Koha.Preference('ArticleRequests') %]
957
    <div id="open-article-requests-limit-patron-category" class="container">
958
    [% IF humanbranch %]
959
        <h3>Daily open article requests limit for [% Branches.GetName( humanbranch ) | html %]</h3>
960
    [% ELSE %]
961
        <h3>Default open article requests limit</h3>
962
    [% END %]
963
        <p>Specify the maximum number simultaneous current article requests a patron of a given category can have.</p>
964
        <form id="set-article-requests-daily-limit" method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
965
            <input type="hidden" name="op" value="add-open-article-requests-limit" />
966
            <input type="hidden" name="branch" value="[% current_branch | html %]"/>
967
            <table>
968
                <tr>
969
                    <th>Patron category</th>
970
                    <th>Total article requests</th>
971
                    <th>&nbsp;</th>
972
                </tr>
973
                [% FOREACH c IN categorycodes %]
974
                    [% NEXT UNLESS c %]
975
                    [% SET open_article_requests_limit = CirculationRules.Search( branchcode, c, undef, 'open_article_requests_limit' ) %]
976
977
                    [% IF ( open_article_requests_limit.defined && open_article_requests_limit != '' ) %]
978
                    <tr>
979
                        <td>
980
                            [% Categories.GetName(c) | html %]
981
                        </td>
982
                        <td>
983
                            [% IF open_article_requests_limit.defined && open_article_requests_limit != '' %]
984
                                [% open_article_requests_limit | html %]
985
                            [% ELSE %]
986
                                <span>Unlimited</span>
987
                            [% END %]
988
                        </td>
989
990
                        <td class="actions">
991
                            <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=del-open-article-requests-limit&amp;categorycode=[% c | html %]&amp;branch=[% current_branch | html %]"><i class="fa fa-trash"></i> Delete</a>
992
                        </td>
993
                    </tr>
994
                    [% END %]
995
                [% END %]
868
                [% END %]
996
                <tr>
869
        
997
                    <td>
870
                <div id="waiting-hold-cancel-category" class="page-section">
998
                        <select name="categorycode">
871
                [% IF humanbranch %]
999
                        [% FOREACH patron_category IN patron_categories %]
872
                    <h2>Waiting hold cancellation policy for [% Branches.GetName( humanbranch ) | html %]</h2>
1000
                            <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
873
                [% ELSE %]
1001
                        [% END %]
874
                    <h2>Default waiting hold cancellation policy</h2>
1002
                        </select>
1003
                    </td>
1004
                    <td><input name="open_article_requests_limit" size="3" type="text" /></td>
1005
                    <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
1006
                </tr>
1007
            </table>
1008
        </form>
1009
    </div>
1010
    <div id="article-request-fee-category" class="container">
1011
    [% IF humanbranch %]
1012
        <h3>Article request fees for [% Branches.GetName( humanbranch ) | html %]</h3>
1013
    [% ELSE %]
1014
        <h3>Default article request fees</h3>
1015
    [% END %]
1016
        <p>Specify the article request fee for a given patron category.</p>
1017
        <form id="set-article-request-fee" method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
1018
            <input type="hidden" name="op" value="set-article-request-fee" />
1019
            <input type="hidden" name="branch" value="[% current_branch | html %]"/>
1020
            <table>
1021
                <tr>
1022
                    <th>Patron category</th>
1023
                    <th>Fee</th>
1024
                    <th>&nbsp;</th>
1025
                </tr>
1026
                [% FOREACH c IN categorycodes %]
1027
                    [% SET c = '*' UNLESS c.defined AND c != '' %]
1028
1029
                    [% SET article_request_fee = CirculationRules.Search( current_branch, c, undef, 'article_request_fee' ) %]
1030
1031
                    [% IF ( article_request_fee.defined && article_request_fee != '' ) %]
1032
                    <tr>
1033
                        <td>
1034
                            [% IF c == '*' %]
1035
                                <em>All</em>
1036
                            [% ELSE %]
1037
                                [% Categories.GetName(c) | html %]
1038
                            [% END %]
1039
                        </td>
1040
                        <td>
1041
                            [% IF article_request_fee.defined && article_request_fee != '' %]
1042
                                [% article_request_fee | html %]
1043
                            [% ELSE %]
1044
                                <span>0</span>
1045
                            [% END %]
1046
                        </td>
1047
                        <td class="actions">
1048
                            <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=del-article-request-fee&amp;article_request_fee_category=[% c | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
1049
                        </td>
1050
                    </tr>
1051
                    [% END %]
1052
                [% END %]
875
                [% END %]
1053
                <tr>
876
                    <p>Specify if waiting holds can be cancelled for a given patron category.</p>
1054
                    <td>
877
                    <form id="set-waiting-hold-cancellation" method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
1055
                        <select name="article_request_fee_category" id="article_request_fee_category">
878
                        <input type="hidden" name="op" value="set-waiting-hold-cancellation" />
1056
                            <option value="*">All</option>
879
                        <input type="hidden" name="branch" value="[% current_branch | html %]"/>
1057
                        [% FOREACH patron_category IN patron_categories%]
880
                        <table>
1058
                            <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
881
                            <tr>
1059
                        [% END %]
882
                                <th>Patron category</th>
1060
                        </select>
883
                                <th>Item type</th>
1061
                    </td>
884
                                <th>Cancellation allowed</th>
1062
                    <td><input name="article_request_fee" size="3" type="text" /></td>
885
                                <th>&nbsp;</th>
1063
                    <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
886
                            </tr>
1064
                </tr>
887
                            [% FOREACH c IN categorycodes %]
1065
            </table>
888
                                [% SET c = '*' UNLESS c.defined AND c != '' %]
1066
        </form>
889
                                [% FOREACH i IN itemtypes %]
1067
    </div>
890
                                    [% SET i = '*' UNLESS i.defined AND i != '' %]
1068
891
        
1069
[% END %]
892
                                    [% SET waiting_hold_cancellation = CirculationRules.Search( current_branch, c, i, 'waiting_hold_cancellation' ) %]
1070
893
        
1071
    <div id="refund-lost-item-fee-on-return" class="container">
894
                                    [% IF ( waiting_hold_cancellation.defined && waiting_hold_cancellation != '' ) %]
1072
        [% IF current_branch == '*' %]
895
                                        <tr>
1073
            <h3>Default lost item fee refund on return policy</h3>
896
                                            <td>
1074
        [% ELSE %]
897
                                                [% IF c == '*' %]
1075
            <h3>Lost item fee refund on return policy for [% Branches.GetName(current_branch) | html %]</h3>
898
                                                    <em>All</em>
1076
        [% END %]
899
                                                [% ELSE %]
1077
        <div class="page-section">
900
                                                    [% Categories.GetName(c) | html %]
1078
            <p>Specify the default policy for lost item fees on return.</p>
901
                                                [% END %]
1079
            <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
902
                                            </td>
1080
                <input type="hidden" name="op" value="mod-refund-lost-item-fee-rule" />
903
                                            <td>
1081
                <input type="hidden" name="branch" value="[% current_branch | html %]" />
904
                                                [% IF i == '*' %]
1082
                <table>
905
                                                    <em>All</em>
1083
                    <tr>
906
                                                [% ELSE %]
1084
                        <th>Refund lost item replacement fee</th>
907
                                                    [% ItemTypes.GetDescription(i,1) | html %]
1085
                        <th>Refund lost item processing fee</th>
908
                                                [% END %]
1086
                        <th>&nbsp;</th>
909
                                            </td>
1087
                    </tr>
910
                                            <td>
1088
                    <tr>
911
                                                [% IF waiting_hold_cancellation %]
1089
                        <td>
912
                                                    <span>Yes</span>
1090
                            <select name="lostreturn">
913
                                                [% ELSE %]
1091
                              [%# Default branch %]
914
                                                    <span>No</span>
1092
                              [% IF ( current_branch == '*' ) %]
915
                                                [% END %]
1093
                                [% IF ( defaultRefundRule == 'refund' ) %]
916
                                            </td>
1094
                                <option value="refund" selected="selected">Refund lost item charge</option>
917
                                            <td class="actions">
1095
                                <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
918
                                                <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=del-waiting-hold-cancellation&amp;waiting_hold_cancellation_category=[% c | uri %]&amp;waiting_hold_cancellation_itemtype=[% i | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
1096
                                <option value="charge">Refund lost item charge and charge new overdue fine</option>
919
                                            </td>
1097
                                <option value="restore">Refund lost item charge and restore overdue fine</option>
920
                                        </tr>
1098
                                <option value="0">Leave lost item charge</option>
1099
                                [% ELSIF ( defaultRefundRule == 'refund_unpaid' ) %]
1100
                                <option value="refund">Refund lost item charge</option>
1101
                                <option value="refund_unpaid" selected="selected">Refund lost item charge (only if unpaid)</option>
1102
                                <option value="charge">Refund lost item charge and charge new overdue fine</option>
1103
                                <option value="restore">Refund lost item charge and restore overdue fine</option>
1104
                                <option value="0">Leave lost item charge</option>
1105
                                [% ELSIF ( defaultRefundRule == 'charge' ) %]
1106
                                <option value="refund">Refund lost item charge</option>
1107
                                <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1108
                                <option value="charge" selected="selected">Refund lost item charge and charge new overdue fine</option>
1109
                                <option value="restore">Refund lost item charge and restore overdue fine</option>
1110
                                <option value="0">Leave lost item charge</option>
1111
                                [% ELSIF ( defaultRefundRule == 'restore' ) %]
1112
                                <option value="refund">Refund lost item charge</option>
1113
                                <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1114
                                <option value="charge">Refund lost item charge and charge new overdue fine</option>
1115
                                <option value="restore" selected="selected">Refund lost item charge and restore overdue fine</option>
1116
                                <option value="0">Leave lost item charge</option>
1117
                                [% ELSIF ( defaultRefundRule == 0 ) %]
1118
                                <option value="refund">Refund lost item charge</option>
1119
                                <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1120
                                <option value="charge">Refund lost item charge and charge new overdue fine</option>
1121
                                <option value="restore">Refund lost item charge and restore overdue fine</option>
1122
                                <option value="0" selected="selected">Leave lost item charge</option>
1123
                                [% ELSE %]
1124
                                <option value="refund">Refund lost item charge</option>
1125
                                <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1126
                                <option value="charge">Refund lost item charge and charge new overdue fine</option>
1127
                                <option value="restore">Refund lost item charge and restore overdue fine</option>
1128
                                <option value="0">Leave lost item charge</option>
1129
                                [% END %]
1130
                              [% ELSE %]
1131
                              [%# Branch-specific %]
1132
                                [% IF ( not refundLostItemFeeRule ) %]
1133
                                    <option value="*" selected="selected">
1134
                                [% ELSE %]
1135
                                    <option value="*">
1136
                                [% END %]
1137
                                  [% IF defaultRefundRule == 'refund' %]
1138
                                    <span>Use default (Refund lost item charge)</span>
1139
                                  [% ELSIF defaultRefundRule == 'refund_unpaid' %]
1140
                                    Use default (Refund lost item charge (only if unpaid))
1141
                                  [% ELSIF defaultRefundRule == 'charge' %]
1142
                                    <span>Use default (Refund lost item charge and charge new overdue fine)</span>
1143
                                  [% ELSIF defaultRefundRule == 'restore' %]
1144
                                    <span>Use default (Refund lost item charge and restore overdue fine)</span>
1145
                                  [% ELSE %]
1146
                                    <span>Use default (Leave lost item charge)</span>
1147
                                  [% END %]
1148
                                    </option>
1149
                                [% IF ( not refundLostItemFeeRule ) %]
1150
                                    <option value="refund">Refund lost item charge</option>
1151
                                    <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1152
                                    <option value="charge">Refund lost item charge and charge new overdue fine</option>
1153
                                    <option value="restore">Refund lost item charge and restore overdue fine</option>
1154
                                    <option value="0">Leave lost item charge</option>
1155
                                [% ELSE %]
1156
                                    [% IF ( refundLostItemFeeRule.rule_value == 'refund' ) %]
1157
                                    <option value="refund" selected="selected">Refund lost item charge</option>
1158
                                    <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1159
                                    <option value="charge">Refund lost item charge and charge new overdue fine</option>
1160
                                    <option value="restore">Refund lost item charge and restore overdue fine</option>
1161
                                    <option value="0">Leave lost item charge</option>
1162
                                    [% ELSIF ( refundLostItemFeeRule.rule_value == 'refund_unpaid' ) %]
1163
                                    <option value="refund">Refund lost item charge</option>
1164
                                    <option value="refund_unpaid" selected="selected">Refund lost item charge (only if unpaid)</option>
1165
                                    <option value="charge" selected="selected">Refund lost item charge and charge new overdue fine</option>
1166
                                    <option value="restore">Refund lost item charge and restore overdue fine</option>
1167
                                    <option value="0">Leave lost item charge</option>
1168
                                    [% ELSIF ( refundLostItemFeeRule.rule_value == 'charge' ) %]
1169
                                    <option value="refund">Refund lost item charge</option>
1170
                                    <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1171
                                    <option value="charge" selected="selected">Refund lost item charge and charge new overdue fine</option>
1172
                                    <option value="restore">Refund lost item charge and restore overdue fine</option>
1173
                                    <option value="0">Leave lost item charge</option>
1174
                                    [% ELSIF ( refundLostItemFeeRule.rule_value == 'restore' ) %]
1175
                                    <option value="refund">Refund lost item charge</option>
1176
                                    <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1177
                                    <option value="charge">Refund lost item charge and charge new overdue fine</option>
1178
                                    <option value="restore" selected="selected">Refund lost item charge and restore overdue fine</option>
1179
                                    <option value="0">Leave lost item charge</option>
1180
                                    [% ELSIF ( refundLostItemFeeRule.rule_value == 0 ) %]
1181
                                    <option value="refund">Refund lost item charge</option>
1182
                                    <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1183
                                    <option value="charge">Refund lost item charge and charge new overdue fine</option>
1184
                                    <option value="restore">Refund lost item charge and restore overdue fine</option>
1185
                                    <option value="0" selected="selected">Leave lost item charge</option>
1186
                                    [% END %]
1187
                                [% END %]
1188
                              [% END %]
1189
                            </select>
1190
                        </td>
1191
                        <td>
1192
                            <select name="processingreturn">
1193
                              [%# Default branch %]
1194
                              [% IF ( current_branch == '*' ) %]
1195
                                [% IF ( defaultProcessingRefundRule == 'refund' ) %]
1196
                                <option value="refund" selected="selected">Refund lost item processing charge</option>
1197
                                <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1198
                                <option value="0">Leave lost item processing charge</option>
1199
                                [% ELSIF ( defaultProcessingRefundRule == 'refund_unpaid' ) %]
1200
                                <option value="refund">Refund lost item charge</option>
1201
                                <option value="refund_unpaid" selected="selected">Refund lost item processing charge (only if unpaid)</option>
1202
                                <option value="0">Leave lost item processing charge</option>
1203
                                [% ELSIF ( defaultProcessingRefundRule == 0 ) %]
1204
                                <option value="refund">Refund lost item processing charge</option>
1205
                                <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1206
                                <option value="0" selected="selected">Leave lost item processing charge</option>
1207
                                [% ELSE %]
1208
                                <option value="refund">Refund lost item processing charge</option>
1209
                                <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1210
                                <option value="0">Leave lost item processing charge</option>
1211
                                [% END %]
1212
                              [% ELSE %]
1213
                              [%# Branch-specific %]
1214
                                [% IF ( not refundProcessingFeeRule ) %]
1215
                                    <option value="*" selected="selected">
1216
                                [% ELSE %]
1217
                                    <option value="*">
1218
                                [% END %]
1219
                                  [% IF defaultProcessingRefundRule == 'refund' %]
1220
                                    <span>Use default (Refund lost item processing charge)</span>
1221
                                  [% ELSIF defaultProcessingRefundRule == 'refund_unpaid' %]
1222
                                    Use default (Refund lost item processing charge (only if unpaid))
1223
                                  [% ELSE %]
1224
                                    <span>Use default (Leave lost item processing charge)</span>
1225
                                  [% END %]
1226
                                    </option>
1227
                                [% IF ( not refundProcessingFeeRule ) %]
1228
                                    <option value="refund">Refund lost item processing charge</option>
1229
                                    <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1230
                                    <option value="0">Leave lost item processing charge</option>
1231
                                [% ELSE %]
1232
                                    [% IF ( refundProcessingFeeRule.rule_value == 'refund' ) %]
1233
                                    <option value="refund" selected="selected">Refund lost item processing charge</option>
1234
                                    <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1235
                                    <option value="0">Leave lost item processing charge</option>
1236
                                    [% ELSIF ( refundProcessingFeeRule.rule_value == 'refund_unpaid' ) %]
1237
                                    <option value="refund">Refund lost item processing charge</option>
1238
                                    <option value="refund_unpaid" selected="selected">Refund lost item processing charge (only if unpaid)</option>
1239
                                    <option value="0">Leave lost item processing charge</option>
1240
                                    [% ELSIF ( refundProcessingFeeRule.rule_value == 0 ) %]
1241
                                    <option value="refund">Refund lost item processing charge</option>
1242
                                    <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1243
                                    <option value="0" selected="selected">Leave lost item processing charge</option>
1244
                                    [% END %]
921
                                    [% END %]
1245
                                [% END %]
922
                                [% END %]
1246
                              [% END %]
923
                            [% END %]
1247
                            </select>
1248
                        </td>
1249
                        <td class="actions">
1250
                            <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-save"></i> Save</button>
1251
                        </td>
1252
                    </tr>
1253
                </table>
1254
            </form>
1255
        </div><!-- /.page-section -->
1256
    </div>
1257
1258
    <div id="holds-policy-by-item-type" class="container">
1259
    <h3>[% IF humanbranch %]Holds policy by item type for [% Branches.GetName( humanbranch ) | html %][% ELSE %]Default holds policy by item type[% END %]</h3>
1260
        <div class="page-section">
1261
            <p>
1262
                For this library, you can edit rules for given itemtypes, regardless of the patron's category.
1263
            </p>
1264
            <p>
1265
                Currently, this means hold policies. The various policies have the following effects:
1266
            </p>
1267
            <ul>
1268
                <li><strong>From any library:</strong> Patrons from any library may put this item on hold. <cite>(default if none is defined)</cite></li>
1269
                <li><strong>From local hold group:</strong> Only patrons from libraries in the same item's home library hold groups may put this book on hold.</li>
1270
                <li><strong>From home library:</strong> Only patrons from the item's home library may put this book on hold.</li>
1271
                <li><strong>No holds allowed:</strong> No patron may put this book on hold.</li>
1272
            </ul>
1273
1274
            <p><strong>Note: </strong>If the system preference 'AllowHoldPolicyOverride' is enabled, these policies can be overridden by your circulation staff.</p>
1275
            <p><strong>Important:</strong></p>
1276
1277
            <ul>
1278
                <li>The hold policies are applied based on the ReservesControlBranch system preference which is set to <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=ReservesControlBranch">[% Koha.Preference('ReservesControlBranch') | html %]</a>.</li>
1279
                <li>The return policy is applied based on the CircControlReturnsBranch system preference which is set to <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=CircControlReturnsBranch">[% Koha.Preference('CircControlReturnsBranch') | html %]</a>.</li>
1280
            </ul>
1281
1282
            <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
1283
                <input type="hidden" name="op" value="add-branch-item" />
1284
                <input type="hidden" name="branch" value="[% current_branch | html %]"/>
1285
                <table>
1286
                    <tr>
1287
                        <th>Item type</th>
1288
                        <th>Hold policy</th>
1289
                        <th>Hold pickup library match</th>
1290
                        <th>Return policy</th>
1291
                        <th>&nbsp;</th>
1292
                    </tr>
1293
                    [% FOREACH i IN itemtypeloop %]
1294
                        [% SET holdallowed = CirculationRules.Search( branchcode, undef, i.itemtype, 'holdallowed' ) %]
1295
                        [% SET hold_fulfillment_policy = CirculationRules.Search( branchcode, undef, i.itemtype, 'hold_fulfillment_policy' ) %]
1296
                        [% SET returnbranch = CirculationRules.Search( branchcode, undef, i.itemtype, 'returnbranch' ) %]
1297
1298
                        [% IF holdallowed || hold_fulfillment_policy || returnbranch %]
1299
                            <tr>
924
                            <tr>
1300
                                <td>
925
                                <td>
1301
                                    [% i.translated_description | html %]
926
                                    <select name="waiting_hold_cancellation_category" id="waiting_hold_cancellation_category">
927
                                        <option value="*">All</option>
928
                                    [% FOREACH patron_category IN patron_categories %]
929
                                        <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
930
                                    [% END %]
931
                                    </select>
1302
                                </td>
932
                                </td>
1303
                                <td>
933
                                <td>
1304
                                    [% IF holdallowed == 'from_any_library' %]
934
                                    <select name="waiting_hold_cancellation_itemtype" id="waiting_hold_cancellation_itemtype">
1305
                                        <span>From any library</span>
935
                                        <option value="*">All</option>
1306
                                    [% ELSIF holdallowed == 'from_local_hold_group' %]
936
                                    [% FOREACH itemtype IN itemtypeloop %]
1307
                                        <span>From local hold group</span>
937
                                        <option value="[% itemtype.itemtype | html %]">[% ItemTypes.GetDescription(itemtype.itemtype) | html %]</option>
1308
                                    [% ELSIF holdallowed == 'from_home_library' %]
1309
                                        <span>From home library</span>
1310
                                    [% ELSE %]
1311
                                        <span>No holds allowed</span>
1312
                                    [% END %]
938
                                    [% END %]
939
                                    </select>
1313
                                </td>
940
                                </td>
1314
                                <td>
941
                                <td>
1315
                                    [% IF hold_fulfillment_policy == 'any' %]
942
                                    <select name="waiting_hold_cancellation_policy" id="waiting_hold_cancellation_policy">
1316
                                        <span>any library</span>
943
                                        <option value="0" selected>No</option>
1317
                                    [% ELSIF hold_fulfillment_policy == 'homebranch' %]
944
                                        <option value="1">Yes</option>
1318
                                        <span>item's home library</span>
945
                                    </select>
1319
                                    [% ELSIF hold_fulfillment_policy == 'holdgroup' %]
946
                                </td>
1320
                                        <span>item's hold group</span>
947
                                <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
1321
                                    [% ELSIF hold_fulfillment_policy == 'patrongroup' %]
948
                            </tr>
1322
                                        <span>patron's hold group</span>
949
                        </table>
1323
                                    [% ELSIF hold_fulfillment_policy == 'holdingbranch' %]
950
                    </form>
1324
                                        <span>item's holding library</span>
951
                </div>
952
        
953
                [% IF Koha.Preference('ArticleRequests') %]
954
                <div id="open-article-requests-limit-patron-category" class="page-section">
955
                [% IF humanbranch %]
956
                    <h2>Daily open article requests limit for [% Branches.GetName( humanbranch ) | html %]</h2>
957
                [% ELSE %]
958
                    <h2>Default open article requests limit</h2>
959
                [% END %]
960
                    <p>Specify the maximum number simultaneous current article requests a patron of a given category can have.</p>
961
                    <form id="set-article-requests-daily-limit" method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
962
                        <input type="hidden" name="op" value="add-open-article-requests-limit" />
963
                        <input type="hidden" name="branch" value="[% current_branch | html %]"/>
964
                        <table>
965
                            <tr>
966
                                <th>Patron category</th>
967
                                <th>Total article requests</th>
968
                                <th>&nbsp;</th>
969
                            </tr>
970
                            [% FOREACH c IN categorycodes %]
971
                                [% NEXT UNLESS c %]
972
                                [% SET open_article_requests_limit = CirculationRules.Search( branchcode, c, undef, 'open_article_requests_limit' ) %]
973
            
974
                                [% IF ( open_article_requests_limit.defined && open_article_requests_limit != '' ) %]
975
                                <tr>
976
                                    <td>
977
                                        [% Categories.GetName(c) | html %]
978
                                    </td>
979
                                    <td>
980
                                        [% IF open_article_requests_limit.defined && open_article_requests_limit != '' %]
981
                                            [% open_article_requests_limit | html %]
982
                                        [% ELSE %]
983
                                            <span>Unlimited</span>
984
                                        [% END %]
985
                                    </td>
986
            
987
                                    <td class="actions">
988
                                        <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=del-open-article-requests-limit&amp;categorycode=[% c | html %]&amp;branch=[% current_branch | html %]"><i class="fa fa-trash"></i> Delete</a>
989
                                    </td>
990
                                </tr>
991
                                [% END %]
992
                            [% END %]
993
                            <tr>
994
                                <td>
995
                                    <select name="categorycode">
996
                                    [% FOREACH patron_category IN patron_categories %]
997
                                        <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
1325
                                    [% END %]
998
                                    [% END %]
999
                                    </select>
1326
                                </td>
1000
                                </td>
1001
                                <td><input name="open_article_requests_limit" size="3" type="text" /></td>
1002
                                <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
1003
                            </tr>
1004
                        </table>
1005
                    </form>
1006
                </div>
1007
        
1008
                <div id="article-request-fee-category" class="page-section">
1009
                [% IF humanbranch %]
1010
                    <h2>Article request fees for [% Branches.GetName( humanbranch ) | html %]</h2>
1011
                [% ELSE %]
1012
                    <h2>Default article request fees</h2>
1013
                [% END %]
1014
                    <p>Specify the article request fee for a given patron category.</p>
1015
                    <form id="set-article-request-fee" method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
1016
                        <input type="hidden" name="op" value="set-article-request-fee" />
1017
                        <input type="hidden" name="branch" value="[% current_branch | html %]"/>
1018
                        <table>
1019
                            <tr>
1020
                                <th>Patron category</th>
1021
                                <th>Fee</th>
1022
                                <th>&nbsp;</th>
1023
                            </tr>
1024
                            [% FOREACH c IN categorycodes %]
1025
                                [% SET c = '*' UNLESS c.defined AND c != '' %]
1026
            
1027
                                [% SET article_request_fee = CirculationRules.Search( current_branch, c, undef, 'article_request_fee' ) %]
1028
            
1029
                                [% IF ( article_request_fee.defined && article_request_fee != '' ) %]
1030
                                <tr>
1031
                                    <td>
1032
                                        [% IF c == '*' %]
1033
                                            <em>All</em>
1034
                                        [% ELSE %]
1035
                                            [% Categories.GetName(c) | html %]
1036
                                        [% END %]
1037
                                    </td>
1038
                                    <td>
1039
                                        [% IF article_request_fee.defined && article_request_fee != '' %]
1040
                                            [% article_request_fee | html %]
1041
                                        [% ELSE %]
1042
                                            <span>0</span>
1043
                                        [% END %]
1044
                                    </td>
1045
                                    <td class="actions">
1046
                                        <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=del-article-request-fee&amp;article_request_fee_category=[% c | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
1047
                                    </td>
1048
                                </tr>
1049
                                [% END %]
1050
                            [% END %]
1051
                            <tr>
1327
                                <td>
1052
                                <td>
1328
                                    [% IF returnbranch == 'homebranch' %]
1053
                                    <select name="article_request_fee_category" id="article_request_fee_category">
1329
                                        <span>Item returns home</span>
1054
                                        <option value="*">All</option>
1330
                                    [% ELSIF returnbranch == 'holdingbranch' %]
1055
                                    [% FOREACH patron_category IN patron_categories%]
1331
                                        <span>Item returns to issuing branch</span>
1056
                                        <option value="[% patron_category.categorycode | html %]">[% patron_category.description | html %]</option>
1332
                                    [% ELSIF returnbranch == 'noreturn' %]
1333
                                        <span>Item floats</span>
1334
                                    [% END %]
1057
                                    [% END %]
1058
                                    </select>
1059
                                </td>
1060
                                <td><input name="article_request_fee" size="3" type="text" /></td>
1061
                                <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
1062
                            </tr>
1063
                        </table>
1064
                    </form>
1065
                </div>
1066
                [% END %]
1067
        
1068
                <div id="refund-lost-item-fee-on-return" class="page-section">
1069
                [% IF current_branch == '*' %]
1070
                    <h2>Default lost item fee refund on return policy</h2>
1071
                [% ELSE %]
1072
                    <h2>Lost item fee refund on return policy for [% Branches.GetName(current_branch) | html %]</h2>
1073
                [% END %]
1074
                    <p>Specify the default policy for lost item fees on return.</p>
1075
                    <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
1076
                        <input type="hidden" name="op" value="mod-refund-lost-item-fee-rule" />
1077
                        <input type="hidden" name="branch" value="[% current_branch | html %]" />
1078
                        <table>
1079
                            <tr>
1080
                                <th>Refund lost item replacement fee</th>
1081
                                <th>Refund lost item processing fee</th>
1082
                                <th>&nbsp;</th>
1083
                            </tr>
1084
                            <tr>
1085
                                <td>
1086
                                    <select name="lostreturn">
1087
                                      [%# Default branch %]
1088
                                      [% IF ( current_branch == '*' ) %]
1089
                                        [% IF ( defaultRefundRule == 'refund' ) %]
1090
                                        <option value="refund" selected="selected">Refund lost item charge</option>
1091
                                        <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1092
                                        <option value="charge">Refund lost item charge and charge new overdue fine</option>
1093
                                        <option value="restore">Refund lost item charge and restore overdue fine</option>
1094
                                        <option value="0">Leave lost item charge</option>
1095
                                        [% ELSIF ( defaultRefundRule == 'refund_unpaid' ) %]
1096
                                        <option value="refund">Refund lost item charge</option>
1097
                                        <option value="refund_unpaid" selected="selected">Refund lost item charge (only if unpaid)</option>
1098
                                        <option value="charge">Refund lost item charge and charge new overdue fine</option>
1099
                                        <option value="restore">Refund lost item charge and restore overdue fine</option>
1100
                                        <option value="0">Leave lost item charge</option>
1101
                                        [% ELSIF ( defaultRefundRule == 'charge' ) %]
1102
                                        <option value="refund">Refund lost item charge</option>
1103
                                        <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1104
                                        <option value="charge" selected="selected">Refund lost item charge and charge new overdue fine</option>
1105
                                        <option value="restore">Refund lost item charge and restore overdue fine</option>
1106
                                        <option value="0">Leave lost item charge</option>
1107
                                        [% ELSIF ( defaultRefundRule == 'restore' ) %]
1108
                                        <option value="refund">Refund lost item charge</option>
1109
                                        <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1110
                                        <option value="charge">Refund lost item charge and charge new overdue fine</option>
1111
                                        <option value="restore" selected="selected">Refund lost item charge and restore overdue fine</option>
1112
                                        <option value="0">Leave lost item charge</option>
1113
                                        [% ELSIF ( defaultRefundRule == 0 ) %]
1114
                                        <option value="refund">Refund lost item charge</option>
1115
                                        <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1116
                                        <option value="charge">Refund lost item charge and charge new overdue fine</option>
1117
                                        <option value="restore">Refund lost item charge and restore overdue fine</option>
1118
                                        <option value="0" selected="selected">Leave lost item charge</option>
1119
                                        [% ELSE %]
1120
                                        <option value="refund">Refund lost item charge</option>
1121
                                        <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1122
                                        <option value="charge">Refund lost item charge and charge new overdue fine</option>
1123
                                        <option value="restore">Refund lost item charge and restore overdue fine</option>
1124
                                        <option value="0">Leave lost item charge</option>
1125
                                        [% END %]
1126
                                      [% ELSE %]
1127
                                      [%# Branch-specific %]
1128
                                        [% IF ( not refundLostItemFeeRule ) %]
1129
                                            <option value="*" selected="selected">
1130
                                        [% ELSE %]
1131
                                            <option value="*">
1132
                                        [% END %]
1133
                                          [% IF defaultRefundRule == 'refund' %]
1134
                                            <span>Use default (Refund lost item charge)</span>
1135
                                          [% ELSIF defaultRefundRule == 'refund_unpaid' %]
1136
                                            Use default (Refund lost item charge (only if unpaid))
1137
                                          [% ELSIF defaultRefundRule == 'charge' %]
1138
                                            <span>Use default (Refund lost item charge and charge new overdue fine)</span>
1139
                                          [% ELSIF defaultRefundRule == 'restore' %]
1140
                                            <span>Use default (Refund lost item charge and restore overdue fine)</span>
1141
                                          [% ELSE %]
1142
                                            <span>Use default (Leave lost item charge)</span>
1143
                                          [% END %]
1144
                                            </option>
1145
                                        [% IF ( not refundLostItemFeeRule ) %]
1146
                                            <option value="refund">Refund lost item charge</option>
1147
                                            <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1148
                                            <option value="charge">Refund lost item charge and charge new overdue fine</option>
1149
                                            <option value="restore">Refund lost item charge and restore overdue fine</option>
1150
                                            <option value="0">Leave lost item charge</option>
1151
                                        [% ELSE %]
1152
                                            [% IF ( refundLostItemFeeRule.rule_value == 'refund' ) %]
1153
                                            <option value="refund" selected="selected">Refund lost item charge</option>
1154
                                            <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1155
                                            <option value="charge">Refund lost item charge and charge new overdue fine</option>
1156
                                            <option value="restore">Refund lost item charge and restore overdue fine</option>
1157
                                            <option value="0">Leave lost item charge</option>
1158
                                            [% ELSIF ( refundLostItemFeeRule.rule_value == 'refund_unpaid' ) %]
1159
                                            <option value="refund">Refund lost item charge</option>
1160
                                            <option value="refund_unpaid" selected="selected">Refund lost item charge (only if unpaid)</option>
1161
                                            <option value="charge" selected="selected">Refund lost item charge and charge new overdue fine</option>
1162
                                            <option value="restore">Refund lost item charge and restore overdue fine</option>
1163
                                            <option value="0">Leave lost item charge</option>
1164
                                            [% ELSIF ( refundLostItemFeeRule.rule_value == 'charge' ) %]
1165
                                            <option value="refund">Refund lost item charge</option>
1166
                                            <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1167
                                            <option value="charge" selected="selected">Refund lost item charge and charge new overdue fine</option>
1168
                                            <option value="restore">Refund lost item charge and restore overdue fine</option>
1169
                                            <option value="0">Leave lost item charge</option>
1170
                                            [% ELSIF ( refundLostItemFeeRule.rule_value == 'restore' ) %]
1171
                                            <option value="refund">Refund lost item charge</option>
1172
                                            <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1173
                                            <option value="charge">Refund lost item charge and charge new overdue fine</option>
1174
                                            <option value="restore" selected="selected">Refund lost item charge and restore overdue fine</option>
1175
                                            <option value="0">Leave lost item charge</option>
1176
                                            [% ELSIF ( refundLostItemFeeRule.rule_value == 0 ) %]
1177
                                            <option value="refund">Refund lost item charge</option>
1178
                                            <option value="refund_unpaid">Refund lost item charge (only if unpaid)</option>
1179
                                            <option value="charge">Refund lost item charge and charge new overdue fine</option>
1180
                                            <option value="restore">Refund lost item charge and restore overdue fine</option>
1181
                                            <option value="0" selected="selected">Leave lost item charge</option>
1182
                                            [% END %]
1183
                                        [% END %]
1184
                                      [% END %]
1185
                                    </select>
1186
                                </td>
1187
                                <td>
1188
                                    <select name="processingreturn">
1189
                                      [%# Default branch %]
1190
                                      [% IF ( current_branch == '*' ) %]
1191
                                        [% IF ( defaultProcessingRefundRule == 'refund' ) %]
1192
                                        <option value="refund" selected="selected">Refund lost item processing charge</option>
1193
                                        <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1194
                                        <option value="0">Leave lost item processing charge</option>
1195
                                        [% ELSIF ( defaultProcessingRefundRule == 'refund_unpaid' ) %]
1196
                                        <option value="refund">Refund lost item charge</option>
1197
                                        <option value="refund_unpaid" selected="selected">Refund lost item processing charge (only if unpaid)</option>
1198
                                        <option value="0">Leave lost item processing charge</option>
1199
                                        [% ELSIF ( defaultProcessingRefundRule == 0 ) %]
1200
                                        <option value="refund">Refund lost item processing charge</option>
1201
                                        <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1202
                                        <option value="0" selected="selected">Leave lost item processing charge</option>
1203
                                        [% ELSE %]
1204
                                        <option value="refund">Refund lost item processing charge</option>
1205
                                        <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1206
                                        <option value="0">Leave lost item processing charge</option>
1207
                                        [% END %]
1208
                                      [% ELSE %]
1209
                                      [%# Branch-specific %]
1210
                                        [% IF ( not refundProcessingFeeRule ) %]
1211
                                            <option value="*" selected="selected">
1212
                                        [% ELSE %]
1213
                                            <option value="*">
1214
                                        [% END %]
1215
                                          [% IF defaultProcessingRefundRule == 'refund' %]
1216
                                            <span>Use default (Refund lost item processing charge)</span>
1217
                                          [% ELSIF defaultProcessingRefundRule == 'refund_unpaid' %]
1218
                                            Use default (Refund lost item processing charge (only if unpaid))
1219
                                          [% ELSE %]
1220
                                            <span>Use default (Leave lost item processing charge)</span>
1221
                                          [% END %]
1222
                                            </option>
1223
                                        [% IF ( not refundProcessingFeeRule ) %]
1224
                                            <option value="refund">Refund lost item processing charge</option>
1225
                                            <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1226
                                            <option value="0">Leave lost item processing charge</option>
1227
                                        [% ELSE %]
1228
                                            [% IF ( refundProcessingFeeRule.rule_value == 'refund' ) %]
1229
                                            <option value="refund" selected="selected">Refund lost item processing charge</option>
1230
                                            <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1231
                                            <option value="0">Leave lost item processing charge</option>
1232
                                            [% ELSIF ( refundProcessingFeeRule.rule_value == 'refund_unpaid' ) %]
1233
                                            <option value="refund">Refund lost item processing charge</option>
1234
                                            <option value="refund_unpaid" selected="selected">Refund lost item processing charge (only if unpaid)</option>
1235
                                            <option value="0">Leave lost item processing charge</option>
1236
                                            [% ELSIF ( refundProcessingFeeRule.rule_value == 0 ) %]
1237
                                            <option value="refund">Refund lost item processing charge</option>
1238
                                            <option value="refund_unpaid">Refund lost item processing charge (only if unpaid)</option>
1239
                                            <option value="0" selected="selected">Leave lost item processing charge</option>
1240
                                            [% END %]
1241
                                        [% END %]
1242
                                      [% END %]
1243
                                    </select>
1335
                                </td>
1244
                                </td>
1336
                                <td class="actions">
1245
                                <td class="actions">
1337
                                    <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete-branch-item&amp;itemtype=[% i.itemtype | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
1246
                                    <button type="submit" class="btn btn-default btn-xs"><i class="fa fa-save"></i> Save</button>
1338
                                </td>
1247
                                </td>
1339
                            </tr>
1248
                            </tr>
1340
                        [% END %]
1249
                        </table>
1341
                    [% END %]
1250
                    </form>
1342
                    <tr>
1251
                </div>
1343
                        <td>
1252
        
1344
                            <select name="itemtype">
1253
                <div id="holds-policy-by-item-type" class="page-section">
1345
                            [% FOREACH itemtypeloo IN itemtypeloop %]
1254
                    <h2>[% IF humanbranch %]Holds policy by item type for [% Branches.GetName( humanbranch ) | html %][% ELSE %]Default holds policy by item type[% END %]</h2>
1346
                                <option value="[% itemtypeloo.itemtype | html %]">[% itemtypeloo.translated_description | html %]</option>
1255
                    <p>
1256
                        For this library, you can edit rules for given itemtypes, regardless of the patron's category.
1257
                    </p>
1258
                    <p>
1259
                        Currently, this means hold policies. The various policies have the following effects:
1260
                    </p>
1261
                    <ul>
1262
                        <li><strong>From any library:</strong> Patrons from any library may put this item on hold. <cite>(default if none is defined)</cite></li>
1263
                        <li><strong>From local hold group:</strong> Only patrons from libraries in the same item's home library hold groups may put this book on hold.</li>
1264
                        <li><strong>From home library:</strong> Only patrons from the item's home library may put this book on hold.</li>
1265
                        <li><strong>No holds allowed:</strong> No patron may put this book on hold.</li>
1266
                    </ul>
1267
        
1268
                    <p><strong>Note: </strong>If the system preference 'AllowHoldPolicyOverride' is enabled, these policies can be overridden by your circulation staff.</p>
1269
                    <p><strong>Important:</strong></p>
1270
        
1271
                    <ul>
1272
                        <li>The hold policies are applied based on the ReservesControlBranch system preference which is set to <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=ReservesControlBranch">[% Koha.Preference('ReservesControlBranch') | html %]</a>.</li>
1273
                        <li>The return policy is applied based on the CircControlReturnsBranch system preference which is set to <a href="/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=CircControlReturnsBranch">[% Koha.Preference('CircControlReturnsBranch') | html %]</a>.</li>
1274
                    </ul>
1275
        
1276
                    <form method="post" action="/cgi-bin/koha/admin/smart-rules.pl">
1277
                        <input type="hidden" name="op" value="add-branch-item" />
1278
                        <input type="hidden" name="branch" value="[% current_branch | html %]"/>
1279
                        <table>
1280
                            <tr>
1281
                                <th>Item type</th>
1282
                                <th>Hold policy</th>
1283
                                <th>Hold pickup library match</th>
1284
                                <th>Return policy</th>
1285
                                <th>&nbsp;</th>
1286
                            </tr>
1287
                            [% FOREACH i IN itemtypeloop %]
1288
                                [% SET holdallowed = CirculationRules.Search( branchcode, undef, i.itemtype, 'holdallowed' ) %]
1289
                                [% SET hold_fulfillment_policy = CirculationRules.Search( branchcode, undef, i.itemtype, 'hold_fulfillment_policy' ) %]
1290
                                [% SET returnbranch = CirculationRules.Search( branchcode, undef, i.itemtype, 'returnbranch' ) %]
1291
        
1292
                                [% IF holdallowed || hold_fulfillment_policy || returnbranch %]
1293
                                    <tr>
1294
                                        <td>
1295
                                            [% i.translated_description | html %]
1296
                                        </td>
1297
                                        <td>
1298
                                            [% IF holdallowed == 'from_any_library' %]
1299
                                                <span>From any library</span>
1300
                                            [% ELSIF holdallowed == 'from_local_hold_group' %]
1301
                                                <span>From local hold group</span>
1302
                                            [% ELSIF holdallowed == 'from_home_library' %]
1303
                                                <span>From home library</span>
1304
                                            [% ELSE %]
1305
                                                <span>No holds allowed</span>
1306
                                            [% END %]
1307
                                        </td>
1308
                                        <td>
1309
                                            [% IF hold_fulfillment_policy == 'any' %]
1310
                                                <span>any library</span>
1311
                                            [% ELSIF hold_fulfillment_policy == 'homebranch' %]
1312
                                                <span>item's home library</span>
1313
                                            [% ELSIF hold_fulfillment_policy == 'holdgroup' %]
1314
                                                <span>item's hold group</span>
1315
                                            [% ELSIF hold_fulfillment_policy == 'patrongroup' %]
1316
                                                <span>patron's hold group</span>
1317
                                            [% ELSIF hold_fulfillment_policy == 'holdingbranch' %]
1318
                                                <span>item's holding library</span>
1319
                                            [% END %]
1320
                                        </td>
1321
                                        <td>
1322
                                            [% IF returnbranch == 'homebranch' %]
1323
                                                <span>Item returns home</span>
1324
                                            [% ELSIF returnbranch == 'holdingbranch' %]
1325
                                                <span>Item returns to issuing branch</span>
1326
                                            [% ELSIF returnbranch == 'noreturn' %]
1327
                                                <span>Item floats</span>
1328
                                            [% END %]
1329
                                        </td>
1330
                                        <td class="actions">
1331
                                            <a class="btn btn-default btn-xs delete" href="/cgi-bin/koha/admin/smart-rules.pl?op=delete-branch-item&amp;itemtype=[% i.itemtype | uri %]&amp;branch=[% current_branch | uri %]"><i class="fa fa-trash"></i> Delete</a>
1332
                                        </td>
1333
                                    </tr>
1334
                                [% END %]
1347
                            [% END %]
1335
                            [% END %]
1348
                            </select>
1336
                            <tr>
1349
                        </td>
1337
                                <td>
1350
                        <td>
1338
                                    <select name="itemtype">
1351
                            <select name="holdallowed">
1339
                                    [% FOREACH itemtypeloo IN itemtypeloop %]
1352
                                <option value="from_any_library">From any library</option>
1340
                                        <option value="[% itemtypeloo.itemtype | html %]">[% itemtypeloo.translated_description | html %]</option>
1353
                                <option value="from_local_hold_group">From local hold group</option>
1341
                                    [% END %]
1354
                                <option value="from_home_library">From home library</option>
1342
                                    </select>
1355
                                <option value="not_allowed">No holds allowed</option>
1343
                                </td>
1356
                            </select>
1344
                                <td>
1357
                        </td>
1345
                                    <select name="holdallowed">
1358
                        <td>
1346
                                        <option value="from_any_library">From any library</option>
1359
                            <select name="hold_fulfillment_policy">
1347
                                        <option value="from_local_hold_group">From local hold group</option>
1360
                                <option value="any">
1348
                                        <option value="from_home_library">From home library</option>
1361
                                    any library
1349
                                        <option value="not_allowed">No holds allowed</option>
1362
                                </option>
1350
                                    </select>
1363
1351
                                </td>
1364
                                <option value="holdgroup">
1352
                                <td>
1365
                                    item's hold group
1353
                                    <select name="hold_fulfillment_policy">
1366
                                </option>
1354
                                        <option value="any">
1367
1355
                                            any library
1368
                                <option value="patrongroup">
1356
                                        </option>
1369
                                    patron's hold group
1357
        
1370
                                </option>
1358
                                        <option value="holdgroup">
1371
1359
                                            item's hold group
1372
                                <option value="homebranch">
1360
                                        </option>
1373
                                    item's home library
1361
        
1374
                                </option>
1362
                                        <option value="patrongroup">
1375
1363
                                            patron's hold group
1376
                                <option value="holdingbranch">
1364
                                        </option>
1377
                                    item's holding library
1365
        
1378
                                </option>
1366
                                        <option value="homebranch">
1379
                            </select>
1367
                                            item's home library
1380
                        </td>
1368
                                        </option>
1381
                        <td>
1369
        
1382
                            <select name="returnbranch">
1370
                                        <option value="holdingbranch">
1383
                                <option value="homebranch">Item returns home</option>
1371
                                            item's holding library
1384
                                <option value="holdingbranch">Item returns to issuing library</option>
1372
                                        </option>
1385
                                <option value="noreturn">Item floats</option>
1373
                                    </select>
1386
                            </select>
1374
                                </td>
1387
                        </td>
1375
                                <td>
1388
                        <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
1376
                                    <select name="returnbranch">
1389
                    </tr>
1377
                                        <option value="homebranch">Item returns home</option>
1390
                </table>
1378
                                        <option value="holdingbranch">Item returns to issuing library</option>
1391
            </form>
1379
                                        <option value="noreturn">Item floats</option>
1392
        </div><!-- /.page-section -->
1380
                                    </select>
1393
    </div>
1381
                                </td>
1382
                                <td class="actions"><button type="submit" class="btn btn-default btn-xs"><i class="fa fa-plus"></i> Add</button></td>
1383
                            </tr>
1384
                        </table>
1385
                    </form>
1386
                </div>
1394
            </main>
1387
            </main>
1395
        </div> <!-- /.col-sm-10.col-sm-push-2 -->
1388
        </div> <!-- /.col-sm-10.col-sm-push-2 -->
1396
1389
1397
- 

Return to bug 32028