__PACKAGE__->register_method (
method => 'really_delete_user',
+ api_name => 'open-ils.actor.user.delete.override',
+ signature => q/@see open-ils.actor.user.delete/
+);
+
+__PACKAGE__->register_method (
+ method => 'really_delete_user',
api_name => 'open-ils.actor.user.delete',
signature => q/
It anonymizes all personally identifiable information in actor.usr. By calling actor.usr_purge_data()
my $user = $e->retrieve_actor_user($user_id) or return $e->die_event;
- # No deleting patrons with open billings or checked out copies
- return $e->die_event(OpenILS::Event->new('ACTOR_USER_DELETE_OPEN_XACTS')) if @$open_bills;
+ # No deleting patrons with open billings or checked out copies, unless perm-enabled override
+ if (@$open_bills) {
+ return $e->die_event(OpenILS::Event->new('ACTOR_USER_DELETE_OPEN_XACTS'))
+ unless $self->api_name =~ /override/o
+ && $e->allowed('ACTOR_USER_DELETE_OPEN_XACTS.override', $user->home_ou);
+ }
# No deleting yourself - UI is supposed to stop you first, though.
return $e->die_event unless $e->requestor->id != $user->id;
return $e->die_event unless $e->allowed('DELETE_USER', $user->home_ou);
staff.patron.display.cmd_patron_delete.dest_user.title=Destination User
staff.patron.display.cmd_patron_delete.dest_user.failure=Failed to retrieve destination user. User deletion aborted.
staff.patron.display.cmd_patron_delete.dest_user.self_reference_failure=Cannot specify the deleted user as the destination user. User deletion aborted.
-staff.patron.display.cmd_patron_delete.open_xact=The user you have attempted to delete cannot be deleted because it has open circulations and/or unpaid bills.
+staff.patron.display.cmd_patron_delete.override_prompt=Override patron deletion failure?
staff.patron.display.spawn_editor.editing_related_patron=Editing Related Patron
staff.patron.display.init.retrieving_patron=Retrieving Patron...
staff.patron.display.init.retrieving=Retrieving...
}
params.push( dest_usr.id() );
}
- var robj = obj.network.simple_request( 'FM_AU_DELETE', params );
- alert(js2JSON(robj));
+ var robj = obj.network.simple_request(
+ 'FM_AU_DELETE',
+ params,
+ null,
+ {
+ 'title' : document.getElementById('patronStrings').getString('staff.patron.display.cmd_patron_delete.override_prompt'),
+ 'overridable_events' : [
+ 2004 /* ACTOR_USER_DELETE_OPEN_XACTS */
+ ]
+ }
+ );
if (typeof robj.ilsevent != 'undefined') {
switch(Number(robj.ilsevent)) {
+ /* already informed via override prompt */
case 2004 /* ACTOR_USER_DELETE_OPEN_XACTS */ :
- alert(document.getElementById('patronStrings').getString('staff.patron.display.cmd_patron_delete.open_xact'));
return;
break;
}