From: Lebbeous Fogle-Weekley Date: Wed, 6 Mar 2013 19:25:58 +0000 (-0500) Subject: acq - prevent create/add to purchase order from stealing lineitems X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=f14f20f377393030fe6dca15d604ef7a00baa913;p=evergreen%2Fequinox.git acq - prevent create/add to purchase order from stealing lineitems that is, lineitem from other POs Signed-off-by: Lebbeous Fogle-Weekley --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm index 62909f675d..da3e5c1d90 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm @@ -1781,6 +1781,14 @@ sub create_purchase_order_api { {flesh => 1, flesh_fields => {jub => ['attributes']}} ]) or return $e->die_event; + return $e->die_event( + new OpenILS::Event( + "BAD_PARAMS", payload => $li, + note => "acq.lineitem #" . $li->id . + ": purchase_order #" . $li->purchase_order + ) + ) if $li->purchase_order; + $li->provider($po->provider); $li->purchase_order($po->id); $li->state('pending-order'); @@ -3553,7 +3561,8 @@ sub add_li_to_po { } foreach my $li (@$lis) { - unless ($li->state =~ /new|order-ready|pending-order/) { + if ($li->state !~ /new|order-ready|pending-order/ or + $li->purchase_order) { $e->rollback; return {success => 0, li => $li, error => 'bad-li-state'}; }