BEGIN
/* FB */
/* celá skupina bez ohledu */
IF (WholeGroup = '1') THEN
BEGIN
FOR
SELECT
D.ID
FROM
GeneralLedger D
WHERE
D.IsRequest = 'N' AND
(
(D.AccGroupDebit_ID = :AccGroup_ID)
or
(D.AccGroupCredit_ID = :AccGroup_ID)
)
INTO :ID
DO
SUSPEND;
END
ELSE
/* celá skupina s ohledem pouze na datum účtování a období */
IF (WholeGroup = '2') THEN
BEGIN
FOR
SELECT
D.ID
FROM
GeneralLedger D
WHERE
D.IsRequest = 'N' AND
(D.AccDate$DATE+0 >= :AccDateFrom AND D.AccDate$DATE+0 < :AccDateTo) AND
(:PeriodSelID = '' OR D.Period_ID in (select OBJ_ID from SELDAT where SEL_ID=:PeriodSelID)) AND
(
(D.AccGroupDebit_ID = :AccGroup_ID)
or
(D.AccGroupCredit_ID = :AccGroup_ID)
)
INTO :ID
DO
SUSPEND;
END
ELSE
/* celá skupina s ohledem na všechny podmínky */
IF (WholeGroup = '3') THEN
BEGIN
FOR
SELECT
D.ID
FROM
GeneralLedger D
JOIN Accounts DA ON DA.ID = D.DebitAccount_ID
JOIN Accounts CA ON CA.ID = D.CreditAccount_ID
WHERE
(
(((D.AccGroupDebit_ID = :AccGroup_ID) AND (DA.Code LIKE :AccountCode ESCAPE '~')) AND
(:AccountSelID = '' OR D.DebitAccount_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccountSelID))) OR
(((D.AccGroupCredit_ID = :AccGroup_ID) AND (CA.Code LIKE :AccountCode ESCAPE '~')) AND
(:AccountSelID = '' OR D.CreditAccount_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccountSelID)))
) AND
D.IsRequest = 'N' AND
(D.AccDate$DATE+0 >= :AccDateFrom AND D.AccDate$DATE+0 < :AccDateTo) AND /*kvuli rychlosti*/
(:PeriodSelID = '' OR D.Period_ID in (select OBJ_ID from SELDAT where SEL_ID=:PeriodSelID)) AND
(:TextUsed <> 'A' or Text like :Text ESCAPE '~') AND
(:AmountUsed <> 'A' or D.Amount BETWEEN :AmountFrom and :AmountTo) AND
(:AmountInCurrencyUsed <> 'A' or D.AmountInCurrency BETWEEN :AmountInCurrencyFrom and :AmountInCurrencyTo) AND
(:OrdNumberUsed <> 'A' or D.OrdNumber BETWEEN :OrdNumberFrom and :OrdNumberTo) AND
(D.Audited like :Audited) AND
(:DocumentTypeSelID = '' or D.AccDocQueue_ID IN (SELECT ID FROM AccDocQueues AD WHERE
AD.DocumentType in (select OBJ_ID from SELDAT where SEL_ID=:DocumentTypeSelID))) AND
(:AccDocQueueSelID = '' or D.AccDocQueue_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccDocQueueSelID) ) AND
(:CurrencySelID = '' or D.Currency_ID in (select OBJ_ID from SELDAT where SEL_ID=:CurrencySelID)) AND
( (:FirmSelID = '') OR
((D.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :FirmSelID)) OR
(D.Firm_ID in (SELECT ID FROM Firms WHERE Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :FirmSelID)))) ) AND
( (:DivisionSelID = '') OR
(D.DebitDivision_ID IN (SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)) OR
((:ADivisionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$Divisions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)))))) ) OR
(D.CreditDivision_ID IN (SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)) OR
((:ADivisionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$Divisions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)))))) ) ) AND
( (:BusOrderSelID = '') OR
(D.DebitBusOrder_ID IN (SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)) OR
((:ABusOrdersWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusOrders2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)))))) ) OR
(D.CreditBusOrder_ID IN (SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)) OR
((:ABusOrdersWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusOrders2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)))))) ) ) AND
( (:BusTransactionSelID = '') OR
(D.DebitBusTransaction_ID IN (SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)) OR
((:ABusTransactionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusTransactions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)))))) ) OR
(D.CreditBusTransaction_ID IN (SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)) OR
((:ABusTransactionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusTransactions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)))))) ) ) AND
( (:BusProjectSelID = '') OR
(D.DebitBusProject_ID IN (SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)) OR
((:ABusProjectsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusProjects2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)))))) ) OR
(D.CreditBusProject_ID IN (SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)) OR
((:ABusProjectsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusProjects2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)))))) ) )
INTO :ID
DO
SUSPEND;
END
END;