From 0dc2e403ab490f7a42106806a2262ae5efd2b30e Mon Sep 17 00:00:00 2001 From: erickson Date: Mon, 6 Apr 2009 16:27:27 +0000 Subject: [PATCH] added a mark-po-received method git-svn-id: svn://svn.open-ils.org/ILS/trunk@12799 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Application/Acq/Financials.pm | 45 ++++++++++++++++++++++ .../perlmods/OpenILS/Application/Acq/Lineitem.pm | 6 ++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Financials.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Financials.pm index 38c705f2da..70e4065631 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Financials.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Financials.pm @@ -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; diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm index ea1ebff284..1c806338e3 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm @@ -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 -- 2.11.0