1 load_lib('circ/circ_lib.js');
2 log_debug('loading circ_item_config.js ...');
14 008 Book with diskette
16 010 Book with audio tape
19 /* -----------------------------------------------------------------------------
20 Configure the duration rules for the various item types and circ modifiers
22 MARC Fixed Field info:
23 http://www.oclc.org/bibformats/en/fixedfield/
25 ----------------------------------------------------------------------------- */
27 var MARC_ITEM_TYPE_MAP = {
29 a : { /* Language material [Books] */
32 durationRule : '14_days_2_renew',
33 recurringFinesRule : '10_cent_per_day',
34 maxFine : 'overdue_mid'
37 t : { /* Manuscript language material [Books] */
40 durationRule : '14_days_2_renew',
41 recurringFinesRule : '10_cent_per_day',
42 maxFine : 'overdue_mid'
45 g : { /* Projected medium [Videos, etc.] */
48 durationRule : '7_days_0_renew',
49 recurringFinesRule : '10_cent_per_day',
50 maxFine : 'overdue_mid'
53 k : { /* Two-dimensional nonprojectable graphic [Card, charts, etc.] */
56 durationRule : '3_month_0_renew',
57 recurringFinesRule : '10_cent_per_day',
58 maxFine : 'overdue_mid'
61 r : { /* Three-dimensional artifact or naturally occurring object [Models, games, etc.] */
64 durationRule : '14_days_2_renew',
65 recurringFinesRule : '10_cent_per_day',
66 maxFine : 'overdue_mid'
69 o : { /* Kit [Mixture of item types] */
72 durationRule : '14_days_2_renew',
73 recurringFinesRule : '10_cent_per_day',
74 maxFine : 'overdue_mid'
77 p : { /* Mixed materials [Mixture of item types] */
80 durationRule : '14_days_2_renew',
81 recurringFinesRule : '10_cent_per_day',
82 maxFine : 'overdue_mid'
85 e : { /* Cartographic material [Map] */
88 durationRule : '7_days_2_renew',
89 recurringFinesRule : '50_cent_per_day',
90 maxFine : 'overdue_mid'
93 f : { /* Manuscript cartographic material [Map] */
96 durationRule : '3_days_1_renew',
97 recurringFinesRule : '50_cent_per_day',
98 maxFine : 'overdue_mid'
101 c : { /* Notated music [Printed music] */
102 SIPMediaType : '001',
104 durationRule : '14_days_2_renew',
105 recurringFinesRule : '10_cent_per_day',
106 maxFine : 'overdue_mid'
109 d : { /* Manuscript notated music [Printed music] */
110 SIPMediaType : '001',
112 durationRule : '14_days_2_renew',
113 recurringFinesRule : '10_cent_per_day',
114 maxFine : 'overdue_mid'
117 i : { /* Nonmusical sound recording [Audiobooks, sound effects, etc.] */
118 SIPMediaType : '001',
120 durationRule : '14_days_2_renew',
121 recurringFinesRule : '10_cent_per_day',
122 maxFine : 'overdue_mid'
125 j : { /* Musical sound recording [Music] */
126 SIPMediaType : '001',
128 durationRule : '14_days_2_renew',
129 recurringFinesRule : '10_cent_per_day',
130 maxFine : 'overdue_mid'
133 m : { /* Computer file */
134 SIPMediaType : '001',
136 durationRule : '14_days_2_renew',
137 recurringFinesRule : '10_cent_per_day',
138 maxFine : 'overdue_mid'
146 SIPMediaType : '000',
148 durationRule : '3_month_0_renew',
149 recurringFinesRule : '10_cent_per_day',
150 maxFine : 'overdue_mid'
154 SIPMediaType : '000',
156 durationRule : '7_days_2_renew',
157 recurringFinesRule : '50_cent_per_day',
158 maxFine : 'overdue_mid'
162 SIPMediaType : '004',
164 durationRule : '14_days_2_renew',
165 recurringFinesRule : '10_cent_per_day',
166 maxFine : 'overdue_mid'
170 SIPMediaType : '005',
172 durationRule : '7_days_2_renew',
173 recurringFinesRule : '50_cent_per_day',
174 maxFine : 'overdue_mid'
178 SIPMediaType : '001',
180 durationRule : '7_days_2_renew',
181 recurringFinesRule : '50_cent_per_day',
182 maxFine : 'overdue_mid'
186 SIPMediaType : '001',
188 durationRule : '7_days_2_renew',
189 recurringFinesRule : '50_cent_per_day',
190 maxFine : 'overdue_mid'
194 SIPMediaType : '001',
196 durationRule : '14_days_2_renew',
197 recurringFinesRule : '10_cent_per_day',
198 maxFine : 'overdue_mid'
202 SIPMediaType : '006',
204 durationRule : '14_days_2_renew',
205 recurringFinesRule : '10_cent_per_day',
206 maxFine : 'overdue_mid'
210 SIPMediaType : '006',
212 durationRule : '7_days_0_renew',
213 recurringFinesRule : '50_cent_per_day',
214 maxFine : 'overdue_mid'
218 SIPMediaType : '001',
220 durationRule : '3_days_1_renew',
221 recurringFinesRule : '50_cent_per_day',
222 maxFine : 'overdue_mid'
226 SIPMediaType : '000',
228 durationRule : '3_days_1_renew',
229 recurringFinesRule : '50_cent_per_day',
230 maxFine : 'overdue_mid'
234 SIPMediaType : '000',
236 durationRule : '14_days_2_renew',
237 recurringFinesRule : '10_cent_per_day',
238 maxFine : 'overdue_mid'
242 SIPMediaType : '000',
244 durationRule : '14_days_2_renew',
245 recurringFinesRule : '10_cent_per_day',
246 maxFine : 'overdue_mid'
250 SIPMediaType : '002',
252 durationRule : '14_days_2_renew',
253 recurringFinesRule : '10_cent_per_day',
254 maxFine : 'overdue_mid'
258 SIPMediaType : '000',
260 durationRule : '3_days_1_renew',
261 recurringFinesRule : '50_cent_per_day',
262 maxFine : 'overdue_mid'
266 SIPMediaType : '000',
268 durationRule : '14_days_2_renew',
269 recurringFinesRule : '10_cent_per_day',
270 maxFine : 'overdue_mid'
274 SIPMediaType : '004',
276 durationRule : '14_days_2_renew',
277 recurringFinesRule : '10_cent_per_day',
278 maxFine : 'overdue_mid'
282 SIPMediaType : '000',
284 durationRule : '14_days_2_renew',
285 recurringFinesRule : '10_cent_per_day',
286 maxFine : 'overdue_mid'
290 SIPMediaType : '006',
292 durationRule : '7_days_2_renew',
293 recurringFinesRule : '10_cent_per_day',
294 maxFine : 'overdue_mid'
298 SIPMediaType : '006',
300 durationRule : 'unlimited',
304 SIPMediaType : '000',
306 durationRule : '7_days_2_renew',
307 recurringFinesRule : '50_cent_per_day',
308 maxFine : 'overdue_mid'
312 SIPMediaType : '005',
314 durationRule : '7_days_0_renew',
315 recurringFinesRule : '50_cent_per_day',
316 maxFine : 'overdue_mid'
321 /* Set up rules for legacy types */
322 CIRC_MOD_MAP['DEPOSIT'] = CIRC_MOD_MAP['book'];
323 CIRC_MOD_MAP['E-AUDIO'] = CIRC_MOD_MAP['book'];
324 CIRC_MOD_MAP['EQUIP'] = CIRC_MOD_MAP['book'];
325 CIRC_MOD_MAP['FACBESTSLR'] = CIRC_MOD_MAP['book'];
326 CIRC_MOD_MAP['FACNEWBK'] = CIRC_MOD_MAP['book'];
327 CIRC_MOD_MAP['MAG-CIRC'] = CIRC_MOD_MAP['book'];
328 CIRC_MOD_MAP['MAG-NOCIRC'] = CIRC_MOD_MAP['book'];
329 CIRC_MOD_MAP['NEW-AV'] = CIRC_MOD_MAP['book'];
330 CIRC_MOD_MAP['NEW-BOOK'] = CIRC_MOD_MAP['book'];
331 CIRC_MOD_MAP['NEWSPAPER'] = CIRC_MOD_MAP['book'];
332 CIRC_MOD_MAP['NILS-ITEM'] = CIRC_MOD_MAP['book'];
333 CIRC_MOD_MAP['OUTREACH'] = CIRC_MOD_MAP['book'];
334 CIRC_MOD_MAP['PAMPHLET'] = CIRC_MOD_MAP['book'];
335 CIRC_MOD_MAP['PAPERBACK'] = CIRC_MOD_MAP['book'];
336 CIRC_MOD_MAP['REALIA'] = CIRC_MOD_MAP['book'];
337 CIRC_MOD_MAP['RESERVE'] = CIRC_MOD_MAP['book'];
338 CIRC_MOD_MAP['STATE-BOOK'] = {
339 SIPMediaType : '001',
341 durationRule : '35_days_1_renew',
342 recurringFinesRule : "10_cent_per_day",
343 maxFine : "overdue_mid"
345 CIRC_MOD_MAP['STATE-MFRM'] = {
346 SIPMediaType : '001',
348 durationRule : '14_days_2_renew',
349 recurringFinesRule : "10_cent_per_day",
350 maxFine : "overdue_mid"
353 /* this will set defaults even if no one asked for them */
354 log_debug("Calling getItemConfig() to force defaults..");
356 log_debug("getItemConfig() set magneticMedia to "+result.magneticMedia);
359 function getItemConfig() {
361 /* -----------------------------------------------------------------------------------
362 If a circ_modifier is defined on the copy and we have config info for the
363 provided circ_modifier, use that config. Otherwise fall back on the MARC item type
364 ----------------------------------------------------------------------------------- */
365 var marcType = getMARCItemType();
366 var circMod = copy.circ_modifier;
367 var itemForm = (marcXMLDoc) ? extractFixedField(marcXMLDoc,'Form') : "";
371 if( circMod && CIRC_MOD_MAP[circMod.toLowerCase()] ) {
372 /* if we have a config for the given circ_modifier, use it */
373 log_debug("a circ_mod config exists for the copy: " + circMod);
374 config = CIRC_MOD_MAP[circMod];
377 /* otherwise, fall back on the MARC item type */
380 log_debug("no circ_mod config found for "
381 +circMod+", falling back to MARC");
383 config = MARC_ITEM_TYPE_MAP[marcType];
386 /* if no config could be found, default to 'book' */
388 log_warn("item_config found no circ_mod OR MARC config, defaulting to 'book'");
389 config = CIRC_MOD_MAP['book'];
392 /* go ahead and set some default result
393 data (which may be overidden) */
394 for( var i in config ) {
395 log_debug("item_config setting result defaults: "+i+" = " +config[i]);
396 result[i] = config[i];