Procedura-GeneralLedgerGroupsBOB

Popis:
Účetní deník souvztažně podle zakázky - omezení přímo za ID z účetního deníku / žádostí

Parametry:

NázevPopisDatový typ
IDSelIDChar(10)

Návratové hodnoty:

NázevPopisDatový typ
AccGroup_IDChar(10)
AccDate$DATEFloat(0, 0)
IDChar(10)
CreditAmountNumeric(15, 2)
DebetAmountNumeric(15, 2)

Tělo:

BEGIN
  AccGroup_ID = '__________';
  CreditAmount = 0;
  DebetAmount = 0;
  FOR
    SELECT
      Coalesce(D.DebitBusOrder_ID, '0000000000'),
      D.AccDate$DATE,
      D.Amount * (select Max(IValue) from SYS$DECIDETable where IValue = 0 or
        D.DebitAccount_ID in (select AC.ID from Accounts AC where D.DebitAccount_ID = AC.ID)),
      D.Amount * (select Max(IValue) from SYS$DECIDETable where IValue = 0 or
         D.CreditAccount_ID in (select AC.ID from Accounts AC where D.CreditAccount_ID = AC.ID))
    FROM
      GeneralLedger D
      JOIN (SELECT DISTINCT OBJ_ID, SEL_ID FROM SELDAT WHERE SEL_ID=:IDSelID) SLD
         ON SLD.OBJ_ID = D.ID and SLD.SEL_ID=:IDSelID --rychlost a jen unikatni ID!!!
    WHERE
      D.IsRequest = 'N'
    UNION ALL
    SELECT
      Coalesce(D.CreditBusOrder_ID, '0000000000'),
      D.AccDate$DATE,
      D.Amount * (select Max(IValue) from SYS$DECIDETable where IValue = 0 or
        D.DebitAccount_ID in (select AC.ID from Accounts AC where D.DebitAccount_ID = AC.ID)),
      D.Amount * (select Max(IValue) from SYS$DECIDETable where IValue = 0 or
         D.CreditAccount_ID in (select AC.ID from Accounts AC where D.CreditAccount_ID = AC.ID))
    FROM
      GeneralLedger D
      JOIN (SELECT DISTINCT OBJ_ID, SEL_ID FROM SELDAT WHERE SEL_ID=:IDSelID) SLD
         ON SLD.OBJ_ID = D.ID and SLD.SEL_ID=:IDSelID --rychlost a jen unikatni ID!!!
    WHERE
      (Coalesce(D.CreditBusOrder_id, '0000000000') <> Coalesce(D.DebitBusorder_ID, '0000000000')) and (D.IsRequest = 'N')
    ORDER BY 1 ASC, 2 DESC 
  INTO
    :mAccGroup_ID, :mAccDate$DATE, :mDebetAmount, :mCreditAmount
  DO BEGIN
    IF (AccGroup_ID = '__________' or
      ((AccGroup_ID = mAccGroup_ID) or
      (AccGroup_ID is null and mAccGroup_ID is null)))
    THEN BEGIN
      CreditAmount = CreditAmount + mCreditAmount;
      DebetAmount = DebetAmount + mDebetAmount;
      AccGroup_ID = mAccGroup_ID;
      AccDate$DATE = mAccDate$DATE;
    END
    ELSE BEGIN
      FOR
        SELECT D.ID
        FROM GeneralLedger D
        JOIN (SELECT DISTINCT OBJ_ID, SEL_ID FROM SELDAT WHERE SEL_ID=:IDSelID) SLD
          ON SLD.OBJ_ID = D.ID and SLD.SEL_ID=:IDSelID --rychlost a jen unikatni ID!!!
        WHERE
          Coalesce(D.DebitBusOrder_ID, '0000000000') = :AccGroup_ID and
          D.IsRequest='N'
        UNION ALL
        SELECT D.ID
        FROM GeneralLedger D
        JOIN (SELECT DISTINCT OBJ_ID, SEL_ID FROM SELDAT WHERE SEL_ID=:IDSelID) SLD
          ON SLD.OBJ_ID = D.ID and SLD.SEL_ID=:IDSelID --rychlost a jen unikatni ID!!!
        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;
      CreditAmount = mCreditAmount;
      DebetAmount = mDebetAmount;
      AccGroup_ID = mAccGroup_ID;
      AccDate$DATE = mAccDate$DATE;
    END
  END
  IF (AccGroup_ID <> '__________') THEN BEGIN
    FOR
      SELECT D.ID
      FROM GeneralLedger D
      JOIN (SELECT DISTINCT OBJ_ID, SEL_ID FROM SELDAT WHERE SEL_ID=:IDSelID) SLD
        ON SLD.OBJ_ID = D.ID and SLD.SEL_ID=:IDSelID --rychlost a jen unikatni ID!!!
      WHERE
        Coalesce(D.DebitBusOrder_ID, '0000000000') = :AccGroup_ID and
        D.IsRequest='N'
      UNION ALL
      SELECT D.ID
      FROM GeneralLedger D
      JOIN (SELECT DISTINCT OBJ_ID, SEL_ID FROM SELDAT WHERE SEL_ID=:IDSelID) SLD
        ON SLD.OBJ_ID = D.ID and SLD.SEL_ID=:IDSelID --rychlost a jen unikatni ID!!!
      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
END;

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