From debd9524a943c9bc3f44792cb91987f1cd5a2a01 Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 21 Oct 2009 19:08:43 +0000 Subject: [PATCH] Added support for claims-never-checked-out checkin mode. It does this: 1. sets the checkin backdate equal to the xact_start time to void any possible overdue fines 2. increments the patrons claims_never_checked_out count by 1 3. the copy does not capture any holds or go into transit 4. the copy is optionally marked as MISSING, based on org unit setting git-svn-id: svn://svn.open-ils.org/ILS/trunk@14540 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Application/Circ/Circulate.pm | 29 ++++++++++++++++++++-- Open-ILS/src/perlmods/OpenILS/Const.pm | 1 + Open-ILS/src/sql/Pg/002.schema.config.sql | 2 +- Open-ILS/src/sql/Pg/950.data.seed-values.sql | 10 ++++++++ ...4.data.org-setting-claim-nocheckout-missing.sql | 15 +++++++++++ 5 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 Open-ILS/src/sql/Pg/upgrade/0044.data.org-setting-claim-nocheckout-missing.sql diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm index 256dd0c135..89581e92d3 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm @@ -174,6 +174,7 @@ sub run_method { # -------------------------------------------------------------------------- $circulator->is_renewal(1) if $api =~ /renew/; $circulator->is_checkin(1) if $api =~ /checkin/; + $circulator->noop if $circulator->claims_never_checked_out; if($legacy_script_support and not $circulator->is_checkin) { $circulator->mk_script_runner(); @@ -407,6 +408,7 @@ my @AUTOLOAD_FIELDS = qw/ void_overdues parent_circ return_patron + claims_never_checked_out /; @@ -1893,7 +1895,17 @@ sub do_checkin { } } - $self->reshelve_copy; + if($self->claims_never_checked_out and + $U->ou_ancestor_setting_value($self->circ->circ_lib, 'circ.claim_never_checked_out.mark_missing')) { + + # the item was not supposed to be checked out to the user and should now be marked as missing + $self->copy->status(OILS_COPY_STATUS_MISSING); + $self->update_copy; + + } else { + $self->reshelve_copy; + } + return if $self->bail_out; unless($self->checkin_changed) { @@ -2277,6 +2289,18 @@ sub checkin_handle_circ { my $evt; my $obt; + if($self->claims_never_checked_out) { + + # backdate to void any fines accrued on the circ + $self->backdate($circ->xact_start); + + # update the patrons never-checked-out count + $self->patron->claims_never_checked_out_count( + $self->patron->claims_never_checked_out_count + 1); + $self->editor->update_actor_user($self->patron) or + $self->bail_on_events($self->editor->event); + } + # backdate the circ if necessary if($self->backdate) { $self->checkin_handle_backdate; @@ -2292,7 +2316,8 @@ sub checkin_handle_circ { if(!$circ->stop_fines) { $circ->stop_fines(OILS_STOP_FINES_CHECKIN); $circ->stop_fines(OILS_STOP_FINES_RENEW) if $self->is_renewal; - $circ->stop_fines_time('now') unless $self->backdate; + $circ->stop_fines(OILS_STOP_FINES_CLAIMS_NEVERCHECKEDOUT) if $self->claims_never_checked_out; + $circ->stop_fines_time('now'); $circ->stop_fines_time($self->backdate) if $self->backdate; } diff --git a/Open-ILS/src/perlmods/OpenILS/Const.pm b/Open-ILS/src/perlmods/OpenILS/Const.pm index 3af4aeab7d..5651390857 100644 --- a/Open-ILS/src/perlmods/OpenILS/Const.pm +++ b/Open-ILS/src/perlmods/OpenILS/Const.pm @@ -67,6 +67,7 @@ econst OILS_STOP_FINES_LOST => 'LOST'; econst OILS_STOP_FINES_CLAIMSRETURNED => 'CLAIMSRETURNED'; econst OILS_STOP_FINES_LONGOVERDUE => 'LONGOVERDUE'; econst OILS_STOP_FINES_MAX_FINES => 'MAXFINES'; +econst OILS_STOP_FINES_CLAIMS_NEVERCHECKEDOUT => 'CLAIMSNEVERCHECKEDOUT'; econst OILS_UNLIMITED_CIRC_DURATION => 'unlimited'; # --------------------------------------------------------------------- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index f8cf52451d..b1663f1cf2 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -51,7 +51,7 @@ CREATE TABLE config.upgrade_log ( install_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ); -INSERT INTO config.upgrade_log (version) VALUES ('0043'); -- Scott McKellar +INSERT INTO config.upgrade_log (version) VALUES ('0044'); -- berick CREATE TABLE config.bib_source ( diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index 2844a133d6..3029533986 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -2265,3 +2265,13 @@ INSERT INTO 'bool' ); +-- claims never checked out mark item missing +INSERT INTO + config.org_unit_setting_type ( name, label, description, datatype ) + VALUES ( + 'circ.claim_never_checked_out.mark_missing', + 'Claim Never Checked Out: Mark copy as missing', + 'When a circ is marked as claims-never-checked-out, mark the copy as missing', + 'bool' + ); + diff --git a/Open-ILS/src/sql/Pg/upgrade/0044.data.org-setting-claim-nocheckout-missing.sql b/Open-ILS/src/sql/Pg/upgrade/0044.data.org-setting-claim-nocheckout-missing.sql new file mode 100644 index 0000000000..5b0cd24501 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0044.data.org-setting-claim-nocheckout-missing.sql @@ -0,0 +1,15 @@ +BEGIN; + +INSERT INTO config.upgrade_log (version) VALUES ('0044'); + +INSERT INTO + config.org_unit_setting_type ( name, label, description, datatype ) + VALUES ( + 'circ.claim_never_checked_out.mark_missing', + 'Claim Never Checked Out: Mark copy as missing', + 'When a circ is marked as claims-never-checked-out, mark the copy as missing', + 'bool' + ); + + +COMMIT; -- 2.11.0