+ /*
+ Checks cart quantities on document_date.
+ Returns array of stock_ids which stock quantities would go negative on some day.
+ */
+ function check_qoh($date=null, $location=null)
+ {
+ $low_stock = array();
+ // check only for customer delivery and direct sales invoice
+ if (!($this->trans_type == ST_CUSTDELIVERY || ($this->trans_type == ST_SALESINVOICE && $this->trans_no==0)))
+ return $low_stock;
+
+ // collect quantities by stock_id
+ $qtys = array();
+ foreach ($this->line_items as $line_no => $line_item)
+ {
+ if (has_stock_holding($line_item->mb_flag))
+ {
+ if (!$this->trans_no) // new delivery
+ $qtys[$line_item->stock_id]['qty'] = $line_item->qty_dispatched + @$qtys[$line_item->stock_id]['qty'];
+ else // DN modification: check change in quantity
+ $qtys[$line_item->stock_id]['qty'] = ($line_item->qty_dispatched-$line_item->qty_old) + @$qtys[$line_item->stock_id]['qty'];
+ $qtys[$line_item->stock_id]['line'] = $line_no;
+ }
+ }
+
+ foreach($qtys as $stock_id => $sum)
+ {
+ if (check_negative_stock($stock_id, -$sum['qty'], $location ? $location : $this->Location, $date ? $date : $this->document_date))
+ $low_stock[] = $stock_id;
+ }
+
+ return $low_stock;
+ }
+