ACQ guarantee no PO re-activation collab/berick/acq-po-prevent-dbl-activation-2_1
authorBill Erickson <berick@esilibrary.com>
Mon, 26 Mar 2012 17:00:00 +0000 (13:00 -0400)
committerBill Erickson <berick@esilibrary.com>
Mon, 26 Mar 2012 17:00:00 +0000 (13:00 -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 699a6bb..085293b 100644 (file)
@@ -2195,6 +2195,9 @@ 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);
 
     $po->state('on-order');