From 0b647cd4e23769398311869d3b998a9cc1154501 Mon Sep 17 00:00:00 2001 From: erickson Date: Thu, 24 Jul 2008 18:58:23 +0000 Subject: [PATCH] setting fund debit as non-encumbrance at receive time. marking lineitem and po as received where appropriate git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@10120 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../perlmods/OpenILS/Application/Acq/Lineitem.pm | 52 ++++++++++++++++------ 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm index d534485b8b..5edd761118 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Acq/Lineitem.pm @@ -476,8 +476,9 @@ sub update_lineitem_detail { sub update_li_edit_time { my ($e, $li) = @_; - return OpenILS::Event->new('ACQ_LINEITEM_APPROVED', payload => $li->id) - if $li->state eq 'approved'; + # some lineitem edits are allowed after approval time... +# return OpenILS::Event->new('ACQ_LINEITEM_APPROVED', payload => $li->id) +# if $li->state eq 'approved'; $li->edit_time('now'); $e->update_acq_lineitem($li) or return $e->die_event; return undef; @@ -627,8 +628,14 @@ sub receive_lineitem_detail { sub receive_lineitem_detail_impl { my($e, $lid_id) = @_; - my $lid = $e->retrieve_acq_lineitem_detail($lid_id) - or return $e->die_event; + my $lid = $e->retrieve_acq_lineitem_detail([ + $lid_id, + { flesh => 1, + flesh_fields => { + acqlid => ['fund_debit'] + } + } + ]) or return $e->die_event; return OpenILS::Event->new( 'ACQ_LINEITEM_DETAIL_RECEIVED') if $lid->recv_time; @@ -644,19 +651,38 @@ sub receive_lineitem_detail_impl { $copy->editor($e->requestor->id); $e->update_asset_copy($copy) or return $e->die_event; - # XXX update the fund_debit to encumbrance=false + $lid->fund_debit->encumbrance('f'); + $e->update_acq_fund_debit($lid->fund_debit) or return $e->die_event; + # ------------------------------------------------------------- + # if all of the lineitem details for this lineitem have + # been received, mark the lineitem as received + # ------------------------------------------------------------- my $non_recv = $e->search_acq_lineitem_detail( {recv_time => undef, lineitem => $lid->lineitem}, {idlist=>1}); - unless(@$non_recv) { - # if all of the lineitem details for this lineitem have - # been received, mark the lineitem as received - my $li = $e->retrieve_acq_lineitem($lid->lineitem); - $li->state('received'); - $li->edit_time('now'); - $e->update_acq_lineitem($li) or return $e->die_event; - } + return undef if @$non_recv; + + my $li = $e->retrieve_acq_lineitem($lid->lineitem); + $li->state('received'); + $li->edit_time('now'); + $e->update_acq_lineitem($li) or return $e->die_event; + + # ------------------------------------------------------------- + # if all of the lineitems for this PO are received, + # mark the PO as received + # ------------------------------------------------------------- + my $non_recv_li = $e->search_acq_lineitem( + { purchase_order => $li->purchase_order, + state => {'!=' => 'received'} + }, {idlist=>1}); + + return undef if @$non_recv_li; + + my $po = $e->retrieve_acq_purchase_order($li->purchase_order); + $po->state('received'); + $po->edit_time('now'); + $e->update_acq_purchase_order($po) or return $e->die_event; return undef; } -- 2.11.0