BEGIN
/* Procedura typu SELECT */
/* kontrola vstupnich promennych */
IN_ACCOUNTING = COALESCE (:IN_ACCOUNTING, '.');
INDIVISIONSWITHCHILDS = COALESCE (:INDIVISIONSWITHCHILDS, 'N');
INBUSORDERSWITHCHILDS = COALESCE (:INBUSORDERSWITHCHILDS, 'N');
INBUSTRANSACTIONSWITHCHILDS = COALESCE (:INBUSTRANSACTIONSWITHCHILDS, 'N');
INBUSPROJECTSWITHCHILDS = COALESCE (:INBUSPROJECTSWITHCHILDS, 'N');
/* vymezení časového intervalu */
SELECT datefrom$date FROM periods WHERE id = :IN_FIRST_PERIOD_ID INTO DATE_FROM$DATE;
IF (DATE_FROM$DATE < IN_DATE_FROM$DATE) THEN
DATE_FROM$DATE = IN_DATE_FROM$DATE;
DATE_TO$DATE = IN_DATE_TO$DATE;
IF (COALESCE (IN_DOCUMENT_TYPE, '') = '09') THEN BEGIN
REL_DEF = 11;
FOR
SELECT
A.docdate$date, A.currrate, A.refcurrrate, A.credit, A.tamount,
A.localtamount, A.varsymbol, A.pdocument_id, A.pdocumenttype
FROM
bankstatements2 A
WHERE
(A.parent_id = :IN_DOCUMENT_ID) AND
(A.IsMultiPaymentRow = 'N') AND
( (:DATE_FROM$DATE <= A.docdate$date) AND (A.docdate$date < :DATE_TO$DATE) ) AND
(((A.Firm_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :In_Firm_Sel_ID))
OR
(A.Firm_ID IN (SELECT ID FROM Firms WHERE Firm_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :In_Firm_Sel_ID))))
OR
COALESCE (:In_Firm_Sel_ID, '') = '')
AND
(COALESCE (:InDivisionSelID, '') = '' OR
A.Division_ID IN
(
SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InDivisionSelID)) OR
((:InDivisionsWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT ID FROM Sys$Divisions2 WHERE Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InDivisionSelID)))))
)
) AND
(COALESCE (:InBusOrderSelID, '') = '' OR
A.BusOrder_ID IN
(
SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusOrderSelID)) OR
((:InBusOrdersWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT X.ID FROM Sys$BusOrders2 X WHERE X.Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusOrderSelID)))))
)
) AND
(COALESCE (:InBusTransactionSelID, '') = '' OR
A.BusTransaction_ID IN
(
SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusTransactionSelID)) OR
((:InBusTransactionsWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT ID FROM Sys$BusTransactions2 WHERE Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusTransactionSelID)))))
)
) AND
(COALESCE (:InBusProjectSelID, '') = '' OR
A.BusProject_ID IN
(
SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusProjectSelID)) OR
((:InBusProjectsWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT X.ID FROM Sys$BusProjects2 X WHERE X.Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusProjectSelID)))))
)
) AND
( (:IN_ACCOUNTING = '.') OR
((:IN_ACCOUNTING = '<') AND (0 < (SELECT COUNT(*) FROM locatebookentry(:REL_DEF, A.id))) ) OR
((:IN_ACCOUNTING = '=') AND (0 = (SELECT COUNT(*) FROM locatebookentry(:REL_DEF, A.id))) ) )
INTO
OUT_DOC_DATE$DATE, OUT_CURRRATE, OUT_REFCURRRATE, OUT_CREDIT, OUT_AMOUNT,
OUT_LOCALAMOUNT, OUT_VARSYMBOL, PDOCUMENT_ID, PDOCUMENT_TYPE
DO BEGIN
IF ((OUT_AMOUNT <> 0) OR (OUT_LOCALAMOUNT <> 0)) THEN BEGIN
IF (PDOCUMENT_ID IS NOT NULL) THEN BEGIN
SELECT MAX(out_displayname)
FROM fmtdocumentdisplayname(:PDOCUMENT_ID, :PDOCUMENT_TYPE)
INTO OUT_STATE;
END
ELSE BEGIN
OUT_STATE = '';
END
IF (OUT_CREDIT = 'N') THEN BEGIN
OUT_AMOUNT = OUT_AMOUNT * -1;
OUT_LOCALAMOUNT = OUT_LOCALAMOUNT * -1;
END
SUSPEND;
END
END
END
IF (COALESCE (IN_DOCUMENT_TYPE, '') = '16') THEN BEGIN
REL_DEF = 17;
FOR
SELECT
A.docdate$date, A.amount, A.profit
FROM
bankexchangedifferences A
WHERE
(A.id = :IN_DOCUMENT_ID) AND
( (:DATE_FROM$DATE <= A.docdate$date) AND (A.docdate$date < :DATE_TO$DATE) ) AND
( (COALESCE (:IN_DOCQUEUE_SEL_ID, '') = '') OR
(A.docqueue_id IN (SELECT obj_id FROM SELDAT WHERE sel_id = :IN_DOCQUEUE_SEL_ID)) ) AND
(COALESCE (:InDivisionSelID, '') = '' OR
A.Division_ID IN
(
SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InDivisionSelID)) OR
((:InDivisionsWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT ID FROM Sys$Divisions2 WHERE Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InDivisionSelID)))))
)
) AND
(COALESCE (:InBusOrderSelID, '') = '' OR
A.BusOrder_ID IN
(
SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusOrderSelID)) OR
((:InBusOrdersWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT X.ID FROM Sys$BusOrders2 X WHERE X.Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusOrderSelID)))))
)
) AND
(COALESCE (:InBusTransactionSelID, '') = '' OR
A.BusTransaction_ID IN
(
SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusTransactionSelID)) OR
((:InBusTransactionsWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT ID FROM Sys$BusTransactions2 WHERE Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusTransactionSelID)))))
)
) AND
(COALESCE (:InBusProjectSelID, '') = '' OR
A.BusOrder_ID IN
(
SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
( (Bx.ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusProjectSelID)) OR
((:InBusProjectsWithChilds IN ('1', 'A')) AND (Bx.ID IN (SELECT X.ID FROM Sys$BusProjects2 X WHERE X.Superior_ID IN (SELECT OBJ_ID FROM SELDAT WHERE SEL_ID = :InBusProjectSelID)))))
)
) AND
( (COALESCE (:IN_CREATEDBY_SEL_ID, '') = '') OR
(A.createdby_id IN (SELECT obj_id FROM SELDAT WHERE sel_id = :IN_CREATEDBY_SEL_ID)) ) AND
( (COALESCE (:IN_CORRECTEDBY_SEL_ID, '') = '') OR
(A.correctedby_id IN (SELECT obj_id FROM SELDAT WHERE sel_id = :IN_CORRECTEDBY_SEL_ID)) ) AND
( (:IN_ACCOUNTING = '.') OR
((:IN_ACCOUNTING = '<') AND (0 < (SELECT COUNT(*) FROM locatebookentry(:REL_DEF, A.id))) ) OR
((:IN_ACCOUNTING = '=') AND (0 = (SELECT COUNT(*) FROM locatebookentry(:REL_DEF, A.id))) ) )
INTO
OUT_DOC_DATE$DATE, OUT_LOCALAMOUNT, PROFIT
DO BEGIN
IF (PROFIT = 'N') THEN
OUT_LOCALAMOUNT = OUT_LOCALAMOUNT * (-1);
OUT_CREDIT = 'E';
OUT_VARSYMBOL = '';
OUT_AMOUNT = 0;
OUT_CURRRATE = 0;
OUT_REFCURRRATE = 0;
OUT_STATE = '';
SUSPEND;
END
END
END;