disallowing create/update/delete on lineitem_details if the lineitem is in the approv...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 11 Jun 2008 02:27:22 +0000 (02:27 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 11 Jun 2008 02:27:22 +0000 (02:27 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9812 dcc99617-32d9-48b4-a31d-7c20da2025e4

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

index e29c600..e66ff35 100644 (file)
@@ -353,6 +353,9 @@ sub create_lineitem_detail {
     my $li = $e->retrieve_acq_lineitem($li_detail->lineitem)
         or return $e->die_event;
 
+    my $evt = update_li_edit_time($e, $li);
+    return $evt if $evt;
+
     # XXX check lineitem provider perms
 
     if($li_detail->fund) {
@@ -392,11 +395,25 @@ sub update_lineitem_detail {
 
     # XXX check lineitem perms
 
+    my $li = $e->retrieve_acq_lineitem($li_detail->lineitem)
+        or return $e->die_event;
+    my $evt = update_li_edit_time($e, $li);
+    return $evt if $evt;
+
     $e->update_acq_lineitem_detail($li_detail) or return $e->die_event;
     $e->commit;
     return 1;
 }
 
+sub update_li_edit_time {
+    my ($e, $li) = @_;
+    return OpenILS::Event->new('ACQ_LINEITEM_APPROVED', payload => $li->id)
+        if $li->state eq 'approved';
+    $li->edit_time('now');
+    $e->update_acq_lineitem($li) or return $e->die_event;
+    return undef;
+}
+
 
 __PACKAGE__->register_method(
        method => 'delete_lineitem_detail',
@@ -423,7 +440,9 @@ sub delete_lineitem_detail {
     ]) or return $e->die_event;
 
     my $li = $li_detail->lineitem;
-    $e->update_acq_lineitem($li) or return $e->die_event;
+
+    my $evt = update_li_edit_time($e, $li);
+    return $evt if $evt;
 
     return OpenILS::Event->new('BAD_PARAMS') unless 
         $li->state =~ /new|approved/;