first draft of OWA/OWAL duration rules revamp using abstract rule designations
authorpzed <pzed@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Wed, 19 Aug 2009 17:18:13 +0000 (17:18 +0000)
committerpzed <pzed@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Wed, 19 Aug 2009 17:18:13 +0000 (17:18 +0000)
git-svn-id: svn://svn.open-ils.org/ILS-Contrib/conifer/trunk@626 6d9bc8c9-1ec2-4278-b937-99fde70a366f

circ/circ_duration_OWA.js
circ/circ_duration_OWAL.js

index 61155ce..907e0c2 100644 (file)
@@ -1,7 +1,6 @@
 // circ duration rules for Windsor Leddy (OWA)\r
 \r
-/* we use a date based identifier to pick up values in the log\r
-*/\r
+/* we use a date based identifier to pick up values in the log */\r
 var currentTime = new Date();\r
 var debugStamp = "circ" + (currentTime.getMonth() + 1) + "" +\r
         "" + currentTime.getDate() + "" + currentTime.getFullYear() +\r
@@ -14,374 +13,97 @@ var debugStamp = "circ" + (currentTime.getMonth() + 1) + "" +
 result.SIPMediaType = '001';\r
 result.magneticMedia = 'f';\r
 \r
-// if result.durationRule is not modified for a patron group, set default\r
-// once rules for non-circulating items are figured out, use most common value here and delete unnecessary lines below\r
-result.durationRule = 'non_circ';\r
+/* if result.durationRule is not modified for a patron group, set default\r
+ * this value will be used for all circ overrides! */\r
+result.durationRule = 'OWA_override';\r
 \r
 // for fines, set the most common value here\r
-result.recurringFinesRule = '50_cent_per_day';\r
-result.maxFine = '10_dollars';\r
+result.recurringFinesRule = 'OWA_daily';\r
+result.maxFine = 'OWA_normal';\r
 \r
 /* adjust rules by patron group and circ modifier */\r
 \r
 log_info(debugStamp + 'patronProfile is ' + patronProfile + ' - modifier ' + copy.circ_modifier);\r
 \r
-switch(patronProfile) {\r
-\r
-    // currently, Patrons group is not used; rules are the same as Readers group\r
-    case 'Patrons':\r
-        switch(copy.circ_modifier) {\r
-            case 'CIRC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'CRC MEDIA':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'CRC SPEC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'CRC TEXT':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'DOC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'DVD VIDEO':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'MAP (CIRCULATING)':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'MEDIA':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'MFORM':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'REF':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'THESIS':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-        }\r
-        break;\r
-    \r
-    // Faculty includes former AFFL FAC, EXEC, FAC, and LAW FACLTY\r
-    case 'Faculty':\r
-        switch(copy.circ_modifier) {\r
-            case 'CD MUSIC':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'CIRC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'CIRC SHORT':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'CRC MEDIA':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'CRC SPEC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'CRC TEXT':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'DOC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'DVD VIDEO':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'MAP (CIRCULATING)':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'MEDIA':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'MFORM':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'REF':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'RSV1':\r
-                result.durationRule = '1_day_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV2':\r
-                result.durationRule = '120_minutes_0_renew';\r
-                result.recurringFinesRule = '5_cents_per_minute';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV3':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV7':\r
-                result.durationRule = '7_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'SER':\r
-                result.durationRule = '1_day_1_renew';\r
-                result.recurringFinesRule = '2_dollars_per_day';\r
-                break;\r
-            case 'THESIS':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-        }\r
-        break;\r
-\r
-    // includes former STAF, ILL, EXTM, and BINDERY\r
-    case 'Staff members':\r
-        switch(copy.circ_modifier) {\r
-            case 'CD MUSIC':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'CIRC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'CIRC SHORT':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'CRC MEDIA':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'CRC SPEC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'CRC TEXT':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'DOC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'DVD VIDEO':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'MAP (CIRCULATING)':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'MEDIA':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'MFORM':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'REF':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'RSV1':\r
-                result.durationRule = '1_day_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV2':\r
-                result.durationRule = '120_minutes_0_renew';\r
-                result.recurringFinesRule = '5_cents_per_minute';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV3':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV7':\r
-                result.durationRule = '7_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'SER':\r
-                result.durationRule = '1_day_1_renew';\r
-                result.recurringFinesRule = '2_dollars_per_day';\r
-                break;\r
-            case 'THESIS':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-        }\r
-        break;\r
-\r
-    // includes former GRAD and AFFL GRAD\r
-    case 'Graduate':\r
-        switch(copy.circ_modifier) {\r
-            case 'CIRC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'CIRC SHORT':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'CRC MEDIA':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'CRC SPEC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'CRC TEXT':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'DOC':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'DVD VIDEO':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'MAP (CIRCULATING)':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'MEDIA':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'MFORM':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-            case 'REF':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'RSV1':\r
-                result.durationRule = '1_day_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV2':\r
-                result.durationRule = '120_minutes_0_renew';\r
-                result.recurringFinesRule = '5_cents_per_minute';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV3':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV7':\r
-                result.durationRule = '7_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'SER':\r
-                result.durationRule = '1_day_1_renew';\r
-                result.recurringFinesRule = '2_dollars_per_day';\r
-                break;\r
-            case 'THESIS':\r
-                result.durationRule = '28_days_3_renew';\r
-                break;\r
-        }\r
-        break;\r
-    \r
-    // includes former DIRB, EXAL, EXDB, EXOT, ONEPASS, and LAW COUR\r
-    case 'Readers':\r
-        switch(copy.circ_modifier) {\r
-            case 'CIRC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'CRC MEDIA':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'CRC SPEC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'CRC TEXT':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'DOC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'DVD VIDEO':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'MAP (CIRCULATING)':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'MAP (REFERENCE)':\r
-                // use defaults\r
-                break;\r
-            case 'MEDIA':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'MFORM':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'REF':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'THESIS':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-        }\r
-        break;\r
+if (isValidPatron(patronProfile)) {\r
+    var temp_array = patronProfile.split(" ");\r
+    var profileFirst = temp_array[0];\r
     \r
-    // includes former AFFL UND, UND, LAW1, LAW2, and LAW3\r
-    case 'Undergraduate':\r
-        switch(copy.circ_modifier) {\r
-            case 'CIRC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'CIRC SHORT':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'CRC MEDIA':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'CRC SPEC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'CRC TEXT':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'DOC':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'DVD VIDEO':\r
-                result.durationRule = '3_days_1_renew';\r
-                break;\r
-            case 'MAP (CIRCULATING)':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'MEDIA':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'MFORM':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-            case 'REF':\r
-                result.durationRule = '7_days_3_renew';\r
-                break;\r
-            case 'RSV1':\r
-                result.durationRule = '1_day_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV2':\r
-                result.durationRule = '120_minutes_0_renew';\r
-                result.recurringFinesRule = '5_cents_per_minute';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV3':\r
-                result.durationRule = '3_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'RSV7':\r
-                result.durationRule = '7_days_1_renew';\r
-                result.recurringFinesRule = '10_dollars_per_day';\r
-                result.maxFine = '50_dollars';\r
-                break;\r
-            case 'THESIS':\r
-                result.durationRule = '14_days_3_renew';\r
-                break;\r
-        }\r
-        break;\r
-\r
+    switch(copy.circ_modifier) {\r
+        case 'CD MUSIC':\r
+            if (profileFirst == 'Faculty' || profileFirst == 'Staff') {\r
+                result.durationRule = 'OWA_audiovisual';\r
+            }\r
+            break;\r
+        case 'CIRC':\r
+            result.durationRule = 'OWA_' + profileFirst;\r
+            break;\r
+        case 'CIRC SHORT':\r
+            result.durationRule = 'OWA_short';\r
+            result.recurringFinesRule = 'OWA_daily_short';\r
+            result.maxFine = 'OWA_short';\r
+            break;\r
+        case 'CRC MEDIA':\r
+            result.durationRule = 'OWA_sevenday';\r
+            break;\r
+        case 'CRC SPEC':\r
+            result.durationRule = 'OWA_' + profileFirst;\r
+            break;\r
+        case 'CRC TEXT':\r
+            result.durationRule = 'OWA_' + profileFirst;\r
+            break;\r
+        case 'DOC':\r
+            result.durationRule = 'OWA_' + profileFirst;\r
+            break;\r
+        case 'DVD VIDEO':\r
+            result.durationRule = 'OWA_audiovisual';\r
+            break;\r
+        case 'MEDIA':\r
+            result.durationRule = 'OWA_' + profileFirst;\r
+            break;\r
+        case 'MFORM':\r
+            result.durationRule = 'OWA_' + profileFirst;\r
+            break;\r
+        case 'REF':\r
+            result.durationRule = 'OWA_sevenday';\r
+            break;\r
+        case 'RSV1':\r
+            result.durationRule = 'OWA_rsv_oneday';\r
+            result.recurringFinesRule = 'OWA_daily_rsv';\r
+            result.maxFine = 'OWA_rsv';\r
+            break;\r
+        case 'RSV2':\r
+            result.durationRule = 'OWA_rsv_twohour';\r
+            result.recurringFinesRule = 'OWA_hourly_rsv';\r
+            result.maxFine = 'OWA_rsv';\r
+            break;\r
+        case 'RSV3':\r
+            result.durationRule = 'OWA_rsv_threeday';\r
+            result.recurringFinesRule = 'OWA_daily_rsv';\r
+            result.maxFine = 'OWA_rsv';\r
+            break;\r
+        case 'RSV7':\r
+            result.durationRule = 'OWA_rsv_sevenday';\r
+            result.recurringFinesRule = 'OWA_daily_rsv';\r
+            result.maxFine = 'OWA_rsv';\r
+            break;\r
+        case 'SER':\r
+            result.durationRule = 'OWA_serials';\r
+            result.recurringFinesRule = 'OWA_daily_serials';\r
+            break;\r
+        case 'THESIS':\r
+            result.durationRule = 'OWA_' + profileFirst;\r
+            break;\r
+    }\r
 }\r
 log_info("circ0814 - results: " + result.durationRule);\r
+\r
+function isValidPatron(patronProfile) {\r
+    var valid_patrons = ['Faculty', 'Graduate', 'Undergraduate', 'Staff members', 'Readers'];\r
+    for (var i = 0; i < valid_patrons.length; i++) {\r
+        if (valid_patrons[i] == patronProfile) {\r
+            return true;\r
+        }\r
+    }\r
+    return false;\r
+}
\ No newline at end of file
index 3768bf7..f7936c4 100644 (file)
 // circ duration rules for Windsor Law (OWAL)\r
 \r
+/* we use a date based identifier to pick up values in the log */\r
+var currentTime = new Date();\r
+var debugStamp = "circ" + (currentTime.getMonth() + 1) + "" +\r
+        "" + currentTime.getDate() + "" + currentTime.getFullYear() +\r
+        ": ";\r
+\r
 /* set item type defaults - if the either the patron group or the circ modifier\r
  is missing or invalid, these settings will be used */\r
* is missing or invalid, these settings will be used */\r
 \r
 // do these first two have any significance for us?\r
 result.SIPMediaType = '001';\r
 result.magneticMedia = 'f';\r
 \r
-// if result.durationRule is not modified for a patron group, set default\r
-// once rules for non-circulating items are figured out, use most common value here and delete unnecessary lines below\r
+/* if result.durationRule is not modified for a patron group, set default\r
+ * this value will be used for all circ overrides! */\r
 result.durationRule = 'non_circ';\r
 \r
 // for fines, set the most common value here\r
-result.recurringFinesRule = '50_cent_per_day';\r
-result.maxFine = '50_dollars';\r
+result.recurringFinesRule = 'OWAL_daily';\r
+result.maxFine = 'OWAL_normal';\r
 \r
 /* adjust rules by patron group and circ modifier */\r
 \r
-if (patron.home_ou.shortname == "OWAL") {  // define Law patron rules first\r
+log_info(debugStamp + 'patronProfile is ' + patronProfile + ' - modifier ' + copy.circ_modifier);\r
 \r
-    switch(patronProfile) {\r
-               \r
-        case 'Faculty':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '28_days_5_renew';\r
-                    result.recurringFinesRule = 'free';\r
-                    break;\r
-                case 'LAW NOCIRC':\r
-                    result.durationRule = '14_days_5_renew';\r
-                    result.recurringFinesRule = 'free';\r
-                    break;\r
-                case 'LAW RES1D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = 'free';\r
-                    break;\r
-                case 'LAW RES3D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = 'free';\r
-                    break;\r
-                case 'LAW RES3H':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = 'free';\r
-                    break;\r
-                case 'LAW RES5H':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = 'free';\r
-                    break;\r
-                case 'LAW SERIAL':\r
-                    result.durationRule = '14_days_5_renew';\r
-                    result.recurringFinesRule = 'free';\r
-                    break;\r
-            }\r
-            break;\r
+if (isValidPatron(patronProfile)) {\r
+    var temp_array = patronProfile.split(" ");\r
+    var profileFirst = temp_array[0];\r
     \r
-        case 'Staff members':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '28_days_5_renew';\r
-                    break;\r
-                case 'LAW RES1D':\r
-                    result.durationRule = '1_day_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3H':\r
-                    result.durationRule = '3_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES5H':\r
-                    result.durationRule = '5_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
+    switch(copy.circ_modifier) {\r
+        case 'LAW MONO':\r
+            if (patronProfile == 'Readers' && patron.home_ou.shortname != 'OWAL') {\r
+                // do nothing\r
+            } else {\r
+                result.durationRule = 'OWAL_' + profileFirst;\r
             }\r
             break;\r
-\r
-        case 'Readers':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '7_days_3_renew';\r
-                    result.maxFine = '10_dollars';\r
-                    break;\r
-            }\r
+        case 'LAW NOCIRC':\r
+            // Faculty exception handled below\r
             break;\r
-            \r
-        case 'Undergraduate':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '28_days_5_renew';\r
-                    break;\r
-                case 'LAW RES1D':\r
-                    result.durationRule = '1_day_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3H':\r
-                    result.durationRule = '3_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES5H':\r
-                    result.durationRule = '5_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-            }\r
+        case 'LAW RES1D':\r
+            result.durationRule = 'OWAL_rsv_oneday';\r
+            result.recurringFinesRule = 'OWAL_hourly';\r
             break;\r
-    }\r
-\r
-} else {  // define patron rules for non-Law patrons\r
-\r
-    switch(patronProfile) {\r
-               \r
-        case 'Faculty':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '28_days_5_renew';\r
-                    break;\r
-                case 'LAW NOCIRC':\r
-                    result.durationRule = '14_days_5_renew';\r
-                    break;\r
-                case 'LAW RES1D':\r
-                    result.durationRule = '1_day_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3H':\r
-                    result.durationRule = '3_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES5H':\r
-                    result.durationRule = '5_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW SERIAL':\r
-                    result.durationRule = '14_days_5_renew';\r
-                    break;\r
-            }\r
+        case 'LAW RES3D':\r
+            result.durationRule = 'OWAL_rsv_threeday';\r
+            result.recurringFinesRule = 'OWAL_hourly';\r
             break;\r
-    \r
-        case 'Staff members':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '28_days_5_renew';\r
-                    break;\r
-                case 'LAW RES1D':\r
-                    result.durationRule = '1_day_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3H':\r
-                    result.durationRule = '3_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES5H':\r
-                    result.durationRule = '5_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-            }\r
+        case 'LAW RES3H':\r
+            result.durationRule = 'OWAL_rsv_threehour';\r
+            result.recurringFinesRule = 'OWAL_hourly';\r
             break;\r
-     \r
-        case 'Graduate':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '28_days_5_renew';\r
-                    break;\r
-                case 'LAW RES1D':\r
-                    result.durationRule = '1_day_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3H':\r
-                    result.durationRule = '3_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES5H':\r
-                    result.durationRule = '5_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-            }\r
+        case 'LAW RES5H':\r
+            result.durationRule = 'OWAL_rsv_fivehour';\r
+            result.recurringFinesRule = 'OWAL_hourly';\r
             break;\r
-\r
-        case 'Undergraduate':\r
-            switch(copy.circ_modifier) {\r
-                case 'LAW MONO':\r
-                    result.durationRule = '28_days_5_renew';\r
-                    break;\r
-                case 'LAW RES1D':\r
-                    result.durationRule = '1_day_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3D':\r
-                    result.durationRule = '3_days_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES3H':\r
-                    result.durationRule = '3_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-                case 'LAW RES5H':\r
-                    result.durationRule = '5_hours_5_renew';\r
-                    result.recurringFinesRule = '60_cent_per_hour';\r
-                    break;\r
-            }\r
+        case 'LAW SERIAL':\r
+            // Faculty exception handled below\r
             break;\r
     }\r
+\r
+    //exceptions for Law Faculty\r
+    if (patron.home_ou.shortname == "OWAL" && patronProfile == "Faculty") {\r
+        result.recurringFines.Rule = 'free';\r
+        if (copy.circ_modifier == 'LAW NOCIRC') {\r
+            result.durationRule = 'OWAL_faculty_nocirc';\r
+        } else if (copy.circ_modifier == 'LAW SERIAL') {\r
+            result.durationRule = 'OWAL_faculty_serials';\r
+        } else if (copy.circ_modifier.slice(0, 6) == 'LAW RES') {\r
+            result.durationRule = 'OWAL_rsv_threeday';\r
+        }\r
+    }\r
 }\r
+log_info("circ0814 - results: " + result.durationRule);\r
+\r
+function isValidPatron(patronProfile) {\r
+    var valid_patrons = ['Faculty', 'Graduate', 'Undergraduate', 'Staff members', 'Readers'];\r
+    for (var i = 0; i < valid_patrons.length; i++) {\r
+        if (valid_patrons[i] == patronProfile) {\r
+            return true;\r
+        }\r
+    }\r
+    return false;\r
+}
\ No newline at end of file