From 9d0db44c0f32170374d387eb9442f540a2be227b Mon Sep 17 00:00:00 2001 From: Chris Sharp Date: Wed, 5 Apr 2017 09:52:50 -0400 Subject: [PATCH] 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 --- .../lib/OpenILS/Application/Acq/Order.pm | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) 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 d3a106ebe2..d0fd407941 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Acq/Order.pm @@ -1186,10 +1186,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; -- 2.43.2