added a mark-po-received method
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 6 Apr 2009 16:27:27 +0000 (16:27 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 6 Apr 2009 16:27:27 +0000 (16:27 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@12799 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Acq/Financials.pm
Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm

index 38c705f..70e4065 100644 (file)
@@ -1090,5 +1090,50 @@ sub format_po {
 }
 
 
+__PACKAGE__->register_method(
+       method => 'receive_po',
+       api_name        => 'open-ils.acq.purchase_order.receive'
+);
+
+sub receive_po {
+    my($self, $conn, $auth, $po_id) = @_;
+    my $e = new_editor(xact => 1, authtoken => $auth);
+    return $e->die_event unless $e->checkauth;
+
+    my $po = $e->retrieve_acq_purchase_order($po_id) or return $e->die_event;
+    return $e->die_event unless $e->allowed('RECEIVE_PURCHASE_ORDER', $po->ordering_agency);
+
+    my $li_ids = $e->search_acq_lineitem({purchase_order => $po_id}, {idlist => 1});
+
+    my $progress = 0;
+    for my $li_id (@$li_ids) {
+        my $li = $e->retrieve_acq_lineitem($li_id);
+        my $lid_ids = $e->search_acq_lineitem_detail({lineitem => $li_id}, {idlist => 1});
+
+        for my $lid_id (@$lid_ids) {
+            my $evt = OpenILS::Application::Acq::Lineitem::receive_lineitem_detail_impl($e, $lid_id, 1);
+            return $evt if $evt;
+            $conn->respond({progress => ++$progress});
+        }
+
+        $li->state('received');
+        $li->edit_time('now');
+        $li->editor($e->requestor->id);
+        $e->update_acq_lineitem($li) or return $e->die_event;
+        $conn->respond({progress => ++$progress});
+    }
+
+    $po->state('received');
+    $po->edit_time('now');
+    $po->editor($e->requestor->id);
+    $e->update_acq_purchase_order($po) or return $e->die_event;
+
+    $e->commit;
+
+    return {complete => 1, progress => ++$progress};
+}
+
+
+
 1;
 
index ea1ebff..1c80633 100644 (file)
@@ -1,4 +1,4 @@
-package OpenILS::Application::Acq::Picklist;
+package OpenILS::Application::Acq::Lineitem;
 use base qw/OpenILS::Application/;
 use strict; use warnings;
 
@@ -668,7 +668,7 @@ sub receive_lineitem_detail {
 }
 
 sub receive_lineitem_detail_impl {
-    my($e, $lid_id) = @_;
+    my($e, $lid_id, $skip_complete_check) = @_;
 
     my $lid = $e->retrieve_acq_lineitem_detail([
         $lid_id,
@@ -698,6 +698,8 @@ sub receive_lineitem_detail_impl {
         $e->update_acq_fund_debit($lid->fund_debit) or return $e->die_event;
     }
 
+    return undef if $skip_complete_check;
+
     # -------------------------------------------------------------
     # if all of the lineitem details for this lineitem have 
     # been received, mark the lineitem as received