fixed copy note delete to use cstore + transaction
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 10 Oct 2006 19:52:45 +0000 (19:52 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 10 Oct 2006 19:52:45 +0000 (19:52 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6434 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Circ.pm

index b895849..5c000f4 100644 (file)
@@ -726,7 +726,6 @@ __PACKAGE__->register_method(
 
 sub create_copy_note {
        my( $self, $connection, $authtoken, $note ) = @_;
-       my( $cnowner, $requestor, $evt );
 
        my $e = new_editor(xact=>1, authtoken=>$authtoken);
        return $e->event unless $e->checkauth;
@@ -762,29 +761,29 @@ __PACKAGE__->register_method(
                @param noteid The id of the note to delete
                @return 1 on success - Event otherwise.
                /);
-
 sub delete_copy_note {
        my( $self, $conn, $authtoken, $noteid ) = @_;
-       my( $requestor, $note, $owner, $evt );
-
-       ($requestor, $evt) = $U->checkses($authtoken);
-       return $evt if $evt;
 
-       ($note, $evt) = $U->fetch_copy_note($noteid);
-       return $evt if $evt;
+       my $e = new_editor(xact=>1, authtoken=>$authtoken);
+       return $e->die_event unless $e->checkauth;
+
+       my $note = $e->retrieve_asset_copy_note([
+               $noteid,
+               { flesh => 2,
+                       flesh_fields => {
+                               'acpn' => [ 'owning_copy' ],
+                               'acp' => [ 'call_number' ],
+                       }
+               }
+       ]) or return $e->die_event;
 
-       if( $note->creator ne $requestor->id ) {
-               ($owner, $evt) = $U->fetch_copy_onwer($note->owning_copy);
-               return $evt if $evt;
-               $evt = $U->check_perms($requestor->id, $owner, 'DELETE_COPY_NOTE');
-               return $evt if $evt;
+       if( $note->creator ne $e->requestor->id ) {
+               return $e->die_event unless 
+                       $e->allowed('DELETE_COPY_NOTE', $note->copy->call_number->owning_lib);
        }
 
-       my $stat = $U->storagereq(
-               'open-ils.storage.direct.asset.copy_note.delete', $noteid );
-       return $U->DB_UPDATE_FAILED($noteid) unless $stat;
-
-       $logger->activity("User ".$requestor->id." deleted copy note $noteid");
+       $e->delete_asset_copy_note($note) or return $e->die_event;
+       $e->commit;
        return 1;
 }