[% USE raw %] [% USE Asset %] [% USE Koha %] [% USE Branches %] [% USE Categories %] [% USE CirculationRules %] [% SET footerjs = 1 %] [% SET branchcode = humanbranch %] [% SET categorycodes = ['*'] %] [% FOREACH pc IN patron_categories %] [% categorycodes.push( pc.id ) %] [% END %] [% INCLUDE 'doc-head-open.inc' %] Koha › Administration › Circulation and fine rules [% INCLUDE 'doc-head-close.inc' %] [% INCLUDE 'header.inc' %] [% INCLUDE 'prefs-admin-search.inc' %]

[% IF humanbranch %] Defining circulation and fine rules for "[% Branches.GetName( humanbranch ) | html %]" [% ELSE %] Defining circulation and fine rules for all libraries [% END %]

The rules are applied from most specific to less specific, using the first found in this order:

  • same library, same patron category, same item type
  • same library, same patron category, all item types
  • same library, all patron categories, same item type
  • same library, all patron categories, all item types
  • default (all libraries), same patron category, same item type
  • default (all libraries), same patron category, all item types
  • default (all libraries), all patron categories, same item type
  • default (all libraries), all patron categories, all item types

To modify a rule, create a new one with the same patron category and item type.

[% UNLESS restricted_to_own_library %]
Select a library :
[% IF ( definedbranch ) %]
[% END %] [% END %]
[% FOREACH rule IN rules %] [% END %]
Patron category Item type Actions Note Current checkouts allowed Current on-site checkouts allowed Loan period Unit Hard due date Fine amount Fine charging interval When to charge Fine grace period Overdue fines cap (amount) Cap fine at replacement price Suspension in days (day) Max. suspension duration (day) Suspension charging interval Renewals allowed (count) Renewal period No renewal before Automatic renewal No automatic renewal after No automatic renewal after (hard limit) Holds allowed (total) Holds allowed (daily) Holds per record (count) On shelf holds allowed Item level holds Article requests Rental discount (%) Actions
[% IF ( rule.default_humancategorycode ) %] All [% ELSE %] [% rule.humancategorycode | html %] [% END %] [% IF rule.default_translated_description %] All [% ELSE %] [% rule.translated_description | html %] [% END %] Edit Delete [% IF rule.note %] View note [% ELSE %] [% END %] [% SET rule_value = CirculationRules.Get( rule.branchcode, rule.categorycode, rule.itemtype, 'maxissueqty' ) %] [% IF rule_value || rule_value == "0" %] [% rule_value | html %] [% ELSE %] Unlimited [% END %] [% SET rule_value = CirculationRules.Get( rule.branchcode, rule.categorycode, rule.itemtype, 'maxonsiteissueqty' ) %] [% IF rule_value || rule_value == "0" %] [% rule_value | html %] [% ELSE %] Unlimited [% END %] [% rule.issuelength | html %] [% rule.lengthunit | html %] [% IF ( rule.hardduedate ) %] [% IF ( rule.hardduedatebefore ) %] before [% rule.hardduedate | html %] [% ELSIF ( rule.hardduedateexact ) %] on [% rule.hardduedate | html %] [% ELSIF ( rule.hardduedateafter ) %] after [% rule.hardduedate | html %] [% END %] [% ELSE %] None defined [% END %] [% rule.fine | html %] [% rule.chargeperiod | html %] [% IF rule.chargeperiod_charge_at %] Start of interval [% ELSE %] End of interval [% END %] [% rule.firstremind | html %] [% rule.overduefinescap FILTER format("%.2f") %] [% IF rule.cap_fine_to_replacement_price %] [% ELSE %] [% END %] [% rule.finedays | html %] [% rule.maxsuspensiondays | html %] [% rule.suspension_chargeperiod | html %] [% rule.renewalsallowed | html %] [% rule.renewalperiod | html %] [% rule.norenewalbefore | html %] [% IF ( rule.auto_renew ) %] Yes [% ELSE %] No [% END %] [% rule.no_auto_renewal_after | html %] [% rule.no_auto_renewal_after_hard_limit | html %] [% rule.reservesallowed | html %] [% IF rule.unlimited_holds_per_day %] Unlimited [% ELSE %] [% rule.holds_per_day | html %] [% END %] [% rule.holds_per_record | html %] [% IF rule.onshelfholds == 1 %] Yes [% ELSIF rule.onshelfholds == 2 %] If all unavailable [% ELSE %] If any unavailable [% END %] [% IF rule.opacitemholds == 'F'%] Force [% ELSIF rule.opacitemholds == 'Y'%] Allow [% ELSE %] Don't allow [% END %] [% IF rule.article_requests == 'no' %] No [% ELSIF rule.article_requests == 'yes' %] Yes [% ELSIF rule.article_requests == 'bib_only' %] Record only [% ELSIF rule.article_requests == 'item_only' %] Item only [% END %] [% rule.rentaldiscount | html %] Edit Delete
[% INCLUDE 'date-format.inc' %]
[% INCLUDE 'date-format.inc' %]
Patron category Item type   Note Current checkouts allowed Current on-site checkouts allowed Loan period Unit Hard due date Fine amount Fine charging interval Charge when? Fine grace period Overdue fines cap (amount) Cap fine at replacement price Suspension in days (day) Max. suspension duration (day) Suspension charging interval Renewals allowed (count) Renewal period No renewal before Automatic renewal No automatic renewal after No automatic renewal after (hard limit) Holds allowed (total) Holds allowed (daily) Holds per record (count) On shelf holds allowed Item level holds Article requests Rental discount (%)  

Default checkout, hold and return policy[% IF humanbranch %] for [% Branches.GetName( humanbranch ) | html %][% END %]

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.

  Total current checkouts allowed Total current on-site checkouts allowed Maximum total holds allowed (count) Hold policy Hold pickup library match Return policy Actions
Defaults[% UNLESS ( default_rules ) %] (not set)[% END %] [% SET patron_maxissueqty = CirculationRules.Search( current_branch, undef, undef, 'patron_maxissueqty' ) %] [% SET patron_maxonsiteissueqty = CirculationRules.Search( current_branch, undef, undef, 'patron_maxonsiteissueqty' ) %] [% SET rule_value = CirculationRules.Search( current_branch, undef , undef, 'max_holds' ) %] Unset
[% IF ( show_branch_cat_rule_form ) %]

[% IF humanbranch %]Checkout, hold policy by patron category for [% Branches.GetName( humanbranch ) | html %][% ELSE %]Default checkout, hold policy by patron category[% END %]

For this library, you can specify the maximum number of loans that a patron of a given category can make, regardless of the item type.

If the total amount loanable for a given patron category is left blank, no limit applies, except possibly for a limit you define for a specific item type.

[% FOREACH c IN categorycodes %] [% SET patron_maxissueqty = CirculationRules.Search( branchcode, c, undef, 'patron_maxissueqty' ) %] [% SET patron_maxonsiteissueqty = CirculationRules.Search( branchcode, c, undef, 'patron_maxonsiteissueqty' ) %] [% SET max_holds = CirculationRules.Search( branchcode, c, undef, 'max_holds' ) %] [% IF ( patron_maxissueqty.defined && patron_maxissueqty != '' ) || ( patron_maxonsiteissueqty.defined && patron_maxonsiteissueqty != '' ) || ( max_holds.defined && max_holds != '' ) %] [% END %] [% END %]
Patron category Total current checkouts allowed Total current on-site checkouts allowed Total holds allowed  
[% IF c == '*'%] Default [% ELSE %] [% Categories.GetName(c) | html %] [% END %] [% IF patron_maxissueqty.defined && patron_maxissueqty != '' %] [% patron_maxissueqty | html %] [% ELSE %] Unlimited [% END %] [% IF patron_maxonsiteissueqty.defined && patron_maxonsiteissueqty != '' %] [% patron_maxonsiteissueqty | html %] [% ELSE %] Unlimited [% END %] [% IF max_holds.defined && max_holds != '' %] [% max_holds | html %] [% ELSE %] Unlimited [% END %] Delete
[% END %]
[% IF current_branch == '*' %]

Default lost item fee refund on return policy

[% ELSE %]

Lost item fee refund on return policy for [% Branches.GetName(current_branch) | html %]

[% END %]

Specify the default policy for lost item fees on return.

Refund lost item fee  

[% IF humanbranch %]Holds policy by item type for [% Branches.GetName( humanbranch ) | html %][% ELSE %]Default holds policy by item type[% END %]

For this library, you can edit rules for given itemtypes, regardless of the patron's category.

Currently, this means hold policies. The various policies have the following effects:

  • From any library: Patrons from any library may put this item on hold. (default if none is defined)
  • From home library: Only patrons from the item's home library may put this book on hold.
  • No holds allowed: No patron may put this book on hold.

Note: If the system preference 'AllowHoldPolicyOverride' is enabled, these policies can be overridden by your circulation staff.
Important: The policies are applied based on the ReservesControlBranch system preference which is set to [% Koha.Preference('ReservesControlBranch') | html %].

[% FOREACH branch_item_rule_loo IN branch_item_rule_loop %] [% UNLESS ( loop.odd ) %] [% ELSE %] [% END %] [% END %]
Item type Hold policy Hold pickup library match Return policy  
[% IF ( branch_item_rule_loo.default_translated_description ) %] Default [% ELSE %] [% branch_item_rule_loo.translated_description | html %] [% END %] [% IF ( branch_item_rule_loo.holdallowed_any ) %] From any library [% ELSIF ( branch_item_rule_loo.holdallowed_same ) %] From home library [% ELSE %] No holds allowed [% END %] [% IF ( branch_item_rule_loo.hold_fulfillment_policy == 'any' ) %] any library [% ELSIF ( branch_item_rule_loo.hold_fulfillment_policy == 'homebranch' ) %] item's home library [% ELSIF ( branch_item_rule_loo.hold_fulfillment_policy == 'holdingbranch' ) %] item's holding library [% END %] [% IF ( branch_item_rule_loo.returnbranch == 'homebranch' ) %] Item returns home [% ELSIF ( branch_item_rule_loo.returnbranch == 'holdingbranch' ) %] Item returns to issuing branch [% ELSIF ( branch_item_rule_loo.returnbranch == 'noreturn' ) %] Item floats [% ELSE %] Error - unknown option [% END %] Delete
[% MACRO jsinclude BLOCK %] [% Asset.js("js/admin-menu.js") | $raw %] [% INCLUDE 'calendar.inc' %] [% END %] [% INCLUDE 'intranet-bottom.inc' %]