From 6c887980c04d332f34e8b1b28dc35490fe4d6c83 Mon Sep 17 00:00:00 2001 From: Lebbeous Fogle-Weekley Date: Wed, 6 Mar 2013 14:25:58 -0500 Subject: [PATCH] acq - prevent create/add to purchase order from stealing lineitems that is, lineitem from other POs Signed-off-by: Lebbeous Fogle-Weekley --- Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 9572552c60..60e30b212a 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'); @@ -3496,7 +3504,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'}; } -- 2.11.0