From d4364af13bbd41dca868ac039e56deeae3a63522 Mon Sep 17 00:00:00 2001 From: erickson Date: Mon, 3 Apr 2006 15:10:44 +0000 Subject: [PATCH] added backdate support for claims_returned git-svn-id: svn://svn.open-ils.org/ILS/trunk@3535 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../src/perlmods/OpenILS/Application/Circ.pm | 28 ++++++++++++++----- .../OpenILS/Application/Circ/Circulate.pm | 2 +- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm index c174abd267..93193b71f4 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ.pm @@ -159,9 +159,12 @@ __PACKAGE__->register_method( NOTES sub set_circ_lost { - my( $self, $client, $login, $barcode ) = @_; + my( $self, $client, $login, $args ) = @_; my( $user, $circ, $copy, $evt ); + my $barcode = $$args{barcode}; + my $backdate = $$args{backdate}; + ( $user, $evt ) = $U->checkses($login); return $evt if $evt; @@ -169,15 +172,17 @@ sub set_circ_lost { ($copy, $evt) = $U->fetch_copy_by_barcode($barcode); return $evt if $evt; - my $isclaims = $self->api_name =~ /claims_returned/; - my $islost = $self->api_name =~ /lost/; + my $isclaims = $self->api_name =~ /claims_returned/; + my $islost = $self->api_name =~ /lost/; + my $session = $U->start_db_session(); + # if setting to list, update the copy's statua if( $islost ) { my $newstat = $U->copy_status_from_name('lost') if $islost; if( $copy->status ne $newstat->id ) { $copy->status($newstat); - $U->update_copy($copy, $user->id); + $U->update_copy(copy => $copy, editor => $user->id, session => $session); } } @@ -185,6 +190,7 @@ sub set_circ_lost { ( $circ ) = $U->fetch_open_circulation( $copy->id ); return 1 unless $circ; + if($islost) { $evt = $U->check_perms($user->id, $circ->circ_lib, 'SET_CIRC_LOST'); return $evt if $evt; @@ -192,16 +198,24 @@ sub set_circ_lost { } if($isclaims) { + $evt = $U->check_perms($user->id, $circ->circ_lib, 'SET_CIRC_CLAIMS_RETURNED'); return $evt if $evt; $circ->stop_fines("CLAIMSRETURNED"); + + # allow the caller to backdate the circulation and void any fines + # that occurred after the backdate + if($backdate) { + OpenILS::Application::Circ::Circulate::_checkin_handle_backdate( + $backdate, $circ, $user, $session ); + } } - my $s = $U->simplereq( - 'open-ils.storage', - "open-ils.storage.direct.action.circulation.update", $circ ); + my $s = $session->request( + "open-ils.storage.direct.action.circulation.update", $circ )->gather(1); return $U->DB_UPDATE_FAILED($circ) unless defined($s); + $U->commit_db_session($session); return 1; } diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm index a392f3f816..76ffa0a502 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm @@ -1354,7 +1354,7 @@ sub _checkin_handle_backdate { my( $backdate, $circ, $requestor, $session ) = @_; $logger->activity("User ".$requestor->id. - " backdating checkin copy [".$circ->target_copy."] to date: $backdate"); + " backdating circ [".$circ->target_copy."] to date: $backdate"); $circ->xact_finish($backdate); -- 2.43.2