Procedura-CashBookDetailedRawRows

Popis:
Vrátí skupiny ze zafiltrovaných řádků jednoho dokladu. Každý záznam reprezentuje skupinu za jednu DPH sazbu.

Parametry:

NázevPopisDatový typ
ACashDoc_IDChar(10)
ACashDocRelDefInteger
ADivisionsSel_IDChar(10)
ADivisionsWithChildrenChar(1)
ABusOrdersSel_IDChar(10)
ABusOrdersWithChildrenChar(1)
ABusTransactionsSel_IDChar(10)
ABusTransactionsWithChildrenChar(1)
ABusProjectsSel_IDChar(10)
ABusProjectsWithChildrenChar(1)

Návratové hodnoty:

NázevPopisDatový typ
VATRate_IDChar(10)
LocalAmountNumeric(15, 2)
LocalAmountWithoutVATNumeric(15, 2)

Tělo:

BEGIN
  /* Řádky pokladních příjmů */
  IF (ACashDocRelDef = 7) THEN BEGIN
    FOR
      SELECT
        A.VATRate_ID, SUM(A.LocalTAmount), SUM(A.LocalTAmountWithoutVAT)
      FROM
        CashReceived2 A
      WHERE
        A.Parent_ID = :ACashDoc_ID AND
        ( (:ADivisionsSel_ID = '') 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 = :ADivisionsSel_ID)) OR
            ((:ADivisionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT ID from SYS$Divisions2 where Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ADivisionsSel_ID))))) ))
        ) AND
        ( (:ABusOrdersSel_ID = '') 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 = :ABusOrdersSel_ID)) OR
            ((:ABusOrdersWithChildren 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 = :ABusOrdersSel_ID))))) ))
        ) AND
        ( (:ABusTransactionsSel_ID = '') 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 = :ABusTransactionsSel_ID)) OR
            ((:ABusTransactionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT X.ID from SYS$BusTransactions2 X where X.Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ABusTransactionsSel_ID))))) ))
        ) AND
        ( (:ABusProjectsSel_ID = '') 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 = :ABusProjectsSel_ID)) OR
            ((:ABusProjectsWithChildren 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 = :ABusProjectsSel_ID))))) ))
        )
      GROUP BY
        A.VATRate_ID
    INTO
      :VATRate_ID, :LocalAmount, :LocalAmountWithoutVAT
    DO BEGIN
      SUSPEND;
    END
  END
  /* Řádky pokladních výdejů */
  IF (ACashDocRelDef = 8) THEN BEGIN
    FOR
      SELECT
        A.VATRate_ID, SUM(A.LocalTAmount), SUM(A.LocalTAmountWithoutVAT)
      FROM
        CashPaid2 A
      WHERE
        A.Parent_ID = :ACashDoc_ID AND
        ( (:ADivisionsSel_ID = '') 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 = :ADivisionsSel_ID)) OR
            ((:ADivisionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT ID from SYS$Divisions2 where Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ADivisionsSel_ID))))) ))
        ) AND
        ( (:ABusOrdersSel_ID = '') 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 = :ABusOrdersSel_ID)) OR
            ((:ABusOrdersWithChildren 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 = :ABusOrdersSel_ID))))) ))
        ) AND
        ( (:ABusTransactionsSel_ID = '') 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 = :ABusTransactionsSel_ID)) OR
            ((:ABusTransactionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT X.ID from SYS$BusTransactions2 X where X.Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ABusTransactionsSel_ID))))) ))
        ) AND
        ( (:ABusProjectsSel_ID = '') 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 = :ABusProjectsSel_ID)) OR
            ((:ABusProjectsWithChildren 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 = :ABusProjectsSel_ID))))) ))
        )
      GROUP BY
        A.VATRate_ID
    INTO
      :VATRate_ID, :LocalAmount, :LocalAmountWithoutVAT
    DO BEGIN
      LocalAmount = -1 * LocalAmount;
      LocalAmountWithoutVAT = -1 * LocalAmountWithoutVAT;
      SUSPEND;
    END
  END
  /* Řádky vrácení pokladních příjmů */
  IF (ACashDocRelDef = 9) THEN BEGIN
    FOR
      SELECT
        A.VATRate_ID, SUM(A.LocalTAmount), SUM(A.LocalTAmountWithoutVAT)
      FROM
        RefundedCashReceived2 A
      WHERE
        A.Parent_ID = :ACashDoc_ID AND
        ( (:ADivisionsSel_ID = '') 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 = :ADivisionsSel_ID)) OR
            ((:ADivisionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT ID from SYS$Divisions2 where Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ADivisionsSel_ID))))) ))
        ) AND
        ( (:ABusOrdersSel_ID = '') 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 = :ABusOrdersSel_ID)) OR
            ((:ABusOrdersWithChildren 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 = :ABusOrdersSel_ID))))) ))
        ) AND
        ( (:ABusTransactionsSel_ID = '') 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 = :ABusTransactionsSel_ID)) OR
            ((:ABusTransactionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT X.ID from SYS$BusTransactions2 X where X.Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ABusTransactionsSel_ID))))) ))
        ) AND
        ( (:ABusProjectsSel_ID = '') 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 = :ABusProjectsSel_ID)) OR
            ((:ABusProjectsWithChildren 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 = :ABusProjectsSel_ID))))) ))
        )
      GROUP BY
        A.VATRate_ID
    INTO
      :VATRate_ID, :LocalAmount, :LocalAmountWithoutVAT
    DO BEGIN
      LocalAmount = -1 * LocalAmount;
      LocalAmountWithoutVAT = -1 * LocalAmountWithoutVAT;
      SUSPEND;
    END
  END
  /* Řádky vrácení pokladních výdejů */
  IF (ACashDocRelDef = 10) THEN BEGIN
    FOR
      SELECT
        A.VATRate_ID, SUM(A.LocalTAmount), SUM(A.LocalTAmountWithoutVAT)
      FROM
        RefundedCashPaid2 A
      WHERE
        A.Parent_ID = :ACashDoc_ID AND
        ( (:ADivisionsSel_ID = '') 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 = :ADivisionsSel_ID)) OR
            ((:ADivisionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT ID from SYS$Divisions2 where Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ADivisionsSel_ID))))) ))
        ) AND
        ( (:ABusOrdersSel_ID = '') 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 = :ABusOrdersSel_ID)) OR
            ((:ABusOrdersWithChildren 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 = :ABusOrdersSel_ID))))) ))
        ) AND
        ( (:ABusTransactionsSel_ID = '') 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 = :ABusTransactionsSel_ID)) OR
            ((:ABusTransactionsWithChildren in ('1', 'A')) and (Bx.ID in (SELECT X.ID from SYS$BusTransactions2 X where X.Superior_ID in (SELECT OBJ_ID from SELDAT where SEL_ID = :ABusTransactionsSel_ID))))) ))
        ) AND
        ( (:ABusProjectsSel_ID = '') 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 = :ABusProjectsSel_ID)) OR
            ((:ABusProjectsWithChildren 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 = :ABusProjectsSel_ID))))) ))
        )
      GROUP BY
        A.VATRate_ID
    INTO
      :VATRate_ID, :LocalAmount, :LocalAmountWithoutVAT
    DO BEGIN
      SUSPEND;
    END
  END
  IF (ACashDocRelDef = 18) THEN BEGIN
    SELECT
      A.Amount,A.Profit
    FROM
      CashDeskExchangeDifferences A
    WHERE
      A.ID = :ACashDoc_ID
    INTO
      :LocalAmount,:mProfit;
    IF (mProfit = 'N') THEN 
      LocalAmount = -1 * LocalAmount;
    LocalAmountWithoutVAT = LocalAmount;
    VATRate_ID = NULL;
    SUSPEND;
  END
END;

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