From: erickson Date: Wed, 11 Jun 2008 02:27:22 +0000 (+0000) Subject: disallowing create/update/delete on lineitem_details if the lineitem is in the approv... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=80c314de2a3db9272bf2a83d728e52e958872ece;p=Evergreen.git disallowing create/update/delete on lineitem_details if the lineitem is in the approved state git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@9812 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm index e29c600f55..e66ff3570a 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm @@ -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/;