Procedura-GeneralLedgerGroupsBOA1

Popis:
Poskytuje data proceduře GeneralLedgerGroupsBOA

Parametry:

NázevPopisDatový typ
AccDateFromFloat(0, 0)
AccDateToFloat(0, 0)
AccountCodeVarChar(10)
AccountSelIDChar(10)
WholeGroupChar(1)
AccGroup_IDChar(10)
PeriodSelIDChar(10)
TextUsedChar(1)
TextVarChar(40)
AmountUsedChar(1)
AmountFromNumeric(15, 2)
AmountToNumeric(15, 2)
AmountInCurrencyUsedChar(1)
AmountInCurrencyFromNumeric(15, 2)
AmountInCurrencyToNumeric(15, 2)
OrdNumberUsedChar(1)
OrdNumberFromInteger
OrdNumberToInteger
AuditedChar(1)
DocumentTypeSelIDChar(10)
AccDocQueueSelIDChar(10)
CurrencySelIDChar(10)
FirmSelIDChar(10)
DivisionSelIDChar(10)
ADivisionsWithChildsChar(1)
BusOrderSelIDChar(10)
ABusOrdersWithChildsChar(1)
BusTransactionSelIDChar(10)
ABusTransactionsWithChildsChar(1)
BusProjectSelIDChar(10)
ABusProjectsWithChildsChar(1)

Návratové hodnoty:

NázevPopisDatový typ
IDChar(10)

Tělo:

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) AND /*kvuli rychlosti*/
        (:PeriodSelID = '' OR D.Period_ID in (select OBJ_ID from SELDAT where SEL_ID=:PeriodSelID))
      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) AND /*kvuli rychlosti*/
        (:PeriodSelID = '' OR D.Period_ID in (select OBJ_ID from SELDAT where SEL_ID=:PeriodSelID))

      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*/
        (:PeriodSelID = '' OR D.Period_ID in (select OBJ_ID from SELDAT where SEL_ID=:PeriodSelID)) AND
        ( (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) ) AND
        (:TextUsed <> 'A' or Text like :Text ESCAPE '~') AND
        (:AmountUsed <> 'A' or D.Amount BETWEEN :AmountFrom and :AmountTo) AND
        (:AmountInCurrencyUsed <> 'A' or D.AmountInCurrency BETWEEN :AmountInCurrencyFrom and :AmountInCurrencyTo) AND
        (:OrdNumberUsed <> 'A' or D.OrdNumber BETWEEN :OrdNumberFrom and :OrdNumberTo) AND
        (D.Audited like :Audited) AND
        (:DocumentTypeSelID = '' or D.AccDocQueue_ID IN (SELECT ID FROM AccDocQueues AD WHERE
          AD.DocumentType in (select OBJ_ID from SELDAT where SEL_ID=:DocumentTypeSelID))) AND
        (:AccDocQueueSelID = '' or D.AccDocQueue_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccDocQueueSelID) ) AND
        (:CurrencySelID = '' or D.Currency_ID in (select OBJ_ID from SELDAT where SEL_ID=:CurrencySelID)) AND
        ( (:FirmSelID = '') OR
          ((D.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :FirmSelID)) OR
          (D.Firm_ID in (SELECT ID FROM Firms WHERE Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :FirmSelID)))) ) AND
        ( (:DivisionSelID = '') OR
          (D.DebitDivision_ID IN (SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)) OR
              ((:ADivisionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$Divisions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)))))) ) OR
          (D.CreditDivision_ID IN (SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)) OR
              ((:ADivisionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$Divisions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)))))) ) ) AND
        ( (:BusOrderSelID = '') OR
          (D.DebitBusOrder_ID IN (SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)) OR
              ((:ABusOrdersWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusOrders2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)))))) ) OR
          (D.CreditBusOrder_ID IN (SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)) OR
              ((:ABusOrdersWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusOrders2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)))))) ) ) AND
        ( (:BusTransactionSelID = '') OR
          (D.DebitBusTransaction_ID IN (SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)) OR
              ((:ABusTransactionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusTransactions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)))))) ) OR
          (D.CreditBusTransaction_ID IN (SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)) OR
              ((:ABusTransactionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusTransactions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)))))) ) ) AND
        ( (:BusProjectSelID = '') OR
          (D.DebitBusProject_ID IN (SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)) OR
              ((:ABusProjectsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusProjects2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)))))) ) OR
          (D.CreditBusProject_ID IN (SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)) OR
              ((:ABusProjectsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusProjects2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)))))) ) )

      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*/
        (:PeriodSelID = '' OR D.Period_ID in (select OBJ_ID from SELDAT where SEL_ID=:PeriodSelID)) AND
        ( (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) ) AND
        (:TextUsed <> 'A' or Text like :Text ESCAPE '~') AND
        (:AmountUsed <> 'A' or D.Amount BETWEEN :AmountFrom and :AmountTo) AND
        (:AmountInCurrencyUsed <> 'A' or D.AmountInCurrency BETWEEN :AmountInCurrencyFrom and :AmountInCurrencyTo) AND
        (:OrdNumberUsed <> 'A' or D.OrdNumber BETWEEN :OrdNumberFrom and :OrdNumberTo) AND
        (D.Audited like :Audited) AND
        (:DocumentTypeSelID = '' or D.AccDocQueue_ID IN (SELECT ID FROM AccDocQueues AD WHERE
          AD.DocumentType in (select OBJ_ID from SELDAT where SEL_ID=:DocumentTypeSelID))) AND
        (:AccDocQueueSelID = '' or D.AccDocQueue_ID in (select OBJ_ID from SELDAT where SEL_ID=:AccDocQueueSelID) ) AND
        (:CurrencySelID = '' or D.Currency_ID in (select OBJ_ID from SELDAT where SEL_ID=:CurrencySelID)) AND
        ( (:FirmSelID = '') OR
          ((D.Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :FirmSelID)) OR
          (D.Firm_ID in (SELECT ID FROM Firms WHERE Firm_ID in (select OBJ_ID from SELDAT where SEL_ID = :FirmSelID)))) ) AND
        ( (:DivisionSelID = '') OR
          (D.DebitDivision_ID IN (SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)) OR
              ((:ADivisionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$Divisions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)))))) ) OR
          (D.CreditDivision_ID IN (SELECT Bx.ID FROM Divisions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)) OR
              ((:ADivisionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$Divisions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :DivisionSelID)))))) ) ) AND
        ( (:BusOrderSelID = '') OR
          (D.DebitBusOrder_ID IN (SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)) OR
              ((:ABusOrdersWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusOrders2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)))))) ) OR
          (D.CreditBusOrder_ID IN (SELECT Bx.ID FROM BusOrders Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)) OR
              ((:ABusOrdersWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusOrders2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusOrderSelID)))))) ) ) AND
        ( (:BusTransactionSelID = '') OR
          (D.DebitBusTransaction_ID IN (SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)) OR
              ((:ABusTransactionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusTransactions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)))))) ) OR
          (D.CreditBusTransaction_ID IN (SELECT Bx.ID FROM BusTransactions Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)) OR
              ((:ABusTransactionsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusTransactions2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusTransactionSelID)))))) ) ) AND
        ( (:BusProjectSelID = '') OR
          (D.DebitBusProject_ID IN (SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)) OR
              ((:ABusProjectsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusProjects2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)))))) ) OR
          (D.CreditBusProject_ID IN (SELECT Bx.ID FROM BusProjects Bx WHERE Bx.Hidden = 'N' AND
            ( (Bx.ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)) OR
              ((:ABusProjectsWithChilds in ('1', 'A')) and (Bx.ID in (select ID from Sys$BusProjects2 where Superior_ID in (select OBJ_ID from SELDAT where SEL_ID = :BusProjectSelID)))))) ) )

      INTO :ID
    DO
      SUSPEND;
  END
END;

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