Procedura-ClosingTurnoverDetailed

Parametry:

NázevPopisDatový typ
InAuditedChar(1)
InPeriod_IDChar(10)

Návratové hodnoty:

NázevPopisDatový typ
Account_IDChar(10)
Division_IDChar(10)
BusOrder_IDZakázkaChar(10)
BusTransaction_IDObch. případChar(10)
BusProject_IDProjektChar(10)
DebitBeginningNumeric(15, 2)
CreditBeginningNumeric(15, 2)
DebitTurnoverNumeric(15, 2)
CreditTurnoverNumeric(15, 2)

Tělo:

BEGIN
  IF (InPeriod_ID IS NOT NULL) THEN BEGIN
    SELECT A.DateFrom$DATE, A.DateTo$DATE
      FROM Periods A
      WHERE A.ID = :InPeriod_ID
      INTO :mDateFrom, :mDateTo;
    /* Seznam pouzitych uctu */
    FOR
      SELECT
        GL.DebitAccount_ID
      FROM
        GeneralLedger GL
        join Accounts A ON GL.DebitAccount_ID = A.ID
      WHERE
        GL.AccDate$Date >= :mDateFrom AND GL.AccDate$Date < :mDateTo AND
        GL.IsRequest = 'N' AND
        A.IsIncomplete = 'N'
      UNION
      SELECT
        GL.CreditAccount_ID
      FROM
        GeneralLedger GL
        join Accounts A ON GL.CreditAccount_ID = A.ID
      WHERE
        GL.AccDate$Date >= :mDateFrom AND GL.AccDate$Date < :mDateTo AND
        GL.IsRequest = 'N' AND
        A.IsIncomplete = 'N'
      UNION
      SELECT
        AB.Account_ID
      FROM
        AccountBeginnings AB
        join Accounts A ON AB.Account_ID = A.ID
      WHERE
        AB.Period_ID = :InPeriod_ID AND
        A.IsIncomplete = 'N'
      INTO :Account_ID
    DO BEGIN /* FOR Accounts */
      FOR
        SELECT
          A.Division_ID,
          coalesce(A.BusOrder_ID, '0000000000') as BusOrder_ID,
          coalesce(A.BusTransaction_ID, '0000000000') as BusTransaction_ID,
          coalesce(A.BusProject_ID, '0000000000') as BusProject_ID,
          SUM(A.DebitAmount),
          SUM(A.CreditAmount),
          CAST(0.00 AS NUMERIC(15, 2)),
          CAST(0.00 AS NUMERIC(15, 2))
        FROM
          AccountBeginnings A
        WHERE
          A.Account_ID = :Account_ID AND
          A.Period_ID = :InPeriod_ID
        GROUP BY
          A.Account_ID, A.Division_ID, A.Busorder_ID, A.BusTransaction_ID, A.BusProject_ID
        UNION ALL
        SELECT
          GL.DebitDivision_ID,
          coalesce(GL.DebitBusOrder_ID, '0000000000') as BusOrder_ID,
          coalesce(GL.DebitBusTransaction_ID, '0000000000') as BusTransaction_ID,
          coalesce(GL.DebitBusProject_ID, '0000000000') as BusProject_ID,
          CAST(0.00 AS NUMERIC(15, 2)),
          CAST(0.00 AS NUMERIC(15, 2)),
          SUM(GL.Amount),
          CAST(0.00 AS NUMERIC(15, 2))
        FROM
          GeneralLedger GL
        WHERE
          GL.DebitAccount_ID = :Account_ID AND
          GL.IsRequest = 'N' AND
          GL.Audited LIKE :InAudited AND
          GL.AccDate$DATE >= :mDateFrom AND GL.AccDate$DATE < :mDateTo
        GROUP BY
          GL.DebitAccount_ID, GL.DebitDivision_ID, GL.DebitBusorder_ID, GL.DebitBusTransaction_ID, GL.DebitBusProject_ID
        UNION ALL
        SELECT
          GL.CreditDivision_ID, 
          coalesce(GL.CreditBusOrder_ID,  '0000000000') as BusOrder_ID,
          coalesce(GL.CreditBusTransaction_ID,  '0000000000') as BusTransation_ID,
          coalesce(GL.CreditBusProject_ID,  '0000000000') as BusProject_ID,
          CAST(0.00 AS NUMERIC(15, 2)),
          CAST(0.00 AS NUMERIC(15, 2)),
          CAST(0.00 AS NUMERIC(15, 2)),
          SUM(GL.Amount)
        FROM
          GeneralLedger GL
        WHERE
          GL.CreditAccount_ID = :Account_ID AND
          GL.IsRequest = 'N' AND
          GL.Audited LIKE :InAudited AND
          GL.AccDate$DATE >= :mDateFrom AND GL.AccDate$DATE < :mDateTo
        GROUP BY
          GL.CreditAccount_ID, GL.CreditDivision_ID, GL.CreditBusorder_ID, GL.CreditBusTransaction_ID, GL.CreditBusProject_ID
        INTO :Division_ID, :Busorder_ID, :BusTransaction_ID, :BusProject_ID, 
             :DebitBeginning, :CreditBeginning, :DebitTurnover, :CreditTurnover
      DO BEGIN /* For Turnovers */
        IF (DebitBeginning IS NULL) THEN
          DebitBeginning = 0.00;
        IF (CreditBeginning IS NULL) THEN
          CreditBeginning = 0.00;
        IF (DebitTurnover IS NULL) THEN
          DebitTurnover = 0.00;
        IF (CreditTurnover IS NULL) THEN
          CreditTurnover = 0.00;
        IF ( (DebitBeginning <> 0.00) OR (CreditBeginning <> 0.00) OR
          (DebitTurnover <> 0.00) OR (CreditTurnover <> 0.00) )
        THEN
          SUSPEND;
      END
    END
  END
END;

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