From: Chris Sharp Date: Wed, 5 Apr 2017 13:52:50 +0000 (-0400) Subject: LP#1257915 - Mark POs received when all lineitems are received or canceled. X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=0e2fb07031d5be7cadbd62132444a66ae2de95a8;p=Evergreen.git LP#1257915 - Mark POs received when all lineitems are received or canceled. Previously, Evergreen only considered lineitems not in a "received" status when deciding whether to consider a purchase order to be "received". Now items with cancel reasons that do not keep debits (e.g. not backordered) are considered "done". Signed-off-by: Chris Sharp Signed-off-by: Bill Erickson Signed-off-by: Galen Charlton --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm index 2a64bdf8c3..58a6550d65 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm @@ -1191,10 +1191,21 @@ sub create_purchase_order { sub check_purchase_order_received { my($mgr, $po_id) = @_; - my $non_recv_li = $mgr->editor->search_acq_lineitem( - { purchase_order => $po_id, - state => {'!=' => 'received'} - }, {idlist=>1}); + my $non_recv_li = $mgr->editor->json_query({ + "select" =>{ + "jub" =>["id"] + }, + "from" =>{ + "jub" => {"acqcr" => {"type" => "left"}} + }, + "where" =>{ + "+jub" => {"id" => $po_id}, + "-or" => [ + {"+jub" => {"state" => "received"}}, + {"+acqcr" => {"keep_debits" =>"t"}} + ] + } + }); my $po = $mgr->editor->retrieve_acq_purchase_order($po_id); return $po if @$non_recv_li;