LP#1842940: Don't allow self-edit or perm-restricted edit
[Evergreen.git] / docs / circ_limits.adoc
1 Circulation Limits
2 ==================
3 Thomas Berezansky <tsbere@mvlc.org>
4 :Date: 2011-10-14
5
6 == Limit Groups
7
8 Limit Groups can be thought of as "Tags" the system places on circulations so
9 that it can find them later. They are placed on circulations based on
10 association with Limit Sets.
11
12 Limit Groups are global, like Circulation Modifiers, and are edited via the
13 Admin->Server Administration->Circulation Limit Groups menu.
14
15 Limit Groups are selected by their Name, but support an optional description.
16 This description may be useful for storing why a given group was created, or
17 what it is intended for.
18
19 == Limit Sets
20
21 Limit Sets define rules for limiting the number of active circulations a patron
22 may have based on Circulation Modifiers and Limit Groups. They support a number
23 of options:
24
25 Owning Library:: The library that that "owns" the limit set and can edit the
26 parameters it contains.
27 Name:: The name used to select the limit set when attaching it to Circulation
28 Matchpoints.
29 Items Out:: The maximum number of items from the associated Circulation
30 Modifiers and Limit Groups allowed to be checked out. If set to zero (0) then no
31 limiting will be done, but Limit Groups may still be tagged.
32 Min Depth:: The minimum depth in the org tree to consider as valid circulation
33 libraries for counting, based on Org Unit Type depths.
34 Global:: If enabled then treat the Min Depth setting as defining the "Root" of
35 the tree, and then include the entire tree below the "Root". Otherwise only
36 direct ancestors and descendants of the circulation library will be checked.
37 Description:: A description that may be used to describe what purpose the limit
38 set is supposed to be serving.
39
40 Limit Sets support linking Circulation Modifiers and Limit Groups, and count
41 circulations that match any of them. Care has been taken to ensure that even if
42 a circulation matches multiple criteria it will only be counted once per Limit
43 Set, however.
44
45 Limit Sets are configured via the Admin->Local Administration->Circulation Limit
46 Sets menu.
47
48 === A Min Depth/Global Example
49
50 The Min Depth and Global options are fairly hard to just describe, so lets look
51 at a quick example using the default org tree:
52
53 * CONS
54 ** SYS1
55 *** BR1
56 **** SL1
57 *** BR2
58 ** SYS2
59 *** BR3
60 **** BM1
61 *** BR4
62
63 The tree has depths of 0 (CONS) through 3 (SL1/BM1). Using BR1 as a consistent
64 circulation library we can build a table of Depth/Global combinations and
65 expected included libraries:
66
67 .BR1 Depth/Global comparisons
68 [options="header"]
69 |===============================
70 |Depth|Global|Included Libraries
71 |0    |False |CONS,SYS1,BR1,SL1
72 |0    |True  |ALL
73 |1    |False |SYS1,BR1,SL1
74 |1    |True  |SYS1,BR1,BR2,SL1
75 |2    |False |BR1,SL1
76 |2    |True  |BR1,SL1
77 |3    |False |SL1
78 |3    |True  |SL1
79 |===============================
80
81 == "Tagging" Circulations
82
83 In order to count circulations that have no circulation modifier the system has
84 to know how to find them. When using circulation modifiers this is easy, just
85 look for circulations with items assigned the modifier. But say you want to be
86 able to count every video, regardless of circulation modifiers? That is where
87 Limit Groups come in.
88
89 Limit Groups are automatically recorded from the circulation policies as the
90 Limit Sets are looked over. Those Limit Groups assigned to the Limit Sets that
91 are not flagged as "Check Only" will be attached to the circulation so that
92 later circulations can find them.
93
94 It is possible to make Limit Sets that do not check, but only tag. This is
95 accomplished by setting "Items Out" to zero (0).
96
97 == Associating Limit Sets with Matchpoints
98
99 Limit Sets alone are useless if they are not associated with circulation
100 matchpoints. When creating or editing matchpoints you can add, remove, or adjust
101 settings on linked Limit Sets.
102
103 The options available for an attached limit set are:
104
105 Fallthrough:: If enabled the Limit Set will be applied whenever the matchpoint
106 matches a potential circulation. If not enabled the limit set will only be
107 applied when the matchpoint is the first match for a potential circulation.
108 Active:: An inactive Limit Set link will never be checked, for tagging or
109 counting.
110
111 == Limit Sets on Empty Rules
112
113 For limiting without otherwise changing circulation rules you can create an
114 "empty" rule and attach one or more Limit Sets to it. In this case an empty rule
115 is one that does not set any of the "result" fields, but instead lets everything
116 fall through to less specific rules. Top level rules based on Marc Type could be
117 created for the sole purpose of attaching Limit Sets that allow 0 "Items Out".
118 This would allow for a quick top-level tagging of all circulations by Marc Type,
119 without otherwise introducing limits, in the event you have reason to limit
120 based on that information later.
121
122 == Limit a single library's items, regardless of checkout library
123
124 For example, videos from BR2 limited to 5 anywhere:
125
126 . Create a Limit Group, say "BR2 Videos"
127 . Create a Limit Set:
128 * Items Out: 5
129 * Min Depth: 0
130 * Global: True
131 * Limit Groups: "BR2 Videos"
132 . Create an "empty" matchpoint that is at the top of the org/permission trees
133 with Marc Type g and circ library BR2.
134 . Attach your limit set to the matchpoint with Fallthrough enabled.
135
136 This should limit BR2's videos to 5 out, no matter where they are being checked
137 out. Videos owned by others should be unaffected, even if circulating out of
138 BR2.