BEGIN
/* celá skupina bez ohledu */
IF (WholeGroup = '1') THEN BEGIN
FOR
SELECT D.ID
FROM GeneralLedger D
WHERE
Coalesce(D.DebitBusOrder_ID, '0000000000') = :AccGroup_ID AND
D.IsRequest = 'N'
UNION ALL
SELECT D.ID
FROM GeneralLedger D
WHERE
(Coalesce(D.CreditBusOrder_id, '0000000000') <> Coalesce(D.DebitBusorder_ID, '0000000000')) and
Coalesce(D.CreditBusOrder_ID, '0000000000') = :AccGroup_ID AND
D.IsRequest = 'N'
INTO :ID
DO
SUSPEND;
END
/* celá skupina s ohledem pouze na datum účtování a období */
IF (WholeGroup = '2') THEN BEGIN
FOR
SELECT D.ID
FROM GeneralLedger D
WHERE
Coalesce(D.DebitBusOrder_ID, '0000000000') = :AccGroup_ID AND
D.IsRequest = 'N' AND
(D.AccDate$DATE+0 >= :AccDateFrom AND D.AccDate$DATE+0 < :AccDateTo) /*kvuli rychlosti*/
UNION ALL
SELECT D.ID
FROM GeneralLedger D
WHERE
(Coalesce(D.CreditBusOrder_id, '0000000000') <> Coalesce(D.DebitBusorder_ID, '0000000000')) and
Coalesce(D.CreditBusOrder_ID, '0000000000') = :AccGroup_ID AND
D.IsRequest = 'N' AND
(D.AccDate$DATE+0 >= :AccDateFrom AND D.AccDate$DATE+0 < :AccDateTo) /*kvuli rychlosti*/
INTO :ID
DO
SUSPEND;
END
/* 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
Coalesce(D.DebitBusOrder_ID, '0000000000') = :AccGroup_ID AND
D.IsRequest = 'N' AND
(D.AccDate$DATE+0 >= :AccDateFrom AND D.AccDate$DATE+0 < :AccDateTo) AND /*kvuli rychlosti*/
( (DA.Code like :AccountCode ESCAPE '~') OR
(CA.Code like :AccountCode ESCAPE '~') ) AND
( :AccountSelID = '' OR
D.CreditAccount_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccountSelID) or
D.DebitAccount_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccountSelID) )
UNION ALL
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
(Coalesce(D.CreditBusOrder_id, '0000000000') <> Coalesce(D.DebitBusorder_ID, '0000000000')) and
Coalesce(D.CreditBusOrder_ID, '0000000000') = :AccGroup_ID AND
D.IsRequest = 'N' AND
(D.AccDate$DATE+0 >= :AccDateFrom AND D.AccDate$DATE+0 < :AccDateTo) AND /*kvuli rychlosti*/
( (DA.Code like :AccountCode ESCAPE '~') OR
(CA.Code like :AccountCode ESCAPE '~') ) AND
( :AccountSelID = '' OR
D.CreditAccount_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccountSelID) or
D.DebitAccount_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccountSelID) )
INTO :ID
DO
SUSPEND;
END
END;