ACQ guarantee no PO re-activation collab/berick/acq-po-prevent-dbl-activation
authorBill Erickson <berick@esilibrary.com>
Fri, 23 Mar 2012 19:17:50 +0000 (15:17 -0400)
committerBill Erickson <berick@esilibrary.com>
Fri, 23 Mar 2012 19:17:50 +0000 (15:17 -0400)
Prevent the possibility of double PO activation by preventing it within
the API.  There have been reports in the wild of double-activation, even
though the UI is supposed to prevent it.

Signed-off-by: Bill Erickson <berick@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm

index 8baf9ea..b66b1f0 100644 (file)
@@ -2324,6 +2324,10 @@ sub activate_purchase_order_impl {
 
     my $po = $e->retrieve_acq_purchase_order($po_id) or return $e->die_event;
     return $e->die_event unless $e->allowed('CREATE_PURCHASE_ORDER', $po->ordering_agency);
+
+    return $e->die_event(OpenILS::Event->new('PO_ALREADY_ACTIVATED'))
+        if $po->order_date; # PO cannot be re-activated
+
     my $provider = $e->retrieve_acq_provider($po->provider);
 
     # find lineitems and create assets for all