Procedura-GetDocsForBankBookReportRow

Parametry:

NázevPopisDatový typ
IN_FIRST_PERIOD_IDChar(10)
IN_DATE_FROM$DATEFloat(0, 0)
IN_DATE_TO$DATEFloat(0, 0)
IN_DOCUMENT_IDChar(10)
IN_DOCUMENT_TYPEChar(2)
IN_FIRM_SEL_IDChar(10)
IN_DOCQUEUE_SEL_IDChar(10)
InDivisionSelIDChar(10)
InBusOrderSelIDChar(10)
InBusTransactionSelIDChar(10)
InBusProjectSelIDChar(10)
IN_CREATEDBY_SEL_IDChar(10)
IN_CORRECTEDBY_SEL_IDChar(10)
IN_ACCOUNTINGChar(1)
InDivisionsWithChildsChar(1)
InBusOrdersWithChildsChar(1)
InBusTransactionsWithChildsChar(1)
InBusProjectsWithChildsChar(1)

Návratové hodnoty:

NázevPopisDatový typ
OUT_DOC_DATE$DATEFloat(0, 0)
OUT_CREDITChar(1)
OUT_VARSYMBOLVarChar(30)
OUT_AMOUNTNumeric(15, 2)
OUT_CURRRATENumeric(10, 3)
OUT_REFCURRRATENumeric(10, 3)
OUT_LOCALAMOUNTNumeric(15, 2)
OUT_STATEVarChar(24)

Závislosti:

NázevPopisTřída
FmtDocumentDisplayNameProcedures
LocateBookEntryVrací zápisy z účetního deníku pro doklad a vazbuProcedures

Tělo:

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;

Generated by ABRA Software a.s. 27.10.2021 16:34:14