From: erickson Date: Wed, 9 Aug 2006 15:30:24 +0000 (+0000) Subject: added last-copy checks to volume transfer and copy update X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=4a1936931c4b79a3e6a9b4cc81f4914caf4e57ff;p=evergreen%2Fpines.git added last-copy checks to volume transfer and copy update git-svn-id: svn://svn.open-ils.org/ILS/trunk@5403 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm b/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm index dc9ff04215..0643e96bae 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm @@ -996,10 +996,7 @@ sub update_fleshed_copies { } elsif( $copy->ischanged ) { - $logger->info("vol-update: updating copy $copyid"); - return $editor->event unless - $editor->update_asset_copy( - $copy, {checkperm=>1, permorg=>$vol->owning_lib}); + $evt = update_copy( $editor, $override, $vol, $copy ); return $evt if $evt; } @@ -1013,16 +1010,24 @@ sub update_fleshed_copies { return undef; } -sub delete_copy { + +sub update_copy { my( $editor, $override, $vol, $copy ) = @_; - $logger->info("vol-update: deleting copy ".$copy->id); - $copy->deleted('t'); + $logger->info("vol-update: updating copy ".$copy->id); + my $orig_copy = $editor->retrieve_asset_copy($copy->id); + my $orig_vol = $editor->retrieve_asset_call_number($copy->call_number); - $editor->update_asset_copy( - $copy, {checkperm=>1, permorg=>$vol->owning_lib}) - or return $editor->event; + return $editor->event unless + $editor->update_asset_copy( + $copy, {checkperm=>1, permorg=>$vol->owning_lib}); + return remove_empty_objects($editor, $override, $orig_vol); +} + + +sub remove_empty_objects { + my( $editor, $override, $vol ) = @_; if( title_is_empty($editor, $vol->record) ) { if( $override ) { @@ -1046,13 +1051,28 @@ sub delete_copy { } } else { - return OpenILS::Event->new('TITLE_LAST_COPY'); + return OpenILS::Event->new('TITLE_LAST_COPY', payload => $vol->record ); } } return undef; } + +sub delete_copy { + my( $editor, $override, $vol, $copy ) = @_; + + $logger->info("vol-update: deleting copy ".$copy->id); + $copy->deleted('t'); + + $editor->update_asset_copy( + $copy, {checkperm=>1, permorg=>$vol->owning_lib}) + or return $editor->event; + + return remove_empty_objects($editor, $override, $vol); +} + + sub create_copy { my( $editor, $vol, $copy ) = @_; @@ -1191,6 +1211,8 @@ sub batch_volume_transfer { my $o_lib = $$args{lib}; my $vol_ids = $$args{volumes}; + my $override = 1 if $self->api_name =~ /override/; + $logger->info("merge: transferring volumes to lib=$o_lib and record=$rec"); my $e = new_editor(authtoken => $auth, xact =>1); @@ -1224,7 +1246,7 @@ sub batch_volume_transfer { # for each volume, see if there are any copies that have a # remote circ_lib (circ_lib != vol->owning_lib and != $o_lib ). # if so, warn them - unless( $self->api_name =~ /override/ ) { + unless( $override ) { for my $v (@all) { $logger->debug("merge: searching for copies with remote circ_lib for volume ".$v->id); @@ -1303,6 +1325,12 @@ sub batch_volume_transfer { $copy->edit_date('now'); $e->update_asset_copy($copy) or return $e->event; } + + # Now see if any empty records need to be deleted after all of this + for(@all) { + $evt = remove_empty_objects($e, $override, $_); + return $evt if $evt; + } } $logger->info("merge: transfer succeeded");