From a84c7c0289067bf0036797a6a5de5f429698fc51 Mon Sep 17 00:00:00 2001 From: erickson Date: Mon, 14 Aug 2006 18:45:07 +0000 Subject: [PATCH] updated logging, added script support for SIP media type, updated date format on due date git-svn-id: svn://svn.open-ils.org/ILS/trunk@5497 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../backend/circ/circ_item_config.js | 53 +++++++++++++++++++ Open-ILS/src/perlmods/OpenILS/SIP.pm | 22 ++++++++ Open-ILS/src/perlmods/OpenILS/SIP/Item.pm | 38 ++++++++----- Open-ILS/src/perlmods/OpenILS/SIP/Patron.pm | 29 +++------- .../OpenILS/SIP/Transaction/Checkout.pm | 6 ++- 5 files changed, 112 insertions(+), 36 deletions(-) diff --git a/Open-ILS/src/javascript/backend/circ/circ_item_config.js b/Open-ILS/src/javascript/backend/circ/circ_item_config.js index 084a9263b2..27e14502c9 100644 --- a/Open-ILS/src/javascript/backend/circ/circ_item_config.js +++ b/Open-ILS/src/javascript/backend/circ/circ_item_config.js @@ -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", diff --git a/Open-ILS/src/perlmods/OpenILS/SIP.pm b/Open-ILS/src/perlmods/OpenILS/SIP.pm index bddd83df8c..09c1effd4a 100644 --- a/Open-ILS/src/perlmods/OpenILS/SIP.pm +++ b/Open-ILS/src/perlmods/OpenILS/SIP.pm @@ -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 { diff --git a/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm b/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm index d0a1229d14..359af7606c 100644 --- a/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm +++ b/Open-ILS/src/perlmods/OpenILS/SIP/Item.pm @@ -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 { diff --git a/Open-ILS/src/perlmods/OpenILS/SIP/Patron.pm b/Open-ILS/src/perlmods/OpenILS/SIP/Patron.pm index 32b566eca9..17f5fbd52b 100644 --- a/Open-ILS/src/perlmods/OpenILS/SIP/Patron.pm +++ b/Open-ILS/src/perlmods/OpenILS/SIP/Patron.pm @@ -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; diff --git a/Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Checkout.pm b/Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Checkout.pm index 8e0165ab91..1ae77cac82 100644 --- a/Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Checkout.pm +++ b/Open-ILS/src/perlmods/OpenILS/SIP/Transaction/Checkout.pm @@ -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; -- 2.43.2