В версии 3.0 SP3 CU1 в классе SalesTableType есть метод checkSalesQty, в котором можно найти while (он там один):
PHP код:
while select salesLine
index hint SalesLineIdx
where salesLine.salesId == salesTable.salesId
&& (salesLine.salesStatus != SalesStatus::Invoiced && salesLine.salesStatus != SalesStatus::Canceled)
|| (salesLine.SalesDeliverNow < 0)
Если присмотреться, то видно, что если когда-то были строки заказа с отрицательным количеством немедленной поставки (не в проверяемом заказе, а гораздо раньше), то будут выбраны эти строки, а вовсе не те что относятся к проверяемому заказу.
На мой взгляд просто перепутаны скобки, и должно быть написано:
PHP код:
while select salesLine
index hint SalesLineIdx
where salesLine.salesId == salesTable.salesId
&& ((salesLine.salesStatus != SalesStatus::Invoiced && salesLine.salesStatus != SalesStatus::Canceled)
|| (salesLine.SalesDeliverNow < 0))
Если кто-то сталкивался с этим, как вы считаете, я прав?
Просто хочется удостовериться, на всякий случай