From f56256e5eaa08ec2164d4986007428f9eb1b5245 Mon Sep 17 00:00:00 2001 From: erickson Date: Mon, 20 Apr 2009 19:34:45 +0000 Subject: [PATCH] moved picklist delete into order.pm. code re-use git-svn-id: svn://svn.open-ils.org/ILS/trunk@12924 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../src/perlmods/OpenILS/Application/Acq/Order.pm | 37 +++++++++++++-- .../perlmods/OpenILS/Application/Acq/Picklist.pm | 53 ---------------------- 2 files changed, 33 insertions(+), 57 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm index 262ddbd523..c6fb0bd5a2 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Order.pm @@ -613,16 +613,20 @@ sub delete_picklist { $picklist = $mgr->editor->retrieve_acq_picklist($picklist) unless ref $picklist; # delete all 'new' lineitems - my $lis = $mgr->editor->search_acq_lineitem({picklist => $picklist->id, state => 'new'}, {substream => 1}); - for my $li (@$lis) { + my $li_ids = $mgr->editor->search_acq_lineitem({picklist => $picklist->id, state => 'new'}, {idlist => 1}); + for my $li_id (@$li_ids) { + my $li = $mgr->editor->retrieve_acq_lineitem($li_id); return 0 unless delete_lineitem($mgr, $li); + $mgr->respond; } # detach all non-'new' lineitems - $lis = $mgr->editor->search_acq_lineitem({picklist => $picklist->id, state => {'!=' => 'new'}, {substream => 1}}); - for my $li (@$lis) { + $li_ids = $mgr->editor->search_acq_lineitem({picklist => $picklist->id, state => {'!=' => 'new'}}, {idlist => 1}); + for my $li_id (@$li_ids) { + my $li = $mgr->editor->retrieve_acq_lineitem($li_id); $li->clear_picklist; return 0 unless update_lineitem($mgr, $li); + $mgr->respond; } # remove any picklist-specific object perms @@ -1716,5 +1720,30 @@ sub merge_picklist_api { } +__PACKAGE__->register_method( + method => 'delete_picklist_api', + api_name => 'open-ils.acq.picklist.delete', + signature => { + desc => q/Deletes a picklist. It also deletes any lineitems in the "new" state. + Other attached lineitems are detached'/, + params => [ + {desc => 'Authentication token', type => 'string'}, + {desc => 'Picklist ID to delete', type => 'number'} + ], + return => {desc => '1 on success, Event on error'} + } +); + +sub delete_picklist_api { + my($self, $conn, $auth, $picklist_id) = @_; + my $e = new_editor(xact=>1, authtoken=>$auth); + return $e->die_event unless $e->checkauth; + my $mgr = OpenILS::Application::Acq::BatchManager->new(editor => $e, conn => $conn); + my $pl = $e->retrieve_acq_picklist($picklist_id) or return $e->die_event; + delete_picklist($mgr, $pl) or return $e->die_event; + return $mgr->respond_complete; +} + + 1; diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm index 4c84eadf61..d0509c847d 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Picklist.pm @@ -262,59 +262,6 @@ sub retrieve_all_user_picklist { return undef; } - -__PACKAGE__->register_method( - method => 'delete_picklist', - api_name => 'open-ils.acq.picklist.delete', - signature => { - desc => q/Deletes a picklist. It also deletes any lineitems in the "new" state. - Other attached lineitems are detached'/, - params => [ - {desc => 'Authentication token', type => 'string'}, - {desc => 'Picklist ID to delete', type => 'number'} - ], - return => {desc => '1 on success, Event on error'} - } -); - -sub delete_picklist { - my($self, $conn, $auth, $picklist_id) = @_; - my $e = new_editor(xact=>1, authtoken=>$auth); - return $e->die_event unless $e->checkauth; - - my $picklist = $e->retrieve_acq_picklist($picklist_id) - or return $e->die_event; - # don't let anyone delete someone else's picklist - if($picklist->owner != $e->requestor->id) { - return $e->die_event unless - $e->allowed('DELETE_PICKLIST', $picklist->org_unit, $picklist); - } - - # delete all 'new' lineitems - my $lis = $e->search_acq_lineitem({picklist => $picklist->id, state => 'new'}); - for my $li (@$lis) { - $e->delete_acq_lineitem($li) or return $e->die_event; - } - - # detach all non-'new' lineitems - $lis = $e->search_acq_lineitem({picklist => $picklist->id, state => {'!=' => 'new'}}); - for my $li (@$lis) { - $li->clear_picklist; - $e->update_acq_lineitem($li) or return $e->die_event; - } - - # remove any picklist-specific object perms - my $ops = $e->search_permission_usr_object_perm_map({object_type => 'acqpl', object_id => "".$picklist->id}); - for my $op (@$ops) { - $e->delete_usr_object_perm_map($op) or return $e->die_event; - } - - - $e->delete_acq_picklist($picklist) or return $e->die_event; - $e->commit; - return 1; -} - __PACKAGE__->register_method( method => 'retrieve_pl_lineitem', api_name => 'open-ils.acq.lineitem.picklist.retrieve', -- 2.11.0