added lineitem_detail delete when lineitem is deleted. need to add some additional...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 16 Jul 2008 02:03:55 +0000 (02:03 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 16 Jul 2008 02:03:55 +0000 (02:03 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@10054 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm

index 5b0ac48..d07ef73 100644 (file)
@@ -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;