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 : '005',
180 durationRule : '3_days_1_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 : '7_days_2_renew',
197 recurringFinesRule : '50_cent_per_day',
198 maxFine : 'overdue_mid'
202 SIPMediaType : '001',
204 durationRule : '14_days_2_renew',
205 recurringFinesRule : '10_cent_per_day',
206 maxFine : 'overdue_mid'
210 SIPMediaType : '006',
212 durationRule : '14_days_2_renew',
213 recurringFinesRule : '10_cent_per_day',
214 maxFine : 'overdue_mid'
218 SIPMediaType : '006',
220 durationRule : '7_days_0_renew',
221 recurringFinesRule : '50_cent_per_day',
222 maxFine : 'overdue_mid'
226 SIPMediaType : '006',
228 durationRule : '14_days_2_renew',
229 recurringFinesRule : '10_cent_per_day',
230 maxFine : 'overdue_mid'
235 SIPMediaType : '001',
237 durationRule : '3_days_1_renew',
238 recurringFinesRule : '50_cent_per_day',
239 maxFine : 'overdue_mid'
243 SIPMediaType : '000',
245 durationRule : '3_days_1_renew',
246 recurringFinesRule : '50_cent_per_day',
247 maxFine : 'overdue_mid'
251 SIPMediaType : '000',
253 durationRule : '14_days_2_renew',
254 recurringFinesRule : '10_cent_per_day',
255 maxFine : 'overdue_mid'
259 SIPMediaType : '000',
261 durationRule : '14_days_2_renew',
262 recurringFinesRule : '10_cent_per_day',
263 maxFine : 'overdue_mid'
267 SIPMediaType : '002',
269 durationRule : '14_days_2_renew',
270 recurringFinesRule : '10_cent_per_day',
271 maxFine : 'overdue_mid'
275 SIPMediaType : '000',
277 durationRule : '3_days_1_renew',
278 recurringFinesRule : '50_cent_per_day',
279 maxFine : 'overdue_mid'
283 SIPMediaType : '000',
285 durationRule : '14_days_2_renew',
286 recurringFinesRule : '10_cent_per_day',
287 maxFine : 'overdue_mid'
291 SIPMediaType : '004',
293 durationRule : '14_days_2_renew',
294 recurringFinesRule : '10_cent_per_day',
295 maxFine : 'overdue_mid'
299 SIPMediaType : '000',
301 durationRule : '14_days_2_renew',
302 recurringFinesRule : '10_cent_per_day',
303 maxFine : 'overdue_mid'
307 SIPMediaType : '006',
309 durationRule : '7_days_2_renew',
310 recurringFinesRule : '10_cent_per_day',
311 maxFine : 'overdue_mid'
315 SIPMediaType : '006',
317 durationRule : 'unlimited',
321 SIPMediaType : '000',
323 durationRule : '7_days_2_renew',
324 recurringFinesRule : '50_cent_per_day',
325 maxFine : 'overdue_mid'
329 SIPMediaType : '005',
331 durationRule : '7_days_0_renew',
332 recurringFinesRule : '50_cent_per_day',
333 maxFine : 'overdue_mid'
337 SIPMediaType : '005',
339 durationRule : '14_days_2_renew',
340 recurringFinesRule : '50_cent_per_day',
341 maxFine : 'overdue_mid'
345 SIPMediaType : '001',
347 durationRule : '7_days_2_renew',
348 recurringFinesRule : '10_cent_per_day',
349 maxFine : 'overdue_mid'
355 /* Set up rules for legacy types */
356 CIRC_MOD_MAP['DEPOSIT'] = CIRC_MOD_MAP['book'];
357 CIRC_MOD_MAP['E-AUDIO'] = CIRC_MOD_MAP['book'];
358 CIRC_MOD_MAP['EQUIP'] = CIRC_MOD_MAP['book'];
359 CIRC_MOD_MAP['FACNEWBK'] = CIRC_MOD_MAP['book'];
360 CIRC_MOD_MAP['MAG-CIRC'] = CIRC_MOD_MAP['book'];
361 CIRC_MOD_MAP['MAG-NOCIRC'] = CIRC_MOD_MAP['book'];
362 CIRC_MOD_MAP['NEW-AV'] = CIRC_MOD_MAP['book'];
363 CIRC_MOD_MAP['NEW-BOOK'] = CIRC_MOD_MAP['book'];
364 CIRC_MOD_MAP['NEWSPAPER'] = CIRC_MOD_MAP['book'];
365 CIRC_MOD_MAP['NILS-ITEM'] = CIRC_MOD_MAP['book'];
366 CIRC_MOD_MAP['OUTREACH'] = CIRC_MOD_MAP['book'];
367 CIRC_MOD_MAP['PAMPHLET'] = CIRC_MOD_MAP['book'];
368 CIRC_MOD_MAP['PAPERBACK'] = CIRC_MOD_MAP['book'];
369 CIRC_MOD_MAP['REALIA'] = CIRC_MOD_MAP['book'];
370 CIRC_MOD_MAP['RESERVE'] = CIRC_MOD_MAP['book'];
371 CIRC_MOD_MAP['STATE-BOOK'] = {
372 SIPMediaType : '001',
374 durationRule : '35_days_1_renew',
375 recurringFinesRule : "10_cent_per_day",
376 maxFine : "overdue_mid"
378 CIRC_MOD_MAP['STATE-MFRM'] = {
379 SIPMediaType : '001',
381 durationRule : '14_days_2_renew',
382 recurringFinesRule : "10_cent_per_day",
383 maxFine : "overdue_mid"
386 /* this will set defaults even if no one asked for them */
387 log_debug("Calling getItemConfig() to force defaults..");
389 log_debug("getItemConfig() set magneticMedia to "+result.magneticMedia);
392 function getItemConfig() {
394 /* -----------------------------------------------------------------------------------
395 If a circ_modifier is defined on the copy and we have config info for the
396 provided circ_modifier, use that config. Otherwise fall back on the MARC item type
397 ----------------------------------------------------------------------------------- */
398 var marcType = getMARCItemType();
399 var circMod = (copy.circ_modifier) ? copy.circ_modifier.toLowerCase() : '';
400 var itemForm = (marcXMLDoc) ? extractFixedField(marcXMLDoc,'Form') : "";
404 if( circMod && CIRC_MOD_MAP[circMod] ) {
405 /* if we have a config for the given circ_modifier, use it */
406 log_debug("a circ_mod config exists for the copy: " + circMod);
407 config = CIRC_MOD_MAP[circMod];
410 /* otherwise, fall back on the MARC item type */
413 log_debug("no circ_mod config found for "
414 +circMod+", falling back to MARC");
416 config = MARC_ITEM_TYPE_MAP[marcType];
419 /* if no config could be found, default to 'book' */
421 log_warn("item_config found no circ_mod OR MARC config, defaulting to 'book'");
422 config = CIRC_MOD_MAP['book'];
425 /* go ahead and set some default result
426 data (which may be overidden) */
427 for( var i in config ) {
428 log_debug("item_config setting result defaults: "+i+" = " +config[i]);
429 result[i] = config[i];