[open-ils-commits] r10472 -
trunk/Open-ILS/src/perlmods/OpenILS/Application
svn at svn.open-ils.org
svn at svn.open-ils.org
Thu Aug 28 14:34:51 EDT 2008
Author: erickson
Date: 2008-08-28 14:34:48 -0400 (Thu, 28 Aug 2008)
New Revision: 10472
Modified:
trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm
Log:
repaired record auto-delete code which could leave un-deleted volumes attached to a deleted copy if the volumes had no copies
Modified: trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm
===================================================================
--- trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm 2008-08-28 18:34:43 UTC (rev 10471)
+++ trunk/Open-ILS/src/perlmods/OpenILS/Application/Cat.pm 2008-08-28 18:34:48 UTC (rev 10472)
@@ -880,19 +880,24 @@
# ---------------------------------------------------------------------------
+# returns true if the given title (id) has no un-deleted volumes or
+# copies attached. If a context volume is defined, a record
+# is considered empty only if the context volume is the only
+# remaining volume on the record.
# ---------------------------------------------------------------------------
-
-# returns true if the given title (id) has no un-deleted
-# copies attached
sub title_is_empty {
- my( $editor, $rid ) = @_;
+ my( $editor, $rid, $vol_id ) = @_;
return 0 if $rid == OILS_PRECAT_RECORD;
my $cnlist = $editor->search_asset_call_number(
{ record => $rid, deleted => 'f' }, { idlist => 1 } );
- return 1 unless @$cnlist;
+ return 1 unless @$cnlist; # no attached volumes
+ return 0 if @$cnlist > 1; # multiple attached volumes
+ return 0 unless $$cnlist[0] == $vol_id; # attached volume is not the context vol.
+
+ # see if the sole remaining context volume has any attached copies
for my $cn (@$cnlist) {
my $copylist = $editor->search_asset_copy(
[
@@ -1112,7 +1117,7 @@
my $aoe = $U->ou_ancestor_setting_value(
$editor->requestor->ws_ou, 'cat.bib.alert_on_empty', $editor);
- if( title_is_empty($editor, $vol->record) ) {
+ if( title_is_empty($editor, $vol->record, $vol->id) ) {
# delete this volume if it's not already marked as deleted
unless( $U->is_true($vol->deleted) || $vol->isdeleted ) {
More information about the open-ils-commits
mailing list