updated logging, added script support for SIP media type, updated date format on...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 14 Aug 2006 18:45:07 +0000 (18:45 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 14 Aug 2006 18:45:07 +0000 (18:45 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@5497 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/javascript/backend/circ/circ_item_config.js
Open-ILS/src/perlmods/OpenILS/SIP.pm
Open-ILS/src/perlmods/OpenILS/SIP/Item.pm
Open-ILS/src/perlmods/OpenILS/SIP/Patron.pm
Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Checkout.pm

index 084a926..27e1450 100644 (file)
@@ -1,6 +1,21 @@
 load_lib('circ/circ_lib.js');
 log_debug('loading circ_item_config.js ...');
 
+
+/* SIP media types
+000 Other
+001 Book
+002 Magazine
+003 Bound journal
+004 Audio tape
+005 Video tape
+006 CD/CDROM
+007 Diskette
+008 Book with diskette
+009 Book with CD
+010 Book with audio tape
+*/
+
 /* ----------------------------------------------------------------------------- 
        Configure the duration rules for the various item types and circ modifiers
 
@@ -12,6 +27,7 @@ log_debug('loading circ_item_config.js ...');
 var MARC_ITEM_TYPE_MAP = {
 
        a : { /* Language material [Books] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -19,6 +35,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        t : { /* Manuscript language material [Books] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -26,6 +43,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        g : { /* Projected medium [Videos, etc.] */
+               SIPMediaType                    : '005',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_0_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -33,6 +51,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        k : { /* Two-dimensional nonprojectable graphic [Card, charts, etc.] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '3_month_0_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -40,6 +59,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        r : { /* Three-dimensional artifact or naturally occurring object [Models, games, etc.] */ 
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -47,6 +67,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        o : { /* Kit [Mixture of item types] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -54,6 +75,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        p : { /* Mixed materials [Mixture of item types] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -61,6 +83,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        e : { /* Cartographic material [Map] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_2_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -68,6 +91,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        f : { /* Manuscript cartographic material [Map] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '3_days_1_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -75,6 +99,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        c : { /* Notated music [Printed music] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -82,6 +107,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        d : { /* Manuscript notated music [Printed music] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -89,6 +115,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        i : { /* Nonmusical sound recording [Audiobooks, sound effects, etc.] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -96,6 +123,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        j : { /* Musical sound recording [Music] */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -103,6 +131,7 @@ var MARC_ITEM_TYPE_MAP = {
        },
 
        m : { /* Computer file */
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -114,6 +143,7 @@ var MARC_ITEM_TYPE_MAP = {
 var CIRC_MOD_MAP = {
 
        'art'           : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '3_month_0_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -121,6 +151,7 @@ var CIRC_MOD_MAP = {
        },
 
        'atlas'         : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_2_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -128,6 +159,7 @@ var CIRC_MOD_MAP = {
        },
 
        'audiobook' : {
+               SIPMediaType                    : '004',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -135,6 +167,7 @@ var CIRC_MOD_MAP = {
        },
 
        'av' : {
+               SIPMediaType                    : '005',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_2_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -142,6 +175,7 @@ var CIRC_MOD_MAP = {
        },
 
        'bestseller'                            : {
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_2_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -149,6 +183,7 @@ var CIRC_MOD_MAP = {
        },
 
        'bestsellernh'                          : {
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_2_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -156,6 +191,7 @@ var CIRC_MOD_MAP = {
        },
 
        'book'                                          : {
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -163,6 +199,7 @@ var CIRC_MOD_MAP = {
        },
 
        'cd'                            : {
+               SIPMediaType                    : '006',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -170,6 +207,7 @@ var CIRC_MOD_MAP = {
        },
 
        'dvd'                                                   : {
+               SIPMediaType                    : '006',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_0_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -177,6 +215,7 @@ var CIRC_MOD_MAP = {
        },
 
        'e-book' : {
+               SIPMediaType                    : '001',
                magneticMedia                   : 'f',
                durationRule                    : '3_days_1_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -184,6 +223,7 @@ var CIRC_MOD_MAP = {
        },
 
        'equipment' : { 
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '3_days_1_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -191,6 +231,7 @@ var CIRC_MOD_MAP = {
        },
 
        'filmstrip'                                     : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -198,6 +239,7 @@ var CIRC_MOD_MAP = {
        },
 
        'kit' : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -205,6 +247,7 @@ var CIRC_MOD_MAP = {
        },
 
        'magazine'      : {
+               SIPMediaType                    : '002',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -212,6 +255,7 @@ var CIRC_MOD_MAP = {
        },
 
        'map' : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '3_days_1_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -219,6 +263,7 @@ var CIRC_MOD_MAP = {
        },
 
        'microform' : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -226,6 +271,7 @@ var CIRC_MOD_MAP = {
        },
 
        'music' : {
+               SIPMediaType                    : '004',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -233,6 +279,7 @@ var CIRC_MOD_MAP = {
        },
 
        'record'                                                : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '14_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -240,6 +287,7 @@ var CIRC_MOD_MAP = {
        },
 
        'software' : {
+               SIPMediaType                    : '006',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_2_renew',
                recurringFinesRule      : '10_cent_per_day',
@@ -247,11 +295,13 @@ var CIRC_MOD_MAP = {
        },
 
        'talking book'                          : {  
+               SIPMediaType                    : '006',
                magneticMedia                   : 'f',
                durationRule                    : 'unlimited',
        },
 
        'toy'                                                   : {
+               SIPMediaType                    : '000',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_2_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -259,6 +309,7 @@ var CIRC_MOD_MAP = {
        },
 
        'video' : {
+               SIPMediaType                    : '005',
                magneticMedia                   : 'f',
                durationRule                    : '7_days_0_renew',
                recurringFinesRule      : '50_cent_per_day',
@@ -285,12 +336,14 @@ CIRC_MOD_MAP['PAPERBACK']         = CIRC_MOD_MAP['book'];
 CIRC_MOD_MAP['REALIA']                 = CIRC_MOD_MAP['book'];
 CIRC_MOD_MAP['RESERVE']        = CIRC_MOD_MAP['book'];
 CIRC_MOD_MAP['STATE-BOOK'] = {
+       SIPMediaType                    : '001',
        magneticMedia                   : 'f',
        durationRule                    : '35_days_1_renew',
        recurringFinesRule      : "10_cent_per_day",
        maxFine                                 : "overdue_mid"
 };
 CIRC_MOD_MAP['STATE-MFRM'] =  {
+       SIPMediaType                    : '001',
        magneticMedia                   : 'f',
        durationRule                    : '14_days_2_renew',
        recurringFinesRule      : "10_cent_per_day",
index bddd83d..09c1eff 100644 (file)
@@ -18,6 +18,8 @@ use OpenSRF::System;
 use OpenILS::Utils::Fieldmapper;
 use OpenSRF::Utils::SettingsClient;
 use OpenILS::Application::AppUtils;
+use OpenSRF::Utils qw/:datetime/;
+use DateTime::Format::ISO8601;
 my $U = 'OpenILS::Application::AppUtils';
 
 my $editor;
@@ -87,6 +89,26 @@ sub make_editor {
        return $e;
 }
 
+sub format_date {
+       my $class = shift;
+       my $date = shift;
+       return "" unless $date;
+
+       $date = DateTime::Format::ISO8601->new->
+               parse_datetime(OpenSRF::Utils::clense_ISO8601($date));
+       my @time = localtime($date->epoch);
+
+       my $year = $time[5]+1900;
+       my $mon = $time[4]+1;
+       my $day = $time[3];
+
+       $mon =~ s/^(\d)$/0$1/;
+       $day =~ s/^(\d)$/0$1/;
+       $date = "$year$mon$day";
+       syslog('LOG_DEBUG', "OILS: formatted date: $date");
+       return $date;
+}
+
 
 
 sub login {
index d0a1229..359af76 100644 (file)
@@ -14,6 +14,9 @@ use OpenILS::SIP::Transaction;
 use OpenILS::Application::AppUtils;
 use OpenILS::Application::Circ::ScriptBuilder;
 use Data::Dumper;
+use OpenILS::Const qw/:const/;
+use OpenSRF::Utils qw/:datetime/;
+use DateTime::Format::ISO8601;
 my $U = 'OpenILS::Application::AppUtils';
 
 my %item_db;
@@ -111,7 +114,6 @@ sub run_attr_script {
 sub magnetic {
     my $self = shift;
         return 0 unless $self->run_attr_script;
-        syslog('LOG_DEBUG', "OILS: ITEM CONFIG => ". Dumper($self->{item_config_result}));
         my $mag = $self->{item_config_result}->{magneticMedia};
         syslog('LOG_DEBUG', "OILS: magnetic = $mag");
         return ($mag and $mag eq 't') ? 1 : 0;
@@ -119,7 +121,10 @@ sub magnetic {
 
 sub sip_media_type {
     my $self = shift;
-        return '001';
+        return 0 unless $self->run_attr_script;
+        my $media = $self->{item_config_result}->{SIPMediaType};
+        syslog('LOG_DEBUG', "OILS: media type = $media");
+        return ($media) ? $media : '001';
 }
 
 sub sip_item_properties {
@@ -173,13 +178,18 @@ sub current_location {
 # 13 Missing 
 sub sip_circulation_status {
        my $self = shift;
-       return '03' if $self->{copy}->status->name =~ /available/i;
-       return '04' if $self->{copy}->status->name =~ /checked out/i;
-       return '06' if $self->{copy}->status->name =~ /in process/i;
-       return '08' if $self->{copy}->status->name =~ /on holds shelf/i;
-       return '09' if $self->{copy}->status->name =~ /reshelving/i;
-       return '10' if $self->{copy}->status->name =~ /in transit/i;
-       return '12' if $self->{copy}->status->name =~ /lost/i;
+       my $stat = $self->{copy}->status->id;
+
+       return '02' if $stat == OILS_COPY_STATUS_ON_ORDER;
+       return '03' if $stat == OILS_COPY_STATUS_AVAILABLE;
+       return '04' if $stat == OILS_COPY_STATUS_CHECKED_OUT;
+       return '06' if $stat == OILS_COPY_STATUS_IN_PROCESS;
+       return '08' if $stat == OILS_COPY_STATUS_ON_HOLDS_SHELF;
+       return '09' if $stat == OILS_COPY_STATUS_RESHELVING;
+       return '10' if $stat == OILS_COPY_STATUS_IN_TRANSIT;
+       return '12' if $stat == OILS_COPY_STATUS_LOST;
+       return '13' if $stat == OILS_COPY_STATUS_MISSING;
+               
        return 01;
 }
 
@@ -198,8 +208,8 @@ sub fee {
 
 
 sub fee_currency {
-    my $self = shift;
-    'USD';
+       my $self = shift;
+       return OpenILS::SIP->config()->{implementation_config}->{currency};
 }
 
 sub owner {
@@ -234,8 +244,10 @@ sub due_date {
                        } )->[0];
        }
 
-       return $circ->due_date if $circ;
-       return 0;
+       return 0 unless $circ;
+       my $due = OpenILS::SIP->format_date($circ->due_date);
+       syslog('LOG_DEBUG', "Item due date = $due");
+       return $due;
 }
 
 sub recall_date {
index 32b566e..17f5fbd 100644 (file)
@@ -133,23 +133,8 @@ sub home_phone {
 
 sub sip_birthdate {
        my $self = shift;
-       my $dob = $self->{user}->dob;
-       return "" unless $dob;
-
-       $dob = DateTime::Format::ISO8601->new->
-               parse_datetime(OpenSRF::Utils::clense_ISO8601($dob));
-       my @time = localtime($dob->epoch);
-
-       my $year = $time[5]+1900;
-       my $mon = $time[4]+1;
-       my $day = $time[3];
-
-       $mon =~ s/^(\d)$/0$1/;
-       $day =~ s/^(\d)$/0$1/;
-       $dob = "$year$mon$day";
-
+       my $dob = OpenILS::SIP->format_date($self->{user}->dob);
        syslog('LOG_DEBUG', "OILS: Patron DOB = $dob");
-
        return $dob;
 }
 
@@ -327,7 +312,7 @@ sub __hold_to_title {
 
 sub __copy_to_title {
        my( $e, $copy ) = @_;
-       syslog('LOG_DEBUG', "OILS: copy_to_title(%s)", $copy->id);
+       #syslog('LOG_DEBUG', "OILS: copy_to_title(%s)", $copy->id);
        return $copy->dummy_title if $copy->call_number == -1;  
        my $vol = $e->retrieve_asset_call_number($copy->call_number);
        return __volume_to_title($e, $vol);
@@ -336,14 +321,14 @@ sub __copy_to_title {
 
 sub __volume_to_title {
        my( $e, $volume ) = @_;
-       syslog('LOG_DEBUG', "OILS: volume_to_title(%s)", $volume->id);
+       #syslog('LOG_DEBUG', "OILS: volume_to_title(%s)", $volume->id);
        return __record_to_title($e, $volume->record);
 }
 
 
 sub __record_to_title {
        my( $e, $title_id ) = @_;
-       syslog('LOG_DEBUG', "OILS: record_to_title($title_id)");
+       #syslog('LOG_DEBUG', "OILS: record_to_title($title_id)");
        my $mods = $U->simplereq(
                'open-ils.search',
                'open-ils.search.biblio.record.mods_slim.retrieve', $title_id );
@@ -352,7 +337,7 @@ sub __record_to_title {
 
 sub __metarecord_to_title {
        my( $e, $m_id ) = @_;
-       syslog('LOG_DEBUG', "OILS: metarecord_to_title($m_id)");
+       #syslog('LOG_DEBUG', "OILS: metarecord_to_title($m_id)");
        my $mods = $U->simplereq(
                'open-ils.search',
                'open-ils.search.biblio.metarecord.mods_slim.retrieve', $m_id);
@@ -385,9 +370,9 @@ sub overdue_items {
        #$overdues[$_] = __circ_to_title($self->{editor}, $overdues[$_]) for @overdues;
 
        my @o;
+       syslog('LOG_DEBUG', "OILS: overdue_items() fleshing circs @overdues");
        for my $circid (@overdues) {
                next unless $circid;
-               syslog('LOG_DEBUG', "OILS: overdue_items() fleshing circ $circid");
                push( @o, __circ_to_title($self->{editor}, $circid) );
        }
        @overdues = @o;
@@ -417,9 +402,9 @@ sub charged_items {
        #$charges[$_] = __circ_to_title($self->{editor}, $charges[$_]) for @charges;
 
        my @c;
+       syslog('LOG_DEBUG', "OILS: charged_items() fleshing circs @charges");
        for my $circid (@charges) {
                next unless $circid;
-               syslog('LOG_DEBUG', "OILS: charged_items() fleshing circ $circid");
                push( @c, __circ_to_title($self->{editor}, $circid) );
        }
        @charges = @c;
index 8e0165a..1ae77ca 100644 (file)
@@ -68,12 +68,14 @@ sub do_checkout {
                my @e;
                push( @e, $_->{textcode} ) for @$resp;
                syslog('LOG_INFO', "OILS: Checkout permit failed with events: @e");
+               $self->screen_msg('Patron is not allowed to check out the selected item');
                return 0;
        }
 
        if( my $code = $U->event_code($resp) ) {
                my $txt = $resp->{textcode};
                syslog('LOG_INFO', "OILS: Checkout permit failed with event $code : $txt");
+               $self->screen_msg('Patron is not allowed to check out the selected item');
                return 0; 
        }
 
@@ -84,6 +86,7 @@ sub do_checkout {
 
        } else {
                syslog('LOG_WARN', "OILS: Circ permit failed :\n" . Dumper($resp) );
+               $self->screen_msg('Patron is not allowed to check out the selected item');
                return 0;
        }
 
@@ -105,13 +108,14 @@ sub do_checkout {
                if( my $code = $U->event_code($resp) ) {
                        my $txt = $resp->{textcode};
                        syslog('LOG_INFO', "OILS: Checkout failed with event $code : $txt");
+                       $self->screen_msg('Checkout failed.  Please contact a librarian');
                        return 0; 
                }
 
                syslog('LOG_INFO', "OILS: Checkout succeeded");
 
                my $circ = $resp->{payload}->{circ};
-               $self->{'due'} = $circ->due_date;
+               $self->{'due'} = OpenILS::SIP->format_date($circ->due_date);
                $self->ok(1);
 
                return 1;