User Tools

Site Tools


evergreen-admin:customization:circ

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Last revision Both sides next revision
evergreen-admin:customization:circ [2009/10/26 18:07]
phasefx created
evergreen-admin:customization:circ [2009/10/26 19:33]
jamesrf
Line 5: Line 5:
 ===== Rule Tables ===== ===== Rule Tables =====
  
-Certain types of behavior ultimately come down to a handful of rule tables in the database. ​ The goal of both the circ scripts and the alternative matrix tables is to pick rows from those rule tables. ​ In older versions of Evergreen, you would configure these tables with the "​Open-ILS Bootstrapping Scripts",​ under "​Circulation and Holds Rules"​. ​ This interface lives by default at http://hostname/​cgi-bin/​config.cgi ​ FIXME  I thought all of the Bootstrapping interfaces were deprecated and replaced with "​Conify"​ interfaces, but I can't find any for the config.rules tables.+Certain types of behavior ultimately come down to a handful of rule tables in the database. ​ The goal of both the circ scripts and the alternative matrix tables is to pick rows from those rule tables. ​ In older versions of Evergreen, you would configure these tables with the "​Open-ILS Bootstrapping Scripts",​ under "​Circulation and Holds Rules"​. ​ This interface lives by default at http://localhost/​cgi-bin/​config.cgi ​(if you use a browser on the Evergreen server itself. ​ Otherwise, you will need to tweak your Apache config to allow external access to those scripts and modify your URL as appropriate.) ​ You could also manage these tables directly in the database, for example, by using pgAdmin or psql.  ​FIXME ​ I thought all of the Bootstrapping interfaces were deprecated and replaced with "​Conify"​ interfaces, but I can't find any for the config.rules tables.
  
 ==== Circulation Duration (config.rule_circ_duration) ==== ==== Circulation Duration (config.rule_circ_duration) ====
 +
 +The stock circ duration table includes these rules:
 +
 +| **id** |       ​**name** ​      | **extended** |  **normal** ​ |   ​**shrt** ​  | **max_renewals**|
 +|  1 | 7_days_0_renew ​  | 7 days   | 7 days   | 7 days   ​| ​           0|
 +|  2 | 28_days_2_renew ​ | 28 days  | 28 days  | 28 days  |            2|
 +|  3 | 3_months_0_renew | 3 mons   | 3 mons   | 3 mons   ​| ​           0|
 +|  4 | 3_days_1_renew ​  | 3 days   | 3 days   | 3 days   ​| ​           1|
 +|  5 | 2_months_2_renew | 2 mons   | 2 mons   | 2 mons   ​| ​           2|
 +|  6 | 35_days_1_renew ​ | 35 days  | 35 days  | 35 days  |            1|
 +|  7 | 7_days_2_renew ​  | 7 days   | 7 days   | 7 days   ​| ​           2|
 +|  8 | 1_hour_2_renew ​  | 01:00:00 | 01:00:00 | 01:00:00 |            2|
 +|  9 | 28_days_0_renew ​ | 28 days  | 28 days  | 28 days  |            0|
 +| 10 | 14_days_2_renew ​ | 14 days  | 14 days  | 14 days  |            2|
 +| 11 | default ​         | 21 days  | 14 days  | 7 days   ​| ​           2|
 +
 +The stock circ scripts (and in-db circ matrix) will always target the "​default"​ rule here.  An item circulating under this rule will start with 2 allowed renewals, and either circulate for 7, 14, or 21 days depending on the value of the item's //Loan Duration// field (which can have the values Short, Normal, or Long, corresponding with the **shrt**, **normal**, and **extended** columns in the rule table).
 +
 +The circ scripts reference these rules by the value in the **name** column. ​ The circ matrix tables reference these rules by the value in the **id** column. ​ A common practice is to embed the values for a rule into the rule name itself, as seen above, to make it easier to understand and manage the circ scripts. ​ It could also make sense to use names like "​audiobook"​ or "​bestseller",​ but those sort of labels are more often used with item //​circulation modifiers//,​ to push configurability more toward end-user staff and away from admins. ​ It also helps facilitate the configuration of rules that may be different per library in a shared system. ​ Consider that two libraries may both have an "​audiobook"​ circ modifier, yet based on the circ scripts, a different loan duration rule may be chosen for each of them.  If the loan duration rules are named after their values, then they'​ll never be changed and potentially surprise a library that targets them.  However, if a shared system is strong on shared policies, it may be easier to manipulate the rule table itself whenever that policy changes. ​ It's up to you find the right balance for your system.
  
 ==== Recurring Fine Levels (config.rule_recuring_fine) ==== ==== Recurring Fine Levels (config.rule_recuring_fine) ====
Line 14: Line 33:
  
 ==== Item Age Hold Protection (config.rule_age_hold_protect) ==== ==== Item Age Hold Protection (config.rule_age_hold_protect) ====
 +
 +===== Standing Penalties =====
  
 ===== Circ Scripts ===== ===== Circ Scripts =====
 +
 +==== Description of Default Files ====
 +These files are found in /​openils/​var on your Evergreen server.
 +
 +=== circ/​circ_lib.js ===
 +  * this file contains a library of often used functions and constants. ​ these can be called in other scripts and you can add your own utility functions here.
 +  * Some examples:
 +    * findGroupConfig():​ returns the config values from circ_groups.js
 +    * isGroupDescendant( parent, child): returns true if the child patron group is a descendent of the parent
 +    * isPrecat: a constant that returns true/false if an item is a pre-cat
 +
 +=== circ/​circ_duration.js ===
 +  * this file is called when an item is checked out and results in:
 +    * loan duration rule
 +    * recurring fine rule
 +    * max fine rule
 +
 +=== circ/​circ_groups.js ===
 +  * this file determines patron limits
 +  * the function findGroupConfig() retrieves values from this file
 +    * this function is called in circ_permit_hold.js,​ circ_permit_patron.js and patron_penalty.js
 +
 +=== circ/​circ_permit_copy.js ===
 +=== circ/​circ_permit_patron.js ===
 +=== penalty/​patron_penalty.js ===
 +
 +=== circ/​circ_permit_hold.js ===
 +  * called on renewal, can be used to prevent holds
 +=== circ/​circ_permit_renew.js ===
 +  * called on renewal, can be used to prevent renewals
  
 ===== In-db Circ Matrix ===== ===== In-db Circ Matrix =====
evergreen-admin/customization/circ.txt · Last modified: 2009/10/26 19:34 by jamesrf

© 2008-2017 GPLS and others. Evergreen is open source software, freely licensed under GNU GPLv2 or later.
The Evergreen Project is a member of Software Freedom Conservancy.