}
# ----------------------------------------------------------------------------
-# if all of the lineitems for this PO are received,
-# mark the PO as received
+# if all of the lineitems for this PO are received and no
+# blanket charges are still encumbered, mark the PO as received.
# ----------------------------------------------------------------------------
sub check_purchase_order_received {
my($mgr, $po_id) = @_;
my $po = $mgr->editor->retrieve_acq_purchase_order($po_id);
return $po if @$non_recv_li;
+ # avoid marking the PO as received if any blanket charges
+ # are still encumbered.
+ my $blankets = $mgr->editor->json_query({
+ select => {acqpoi => ['id']},
+ from => {
+ acqpoi => {
+ aiit => {filter => {blanket=>'t'}},
+ acqfdeb => {filter => {encumbrance => 't'}}
+ }
+ },
+ where => {'+acqpoi' => {purchase_order => $po_id}}
+ });
+
+ return $po if @$blankets;
+
$po->state('received');
return update_purchase_order($mgr, $po);
}