From 524fc58359b1f6d2a45ff92f8a7699f419cf5b08 Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 16 Jul 2008 02:03:55 +0000 Subject: [PATCH] added lineitem_detail delete when lineitem is deleted. need to add some additional state checks. also, only checking picklist perms when picklist is set git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@10054 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Application/Acq/Lineitem.pm | 24 +++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm index 5b0ac48267..d07ef73e27 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm @@ -305,12 +305,26 @@ sub delete_lineitem { my $li = $e->retrieve_acq_lineitem($li_id) or return $e->die_event; - my $picklist = $e->retrieve_acq_picklist($li->picklist) - or return $e->die_event; + # XXX check state + + if($li->picklist) { + my $picklist = $e->retrieve_acq_picklist($li->picklist) + or return $e->die_event; + return OpenILS::Event->new('BAD_PARAMS') + if $picklist->owner != $e->requestor->id; + } else { + # check PO perms + } + + # delete the attached lineitem_details + my $lid_ids = $e->search_acq_lineitem_detail( + {lineitem => $li_id}, {idlist=>1}); - # don't let anyone delete someone else's lineitem - return OpenILS::Event->new('BAD_PARAMS') - if $picklist->owner != $e->requestor->id; + for my $lid_id (@$lid_ids) { + $e->delete_acq_lineitem_detail( + $e->retrieve_acq_lineitem_detail($lid_id)) + or return $e->die_event; + } $e->delete_acq_lineitem($li) or return $e->die_event; $e->commit; -- 2.11.0