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í easového intervalu */
SELECT datefrom$date FROM periods WHERE id = :IN_FIRST_PERIOD_ID INTO mDATE_FROM$DATE;
IF (mDATE_FROM$DATE < IN_DATE_FROM$DATE) THEN
mDATE_FROM$DATE = IN_DATE_FROM$DATE;
mDATE_TO$DATE = IN_DATE_TO$DATE;
/* bankovni vypisy */
OUT_ORDER_KIND = 1;
OUT_DOCUMENTTYPE = '09';
OUT_FIRST_PERIOD_ID = IN_FIRST_PERIOD_ID;
FOR
SELECT
A.id, A.docdate$date, A.externalnumber,
DQ.Code || '-' || A.OrdNumber || '/' || P.Code
FROM
bankstatements A
JOIN Periods P ON P.ID = A.Period_ID
JOIN DocQueues DQ ON DQ.ID = A.DocQueue_ID
WHERE
(A.bankaccount_id = :IN_BANKACCOUNT_ID) AND
-- PETSAF 2008-02-29: datum se kontroluje az na polozkach vypisu
--( (:mDATE_FROM$DATE <= A.docdate$date) AND (A.docdate$date < :mDATE_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 (: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)) )
INTO
OUT_DOCUMENT_ID, OUT_DOC_DATE$DATE, OUT_EXTERNALNUMBER, OUT_DISPLAYNAME
DO BEGIN
SELECT COUNT(*)
FROM GetDocsForBankBookReportRow(:IN_FIRST_PERIOD_ID, :IN_DATE_FROM$DATE,
:IN_DATE_TO$DATE, :OUT_DOCUMENT_ID, :OUT_DOCUMENTTYPE, :IN_FIRM_SEL_ID,
:IN_DOCQUEUE_SEL_ID, :InDivisionSelID, :InBusOrderSelID,
:InBusTransactionSelID, :InBusProjectSelID, :IN_CREATEDBY_SEL_ID, :IN_CORRECTEDBY_SEL_ID,
:IN_ACCOUNTING, :InDivisionsWithChilds, :InBusOrdersWithChilds, :InBusTransactionsWithChilds,
:InBusProjectsWithChilds)
INTO mROW_COUNT;
IF (mROW_COUNT > 0) THEN
SUSPEND;
END
/* kurzovy rozdil */
OUT_ORDER_KIND = 2;
OUT_DOCUMENTTYPE = '16';
mREL_DEF = 17;
FOR
SELECT
A.id, A.docdate$date,
DQ.Code || '-' || A.OrdNumber || '/' || P.Code
FROM
bankexchangedifferences A
JOIN Periods P ON P.ID = A.Period_ID
JOIN DocQueues DQ ON DQ.ID = A.DocQueue_ID
WHERE
(A.bankaccount_id = :IN_BANKACCOUNT_ID) AND
( (:mDATE_FROM$DATE <= A.docdate$date) AND (A.docdate$date < :mDATE_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.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
( (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(:mREL_DEF, A.id))) ) OR
((:IN_ACCOUNTING = '=') AND (0 = (SELECT COUNT(*) FROM locatebookentry(:mREL_DEF, A.id))) ) )
INTO
OUT_DOCUMENT_ID, OUT_DOC_DATE$DATE, OUT_DISPLAYNAME
DO BEGIN
OUT_EXTERNALNUMBER = '';
SUSPEND;
END
END;