begin
for select
SUM(A.Incomes),
SUM(A.Expenses),
A.BusOrder_ID,
MAX(Z.Parent_ID)
from
RepBusOrders2 (:Audited, :DateFrom, :DateTo, :FirmSelID,
:BusTransactionSelID, :ABusTransactionsWithChilds,
:DivisionSelID, :BusOrderSelID, :ABusOrdersWithChilds,
:BusProjectSelID, :ABusProjectsWithChilds,
:IsRequest, :ADivisionsWithChilds) A
LEFT join BusOrders Z ON A.BusOrder_ID = Z.ID
group by
A.BusOrder_ID
into Incomes, Expenses, BusOrder_ID, TempParent_ID
do begin
Nesting = 0;
TempBusOrder_ID = BusOrder_ID;
while (BusOrder_ID is not null and TempParent_ID is not null and Nesting < 100) do begin
select Parent_ID, ID
from BusOrders where ID = :TempParent_ID
into TempParent_ID, TempID;
TempNesting = Nesting;
BusOrder_ID = TempID;
Nesting = 0;
if (Summarize = 'A') then suspend;
Nesting = TempNesting + 1;
end
BusOrder_ID = TempBusOrder_ID;
suspend;
end
end;