1 -- Before starting the transaction: drop some constraints that
2 -- may or may not exist.
4 CREATE OR REPLACE FUNCTION oils_text_as_bytea (TEXT) RETURNS BYTEA AS $_$
5 SELECT CAST(REGEXP_REPLACE(UPPER($1), $$\\$$, $$\\\\$$, 'g') AS BYTEA);
6 $_$ LANGUAGE SQL IMMUTABLE;
8 DROP INDEX asset.asset_call_number_upper_label_id_owning_lib_idx;
9 CREATE INDEX asset_call_number_upper_label_id_owning_lib_idx ON asset.call_number (oils_text_as_bytea(label),id,owning_lib);
11 \qecho Before starting the transaction: drop some constraints.
12 \qecho If a DROP fails because the constraint doesn't exist, ignore the failure.
16 ALTER TABLE permission.grp_perm_map DROP CONSTRAINT grp_perm_map_perm_fkey;
17 ALTER TABLE permission.usr_perm_map DROP CONSTRAINT usr_perm_map_perm_fkey;
18 ALTER TABLE permission.usr_object_perm_map DROP CONSTRAINT usr_object_perm_map_perm_fkey;
19 ALTER TABLE booking.resource_type DROP CONSTRAINT brt_name_or_record_once_per_owner;
20 ALTER TABLE booking.resource_type DROP CONSTRAINT brt_name_once_per_owner;
22 \qecho Before starting the transaction: create seed data for the asset.uri table
23 \qecho If the INSERT fails because the -1 value already exists, ignore the failure.
24 INSERT INTO asset.uri (id, href, active) VALUES (-1, 'http://example.com/fake', FALSE);
26 \qecho Beginning the transaction now
30 UPDATE biblio.record_entry SET marc = '<record xmlns="http://www.loc.gov/MARC21/slim"/>' WHERE id = -1;
32 -- Highest-numbered individual upgrade script incorporated herein:
34 INSERT INTO config.upgrade_log (version) VALUES ('0475');
36 -- Push the auri sequence in case it's out of date
37 -- Add 2 as the sequence value must be 1 or higher, and seed is -1
38 SELECT SETVAL('asset.uri_id_seq'::TEXT, (SELECT MAX(id) + 2 FROM asset.uri));
40 -- Remove some uses of the connectby() function from the tablefunc contrib module
41 CREATE OR REPLACE FUNCTION actor.org_unit_descendants( INT, INT ) RETURNS SETOF actor.org_unit AS $$
42 WITH RECURSIVE descendant_depth AS (
46 FROM actor.org_unit ou
47 JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
48 JOIN anscestor_depth ad ON (ad.id = ou.id)
54 FROM actor.org_unit ou
55 JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
56 JOIN descendant_depth ot ON (ot.id = ou.parent_ou)
57 ), anscestor_depth AS (
61 FROM actor.org_unit ou
62 JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
68 FROM actor.org_unit ou
69 JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
70 JOIN anscestor_depth ot ON (ot.parent_ou = ou.id)
71 ) SELECT ou.* FROM actor.org_unit ou JOIN descendant_depth USING (id);
74 CREATE OR REPLACE FUNCTION actor.org_unit_descendants( INT ) RETURNS SETOF actor.org_unit AS $$
75 WITH RECURSIVE descendant_depth AS (
79 FROM actor.org_unit ou
80 JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
86 FROM actor.org_unit ou
87 JOIN actor.org_unit_type out ON (out.id = ou.ou_type)
88 JOIN descendant_depth ot ON (ot.id = ou.parent_ou)
89 ) SELECT ou.* FROM actor.org_unit ou JOIN descendant_depth USING (id);
92 CREATE OR REPLACE FUNCTION actor.org_unit_ancestors( INT ) RETURNS SETOF actor.org_unit AS $$
93 WITH RECURSIVE anscestor_depth AS (
96 FROM actor.org_unit ou
101 FROM actor.org_unit ou
102 JOIN anscestor_depth ot ON (ot.parent_ou = ou.id)
103 ) SELECT ou.* FROM actor.org_unit ou JOIN anscestor_depth USING (id);
106 -- Support merge template buckets
107 INSERT INTO container.biblio_record_entry_bucket_type (code,label) VALUES ('template_merge','Template Merge Container');
109 -- Recreate one of the constraints that we just dropped,
110 -- under a different name:
112 ALTER TABLE booking.resource_type
113 ALTER COLUMN record TYPE BIGINT;
115 ALTER TABLE booking.resource_type
116 ADD CONSTRAINT brt_name_and_record_once_per_owner UNIQUE(owner, name, record);
118 -- Now upgrade permission.perm_list. This is fairly complicated.
120 -- Add ON UPDATE CASCADE to some foreign keys so that, when we renumber the
121 -- permissions, the dependents will follow and stay in sync:
123 ALTER TABLE permission.grp_perm_map ADD CONSTRAINT grp_perm_map_perm_fkey FOREIGN KEY (perm)
124 REFERENCES permission.perm_list (id) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
126 ALTER TABLE permission.usr_perm_map ADD CONSTRAINT usr_perm_map_perm_fkey FOREIGN KEY (perm)
127 REFERENCES permission.perm_list (id) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
129 ALTER TABLE permission.usr_object_perm_map ADD CONSTRAINT usr_object_perm_map_perm_fkey FOREIGN KEY (perm)
130 REFERENCES permission.perm_list (id) ON UPDATE CASCADE ON DELETE RESTRICT DEFERRABLE INITIALLY DEFERRED;
132 UPDATE permission.perm_list
133 SET code = 'UPDATE_ORG_UNIT_SETTING.credit.payments.allow'
134 WHERE code = 'UPDATE_ORG_UNIT_SETTING.global.credit.allow';
136 -- The following UPDATES were originally in an individual upgrade script, but should
137 -- no longer be necessary now that the foreign key has an ON UPDATE CASCADE clause.
138 -- We retain the UPDATES here, commented out, as historical relics.
140 -- UPDATE permission.grp_perm_map SET perm = perm + 1000 WHERE perm NOT IN ( SELECT id FROM permission.perm_list );
141 -- UPDATE permission.usr_perm_map SET perm = perm + 1000 WHERE perm NOT IN ( SELECT id FROM permission.perm_list );
143 -- Spelling correction
144 UPDATE permission.perm_list SET code = 'ADMIN_RECURRING_FINE_RULE' WHERE code = 'ADMIN_RECURING_FINE_RULE';
146 -- Now we engage in a Great Renumbering of the permissions in permission.perm_list,
147 -- in order to clean up accumulated cruft.
149 -- The first step is to establish some triggers so that, when we change the id of a permission,
150 -- the associated translations are updated accordingly.
152 CREATE OR REPLACE FUNCTION oils_i18n_update_apply(old_ident TEXT, new_ident TEXT, hint TEXT) RETURNS VOID AS $_$
156 UPDATE config.i18n_core
157 SET identity_value = $$ || quote_literal( new_ident ) || $$
158 WHERE fq_field LIKE '$$ || hint || $$.%'
159 AND identity_value = $$ || quote_literal( old_ident ) || $$;$$;
164 $_$ LANGUAGE PLPGSQL;
166 CREATE OR REPLACE FUNCTION oils_i18n_id_tracking(/* hint */) RETURNS TRIGGER AS $_$
168 PERFORM oils_i18n_update_apply( OLD.id::TEXT, NEW.id::TEXT, TG_ARGV[0]::TEXT );
171 $_$ LANGUAGE PLPGSQL;
173 CREATE OR REPLACE FUNCTION oils_i18n_code_tracking(/* hint */) RETURNS TRIGGER AS $_$
175 PERFORM oils_i18n_update_apply( OLD.code::TEXT, NEW.code::TEXT, TG_ARGV[0]::TEXT );
178 $_$ LANGUAGE PLPGSQL;
181 CREATE TRIGGER maintain_perm_i18n_tgr
182 AFTER UPDATE ON permission.perm_list
183 FOR EACH ROW EXECUTE PROCEDURE oils_i18n_id_tracking('ppl');
185 -- Next, create a new table as a convenience for sloshing data back and forth,
186 -- and for recording which permission went where. It looks just like
187 -- permission.perm_list, but with two extra columns: one for the old id, and one to
188 -- distinguish between predefined permissions and non-predefined permissions.
190 -- This table is, in effect, a temporary table, because we can drop it once the
191 -- upgrade is complete. It is not technically temporary as far as PostgreSQL is
192 -- concerned, because we don't want it to disappear at the end of the session.
193 -- We keep it around so that we have a map showing the old id and the new id for
194 -- each permission. However there is no IDL entry for it, nor is it defined
195 -- in the base sql files.
197 CREATE TABLE permission.temp_perm (
202 predefined BOOL NOT NULL DEFAULT TRUE
205 -- Populate the temp table with a definitive set of predefined permissions,
206 -- hard-coding the ids.
208 -- The first set of permissions is derived from the database, as loaded in a
209 -- loaded 1.6.1 database, plus a few changes previously applied in this upgrade
210 -- script. The second set is derived from the IDL -- permissions that are referenced
211 -- in <permacrud> elements but not defined in the database.
213 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( -1, 'EVERYTHING',
215 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 1, 'OPAC_LOGIN',
216 'Allow a user to log in to the OPAC' );
217 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 2, 'STAFF_LOGIN',
218 'Allow a user to log in to the staff client' );
219 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 3, 'MR_HOLDS',
220 'Allow a user to create a metarecord holds' );
221 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 4, 'TITLE_HOLDS',
222 'Allow a user to place a hold at the title level' );
223 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 5, 'VOLUME_HOLDS',
224 'Allow a user to place a volume level hold' );
225 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 6, 'COPY_HOLDS',
226 'Allow a user to place a hold on a specific copy' );
227 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 7, 'REQUEST_HOLDS',
228 'Allow a user to create holds for another user (if true, we still check to make sure they have permission to make the type of hold they are requesting, for example, COPY_HOLDS)' );
229 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 8, 'REQUEST_HOLDS_OVERRIDE',
230 '* no longer applicable' );
231 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 9, 'VIEW_HOLD',
232 'Allow a user to view another user''s holds' );
233 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 10, 'DELETE_HOLDS',
234 '* no longer applicable' );
235 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 11, 'UPDATE_HOLD',
236 'Allow a user to update another user''s hold' );
237 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 12, 'RENEW_CIRC',
238 'Allow a user to renew items' );
239 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 13, 'VIEW_USER_FINES_SUMMARY',
240 'Allow a user to view bill details' );
241 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 14, 'VIEW_USER_TRANSACTIONS',
242 'Allow a user to see another user''s grocery or circulation transactions in the Bills Interface; duplicate of VIEW_TRANSACTION' );
243 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 15, 'UPDATE_MARC',
244 'Allow a user to edit a MARC record' );
245 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 16, 'CREATE_MARC',
246 'Allow a user to create new MARC records' );
247 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 17, 'IMPORT_MARC',
248 'Allow a user to import a MARC record via the Z39.50 interface' );
249 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 18, 'CREATE_VOLUME',
250 'Allow a user to create a volume' );
251 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 19, 'UPDATE_VOLUME',
252 'Allow a user to edit volumes - needed for merging records. This is a duplicate of VOLUME_UPDATE; user must have both permissions at appropriate level to merge records.' );
253 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 20, 'DELETE_VOLUME',
254 'Allow a user to delete a volume' );
255 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 21, 'CREATE_COPY',
256 'Allow a user to create a new copy object' );
257 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 22, 'UPDATE_COPY',
258 'Allow a user to edit a copy' );
259 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 23, 'DELETE_COPY',
260 'Allow a user to delete a copy' );
261 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 24, 'RENEW_HOLD_OVERRIDE',
262 'Allow a user to continue to renew an item even if it is required for a hold' );
263 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 25, 'CREATE_USER',
264 'Allow a user to create another user' );
265 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 26, 'UPDATE_USER',
266 'Allow a user to edit a user''s record' );
267 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 27, 'DELETE_USER',
268 'Allow a user to mark a user as deleted' );
269 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 28, 'VIEW_USER',
270 'Allow a user to view another user''s Patron Record' );
271 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 29, 'COPY_CHECKIN',
272 'Allow a user to check in a copy' );
273 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 30, 'CREATE_TRANSIT',
274 'Allow a user to place an item in transit' );
275 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 31, 'VIEW_PERMISSION',
276 'Allow a user to view user permissions within the user permissions editor' );
277 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 32, 'CHECKIN_BYPASS_HOLD_FULFILL',
278 '* no longer applicable' );
279 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 33, 'CREATE_PAYMENT',
280 'Allow a user to record payments in the Billing Interface' );
281 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 34, 'SET_CIRC_LOST',
282 'Allow a user to mark an item as ''lost''' );
283 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 35, 'SET_CIRC_MISSING',
284 'Allow a user to mark an item as ''missing''' );
285 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 36, 'SET_CIRC_CLAIMS_RETURNED',
286 'Allow a user to mark an item as ''claims returned''' );
287 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 37, 'CREATE_TRANSACTION',
288 'Allow a user to create a new billable transaction' );
289 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 38, 'VIEW_TRANSACTION',
290 'Allow a user may view another user''s transactions' );
291 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 39, 'CREATE_BILL',
292 'Allow a user to create a new bill on a transaction' );
293 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 40, 'VIEW_CONTAINER',
294 'Allow a user to view another user''s containers (buckets)' );
295 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 41, 'CREATE_CONTAINER',
296 'Allow a user to create a new container for another user' );
297 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 42, 'UPDATE_ORG_UNIT',
298 'Allow a user to change the settings for an organization unit' );
299 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 43, 'VIEW_CIRCULATIONS',
300 'Allow a user to see what another user has checked out' );
301 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 44, 'DELETE_CONTAINER',
302 'Allow a user to delete another user''s container' );
303 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 45, 'CREATE_CONTAINER_ITEM',
304 'Allow a user to create a container item for another user' );
305 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 46, 'CREATE_USER_GROUP_LINK',
306 'Allow a user to add other users to permission groups' );
307 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 47, 'REMOVE_USER_GROUP_LINK',
308 'Allow a user to remove other users from permission groups' );
309 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 48, 'VIEW_PERM_GROUPS',
310 'Allow a user to view other users'' permission groups' );
311 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 49, 'VIEW_PERMIT_CHECKOUT',
312 'Allow a user to determine whether another user can check out an item' );
313 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 50, 'UPDATE_BATCH_COPY',
314 'Allow a user to edit copies in batch' );
315 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 51, 'CREATE_PATRON_STAT_CAT',
316 'User may create a new patron statistical category' );
317 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 52, 'CREATE_COPY_STAT_CAT',
318 'User may create a copy statistical category' );
319 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 53, 'CREATE_PATRON_STAT_CAT_ENTRY',
320 'User may create an entry in a patron statistical category' );
321 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 54, 'CREATE_COPY_STAT_CAT_ENTRY',
322 'User may create an entry in a copy statistical category' );
323 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 55, 'UPDATE_PATRON_STAT_CAT',
324 'User may update a patron statistical category' );
325 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 56, 'UPDATE_COPY_STAT_CAT',
326 'User may update a copy statistical category' );
327 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 57, 'UPDATE_PATRON_STAT_CAT_ENTRY',
328 'User may update an entry in a patron statistical category' );
329 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 58, 'UPDATE_COPY_STAT_CAT_ENTRY',
330 'User may update an entry in a copy statistical category' );
331 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 59, 'CREATE_PATRON_STAT_CAT_ENTRY_MAP',
332 'User may link another user to an entry in a statistical category' );
333 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 60, 'CREATE_COPY_STAT_CAT_ENTRY_MAP',
334 'User may link a copy to an entry in a statistical category' );
335 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 61, 'DELETE_PATRON_STAT_CAT',
336 'User may delete a patron statistical category' );
337 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 62, 'DELETE_COPY_STAT_CAT',
338 'User may delete a copy statistical category' );
339 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 63, 'DELETE_PATRON_STAT_CAT_ENTRY',
340 'User may delete an entry from a patron statistical category' );
341 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 64, 'DELETE_COPY_STAT_CAT_ENTRY',
342 'User may delete an entry from a copy statistical category' );
343 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 65, 'DELETE_PATRON_STAT_CAT_ENTRY_MAP',
344 'User may delete a patron statistical category entry map' );
345 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 66, 'DELETE_COPY_STAT_CAT_ENTRY_MAP',
346 'User may delete a copy statistical category entry map' );
347 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 67, 'CREATE_NON_CAT_TYPE',
348 'Allow a user to create a new non-cataloged item type' );
349 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 68, 'UPDATE_NON_CAT_TYPE',
350 'Allow a user to update a non-cataloged item type' );
351 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 69, 'CREATE_IN_HOUSE_USE',
352 'Allow a user to create a new in-house-use ' );
353 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 70, 'COPY_CHECKOUT',
354 'Allow a user to check out a copy' );
355 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 71, 'CREATE_COPY_LOCATION',
356 'Allow a user to create a new copy location' );
357 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 72, 'UPDATE_COPY_LOCATION',
358 'Allow a user to update a copy location' );
359 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 73, 'DELETE_COPY_LOCATION',
360 'Allow a user to delete a copy location' );
361 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 74, 'CREATE_COPY_TRANSIT',
362 'Allow a user to create a transit_copy object for transiting a copy' );
363 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 75, 'COPY_TRANSIT_RECEIVE',
364 'Allow a user to close out a transit on a copy' );
365 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 76, 'VIEW_HOLD_PERMIT',
366 'Allow a user to see if another user has permission to place a hold on a given copy' );
367 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 77, 'VIEW_COPY_CHECKOUT_HISTORY',
368 'Allow a user to view which users have checked out a given copy' );
369 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 78, 'REMOTE_Z3950_QUERY',
370 'Allow a user to perform Z39.50 queries against remote servers' );
371 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 79, 'REGISTER_WORKSTATION',
372 'Allow a user to register a new workstation' );
373 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 80, 'VIEW_COPY_NOTES',
374 'Allow a user to view all notes attached to a copy' );
375 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 81, 'VIEW_VOLUME_NOTES',
376 'Allow a user to view all notes attached to a volume' );
377 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 82, 'VIEW_TITLE_NOTES',
378 'Allow a user to view all notes attached to a title' );
379 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 83, 'CREATE_COPY_NOTE',
380 'Allow a user to create a new copy note' );
381 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 84, 'CREATE_VOLUME_NOTE',
382 'Allow a user to create a new volume note' );
383 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 85, 'CREATE_TITLE_NOTE',
384 'Allow a user to create a new title note' );
385 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 86, 'DELETE_COPY_NOTE',
386 'Allow a user to delete another user''s copy notes' );
387 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 87, 'DELETE_VOLUME_NOTE',
388 'Allow a user to delete another user''s volume note' );
389 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 88, 'DELETE_TITLE_NOTE',
390 'Allow a user to delete another user''s title note' );
391 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 89, 'UPDATE_CONTAINER',
392 'Allow a user to update another user''s container' );
393 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 90, 'CREATE_MY_CONTAINER',
394 'Allow a user to create a container for themselves' );
395 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 91, 'VIEW_HOLD_NOTIFICATION',
396 'Allow a user to view notifications attached to a hold' );
397 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 92, 'CREATE_HOLD_NOTIFICATION',
398 'Allow a user to create new hold notifications' );
399 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 93, 'UPDATE_ORG_SETTING',
400 'Allow a user to update an organization unit setting' );
401 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 94, 'OFFLINE_UPLOAD',
402 'Allow a user to upload an offline script' );
403 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 95, 'OFFLINE_VIEW',
404 'Allow a user to view uploaded offline script information' );
405 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 96, 'OFFLINE_EXECUTE',
406 'Allow a user to execute an offline script batch' );
407 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 97, 'CIRC_OVERRIDE_DUE_DATE',
408 'Allow a user to change the due date on an item to any date' );
409 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 98, 'CIRC_PERMIT_OVERRIDE',
410 'Allow a user to bypass the circulation permit call for check out' );
411 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 99, 'COPY_IS_REFERENCE.override',
412 'Allow a user to override the copy_is_reference event' );
413 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 100, 'VOID_BILLING',
414 'Allow a user to void a bill' );
415 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 101, 'CIRC_CLAIMS_RETURNED.override',
416 'Allow a user to check in or check out an item that has a status of ''claims returned''' );
417 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 102, 'COPY_BAD_STATUS.override',
418 'Allow a user to check out an item in a non-circulatable status' );
419 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 103, 'COPY_ALERT_MESSAGE.override',
420 'Allow a user to check in/out an item that has an alert message' );
421 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 104, 'COPY_STATUS_LOST.override',
422 'Allow a user to remove the lost status from a copy' );
423 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 105, 'COPY_STATUS_MISSING.override',
424 'Allow a user to change the missing status on a copy' );
425 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 106, 'ABORT_TRANSIT',
426 'Allow a user to abort a copy transit if the user is at the transit destination or source' );
427 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 107, 'ABORT_REMOTE_TRANSIT',
428 'Allow a user to abort a copy transit if the user is not at the transit source or dest' );
429 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 108, 'VIEW_ZIP_DATA',
430 'Allow a user to query the ZIP code data method' );
431 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 109, 'CANCEL_HOLDS',
432 'Allow a user to cancel holds' );
433 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 110, 'CREATE_DUPLICATE_HOLDS',
434 'Allow a user to create duplicate holds (two or more holds on the same title)' );
435 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 111, 'actor.org_unit.closed_date.delete',
436 'Allow a user to remove a closed date interval for a given location' );
437 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 112, 'actor.org_unit.closed_date.update',
438 'Allow a user to update a closed date interval for a given location' );
439 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 113, 'actor.org_unit.closed_date.create',
440 'Allow a user to create a new closed date for a location' );
441 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 114, 'DELETE_NON_CAT_TYPE',
442 'Allow a user to delete a non cataloged type' );
443 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 115, 'money.collections_tracker.create',
444 'Allow a user to put someone into collections' );
445 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 116, 'money.collections_tracker.delete',
446 'Allow a user to remove someone from collections' );
447 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 117, 'BAR_PATRON',
448 'Allow a user to bar a patron' );
449 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 118, 'UNBAR_PATRON',
450 'Allow a user to un-bar a patron' );
451 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 119, 'DELETE_WORKSTATION',
452 'Allow a user to remove an existing workstation so a new one can replace it' );
453 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 120, 'group_application.user',
454 'Allow a user to add/remove users to/from the "User" group' );
455 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 121, 'group_application.user.patron',
456 'Allow a user to add/remove users to/from the "Patron" group' );
457 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 122, 'group_application.user.staff',
458 'Allow a user to add/remove users to/from the "Staff" group' );
459 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 123, 'group_application.user.staff.circ',
460 'Allow a user to add/remove users to/from the "Circulator" group' );
461 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 124, 'group_application.user.staff.cat',
462 'Allow a user to add/remove users to/from the "Cataloger" group' );
463 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 125, 'group_application.user.staff.admin.global_admin',
464 'Allow a user to add/remove users to/from the "GlobalAdmin" group' );
465 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 126, 'group_application.user.staff.admin.local_admin',
466 'Allow a user to add/remove users to/from the "LocalAdmin" group' );
467 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 127, 'group_application.user.staff.admin.lib_manager',
468 'Allow a user to add/remove users to/from the "LibraryManager" group' );
469 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 128, 'group_application.user.staff.cat.cat1',
470 'Allow a user to add/remove users to/from the "Cat1" group' );
471 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 129, 'group_application.user.staff.supercat',
472 'Allow a user to add/remove users to/from the "Supercat" group' );
473 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 130, 'group_application.user.sip_client',
474 'Allow a user to add/remove users to/from the "SIP-Client" group' );
475 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 131, 'group_application.user.vendor',
476 'Allow a user to add/remove users to/from the "Vendor" group' );
477 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 132, 'ITEM_AGE_PROTECTED.override',
478 'Allow a user to place a hold on an age-protected item' );
479 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 133, 'MAX_RENEWALS_REACHED.override',
480 'Allow a user to renew an item past the maximum renewal count' );
481 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 134, 'PATRON_EXCEEDS_CHECKOUT_COUNT.override',
482 'Allow staff to override checkout count failure' );
483 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 135, 'PATRON_EXCEEDS_OVERDUE_COUNT.override',
484 'Allow staff to override overdue count failure' );
485 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 136, 'PATRON_EXCEEDS_FINES.override',
486 'Allow staff to override fine amount checkout failure' );
487 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 137, 'CIRC_EXCEEDS_COPY_RANGE.override',
488 'Allow staff to override circulation copy range failure' );
489 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 138, 'ITEM_ON_HOLDS_SHELF.override',
490 'Allow staff to override item on holds shelf failure' );
491 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 139, 'COPY_NOT_AVAILABLE.override',
492 'Allow staff to force checkout of Missing/Lost type items' );
493 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 140, 'HOLD_EXISTS.override',
494 'Allow a user to place multiple holds on a single title' );
495 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 141, 'RUN_REPORTS',
496 'Allow a user to run reports' );
497 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 142, 'SHARE_REPORT_FOLDER',
498 'Allow a user to share report his own folders' );
499 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 143, 'VIEW_REPORT_OUTPUT',
500 'Allow a user to view report output' );
501 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 144, 'COPY_CIRC_NOT_ALLOWED.override',
502 'Allow a user to checkout an item that is marked as non-circ' );
503 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 145, 'DELETE_CONTAINER_ITEM',
504 'Allow a user to delete an item out of another user''s container' );
505 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 146, 'ASSIGN_WORK_ORG_UNIT',
506 'Allow a staff member to define where another staff member has their permissions' );
507 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 147, 'CREATE_FUNDING_SOURCE',
508 'Allow a user to create a new funding source' );
509 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 148, 'DELETE_FUNDING_SOURCE',
510 'Allow a user to delete a funding source' );
511 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 149, 'VIEW_FUNDING_SOURCE',
512 'Allow a user to view a funding source' );
513 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 150, 'UPDATE_FUNDING_SOURCE',
514 'Allow a user to update a funding source' );
515 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 151, 'CREATE_FUND',
516 'Allow a user to create a new fund' );
517 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 152, 'DELETE_FUND',
518 'Allow a user to delete a fund' );
519 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 153, 'VIEW_FUND',
520 'Allow a user to view a fund' );
521 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 154, 'UPDATE_FUND',
522 'Allow a user to update a fund' );
523 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 155, 'CREATE_FUND_ALLOCATION',
524 'Allow a user to create a new fund allocation' );
525 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 156, 'DELETE_FUND_ALLOCATION',
526 'Allow a user to delete a fund allocation' );
527 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 157, 'VIEW_FUND_ALLOCATION',
528 'Allow a user to view a fund allocation' );
529 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 158, 'UPDATE_FUND_ALLOCATION',
530 'Allow a user to update a fund allocation' );
531 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 159, 'GENERAL_ACQ',
532 'Lowest level permission required to access the ACQ interface' );
533 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 160, 'CREATE_PROVIDER',
534 'Allow a user to create a new provider' );
535 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 161, 'DELETE_PROVIDER',
536 'Allow a user to delate a provider' );
537 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 162, 'VIEW_PROVIDER',
538 'Allow a user to view a provider' );
539 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 163, 'UPDATE_PROVIDER',
540 'Allow a user to update a provider' );
541 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 164, 'ADMIN_FUNDING_SOURCE',
542 'Allow a user to create/view/update/delete a funding source' );
543 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 165, 'ADMIN_FUND',
544 '(Deprecated) Allow a user to create/view/update/delete a fund' );
545 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 166, 'MANAGE_FUNDING_SOURCE',
546 'Allow a user to view/credit/debit a funding source' );
547 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 167, 'MANAGE_FUND',
548 'Allow a user to view/credit/debit a fund' );
549 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 168, 'CREATE_PICKLIST',
550 'Allows a user to create a picklist' );
551 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 169, 'ADMIN_PROVIDER',
552 'Allow a user to create/view/update/delete a provider' );
553 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 170, 'MANAGE_PROVIDER',
554 'Allow a user to view and purchase from a provider' );
555 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 171, 'VIEW_PICKLIST',
556 'Allow a user to view another users picklist' );
557 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 172, 'DELETE_RECORD',
558 'Allow a staff member to directly remove a bibliographic record' );
559 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 173, 'ADMIN_CURRENCY_TYPE',
560 'Allow a user to create/view/update/delete a currency_type' );
561 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 174, 'MARK_BAD_DEBT',
562 'Allow a user to mark a transaction as bad (unrecoverable) debt' );
563 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 175, 'VIEW_BILLING_TYPE',
564 'Allow a user to view billing types' );
565 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 176, 'MARK_ITEM_AVAILABLE',
566 'Allow a user to mark an item status as ''available''' );
567 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 177, 'MARK_ITEM_CHECKED_OUT',
568 'Allow a user to mark an item status as ''checked out''' );
569 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 178, 'MARK_ITEM_BINDERY',
570 'Allow a user to mark an item status as ''bindery''' );
571 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 179, 'MARK_ITEM_LOST',
572 'Allow a user to mark an item status as ''lost''' );
573 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 180, 'MARK_ITEM_MISSING',
574 'Allow a user to mark an item status as ''missing''' );
575 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 181, 'MARK_ITEM_IN_PROCESS',
576 'Allow a user to mark an item status as ''in process''' );
577 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 182, 'MARK_ITEM_IN_TRANSIT',
578 'Allow a user to mark an item status as ''in transit''' );
579 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 183, 'MARK_ITEM_RESHELVING',
580 'Allow a user to mark an item status as ''reshelving''' );
581 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 184, 'MARK_ITEM_ON_HOLDS_SHELF',
582 'Allow a user to mark an item status as ''on holds shelf''' );
583 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 185, 'MARK_ITEM_ON_ORDER',
584 'Allow a user to mark an item status as ''on order''' );
585 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 186, 'MARK_ITEM_ILL',
586 'Allow a user to mark an item status as ''inter-library loan''' );
587 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 187, 'group_application.user.staff.acq',
588 'Allows a user to add/remove/edit users in the "ACQ" group' );
589 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 188, 'CREATE_PURCHASE_ORDER',
590 'Allows a user to create a purchase order' );
591 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 189, 'VIEW_PURCHASE_ORDER',
592 'Allows a user to view a purchase order' );
593 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 190, 'IMPORT_ACQ_LINEITEM_BIB_RECORD',
594 'Allows a user to import a bib record from the acq staging area (on-order record) into the ILS bib data set' );
595 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 191, 'RECEIVE_PURCHASE_ORDER',
596 'Allows a user to mark a purchase order, lineitem, or individual copy as received' );
597 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 192, 'VIEW_ORG_SETTINGS',
598 'Allows a user to view all org settings at the specified level' );
599 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 193, 'CREATE_MFHD_RECORD',
600 'Allows a user to create a new MFHD record' );
601 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 194, 'UPDATE_MFHD_RECORD',
602 'Allows a user to update an MFHD record' );
603 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 195, 'DELETE_MFHD_RECORD',
604 'Allows a user to delete an MFHD record' );
605 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 196, 'ADMIN_ACQ_FUND',
606 'Allow a user to create/view/update/delete a fund' );
607 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 197, 'group_application.user.staff.acq_admin',
608 'Allows a user to add/remove/edit users in the "Acquisitions Administrators" group' );
609 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 198, 'SET_CIRC_CLAIMS_RETURNED.override',
610 'Allows staff to override the max claims returned value for a patron' );
611 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 199, 'UPDATE_PATRON_CLAIM_RETURN_COUNT',
612 'Allows staff to manually change a patron''s claims returned count' );
613 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 200, 'UPDATE_BILL_NOTE',
614 'Allows staff to edit the note for a bill on a transaction' );
615 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 201, 'UPDATE_PAYMENT_NOTE',
616 'Allows staff to edit the note for a payment on a transaction' );
617 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 202, 'UPDATE_PATRON_CLAIM_NEVER_CHECKED_OUT_COUNT',
618 'Allows staff to manually change a patron''s claims never checkout out count' );
619 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 203, 'ADMIN_COPY_LOCATION_ORDER',
620 'Allow a user to create/view/update/delete a copy location order' );
621 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 204, 'ASSIGN_GROUP_PERM',
623 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 205, 'CREATE_AUDIENCE',
625 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 206, 'CREATE_BIB_LEVEL',
627 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 207, 'CREATE_CIRC_DURATION',
629 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 208, 'CREATE_CIRC_MOD',
631 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 209, 'CREATE_COPY_STATUS',
633 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 210, 'CREATE_HOURS_OF_OPERATION',
635 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 211, 'CREATE_ITEM_FORM',
637 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 212, 'CREATE_ITEM_TYPE',
639 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 213, 'CREATE_LANGUAGE',
641 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 214, 'CREATE_LASSO',
643 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 215, 'CREATE_LASSO_MAP',
645 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 216, 'CREATE_LIT_FORM',
647 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 217, 'CREATE_METABIB_FIELD',
649 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 218, 'CREATE_NET_ACCESS_LEVEL',
651 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 219, 'CREATE_ORG_ADDRESS',
653 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 220, 'CREATE_ORG_TYPE',
655 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 221, 'CREATE_ORG_UNIT',
657 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 222, 'CREATE_ORG_UNIT_CLOSING',
659 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 223, 'CREATE_PERM',
661 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 224, 'CREATE_RELEVANCE_ADJUSTMENT',
663 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 225, 'CREATE_SURVEY',
665 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 226, 'CREATE_VR_FORMAT',
667 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 227, 'CREATE_XML_TRANSFORM',
669 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 228, 'DELETE_AUDIENCE',
671 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 229, 'DELETE_BIB_LEVEL',
673 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 230, 'DELETE_CIRC_DURATION',
675 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 231, 'DELETE_CIRC_MOD',
677 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 232, 'DELETE_COPY_STATUS',
679 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 233, 'DELETE_HOURS_OF_OPERATION',
681 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 234, 'DELETE_ITEM_FORM',
683 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 235, 'DELETE_ITEM_TYPE',
685 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 236, 'DELETE_LANGUAGE',
687 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 237, 'DELETE_LASSO',
689 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 238, 'DELETE_LASSO_MAP',
691 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 239, 'DELETE_LIT_FORM',
693 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 240, 'DELETE_METABIB_FIELD',
695 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 241, 'DELETE_NET_ACCESS_LEVEL',
697 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 242, 'DELETE_ORG_ADDRESS',
699 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 243, 'DELETE_ORG_TYPE',
701 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 244, 'DELETE_ORG_UNIT',
703 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 245, 'DELETE_ORG_UNIT_CLOSING',
705 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 246, 'DELETE_PERM',
707 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 247, 'DELETE_RELEVANCE_ADJUSTMENT',
709 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 248, 'DELETE_SURVEY',
711 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 249, 'DELETE_TRANSIT',
713 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 250, 'DELETE_VR_FORMAT',
715 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 251, 'DELETE_XML_TRANSFORM',
717 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 252, 'REMOVE_GROUP_PERM',
719 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 253, 'TRANSIT_COPY',
721 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 254, 'UPDATE_AUDIENCE',
723 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 255, 'UPDATE_BIB_LEVEL',
725 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 256, 'UPDATE_CIRC_DURATION',
727 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 257, 'UPDATE_CIRC_MOD',
729 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 258, 'UPDATE_COPY_NOTE',
731 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 259, 'UPDATE_COPY_STATUS',
733 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 260, 'UPDATE_GROUP_PERM',
735 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 261, 'UPDATE_HOURS_OF_OPERATION',
737 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 262, 'UPDATE_ITEM_FORM',
739 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 263, 'UPDATE_ITEM_TYPE',
741 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 264, 'UPDATE_LANGUAGE',
743 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 265, 'UPDATE_LASSO',
745 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 266, 'UPDATE_LASSO_MAP',
747 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 267, 'UPDATE_LIT_FORM',
749 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 268, 'UPDATE_METABIB_FIELD',
751 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 269, 'UPDATE_NET_ACCESS_LEVEL',
753 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 270, 'UPDATE_ORG_ADDRESS',
755 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 271, 'UPDATE_ORG_TYPE',
757 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 272, 'UPDATE_ORG_UNIT_CLOSING',
759 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 273, 'UPDATE_PERM',
761 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 274, 'UPDATE_RELEVANCE_ADJUSTMENT',
763 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 275, 'UPDATE_SURVEY',
765 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 276, 'UPDATE_TRANSIT',
767 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 277, 'UPDATE_VOLUME_NOTE',
769 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 278, 'UPDATE_VR_FORMAT',
771 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 279, 'UPDATE_XML_TRANSFORM',
773 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 280, 'MERGE_BIB_RECORDS',
775 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 281, 'UPDATE_PICKUP_LIB_FROM_HOLDS_SHELF',
777 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 282, 'CREATE_ACQ_FUNDING_SOURCE',
779 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 283, 'CREATE_AUTHORITY_IMPORT_IMPORT_FIELD_DEF',
781 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 284, 'CREATE_AUTHORITY_IMPORT_QUEUE',
783 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 285, 'CREATE_AUTHORITY_RECORD_NOTE',
785 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 286, 'CREATE_BIB_IMPORT_FIELD_DEF',
787 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 287, 'CREATE_BIB_IMPORT_QUEUE',
789 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 288, 'CREATE_LOCALE',
791 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 289, 'CREATE_MARC_CODE',
793 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 290, 'CREATE_TRANSLATION',
795 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 291, 'DELETE_ACQ_FUNDING_SOURCE',
797 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 292, 'DELETE_AUTHORITY_IMPORT_IMPORT_FIELD_DEF',
799 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 293, 'DELETE_AUTHORITY_IMPORT_QUEUE',
801 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 294, 'DELETE_AUTHORITY_RECORD_NOTE',
803 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 295, 'DELETE_BIB_IMPORT_IMPORT_FIELD_DEF',
805 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 296, 'DELETE_BIB_IMPORT_QUEUE',
807 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 297, 'DELETE_LOCALE',
809 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 298, 'DELETE_MARC_CODE',
811 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 299, 'DELETE_TRANSLATION',
813 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 300, 'UPDATE_ACQ_FUNDING_SOURCE',
815 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 301, 'UPDATE_AUTHORITY_IMPORT_IMPORT_FIELD_DEF',
817 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 302, 'UPDATE_AUTHORITY_IMPORT_QUEUE',
819 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 303, 'UPDATE_AUTHORITY_RECORD_NOTE',
821 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 304, 'UPDATE_BIB_IMPORT_IMPORT_FIELD_DEF',
823 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 305, 'UPDATE_BIB_IMPORT_QUEUE',
825 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 306, 'UPDATE_LOCALE',
827 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 307, 'UPDATE_MARC_CODE',
829 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 308, 'UPDATE_TRANSLATION',
831 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 309, 'VIEW_ACQ_FUNDING_SOURCE',
833 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 310, 'VIEW_AUTHORITY_RECORD_NOTES',
835 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 311, 'CREATE_IMPORT_ITEM',
837 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 312, 'CREATE_IMPORT_ITEM_ATTR_DEF',
839 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 313, 'CREATE_IMPORT_TRASH_FIELD',
841 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 314, 'DELETE_IMPORT_ITEM',
843 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 315, 'DELETE_IMPORT_ITEM_ATTR_DEF',
845 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 316, 'DELETE_IMPORT_TRASH_FIELD',
847 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 317, 'UPDATE_IMPORT_ITEM',
849 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 318, 'UPDATE_IMPORT_ITEM_ATTR_DEF',
851 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 319, 'UPDATE_IMPORT_TRASH_FIELD',
853 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 320, 'UPDATE_ORG_UNIT_SETTING_ALL',
855 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 321, 'UPDATE_ORG_UNIT_SETTING.circ.lost_materials_processing_fee',
857 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 322, 'UPDATE_ORG_UNIT_SETTING.cat.default_item_price',
859 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 323, 'UPDATE_ORG_UNIT_SETTING.auth.opac_timeout',
861 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 324, 'UPDATE_ORG_UNIT_SETTING.auth.staff_timeout',
863 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 325, 'UPDATE_ORG_UNIT_SETTING.org.bounced_emails',
865 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 326, 'UPDATE_ORG_UNIT_SETTING.circ.hold_expire_alert_interval',
867 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 327, 'UPDATE_ORG_UNIT_SETTING.circ.hold_expire_interval',
869 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 328, 'UPDATE_ORG_UNIT_SETTING.credit.payments.allow',
871 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 329, 'UPDATE_ORG_UNIT_SETTING.circ.void_overdue_on_lost',
873 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 330, 'UPDATE_ORG_UNIT_SETTING.circ.hold_stalling.soft',
875 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 331, 'UPDATE_ORG_UNIT_SETTING.circ.hold_boundary.hard',
877 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 332, 'UPDATE_ORG_UNIT_SETTING.circ.hold_boundary.soft',
879 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 333, 'UPDATE_ORG_UNIT_SETTING.opac.barcode_regex',
881 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 334, 'UPDATE_ORG_UNIT_SETTING.global.password_regex',
883 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 335, 'UPDATE_ORG_UNIT_SETTING.circ.item_checkout_history.max',
885 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 336, 'UPDATE_ORG_UNIT_SETTING.circ.reshelving_complete.interval',
887 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 337, 'UPDATE_ORG_UNIT_SETTING.circ.selfcheck.patron_login_timeout',
889 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 338, 'UPDATE_ORG_UNIT_SETTING.circ.selfcheck.alert_on_checkout_event',
891 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 339, 'UPDATE_ORG_UNIT_SETTING.circ.selfcheck.require_patron_password',
893 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 340, 'UPDATE_ORG_UNIT_SETTING.global.juvenile_age_threshold',
895 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 341, 'UPDATE_ORG_UNIT_SETTING.cat.bib.keep_on_empty',
897 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 342, 'UPDATE_ORG_UNIT_SETTING.cat.bib.alert_on_empty',
899 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 343, 'UPDATE_ORG_UNIT_SETTING.patron.password.use_phone',
901 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 344, 'HOLD_ITEM_CHECKED_OUT.override',
902 'Allows a user to place a hold on an item that they already have checked out' );
903 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 345, 'ADMIN_ACQ_CANCEL_CAUSE',
904 'Allow a user to create/update/delete reasons for order cancellations' );
905 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 346, 'ACQ_XFER_MANUAL_DFUND_AMOUNT',
906 'Allow a user to transfer different amounts of money out of one fund and into another' );
907 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 347, 'OVERRIDE_HOLD_HAS_LOCAL_COPY',
908 'Allow a user to override the circ.holds.hold_has_copy_at.block setting' );
909 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 348, 'UPDATE_PICKUP_LIB_FROM_TRANSIT',
910 'Allow a user to change the pickup and transit destination for a captured hold item already in transit' );
911 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 349, 'COPY_NEEDED_FOR_HOLD.override',
912 'Allow a user to force renewal of an item that could fulfill a hold request' );
913 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 350, 'MERGE_AUTH_RECORDS',
914 'Allow a user to merge authority records together' );
915 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 351, 'ALLOW_ALT_TCN',
916 'Allows staff to import a record using an alternate TCN to avoid conflicts' );
917 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 352, 'ADMIN_TRIGGER_EVENT_DEF',
918 'Allow a user to administer trigger event definitions' );
919 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 353, 'ADMIN_TRIGGER_CLEANUP',
920 'Allow a user to create, delete, and update trigger cleanup entries' );
921 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 354, 'CREATE_TRIGGER_CLEANUP',
922 'Allow a user to create trigger cleanup entries' );
923 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 355, 'DELETE_TRIGGER_CLEANUP',
924 'Allow a user to delete trigger cleanup entries' );
925 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 356, 'UPDATE_TRIGGER_CLEANUP',
926 'Allow a user to update trigger cleanup entries' );
927 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 357, 'CREATE_TRIGGER_EVENT_DEF',
928 'Allow a user to create trigger event definitions' );
929 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 358, 'DELETE_TRIGGER_EVENT_DEF',
930 'Allow a user to delete trigger event definitions' );
931 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 359, 'UPDATE_TRIGGER_EVENT_DEF',
932 'Allow a user to update trigger event definitions' );
933 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 360, 'VIEW_TRIGGER_EVENT_DEF',
934 'Allow a user to view trigger event definitions' );
935 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 361, 'ADMIN_TRIGGER_HOOK',
936 'Allow a user to create, update, and delete trigger hooks' );
937 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 362, 'CREATE_TRIGGER_HOOK',
938 'Allow a user to create trigger hooks' );
939 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 363, 'DELETE_TRIGGER_HOOK',
940 'Allow a user to delete trigger hooks' );
941 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 364, 'UPDATE_TRIGGER_HOOK',
942 'Allow a user to update trigger hooks' );
943 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 365, 'ADMIN_TRIGGER_REACTOR',
944 'Allow a user to create, update, and delete trigger reactors' );
945 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 366, 'CREATE_TRIGGER_REACTOR',
946 'Allow a user to create trigger reactors' );
947 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 367, 'DELETE_TRIGGER_REACTOR',
948 'Allow a user to delete trigger reactors' );
949 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 368, 'UPDATE_TRIGGER_REACTOR',
950 'Allow a user to update trigger reactors' );
951 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 369, 'ADMIN_TRIGGER_TEMPLATE_OUTPUT',
952 'Allow a user to delete trigger template output' );
953 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 370, 'DELETE_TRIGGER_TEMPLATE_OUTPUT',
954 'Allow a user to delete trigger template output' );
955 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 371, 'ADMIN_TRIGGER_VALIDATOR',
956 'Allow a user to create, update, and delete trigger validators' );
957 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 372, 'CREATE_TRIGGER_VALIDATOR',
958 'Allow a user to create trigger validators' );
959 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 373, 'DELETE_TRIGGER_VALIDATOR',
960 'Allow a user to delete trigger validators' );
961 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 374, 'UPDATE_TRIGGER_VALIDATOR',
962 'Allow a user to update trigger validators' );
963 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 376, 'ADMIN_BOOKING_RESOURCE',
964 'Enables the user to create/update/delete booking resources' );
965 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 377, 'ADMIN_BOOKING_RESOURCE_TYPE',
966 'Enables the user to create/update/delete booking resource types' );
967 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 378, 'ADMIN_BOOKING_RESOURCE_ATTR',
968 'Enables the user to create/update/delete booking resource attributes' );
969 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 379, 'ADMIN_BOOKING_RESOURCE_ATTR_MAP',
970 'Enables the user to create/update/delete booking resource attribute maps' );
971 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 380, 'ADMIN_BOOKING_RESOURCE_ATTR_VALUE',
972 'Enables the user to create/update/delete booking resource attribute values' );
973 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 381, 'ADMIN_BOOKING_RESERVATION',
974 'Enables the user to create/update/delete booking reservations' );
975 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 382, 'ADMIN_BOOKING_RESERVATION_ATTR_VALUE_MAP',
976 'Enables the user to create/update/delete booking reservation attribute value maps' );
977 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 383, 'RETRIEVE_RESERVATION_PULL_LIST',
978 'Allows a user to retrieve a booking reservation pull list' );
979 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 384, 'CAPTURE_RESERVATION',
980 'Allows a user to capture booking reservations' );
981 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 385, 'UPDATE_RECORD',
983 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 386, 'UPDATE_ORG_UNIT_SETTING.circ.block_renews_for_holds',
985 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 387, 'MERGE_USERS',
986 'Allows user records to be merged' );
987 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 388, 'ISSUANCE_HOLDS',
988 'Allow a user to place holds on serials issuances' );
989 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 389, 'VIEW_CREDIT_CARD_PROCESSING',
990 'View org unit settings related to credit card processing' );
991 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 390, 'ADMIN_CREDIT_CARD_PROCESSING',
992 'Update org unit settings related to credit card processing' );
993 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 391, 'ADMIN_SERIAL_CAPTION_PATTERN',
994 'Create/update/delete serial caption and pattern objects' );
995 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 392, 'ADMIN_SERIAL_SUBSCRIPTION',
996 'Create/update/delete serial subscription objects' );
997 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 393, 'ADMIN_SERIAL_DISTRIBUTION',
998 'Create/update/delete serial distribution objects' );
999 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 394, 'ADMIN_SERIAL_STREAM',
1000 'Create/update/delete serial stream objects' );
1001 INSERT INTO permission.temp_perm ( id, code, description ) VALUES ( 395, 'RECEIVE_SERIAL',
1002 'Receive serial items' );
1004 -- Now for the permissions from the IDL. We don't have descriptions for them.
1006 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 396, 'ADMIN_ACQ_CLAIM' );
1007 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 397, 'ADMIN_ACQ_CLAIM_EVENT_TYPE' );
1008 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 398, 'ADMIN_ACQ_CLAIM_TYPE' );
1009 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 399, 'ADMIN_ACQ_DISTRIB_FORMULA' );
1010 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 400, 'ADMIN_ACQ_FISCAL_YEAR' );
1011 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 401, 'ADMIN_ACQ_FUND_ALLOCATION_PERCENT' );
1012 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 402, 'ADMIN_ACQ_FUND_TAG' );
1013 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 403, 'ADMIN_ACQ_LINEITEM_ALERT_TEXT' );
1014 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 404, 'ADMIN_AGE_PROTECT_RULE' );
1015 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 405, 'ADMIN_ASSET_COPY_TEMPLATE' );
1016 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 406, 'ADMIN_BOOKING_RESERVATION_ATTR_MAP' );
1017 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 407, 'ADMIN_CIRC_MATRIX_MATCHPOINT' );
1018 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 408, 'ADMIN_CIRC_MOD' );
1019 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 409, 'ADMIN_CLAIM_POLICY' );
1020 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 410, 'ADMIN_CONFIG_REMOTE_ACCOUNT' );
1021 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 411, 'ADMIN_FIELD_DOC' );
1022 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 412, 'ADMIN_GLOBAL_FLAG' );
1023 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 413, 'ADMIN_GROUP_PENALTY_THRESHOLD' );
1024 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 414, 'ADMIN_HOLD_CANCEL_CAUSE' );
1025 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 415, 'ADMIN_HOLD_MATRIX_MATCHPOINT' );
1026 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 416, 'ADMIN_IDENT_TYPE' );
1027 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 417, 'ADMIN_IMPORT_ITEM_ATTR_DEF' );
1028 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 418, 'ADMIN_INDEX_NORMALIZER' );
1029 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 419, 'ADMIN_INVOICE' );
1030 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 420, 'ADMIN_INVOICE_METHOD' );
1031 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 421, 'ADMIN_INVOICE_PAYMENT_METHOD' );
1032 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 422, 'ADMIN_LINEITEM_MARC_ATTR_DEF' );
1033 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 423, 'ADMIN_MARC_CODE' );
1034 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 424, 'ADMIN_MAX_FINE_RULE' );
1035 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 425, 'ADMIN_MERGE_PROFILE' );
1036 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 426, 'ADMIN_ORG_UNIT_SETTING_TYPE' );
1037 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 427, 'ADMIN_RECURRING_FINE_RULE' );
1038 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 428, 'ADMIN_STANDING_PENALTY' );
1039 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 429, 'ADMIN_SURVEY' );
1040 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 430, 'ADMIN_USER_REQUEST_TYPE' );
1041 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 431, 'ADMIN_USER_SETTING_GROUP' );
1042 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 432, 'ADMIN_USER_SETTING_TYPE' );
1043 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 433, 'ADMIN_Z3950_SOURCE' );
1044 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 434, 'CREATE_BIB_BTYPE' );
1045 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 435, 'CREATE_BIBLIO_FINGERPRINT' );
1046 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 436, 'CREATE_BIB_SOURCE' );
1047 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 437, 'CREATE_BILLING_TYPE' );
1048 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 438, 'CREATE_CN_BTYPE' );
1049 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 439, 'CREATE_COPY_BTYPE' );
1050 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 440, 'CREATE_INVOICE' );
1051 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 441, 'CREATE_INVOICE_ITEM_TYPE' );
1052 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 442, 'CREATE_INVOICE_METHOD' );
1053 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 443, 'CREATE_MERGE_PROFILE' );
1054 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 444, 'CREATE_METABIB_CLASS' );
1055 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 445, 'CREATE_METABIB_SEARCH_ALIAS' );
1056 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 446, 'CREATE_USER_BTYPE' );
1057 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 447, 'DELETE_BIB_BTYPE' );
1058 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 448, 'DELETE_BIBLIO_FINGERPRINT' );
1059 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 449, 'DELETE_BIB_SOURCE' );
1060 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 450, 'DELETE_BILLING_TYPE' );
1061 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 451, 'DELETE_CN_BTYPE' );
1062 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 452, 'DELETE_COPY_BTYPE' );
1063 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 453, 'DELETE_INVOICE_ITEM_TYPE' );
1064 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 454, 'DELETE_INVOICE_METHOD' );
1065 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 455, 'DELETE_MERGE_PROFILE' );
1066 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 456, 'DELETE_METABIB_CLASS' );
1067 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 457, 'DELETE_METABIB_SEARCH_ALIAS' );
1068 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 458, 'DELETE_USER_BTYPE' );
1069 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 459, 'MANAGE_CLAIM' );
1070 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 460, 'UPDATE_BIB_BTYPE' );
1071 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 461, 'UPDATE_BIBLIO_FINGERPRINT' );
1072 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 462, 'UPDATE_BIB_SOURCE' );
1073 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 463, 'UPDATE_BILLING_TYPE' );
1074 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 464, 'UPDATE_CN_BTYPE' );
1075 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 465, 'UPDATE_COPY_BTYPE' );
1076 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 466, 'UPDATE_INVOICE_ITEM_TYPE' );
1077 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 467, 'UPDATE_INVOICE_METHOD' );
1078 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 468, 'UPDATE_MERGE_PROFILE' );
1079 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 469, 'UPDATE_METABIB_CLASS' );
1080 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 470, 'UPDATE_METABIB_SEARCH_ALIAS' );
1081 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 471, 'UPDATE_USER_BTYPE' );
1082 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 472, 'user_request.create' );
1083 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 473, 'user_request.delete' );
1084 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 474, 'user_request.update' );
1085 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 475, 'user_request.view' );
1086 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 476, 'VIEW_ACQ_FUND_ALLOCATION_PERCENT' );
1087 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 477, 'VIEW_CIRC_MATRIX_MATCHPOINT' );
1088 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 478, 'VIEW_CLAIM' );
1089 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 479, 'VIEW_GROUP_PENALTY_THRESHOLD' );
1090 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 480, 'VIEW_HOLD_MATRIX_MATCHPOINT' );
1091 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 481, 'VIEW_INVOICE' );
1092 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 482, 'VIEW_MERGE_PROFILE' );
1093 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 483, 'VIEW_SERIAL_SUBSCRIPTION' );
1094 INSERT INTO permission.temp_perm ( id, code ) VALUES ( 484, 'VIEW_STANDING_PENALTY' );
1096 -- For every permission in the temp_perm table that has a matching
1097 -- permission in the real table: record the original id.
1099 UPDATE permission.temp_perm AS tp
1103 FROM permission.perm_list AS ppl
1104 WHERE ppl.code = tp.code
1106 WHERE code IN ( SELECT code FROM permission.perm_list );
1108 -- Start juggling ids.
1110 -- If any permissions have negative ids (with the special exception of -1),
1111 -- we need to move them into the positive range in order to avoid duplicate
1112 -- key problems (since we are going to use the negative range as a temporary
1115 -- First, move any predefined permissions that have negative ids (again with
1116 -- the special exception of -1). Temporarily give them positive ids based on
1119 UPDATE permission.perm_list
1120 SET id = NEXTVAL('permission.perm_list_id_seq'::regclass)
1122 AND code IN (SELECT code FROM permission.temp_perm);
1124 -- Identify any non-predefined permissions whose ids are either negative
1125 -- or within the range (0-1000) reserved for predefined permissions.
1126 -- Assign them ids above 1000, based on the sequence. Record the new
1127 -- ids in the temp_perm table.
1129 INSERT INTO permission.temp_perm ( id, code, description, old_id, predefined )
1131 SELECT NEXTVAL('permission.perm_list_id_seq'::regclass),
1132 code, description, id, false
1133 FROM permission.perm_list
1134 WHERE ( id < -1 OR id BETWEEN 0 AND 1000 )
1135 AND code NOT IN (SELECT code FROM permission.temp_perm)
1138 -- Now update the ids of those non-predefined permissions, using the
1139 -- values assigned in the previous step.
1141 UPDATE permission.perm_list AS ppl
1144 FROM permission.temp_perm AS tp
1145 WHERE tp.code = ppl.code
1147 WHERE id IN ( SELECT old_id FROM permission.temp_perm WHERE NOT predefined );
1149 -- Now the negative ids have been eliminated, except for -1. Move all the
1150 -- predefined permissions temporarily into the negative range.
1152 UPDATE permission.perm_list
1155 AND code IN ( SELECT code from permission.temp_perm WHERE predefined );
1157 -- Apply the final ids to the existing predefined permissions.
1159 UPDATE permission.perm_list AS ppl
1163 FROM permission.temp_perm AS tp
1164 WHERE tp.code = ppl.code
1170 SELECT code from permission.temp_perm
1172 AND old_id IS NOT NULL
1175 -- If there are any predefined permissions that don't exist yet in
1176 -- permission.perm_list, insert them now.
1178 INSERT INTO permission.perm_list ( id, code, description )
1180 SELECT id, code, description
1181 FROM permission.temp_perm
1182 WHERE old_id IS NULL
1185 -- Reset the sequence to the lowest feasible value. This may or may not
1186 -- accomplish anything, but it will do no harm.
1188 SELECT SETVAL('permission.perm_list_id_seq'::TEXT, GREATEST(
1189 (SELECT MAX(id) FROM permission.perm_list), 1000 ));
1191 -- If any permission lacks a description, use the code as a description.
1192 -- It's better than nothing.
1194 UPDATE permission.perm_list
1195 SET description = code
1196 WHERE description IS NULL
1197 OR description = '';
1199 -- Thus endeth the Great Renumbering.
1201 -- Having massaged the permissions, massage the way they are assigned, by inserting
1202 -- rows into permission.grp_perm_map. Some of these permissions may have already
1203 -- been assigned, so we insert the rows only if they aren't already there.
1205 -- for backwards compat, give everyone the permission
1206 INSERT INTO permission.grp_perm_map (grp, perm, depth, grantable)
1207 SELECT 1, id, 0, false FROM permission.perm_list AS perm
1208 WHERE code = 'HOLD_ITEM_CHECKED_OUT.override'
1211 FROM permission.grp_perm_map AS map
1214 AND map.perm = perm.id
1217 -- Add trigger administration permissions to the Local System Administrator group.
1218 INSERT INTO permission.grp_perm_map (grp, perm, depth, grantable)
1219 SELECT 10, id, 1, false FROM permission.perm_list AS perm
1221 perm.code LIKE 'ADMIN_TRIGGER%'
1222 OR perm.code LIKE 'CREATE_TRIGGER%'
1223 OR perm.code LIKE 'DELETE_TRIGGER%'
1224 OR perm.code LIKE 'UPDATE_TRIGGER%'
1227 FROM permission.grp_perm_map AS map
1230 AND map.perm = perm.id
1233 -- View trigger permissions are required at a consortial level for initial setup
1234 -- (as before, only if the row doesn't already exist)
1235 INSERT INTO permission.grp_perm_map (grp, perm, depth, grantable)
1236 SELECT 10, id, 0, false FROM permission.perm_list AS perm
1237 WHERE code LIKE 'VIEW_TRIGGER%'
1240 FROM permission.grp_perm_map AS map
1243 AND map.perm = perm.id
1246 -- Permission for merging auth records may already be defined,
1247 -- so add it only if it isn't there.
1248 INSERT INTO permission.grp_perm_map (grp, perm, depth, grantable)
1249 SELECT 4, id, 1, false FROM permission.perm_list AS perm
1250 WHERE code = 'MERGE_AUTH_RECORDS'
1253 FROM permission.grp_perm_map AS map
1256 AND map.perm = perm.id
1259 -- Create a reference table as parent to both
1260 -- config.org_unit_setting_type and config_usr_setting_type
1262 CREATE TABLE config.settings_group (
1263 name TEXT PRIMARY KEY,
1264 label TEXT UNIQUE NOT NULL -- I18N
1267 -- org_unit setting types
1268 CREATE TABLE config.org_unit_setting_type (
1269 name TEXT PRIMARY KEY,
1270 label TEXT UNIQUE NOT NULL,
1271 grp TEXT REFERENCES config.settings_group (name),
1273 datatype TEXT NOT NULL DEFAULT 'string',
1278 -- define valid datatypes
1280 CONSTRAINT coust_valid_datatype CHECK ( datatype IN
1281 ( 'bool', 'integer', 'float', 'currency', 'interval',
1282 'date', 'string', 'object', 'array', 'link' ) ),
1284 -- fm_class is meaningful only for 'link' datatype
1286 CONSTRAINT coust_no_empty_link CHECK
1287 ( ( datatype = 'link' AND fm_class IS NOT NULL ) OR
1288 ( datatype <> 'link' AND fm_class IS NULL ) ),
1289 CONSTRAINT view_perm_fkey FOREIGN KEY (view_perm) REFERENCES permission.perm_list (id)
1292 DEFERRABLE INITIALLY DEFERRED,
1293 CONSTRAINT update_perm_fkey FOREIGN KEY (update_perm) REFERENCES permission.perm_list (id)
1295 DEFERRABLE INITIALLY DEFERRED
1298 CREATE TABLE config.usr_setting_type (
1300 name TEXT PRIMARY KEY,
1301 opac_visible BOOL NOT NULL DEFAULT FALSE,
1302 label TEXT UNIQUE NOT NULL,
1304 grp TEXT REFERENCES config.settings_group (name),
1305 datatype TEXT NOT NULL DEFAULT 'string',
1309 -- define valid datatypes
1311 CONSTRAINT coust_valid_datatype CHECK ( datatype IN
1312 ( 'bool', 'integer', 'float', 'currency', 'interval',
1313 'date', 'string', 'object', 'array', 'link' ) ),
1316 -- fm_class is meaningful only for 'link' datatype
1318 CONSTRAINT coust_no_empty_link CHECK
1319 ( ( datatype = 'link' AND fm_class IS NOT NULL ) OR
1320 ( datatype <> 'link' AND fm_class IS NULL ) )
1324 --------------------------------------
1325 -- Seed data for org_unit_setting_type
1326 --------------------------------------
1328 INSERT into config.org_unit_setting_type
1329 ( name, label, description, datatype ) VALUES
1331 ( 'auth.opac_timeout',
1332 'OPAC Inactivity Timeout (in seconds)',
1336 ( 'auth.staff_timeout',
1337 'Staff Login Inactivity Timeout (in seconds)',
1341 ( 'circ.lost_materials_processing_fee',
1342 'Lost Materials Processing Fee',
1346 ( 'cat.default_item_price',
1347 'Default Item Price',
1351 ( 'org.bounced_emails',
1352 'Sending email address for patron notices',
1356 ( 'circ.hold_expire_alert_interval',
1357 'Holds: Expire Alert Interval',
1358 'Amount of time before a hold expires at which point the patron should be alerted',
1361 ( 'circ.hold_expire_interval',
1362 'Holds: Expire Interval',
1363 'Amount of time after a hold is placed before the hold expires. Example "100 days"',
1366 ( 'credit.payments.allow',
1367 'Allow Credit Card Payments',
1368 'If enabled, patrons will be able to pay fines accrued at this location via credit card',
1371 ( 'global.default_locale',
1372 'Global Default Locale',
1376 ( 'circ.void_overdue_on_lost',
1377 'Void overdue fines when items are marked lost',
1381 ( 'circ.hold_stalling.soft',
1382 'Holds: Soft stalling interval',
1383 'How long to wait before allowing remote items to be opportunistically captured for a hold. Example "5 days"',
1386 ( 'circ.hold_stalling_hard',
1387 'Holds: Hard stalling interval',
1391 ( 'circ.hold_boundary.hard',
1392 'Holds: Hard boundary',
1396 ( 'circ.hold_boundary.soft',
1397 'Holds: Soft boundary',
1401 ( 'opac.barcode_regex',
1402 'Patron barcode format',
1403 'Regular expression defining the patron barcode format',
1406 ( 'global.password_regex',
1408 'Regular expression defining the password format',
1411 ( 'circ.item_checkout_history.max',
1412 'Maximum previous checkouts displayed',
1413 'This is the maximum number of previous circulations the staff client will display when investigating item details',
1416 ( 'circ.reshelving_complete.interval',
1417 'Change reshelving status interval',
1418 'Amount of time to wait before changing an item from "reshelving" status to "available". Examples: "1 day", "6 hours"',
1421 ( 'circ.holds.default_estimated_wait_interval',
1422 'Holds: Default Estimated Wait',
1423 'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the default estimated length of time to assume an item will be checked out.',
1426 ( 'circ.holds.min_estimated_wait_interval',
1427 'Holds: Minimum Estimated Wait',
1428 'When predicting the amount of time a patron will be waiting for a hold to be fulfilled, this is the minimum estimated length of time to assume an item will be checked out.',
1431 ( 'circ.selfcheck.patron_login_timeout',
1432 'Selfcheck: Patron Login Timeout (in seconds)',
1433 'Number of seconds of inactivity before the patron is logged out of the selfcheck interface',
1436 ( 'circ.selfcheck.alert.popup',
1437 'Selfcheck: Pop-up alert for errors',
1438 'If true, checkout/renewal errors will cause a pop-up window in addition to the on-screen message',
1441 ( 'circ.selfcheck.require_patron_password',
1442 'Selfcheck: Require patron password',
1443 'If true, patrons will be required to enter their password in addition to their username/barcode to log into the selfcheck interface',
1446 ( 'global.juvenile_age_threshold',
1447 'Juvenile Age Threshold',
1448 'The age at which a user is no long considered a juvenile. For example, "18 years".',
1451 ( 'cat.bib.keep_on_empty',
1452 'Retain empty bib records',
1453 'Retain a bib record even when all attached copies are deleted',
1456 ( 'cat.bib.alert_on_empty',
1457 'Alert on empty bib records',
1458 'Alert staff when the last copy for a record is being deleted',
1461 ( 'patron.password.use_phone',
1462 'Patron: password from phone #',
1463 'Use the last 4 digits of the patrons phone number as the default password when creating new users',
1466 ( 'circ.charge_on_damaged',
1467 'Charge item price when marked damaged',
1468 'Charge item price when marked damaged',
1471 ( 'circ.charge_lost_on_zero',
1472 'Charge lost on zero',
1476 ( 'circ.damaged_item_processing_fee',
1477 'Charge processing fee for damaged items',
1478 'Charge processing fee for damaged items',
1481 ( 'circ.void_lost_on_checkin',
1482 'Circ: Void lost item billing when returned',
1483 'Void lost item billing when returned',
1486 ( 'circ.max_accept_return_of_lost',
1487 'Circ: Void lost max interval',
1488 'Items that have been lost this long will not result in voided billings when returned. E.g. ''6 months''',
1491 ( 'circ.void_lost_proc_fee_on_checkin',
1492 'Circ: Void processing fee on lost item return',
1493 'Void processing fee when lost item returned',
1496 ( 'circ.restore_overdue_on_lost_return',
1497 'Circ: Restore overdues on lost item return',
1498 'Restore overdue fines on lost item return',
1501 ( 'circ.lost_immediately_available',
1502 'Circ: Lost items usable on checkin',
1503 'Lost items are usable on checkin instead of going ''home'' first',
1506 ( 'circ.holds_fifo',
1508 'Force holds to a more strict First-In, First-Out capture',
1511 ( 'opac.allow_pending_address',
1512 'OPAC: Allow pending addresses',
1513 'If enabled, patrons can create and edit existing addresses. Addresses are kept in a pending state until staff approves the changes',
1516 ( 'ui.circ.show_billing_tab_on_bills',
1517 'Show billing tab first when bills are present',
1518 'If enabled and a patron has outstanding bills and the alert page is not required, show the billing tab by default, instead of the checkout tab, when a patron is loaded',
1521 ( 'ui.general.idle_timeout',
1522 'GUI: Idle timeout',
1523 'If you want staff client windows to be minimized after a certain amount of system idle time, set this to the number of seconds of idle time that you want to allow before minimizing (requires staff client restart).',
1526 ( 'ui.circ.in_house_use.entry_cap',
1527 'GUI: Record In-House Use: Maximum # of uses allowed per entry.',
1528 'The # of uses entry in the Record In-House Use interface may not exceed the value of this setting.',
1531 ( 'ui.circ.in_house_use.entry_warn',
1532 'GUI: Record In-House Use: # of uses threshold for Are You Sure? dialog.',
1533 'In the Record In-House Use interface, a submission attempt will warn if the # of uses field exceeds the value of this setting.',
1536 ( 'acq.default_circ_modifier',
1537 'Default circulation modifier',
1541 ( 'acq.tmp_barcode_prefix',
1542 'Temporary barcode prefix',
1546 ( 'acq.tmp_callnumber_prefix',
1547 'Temporary call number prefix',
1551 ( 'ui.circ.patron_summary.horizontal',
1552 'Patron circulation summary is horizontal',
1556 ( 'ui.staff.require_initials',
1557 oils_i18n_gettext('ui.staff.require_initials', 'GUI: Require staff initials for entry/edit of item/patron/penalty notes/messages.', 'coust', 'label'),
1558 oils_i18n_gettext('ui.staff.require_initials', 'Appends staff initials and edit date into note content.', 'coust', 'description'),
1561 ( 'ui.general.button_bar',
1566 ( 'circ.hold_shelf_status_delay',
1567 'Hold Shelf Status Delay',
1568 'The purpose is to provide an interval of time after an item goes into the on-holds-shelf status before it appears to patrons that it is actually on the holds shelf. This gives staff time to process the item before it shows as ready-for-pickup.',
1571 ( 'circ.patron_invalid_address_apply_penalty',
1572 'Invalid patron address penalty',
1573 'When set, if a patron address is set to invalid, a penalty is applied.',
1576 ( 'circ.checkout_fills_related_hold',
1577 'Checkout Fills Related Hold',
1578 'When a patron checks out an item and they have no holds that directly target the item, the system will attempt to find a hold for the patron that could be fulfilled by the checked out item and fulfills it',
1581 ( 'circ.selfcheck.auto_override_checkout_events',
1582 'Selfcheck override events list',
1583 'List of checkout/renewal events that the selfcheck interface should automatically override instead instead of alerting and stopping the transaction',
1586 ( 'circ.staff_client.do_not_auto_attempt_print',
1587 'Disable Automatic Print Attempt Type List',
1588 'Disable automatic print attempts from staff client interfaces for the receipt types in this list. Possible values: "Checkout", "Bill Pay", "Hold Slip", "Transit Slip", and "Hold/Transit Slip". This is different from the Auto-Print checkbox in the pertinent interfaces in that it disables automatic print attempts altogether, rather than encouraging silent printing by suppressing the print dialog. The Auto-Print checkbox in these interfaces have no effect on the behavior for this setting. In the case of the Hold, Transit, and Hold/Transit slips, this also suppresses the alert dialogs that precede the print dialog (the ones that offer Print and Do Not Print as options).',
1591 ( 'ui.patron.default_inet_access_level',
1592 'Default level of patrons'' internet access',
1596 ( 'circ.max_patron_claim_return_count',
1597 'Max Patron Claims Returned Count',
1598 'When this count is exceeded, a staff override is required to mark the item as claims returned',
1601 ( 'circ.obscure_dob',
1602 'Obscure the Date of Birth field',
1603 'When true, the Date of Birth column in patron lists will default to Not Visible, and in the Patron Summary sidebar the value will display as <Hidden> unless the field label is clicked.',
1606 ( 'circ.auto_hide_patron_summary',
1607 'GUI: Toggle off the patron summary sidebar after first view.',
1608 'When true, the patron summary sidebar will collapse after a new patron sub-interface is selected.',
1611 ( 'credit.processor.default',
1612 'Credit card processing: Name default credit processor',
1613 'This can be "AuthorizeNet", "PayPal" (for the Website Payment Pro API), or "PayflowPro".',
1616 ( 'credit.processor.authorizenet.enabled',
1617 'Credit card processing: AuthorizeNet enabled',
1621 ( 'credit.processor.authorizenet.login',
1622 'Credit card processing: AuthorizeNet login',
1626 ( 'credit.processor.authorizenet.password',
1627 'Credit card processing: AuthorizeNet password',
1631 ( 'credit.processor.authorizenet.server',
1632 'Credit card processing: AuthorizeNet server',
1633 'Required if using a developer/test account with AuthorizeNet',
1636 ( 'credit.processor.authorizenet.testmode',
1637 'Credit card processing: AuthorizeNet test mode',
1641 ( 'credit.processor.paypal.enabled',
1642 'Credit card processing: PayPal enabled',
1645 ( 'credit.processor.paypal.login',
1646 'Credit card processing: PayPal login',
1649 ( 'credit.processor.paypal.password',
1650 'Credit card processing: PayPal password',
1653 ( 'credit.processor.paypal.signature',
1654 'Credit card processing: PayPal signature',
1657 ( 'credit.processor.paypal.testmode',
1658 'Credit card processing: PayPal test mode',
1662 ( 'ui.admin.work_log.max_entries',
1663 oils_i18n_gettext('ui.admin.work_log.max_entries', 'GUI: Work Log: Maximum Actions Logged', 'coust', 'label'),
1664 oils_i18n_gettext('ui.admin.work_log.max_entries', 'Maximum entries for "Most Recent Staff Actions" section of the Work Log interface.', 'coust', 'description'),
1667 ( 'ui.admin.patron_log.max_entries',
1668 oils_i18n_gettext('ui.admin.patron_log.max_entries', 'GUI: Work Log: Maximum Patrons Logged', 'coust', 'label'),
1669 oils_i18n_gettext('ui.admin.patron_log.max_entries', 'Maximum entries for "Most Recently Affected Patrons..." section of the Work Log interface.', 'coust', 'description'),
1672 ( 'lib.courier_code',
1673 oils_i18n_gettext('lib.courier_code', 'Courier Code', 'coust', 'label'),
1674 oils_i18n_gettext('lib.courier_code', 'Courier Code for the library. Available in transit slip templates as the %courier_code% macro.', 'coust', 'description'),
1677 ( 'circ.block_renews_for_holds',
1678 oils_i18n_gettext('circ.block_renews_for_holds', 'Holds: Block Renewal of Items Needed for Holds', 'coust', 'label'),
1679 oils_i18n_gettext('circ.block_renews_for_holds', 'When an item could fulfill a hold, do not allow the current patron to renew', 'coust', 'description'),
1682 ( 'circ.password_reset_request_per_user_limit',
1683 oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'Circulation: Maximum concurrently active self-serve password reset requests per user', 'coust', 'label'),
1684 oils_i18n_gettext('circ.password_reset_request_per_user_limit', 'When a user has more than this number of concurrently active self-serve password reset requests for their account, prevent the user from creating any new self-serve password reset requests until the number of active requests for the user drops back below this number.', 'coust', 'description'),
1687 ( 'circ.password_reset_request_time_to_live',
1688 oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Circulation: Self-serve password reset request time-to-live', 'coust', 'label'),
1689 oils_i18n_gettext('circ.password_reset_request_time_to_live', 'Length of time (in seconds) a self-serve password reset request should remain active.', 'coust', 'description'),
1692 ( 'circ.password_reset_request_throttle',
1693 oils_i18n_gettext('circ.password_reset_request_throttle', 'Circulation: Maximum concurrently active self-serve password reset requests', 'coust', 'label'),
1694 oils_i18n_gettext('circ.password_reset_request_throttle', 'Prevent the creation of new self-serve password reset requests until the number of active requests drops back below this number.', 'coust', 'description'),
1698 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1699 'ui.circ.suppress_checkin_popups',
1701 'ui.circ.suppress_checkin_popups',
1702 'Circ: Suppress popup-dialogs during check-in.',
1706 'ui.circ.suppress_checkin_popups',
1707 'Circ: Suppress popup-dialogs during check-in.',
1713 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1717 'GUI: Format Dates with this pattern.',
1722 'GUI: Format Dates with this pattern (examples: "yyyy-MM-dd" for "2010-04-26", "MMM d, yyyy" for "Apr 26, 2010")',
1730 'GUI: Format Times with this pattern.',
1735 'GUI: Format Times with this pattern (examples: "h:m:s.SSS a z" for "2:07:20.666 PM Eastern Daylight Time", "HH:mm" for "14:07")',
1741 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1742 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
1744 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
1745 'CAT: Delete bib if all copies are deleted via Acquisitions lineitem cancellation.',
1749 'cat.bib.delete_on_no_copy_via_acq_lineitem_cancel',
1750 'CAT: Delete bib if all copies are deleted via Acquisitions lineitem cancellation.',
1756 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1757 'url.remote_column_settings',
1759 'url.remote_column_settings',
1760 'GUI: URL for remote directory containing list column settings.',
1764 'url.remote_column_settings',
1765 'GUI: URL for remote directory containing list column settings. The format and naming convention for the files found in this directory match those in the local settings directory for a given workstation. An administrator could create the desired settings locally and then copy all the tree_columns_for_* files to the remote directory.',
1771 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1772 'gui.disable_local_save_columns',
1774 'gui.disable_local_save_columns',
1775 'GUI: Disable the ability to save list column configurations locally.',
1779 'gui.disable_local_save_columns',
1780 'GUI: Disable the ability to save list column configurations locally. If set, columns may still be manipulated, however, the changes do not persist. Also, existing local configurations are ignored if this setting is true.',
1786 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1787 'circ.password_reset_request_requires_matching_email',
1789 'circ.password_reset_request_requires_matching_email',
1790 'Circulation: Require matching email address for password reset requests',
1794 'circ.password_reset_request_requires_matching_email',
1795 'Circulation: Require matching email address for password reset requests',
1801 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1802 'circ.holds.expired_patron_block',
1804 'circ.holds.expired_patron_block',
1805 'Circulation: Block hold request if hold recipient privileges have expired',
1809 'circ.holds.expired_patron_block',
1810 'Circulation: Block hold request if hold recipient privileges have expired',
1816 INSERT INTO config.org_unit_setting_type
1817 (name, label, description, datatype) VALUES (
1818 'circ.booking_reservation.default_elbow_room',
1820 'circ.booking_reservation.default_elbow_room',
1821 'Booking: Elbow room',
1826 'circ.booking_reservation.default_elbow_room',
1827 'Elbow room specifies how far in the future you must make a reservation on an item if that item will have to transit to reach its pickup location. It secondarily defines how soon a reservation on a given item must start before the check-in process will opportunistically capture it for the reservation shelf.',
1834 -- Org_unit_setting_type(s) that need an fm_class:
1835 INSERT into config.org_unit_setting_type
1836 ( name, label, description, datatype, fm_class ) VALUES
1837 ( 'acq.default_copy_location',
1838 'Default copy location',
1843 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
1844 'circ.holds.org_unit_target_weight',
1845 'Holds: Org Unit Target Weight',
1846 'Org Units can be organized into hold target groups based on a weight. Potential copies from org units with the same weight are chosen at random.',
1850 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
1851 'circ.holds.target_holds_by_org_unit_weight',
1852 'Holds: Use weight-based hold targeting',
1853 'Use library weight based hold targeting',
1857 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
1858 'circ.holds.max_org_unit_target_loops',
1859 'Holds: Maximum library target attempts',
1860 'When this value is set and greater than 0, the system will only attempt to find a copy at each possible branch the configured number of times',
1865 -- Org setting for overriding the circ lib of a precat copy
1866 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
1867 'circ.pre_cat_copy_circ_lib',
1868 'Pre-cat Item Circ Lib',
1869 'Override the default circ lib of "here" with a pre-configured circ lib for pre-cat items. The value should be the "shortname" (aka policy name) of the org unit',
1873 -- Circ auto-renew interval setting
1874 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
1875 'circ.checkout_auto_renew_age',
1876 'Checkout auto renew age',
1877 'When an item has been checked out for at least this amount of time, an attempt to check out the item to the patron that it is already checked out to will simply renew the circulation',
1881 -- Setting for behind the desk hold pickups
1882 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
1883 'circ.holds.behind_desk_pickup_supported',
1884 'Holds: Behind Desk Pickup Supported',
1885 'If a branch supports both a public holds shelf and behind-the-desk pickups, set this value to true. This gives the patron the option to enable behind-the-desk pickups for their holds',
1889 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
1890 'acq.holds.allow_holds_from_purchase_request',
1892 'acq.holds.allow_holds_from_purchase_request',
1893 'Allows patrons to create automatic holds from purchase requests.',
1897 'acq.holds.allow_holds_from_purchase_request',
1898 'Allows patrons to create automatic holds from purchase requests.',
1904 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
1905 'circ.holds.target_skip_me',
1906 'Skip For Hold Targeting',
1907 'When true, don''t target any copies at this org unit for holds',
1911 -- claims returned mark item missing
1913 config.org_unit_setting_type ( name, label, description, datatype )
1915 'circ.claim_return.mark_missing',
1916 'Claim Return: Mark copy as missing',
1917 'When a circ is marked as claims-returned, also mark the copy as missing',
1921 -- claims never checked out mark item missing
1923 config.org_unit_setting_type ( name, label, description, datatype )
1925 'circ.claim_never_checked_out.mark_missing',
1926 'Claim Never Checked Out: Mark copy as missing',
1927 'When a circ is marked as claims-never-checked-out, mark the copy as missing',
1931 -- mark damaged void overdue setting
1933 config.org_unit_setting_type ( name, label, description, datatype )
1935 'circ.damaged.void_ovedue',
1936 'Mark item damaged voids overdues',
1937 'When an item is marked damaged, overdue fines on the most recent circulation are voided.',
1941 -- hold cancel display limits
1942 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
1944 'circ.holds.canceled.display_count',
1945 'Holds: Canceled holds display count',
1946 'How many canceled holds to show in patron holds interfaces',
1950 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
1952 'circ.holds.canceled.display_age',
1953 'Holds: Canceled holds display age',
1954 'Show all canceled holds that were canceled within this amount of time',
1958 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
1960 'circ.holds.uncancel.reset_request_time',
1961 'Holds: Reset request time on un-cancel',
1962 'When a hold is uncanceled, reset the request time to push it to the end of the queue',
1966 INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
1968 'circ.holds.default_shelf_expire_interval',
1969 'Default hold shelf expire interval',
1974 INSERT INTO config.org_unit_setting_type (name, label, description, datatype, fm_class)
1976 'circ.claim_return.copy_status',
1977 'Claim Return Copy Status',
1978 'Claims returned copies are put into this status. Default is to leave the copy in the Checked Out status',
1983 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
1985 'circ.max_fine.cap_at_price',
1986 oils_i18n_gettext('circ.max_fine.cap_at_price', 'Circ: Cap Max Fine at Item Price', 'coust', 'label'),
1987 oils_i18n_gettext('circ.max_fine.cap_at_price', 'This prevents the system from charging more than the item price in overdue fines', 'coust', 'description'),
1991 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class )
1993 'circ.holds.clear_shelf.copy_status',
1994 oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Holds: Clear shelf copy status', 'coust', 'label'),
1995 oils_i18n_gettext('circ.holds.clear_shelf.copy_status', 'Any copies that have not been put into reshelving, in-transit, or on-holds-shelf (for a new hold) during the clear shelf process will be put into this status. This is basically a purgatory status for copies waiting to be pulled from the shelf and processed by hand', 'coust', 'description'),
2000 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2002 'circ.selfcheck.workstation_required',
2003 oils_i18n_gettext('circ.selfcheck.workstation_required', 'Selfcheck: Workstation Required', 'coust', 'label'),
2004 oils_i18n_gettext('circ.selfcheck.workstation_required', 'All selfcheck stations must use a workstation', 'coust', 'description'),
2007 'circ.selfcheck.patron_password_required',
2008 oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Selfcheck: Require Patron Password', 'coust', 'label'),
2009 oils_i18n_gettext('circ.selfcheck.patron_password_required', 'Patron must log in with barcode and password at selfcheck station', 'coust', 'description'),
2013 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2015 'circ.selfcheck.alert.sound',
2016 oils_i18n_gettext('circ.selfcheck.alert.sound', 'Selfcheck: Audio Alerts', 'coust', 'label'),
2017 oils_i18n_gettext('circ.selfcheck.alert.sound', 'Use audio alerts for selfcheck events', 'coust', 'description'),
2022 config.org_unit_setting_type (name, label, description, datatype)
2024 'notice.telephony.callfile_lines',
2025 'Telephony: Arbitrary line(s) to include in each notice callfile',
2027 This overrides lines from opensrf.xml.
2028 Line(s) must be valid for your target server and platform
2029 (e.g. Asterisk 1.4).
2034 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2036 'circ.offline.username_allowed',
2037 oils_i18n_gettext('circ.offline.username_allowed', 'Offline: Patron Usernames Allowed', 'coust', 'label'),
2038 oils_i18n_gettext('circ.offline.username_allowed', 'During offline circulations, allow patrons to identify themselves with usernames in addition to barcode. For this setting to work, a barcode format must also be defined', 'coust', 'description'),
2042 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2044 'acq.fund.balance_limit.warn',
2045 oils_i18n_gettext('acq.fund.balance_limit.warn', 'Fund Spending Limit for Warning', 'coust', 'label'),
2046 oils_i18n_gettext('acq.fund.balance_limit.warn', 'When the amount remaining in the fund, including spent money and encumbrances, goes below this percentage, attempts to spend from the fund will result in a warning to the staff.', 'coust', 'descripton'),
2050 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2052 'acq.fund.balance_limit.block',
2053 oils_i18n_gettext('acq.fund.balance_limit.block', 'Fund Spending Limit for Block', 'coust', 'label'),
2054 oils_i18n_gettext('acq.fund.balance_limit.block', 'When the amount remaining in the fund, including spent money and encumbrances, goes below this percentage, attempts to spend from the fund will be blocked.', 'coust', 'description'),
2058 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2060 'circ.holds.hold_has_copy_at.alert',
2061 oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'Holds: Has Local Copy Alert', 'coust', 'label'),
2062 oils_i18n_gettext('circ.holds.hold_has_copy_at.alert', 'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, alert the patron', 'coust', 'description'),
2065 'circ.holds.hold_has_copy_at.block',
2066 oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'Holds: Has Local Copy Block', 'coust', 'label'),
2067 oils_i18n_gettext('circ.holds.hold_has_copy_at.block', 'If there is an available copy at the requesting library that could fulfill a hold during hold placement time, do not allow the hold to be placed', 'coust', 'description'),
2071 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2073 'auth.persistent_login_interval',
2074 oils_i18n_gettext('auth.persistent_login_interval', 'Persistent Login Duration', 'coust', 'label'),
2075 oils_i18n_gettext('auth.persistent_login_interval', 'How long a persistent login lasts. E.g. ''2 weeks''', 'coust', 'description'),
2079 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
2080 'cat.marc_control_number_identifier',
2082 'cat.marc_control_number_identifier',
2083 'Cat: Defines the control number identifier used in 003 and 035 fields.',
2087 'cat.marc_control_number_identifier',
2088 'Cat: Defines the control number identifier used in 003 and 035 fields.',
2094 INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
2096 'circ.selfcheck.block_checkout_on_copy_status',
2098 'circ.selfcheck.block_checkout_on_copy_status',
2099 'Selfcheck: Block copy checkout status',
2104 'circ.selfcheck.block_checkout_on_copy_status',
2105 'List of copy status IDs that will block checkout even if the generic COPY_NOT_AVAILABLE event is overridden',
2112 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class )
2114 'serial.prev_issuance_copy_location',
2116 'serial.prev_issuance_copy_location',
2117 'Serials: Previous Issuance Copy Location',
2122 'serial.prev_issuance_copy_location',
2123 'When a serial issuance is received, copies (units) of the previous issuance will be automatically moved into the configured shelving location',
2131 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class )
2133 'cat.default_classification_scheme',
2135 'cat.default_classification_scheme',
2136 'Cataloging: Default Classification Scheme',
2141 'cat.default_classification_scheme',
2142 'Defines the default classification scheme for new call numbers: 1 = Generic; 2 = Dewey; 3 = LC',
2150 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
2151 'opac.org_unit_hiding.depth',
2153 'opac.org_unit_hiding.depth',
2154 'OPAC: Org Unit Hiding Depth',
2158 'opac.org_unit_hiding.depth',
2159 'This will hide certain org units in the public OPAC if the Original Location (url param "ol") for the OPAC inherits this setting. This setting specifies an org unit depth, that together with the OPAC Original Location determines which section of the Org Hierarchy should be visible in the OPAC. For example, a stock Evergreen installation will have a 3-tier hierarchy (Consortium/System/Branch), where System has a depth of 1 and Branch has a depth of 2. If this setting contains a depth of 1 in such an installation, then every library in the System in which the Original Location belongs will be visible, and everything else will be hidden. A depth of 0 will effectively make every org visible. The embedded OPAC in the staff client ignores this setting.',
2165 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype )
2167 'circ.holds.clear_shelf.no_capture_holds',
2168 oils_i18n_gettext('circ.holds.clear_shelf.no_capture_holds', 'Holds: Bypass hold capture during clear shelf process', 'coust', 'label'),
2169 oils_i18n_gettext('circ.holds.clear_shelf.no_capture_holds', 'During the clear shelf process, avoid capturing new holds on cleared items.', 'coust', 'description'),
2173 INSERT INTO config.org_unit_setting_type (name, label, description, datatype) VALUES (
2174 'circ.booking_reservation.stop_circ',
2175 'Disallow circulation of items when they are on booking reserve and that reserve overlaps with the checkout period',
2176 'When true, items on booking reserve during the proposed checkout period will not be allowed to circulate unless overridden with the COPY_RESERVED.override permission.',
2180 ---------------------------------
2181 -- Seed data for usr_setting_type
2182 ----------------------------------
2184 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2185 VALUES ('opac.default_font', TRUE, 'OPAC Font Size', 'OPAC Font Size', 'string');
2187 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2188 VALUES ('opac.default_search_depth', TRUE, 'OPAC Search Depth', 'OPAC Search Depth', 'integer');
2190 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2191 VALUES ('opac.default_search_location', TRUE, 'OPAC Search Location', 'OPAC Search Location', 'integer');
2193 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2194 VALUES ('opac.hits_per_page', TRUE, 'Hits per Page', 'Hits per Page', 'string');
2196 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2197 VALUES ('opac.hold_notify', TRUE, 'Hold Notification Format', 'Hold Notification Format', 'string');
2199 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2200 VALUES ('staff_client.catalog.record_view.default', TRUE, 'Default Record View', 'Default Record View', 'string');
2202 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2203 VALUES ('staff_client.copy_editor.templates', TRUE, 'Copy Editor Template', 'Copy Editor Template', 'object');
2205 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2206 VALUES ('circ.holds_behind_desk', FALSE, 'Hold is behind Circ Desk', 'Hold is behind Circ Desk', 'bool');
2208 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2210 'history.circ.retention_age',
2212 oils_i18n_gettext('history.circ.retention_age','Historical Circulation Retention Age','cust','label'),
2213 oils_i18n_gettext('history.circ.retention_age','Historical Circulation Retention Age','cust','description'),
2216 'history.circ.retention_start',
2218 oils_i18n_gettext('history.circ.retention_start','Historical Circulation Retention Start Date','cust','label'),
2219 oils_i18n_gettext('history.circ.retention_start','Historical Circulation Retention Start Date','cust','description'),
2223 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
2225 'history.hold.retention_age',
2227 oils_i18n_gettext('history.hold.retention_age','Historical Hold Retention Age','cust','label'),
2228 oils_i18n_gettext('history.hold.retention_age','Historical Hold Retention Age','cust','description'),
2231 'history.hold.retention_start',
2233 oils_i18n_gettext('history.hold.retention_start','Historical Hold Retention Start Date','cust','label'),
2234 oils_i18n_gettext('history.hold.retention_start','Historical Hold Retention Start Date','cust','description'),
2237 'history.hold.retention_count',
2239 oils_i18n_gettext('history.hold.retention_count','Historical Hold Retention Count','cust','label'),
2240 oils_i18n_gettext('history.hold.retention_count','Historical Hold Retention Count','cust','description'),
2244 INSERT INTO config.usr_setting_type (name, opac_visible, label, description, datatype)
2246 'opac.default_sort',
2249 'opac.default_sort',
2250 'OPAC Default Search Sort',
2255 'opac.default_sort',
2256 'OPAC Default Search Sort',
2263 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class ) VALUES (
2264 'circ.missing_pieces.copy_status',
2266 'circ.missing_pieces.copy_status',
2267 'Circulation: Item Status for Missing Pieces',
2271 'circ.missing_pieces.copy_status',
2272 'This is the Item Status to use for items that have been marked or scanned as having Missing Pieces. In the absence of this setting, the Damaged status is used.',
2279 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
2280 'circ.do_not_tally_claims_returned',
2282 'circ.do_not_tally_claims_returned',
2283 'Circulation: Do not include outstanding Claims Returned circulations in lump sum tallies in Patron Display.',
2287 'circ.do_not_tally_claims_returned',
2288 'In the Patron Display interface, the number of total active circulations for a given patron is presented in the Summary sidebar and underneath the Items Out navigation button. This setting will prevent Claims Returned circulations from counting toward these tallies.',
2294 INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
2296 ('cat.label.font.size',
2297 oils_i18n_gettext('cat.label.font.size',
2298 'Cataloging: Spine and pocket label font size', 'coust', 'label'),
2299 oils_i18n_gettext('cat.label.font.size',
2300 'Set the default font size for spine and pocket labels', 'coust', 'description'),
2303 ,('cat.label.font.family',
2304 oils_i18n_gettext('cat.label.font.family',
2305 'Cataloging: Spine and pocket label font family', 'coust', 'label'),
2306 oils_i18n_gettext('cat.label.font.family',
2307 'Set the preferred font family for spine and pocket labels. You can specify a list of fonts, separated by commas, in order of preference; the system will use the first font it finds with a matching name. For example, "Arial, Helvetica, serif".',
2308 'coust', 'description'),
2311 ,('cat.spine.line.width',
2312 oils_i18n_gettext('cat.spine.line.width',
2313 'Cataloging: Spine label line width', 'coust', 'label'),
2314 oils_i18n_gettext('cat.spine.line.width',
2315 'Set the default line width for spine labels in number of characters. This specifies the boundary at which lines must be wrapped.',
2316 'coust', 'description'),
2319 ,('cat.spine.line.height',
2320 oils_i18n_gettext('cat.spine.line.height',
2321 'Cataloging: Spine label maximum lines', 'coust', 'label'),
2322 oils_i18n_gettext('cat.spine.line.height',
2323 'Set the default maximum number of lines for spine labels.',
2324 'coust', 'description'),
2327 ,('cat.spine.line.margin',
2328 oils_i18n_gettext('cat.spine.line.margin',
2329 'Cataloging: Spine label left margin', 'coust', 'label'),
2330 oils_i18n_gettext('cat.spine.line.margin',
2331 'Set the left margin for spine labels in number of characters.',
2332 'coust', 'description'),
2337 INSERT INTO config.org_unit_setting_type (name, label, description, datatype)
2339 ('cat.label.font.weight',
2340 oils_i18n_gettext('cat.label.font.weight',
2341 'Cataloging: Spine and pocket label font weight', 'coust', 'label'),
2342 oils_i18n_gettext('cat.label.font.weight',
2343 'Set the preferred font weight for spine and pocket labels. You can specify "normal", "bold", "bolder", or "lighter".',
2344 'coust', 'description'),
2349 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
2350 'circ.patron_edit.clone.copy_address',
2352 'circ.patron_edit.clone.copy_address',
2353 'Patron Registration: Cloned patrons get address copy',
2358 'circ.patron_edit.clone.copy_address',
2359 'In the Patron editor, copy addresses from the cloned user instead of linking directly to the address',
2366 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype, fm_class ) VALUES (
2367 'ui.patron.default_ident_type',
2369 'ui.patron.default_ident_type',
2370 'GUI: Default Ident Type for Patron Registration',
2374 'ui.patron.default_ident_type',
2375 'This is the default Ident Type for new users in the patron editor.',
2382 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
2383 'ui.patron.default_country',
2385 'ui.patron.default_country',
2386 'GUI: Default Country for New Addresses in Patron Editor',
2390 'ui.patron.default_country',
2391 'This is the default Country for new addresses in the patron editor.',
2397 INSERT INTO config.org_unit_setting_type ( name, label, description, datatype ) VALUES (
2398 'ui.patron.registration.require_address',
2400 'ui.patron.registration.require_address',
2401 'GUI: Require at least one address for Patron Registration',
2405 'ui.patron.registration.require_address',
2406 'Enforces a requirement for having at least one address for a patron during registration.',
2412 INSERT INTO config.org_unit_setting_type (
2413 name, label, description, datatype
2415 ('credit.processor.payflowpro.enabled',
2416 'Credit card processing: Enable PayflowPro payments',
2417 'This is NOT the same thing as the settings labeled with just "PayPal."',
2420 ('credit.processor.payflowpro.login',
2421 'Credit card processing: PayflowPro login/merchant ID',
2422 'Often the same thing as the PayPal manager login',
2425 ('credit.processor.payflowpro.password',
2426 'Credit card processing: PayflowPro password',
2427 'PayflowPro password',
2430 ('credit.processor.payflowpro.testmode',
2431 'Credit card processing: PayflowPro test mode',
2432 'Do not really process transactions, but stay in test mode - uses pilot-payflowpro.paypal.com instead of the usual host',
2435 ('credit.processor.payflowpro.vendor',
2436 'Credit card processing: PayflowPro vendor',
2437 'Often the same thing as the login',
2440 ('credit.processor.payflowpro.partner',
2441 'Credit card processing: PayflowPro partner',
2442 'Often "PayPal" or "VeriSign", sometimes others',
2446 -- Patch the name of an old selfcheck setting
2447 UPDATE actor.org_unit_setting
2448 SET name = 'circ.selfcheck.alert.popup'
2449 WHERE name = 'circ.selfcheck.alert_on_checkout_event';
2451 -- Rename certain existing org_unit settings, if present,
2452 -- and make sure their values are JSON
2453 UPDATE actor.org_unit_setting SET
2454 name = 'circ.holds.default_estimated_wait_interval',
2456 -- The value column should be JSON. The old value should be a number,
2457 -- but it may or may not be quoted. The following CASE behaves
2458 -- differently depending on whether value is quoted. It is simplistic,
2459 -- and will be defeated by leading or trailing white space, or various
2462 value = CASE WHEN SUBSTR( value, 1, 1 ) = '"'
2463 THEN '"' || SUBSTR( value, 2, LENGTH(value) - 2 ) || ' days"'
2464 ELSE '"' || value || ' days"'
2466 WHERE name = 'circ.hold_estimate_wait_interval';
2468 -- Create types for existing org unit settings
2469 -- not otherwise accounted for
2471 INSERT INTO config.org_unit_setting_type(
2481 actor.org_unit_setting
2485 FROM config.org_unit_setting_type
2488 -- Add foreign key to org_unit_setting
2490 ALTER TABLE actor.org_unit_setting
2491 ADD FOREIGN KEY (name) REFERENCES config.org_unit_setting_type (name)
2492 DEFERRABLE INITIALLY DEFERRED;
2494 -- Create types for existing user settings
2495 -- not otherwise accounted for
2497 INSERT INTO config.usr_setting_type (
2511 FROM config.usr_setting_type
2514 -- Add foreign key to user_setting_type
2516 ALTER TABLE actor.usr_setting
2517 ADD FOREIGN KEY (name) REFERENCES config.usr_setting_type (name)
2518 ON DELETE CASCADE ON UPDATE CASCADE
2519 DEFERRABLE INITIALLY DEFERRED;
2521 INSERT INTO actor.org_unit_setting (org_unit, name, value) VALUES
2522 (1, 'cat.spine.line.margin', 0)
2523 ,(1, 'cat.spine.line.height', 9)
2524 ,(1, 'cat.spine.line.width', 8)
2525 ,(1, 'cat.label.font.family', '"monospace"')
2526 ,(1, 'cat.label.font.size', 10)
2527 ,(1, 'cat.label.font.weight', '"normal"')
2530 ALTER TABLE action_trigger.event_definition ADD COLUMN granularity TEXT;
2531 ALTER TABLE action_trigger.event ADD COLUMN async_output BIGINT REFERENCES action_trigger.event_output (id);
2532 ALTER TABLE action_trigger.event_definition ADD COLUMN usr_field TEXT;
2533 ALTER TABLE action_trigger.event_definition ADD COLUMN opt_in_setting TEXT REFERENCES config.usr_setting_type (name) DEFERRABLE INITIALLY DEFERRED;
2535 CREATE OR REPLACE FUNCTION is_json( TEXT ) RETURNS BOOL AS $f$
2538 eval { JSON::XS->new->allow_nonref->decode( $json ) };
2540 $f$ LANGUAGE PLPERLU;
2542 ALTER TABLE action_trigger.event ADD COLUMN user_data TEXT CHECK (user_data IS NULL OR is_json( user_data ));
2544 INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
2545 'hold_request.cancel.expire_no_target',
2547 'A hold is cancelled because no copies were found'
2550 INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
2551 'hold_request.cancel.expire_holds_shelf',
2553 'A hold is cancelled because it was on the holds shelf too long'
2556 INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
2557 'hold_request.cancel.staff',
2559 'A hold is cancelled because it was cancelled by staff'
2562 INSERT INTO action_trigger.hook (key,core_type,description) VALUES (
2563 'hold_request.cancel.patron',
2565 'A hold is cancelled by the patron'
2568 -- Fix typos in descriptions
2569 UPDATE action_trigger.hook SET description = 'A hold is successfully placed' WHERE key = 'hold_request.success';
2570 UPDATE action_trigger.hook SET description = 'A hold is attempted but not successfully placed' WHERE key = 'hold_request.failure';
2572 -- Add a hook for renewals
2573 INSERT INTO action_trigger.hook (key,core_type,description) VALUES ('renewal','circ','Item renewed to user');
2575 INSERT INTO action_trigger.validator (module,description) VALUES ('MaxPassiveDelayAge','Check that the event is not too far past the delay_field time -- requires a max_delay_age interval parameter');
2577 -- Sample Pre-due Notice --
2579 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, delay, delay_field, group_field, template)
2580 VALUES (6, 'f', 1, '3 Day Courtesy Notice', 'checkout.due', 'CircIsOpen', 'SendEmail', '-3 days', 'due_date', 'usr',
2583 [%- user = target.0.usr -%]
2584 To: [%- params.recipient_email || user.email %]
2585 From: [%- params.sender_email || default_sender %]
2586 Subject: Courtesy Notice
2588 Dear [% user.family_name %], [% user.first_given_name %]
2589 As a reminder, the following items are due in 3 days.
2591 [% FOR circ IN target %]
2592 Title: [% circ.target_copy.call_number.record.simple_record.title %]
2593 Barcode: [% circ.target_copy.barcode %]
2594 Due: [% date.format(helpers.format_date(circ.due_date), '%Y-%m-%d') %]
2595 Item Cost: [% helpers.get_copy_price(circ.target_copy) %]
2596 Library: [% circ.circ_lib.name %]
2597 Library Phone: [% circ.circ_lib.phone %]
2602 INSERT INTO action_trigger.environment (event_def, path) VALUES
2603 (6, 'target_copy.call_number.record.simple_record'),
2605 (6, 'circ_lib.billing_address');
2607 INSERT INTO action_trigger.event_params (event_def, param, value) VALUES
2608 (6, 'max_delay_age', '"1 day"');
2610 -- also add the max delay age to the default overdue notice event def
2611 INSERT INTO action_trigger.event_params (event_def, param, value) VALUES
2612 (1, 'max_delay_age', '"1 day"');
2614 INSERT INTO action_trigger.validator (module,description) VALUES ('MinPassiveTargetAge','Check that the target is old enough to be used by this event -- requires a min_target_age interval parameter, and accepts an optional target_age_field to specify what time to use for offsetting');
2616 INSERT INTO action_trigger.reactor (module,description) VALUES ('ApplyPatronPenalty','Applies the configured penalty to a patron. Required named environment variables are "user", which refers to the user object, and "context_org", which refers to the org_unit object that acts as the focus for the penalty.');
2618 INSERT INTO action_trigger.hook (
2624 'hold_request.shelf_expires_soon',
2626 'A hold on the shelf will expire there soon.',
2630 INSERT INTO action_trigger.event_definition (
2646 'Hold Expires from Shelf Soon',
2647 'hold_request.shelf_expires_soon',
2651 'shelf_expire_time',
2655 [%- user = target.0.usr -%]
2656 To: [%- params.recipient_email || user.email %]
2657 From: [%- params.sender_email || default_sender %]
2658 Subject: Hold Available Notification
2660 Dear [% user.family_name %], [% user.first_given_name %]
2661 You requested holds on the following item(s), which are available for
2662 pickup, but these holds will soon expire.
2664 [% FOR hold IN target %]
2665 [%- data = helpers.get_copy_bib_basics(hold.current_copy.id) -%]
2666 Title: [% data.title %]
2667 Author: [% data.author %]
2668 Library: [% hold.pickup_lib.name %]
2673 INSERT INTO action_trigger.environment (
2677 ( 7, 'current_copy'),
2678 ( 7, 'pickup_lib.billing_address'),
2681 INSERT INTO action_trigger.hook (
2687 'hold_request.long_wait',
2689 'A patron has been waiting on a hold to be fulfilled for a long time.',
2693 INSERT INTO action_trigger.event_definition (
2709 'Hold waiting for pickup for long time',
2710 'hold_request.long_wait',
2718 [%- user = target.0.usr -%]
2719 To: [%- params.recipient_email || user.email %]
2720 From: [%- params.sender_email || default_sender %]
2721 Subject: Long Wait Hold Notification
2723 Dear [% user.family_name %], [% user.first_given_name %]
2725 You requested hold(s) on the following item(s), but unfortunately
2726 we have not been able to fulfill your request after a considerable
2727 length of time. If you would still like to receive these items,
2728 no action is required.
2730 [% FOR hold IN target %]
2731 Title: [% hold.bib_rec.bib_record.simple_record.title %]
2732 Author: [% hold.bib_rec.bib_record.simple_record.author %]
2737 INSERT INTO action_trigger.environment (
2743 (9, 'bib_rec.bib_record.simple_record');
2745 INSERT INTO action_trigger.hook (key, core_type, description, passive)
2747 'format.selfcheck.checkout',
2749 'Formats circ objects for self-checkout receipt',
2753 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, group_field, granularity, template )
2758 'Self-Checkout Receipt',
2759 'format.selfcheck.checkout',
2766 [%- SET user = target.0.usr -%]
2767 [%- SET lib = target.0.circ_lib -%]
2768 [%- SET lib_addr = target.0.circ_lib.billing_address -%]
2769 [%- SET hours = lib.hours_of_operation -%]
2771 <style> li { padding: 8px; margin 5px; }</style>
2772 <div>[% date.format %]</div>
2773 <div>[% lib.name %]</div>
2774 <div>[% lib_addr.street1 %] [% lib_addr.street2 %]</div>
2775 <div>[% lib_addr.city %], [% lib_addr.state %] [% lb_addr.post_code %]</div>
2776 <div>[% lib.phone %]</div>
2779 [% user.family_name %], [% user.first_given_name %]
2781 [% FOR circ IN target %]
2783 SET idx = loop.count - 1;
2784 SET udata = user_data.$idx
2787 <div>[% helpers.get_copy_bib_basics(circ.target_copy.id).title %]</div>
2788 <div>Barcode: [% circ.target_copy.barcode %]</div>
2789 [% IF udata.renewal_failure %]
2790 <div style='color:red;'>Renewal Failed</div>
2792 <div>Due Date: [% date.format(helpers.format_date(circ.due_date), '%Y-%m-%d') %]</div>
2800 [%- BLOCK format_time; date.format(time _ ' 1/1/1000', format='%I:%M %p'); END -%]
2803 [% PROCESS format_time time = hours.dow_0_open %]
2804 [% PROCESS format_time time = hours.dow_0_close %]
2808 [% PROCESS format_time time = hours.dow_1_open %]
2809 [% PROCESS format_time time = hours.dow_1_close %]
2813 [% PROCESS format_time time = hours.dow_2_open %]
2814 [% PROCESS format_time time = hours.dow_2_close %]
2818 [% PROCESS format_time time = hours.dow_3_open %]
2819 [% PROCESS format_time time = hours.dow_3_close %]
2823 [% PROCESS format_time time = hours.dow_4_open %]
2824 [% PROCESS format_time time = hours.dow_4_close %]
2828 [% PROCESS format_time time = hours.dow_5_open %]
2829 [% PROCESS format_time time = hours.dow_5_close %]
2833 [% PROCESS format_time time = hours.dow_6_open %]
2834 [% PROCESS format_time time = hours.dow_6_close %]
2841 INSERT INTO action_trigger.environment ( event_def, path) VALUES
2842 ( 10, 'target_copy'),
2843 ( 10, 'circ_lib.billing_address'),
2844 ( 10, 'circ_lib.hours_of_operation'),
2847 INSERT INTO action_trigger.hook (key, core_type, description, passive)
2849 'format.selfcheck.items_out',
2851 'Formats items out for self-checkout receipt',
2855 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, group_field, granularity, template )
2860 'Self-Checkout Items Out Receipt',
2861 'format.selfcheck.items_out',
2868 [%- SET user = target.0.usr -%]
2870 <style> li { padding: 8px; margin 5px; }</style>
2871 <div>[% date.format %]</div>
2874 [% user.family_name %], [% user.first_given_name %]
2876 [% FOR circ IN target %]
2878 <div>[% helpers.get_copy_bib_basics(circ.target_copy.id).title %]</div>
2879 <div>Barcode: [% circ.target_copy.barcode %]</div>
2880 <div>Due Date: [% date.format(helpers.format_date(circ.due_date), '%Y-%m-%d') %]</div>
2889 INSERT INTO action_trigger.environment ( event_def, path) VALUES
2890 ( 11, 'target_copy'),
2891 ( 11, 'circ_lib.billing_address'),
2892 ( 11, 'circ_lib.hours_of_operation'),
2895 INSERT INTO action_trigger.hook (key, core_type, description, passive)
2897 'format.selfcheck.holds',
2899 'Formats holds for self-checkout receipt',
2903 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, group_field, granularity, template )
2908 'Self-Checkout Holds Receipt',
2909 'format.selfcheck.holds',
2916 [%- SET user = target.0.usr -%]
2918 <style> li { padding: 8px; margin 5px; }</style>
2919 <div>[% date.format %]</div>
2922 [% user.family_name %], [% user.first_given_name %]
2924 [% FOR hold IN target %]
2926 SET idx = loop.count - 1;
2927 SET udata = user_data.$idx
2930 <div>Title: [% hold.bib_rec.bib_record.simple_record.title %]</div>
2931 <div>Author: [% hold.bib_rec.bib_record.simple_record.author %]</div>
2932 <div>Pickup Location: [% hold.pickup_lib.name %]</div>
2934 [%- IF udata.ready -%]
2937 #[% udata.queue_position %] of [% udata.potential_copies %] copies.
2948 INSERT INTO action_trigger.environment ( event_def, path) VALUES
2949 ( 12, 'bib_rec.bib_record.simple_record'),
2950 ( 12, 'pickup_lib'),
2953 INSERT INTO action_trigger.hook (key, core_type, description, passive)
2955 'format.selfcheck.fines',
2957 'Formats fines for self-checkout receipt',
2961 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, granularity, template )
2966 'Self-Checkout Fines Receipt',
2967 'format.selfcheck.fines',
2973 [%- SET user = target -%]
2975 <style> li { padding: 8px; margin 5px; }</style>
2976 <div>[% date.format %]</div>
2979 [% user.family_name %], [% user.first_given_name %]
2981 [% FOR xact IN user.open_billable_transactions_summary %]
2984 [% IF xact.xact_type == 'circulation' %]
2985 [%- helpers.get_copy_bib_basics(xact.circulation.target_copy).title -%]
2987 [%- xact.last_billing_type -%]
2990 <div>Total Billed: [% xact.total_owed %]</div>
2991 <div>Total Paid: [% xact.total_paid %]</div>
2992 <div>Balance Owed : [% xact.balance_owed %]</div>
3000 INSERT INTO action_trigger.environment ( event_def, path) VALUES
3001 ( 13, 'open_billable_transactions_summary.circulation' );
3003 INSERT INTO action_trigger.reactor (module,description) VALUES
3007 'Build and transfer a file to a remote server. Required parameter "remote_host" specifying target server. Optional parameters: remote_user, remote_password, remote_account, port, type (FTP, SFTP or SCP), and debug.',
3013 INSERT INTO action_trigger.hook (key, core_type, description, passive)
3015 'format.acqli.html',
3017 'Formats lineitem worksheet for titles received',
3021 INSERT INTO action_trigger.event_definition (id, active, owner, name, hook, validator, reactor, granularity, template)
3026 'Lineitem Worksheet',
3027 'format.acqli.html',
3033 [%- SET li = target; -%]
3034 <div class="wrapper">
3035 <div class="summary" style='font-size:110%; font-weight:bold;'>
3037 <div>Title: [% helpers.get_li_attr("title", "", li.attributes) %]</div>
3038 <div>Author: [% helpers.get_li_attr("author", "", li.attributes) %]</div>
3039 <div class="count">Item Count: [% li.lineitem_details.size %]</div>
3040 <div class="lineid">Lineitem ID: [% li.id %]</div>
3042 [% IF li.distribution_formulas.size > 0 %]
3043 [% SET forms = [] %]
3044 [% FOREACH form IN li.distribution_formulas; forms.push(form.formula.name); END %]
3045 <div>Distribution Formulas: [% forms.join(',') %]</div>
3048 [% IF li.lineitem_notes.size > 0 %]
3051 [%- FOR note IN li.lineitem_notes -%]
3053 [% IF note.alert_text %]
3054 [% note.alert_text.code -%]
3055 [% IF note.value -%]
3072 <th>Call Number</th>
3079 [% FOREACH detail IN li.lineitem_details.sort('owning_lib') %]
3082 SET copy = copy.eg_copy_id;
3083 SET cn_label = copy.call_number.label;
3086 SET cn_label = detail.cn_label;
3090 <!-- acq.lineitem_detail.id = [%- detail.id -%] -->
3091 <td style='padding:5px;'>[% detail.owning_lib.shortname %]</td>
3092 <td style='padding:5px;'>[% IF copy.barcode %]<span class="barcode" >[% detail.barcode %]</span>[% END %]</td>
3093 <td style='padding:5px;'>[% IF cn_label %]<span class="cn_label" >[% cn_label %]</span>[% END %]</td>
3094 <td style='padding:5px;'>[% IF detail.fund %]<span class="fund">[% detail.fund.code %] ([% detail.fund.year %])</span>[% END %]</td>
3095 <td style='padding:5px;'>[% IF detail.recv_time %]<span class="recv_time">[% detail.recv_time %]</span>[% END %]</td>
3096 <td style='padding:5px;'>[% detail.note %]</td>
3106 INSERT INTO action_trigger.environment (event_def, path) VALUES
3107 ( 14, 'attributes' ),
3108 ( 14, 'lineitem_details' ),
3109 ( 14, 'lineitem_details.owning_lib' ),
3110 ( 14, 'lineitem_notes' )
3113 INSERT INTO action_trigger.hook (key,core_type,description,passive) VALUES (
3118 'A patron acquisition request has been marked On-Order.',
3128 'A patron acquisition request has been marked Received.',
3138 'A patron acquisition request has been marked Cancelled.',
3146 INSERT INTO action_trigger.validator (module,description) VALUES (