Procedura-FirmReceivableAmount

Parametry:

NázevPopisDatový typ
innaceidChar(10)
indocdateusedChar(1)
indocdatefromFloat(0, 0)
indocdatetoFloat(0, 0)
induedateusedChar(1)
induedatefromFloat(0, 0)
induedatetoFloat(0, 0)
infirmselidChar(10)
infirmidChar(10)

Návratové hodnoty:

NázevPopisDatový typ
totalamountFloat(0, 0)

Tělo:

begin
  TotalAmount = 0;
  For
    Select
      A.ID
    From
      Firms A
    Where
      A.Hidden = 'N' and
      (
        (A.MainNACECode_ID = :InNACEID) or
        (:InNACEID = '')
      ) and
      (
        (A.ID in (select OBJ_ID from SELDAT where SEL_ID = :InFirmSelID)) or
        (
          (A.ID = :InFirmID) and
          ((:InFirmSelID = '') or (:InFirmSelID is null)) and
          ((A.Firm_ID = '') or (A.Firm_ID is null))
        ) or
        (
          ((:InFirmID = '') or (:InFirmID is null)) and
          ((:InFirmSelID = '') or (:InFirmSelID is null)) and
          ((A.Firm_ID = '') or (A.Firm_ID is null))
        )
      )
    Into
      :mFirmID
  do begin
    mFirmTotalAmount = 0;
    Select
      Coalesce(Sum(LocalAmount - LocalPaidAmount - (LocalCreditAmount - LocalPaidCreditAmount)), 0)
    From
      IssuedInvoices II
    Where
      (II.Firm_ID = :mFirmID) and
      (:InDocDateUsed <> 'A' or (II.DocDate$Date >= :InDocDateFrom and II.DocDate$Date < :InDocDateTo)) and
      (:InDueDateUsed <> 'A' or (II.DueDate$Date >= :InDueDateFrom and II.DueDate$Date < :InDueDateTo)) and
      ((LocalAmount - LocalPaidAmount) >  (LocalCreditAmount - LocalPaidCreditAmount))
    Into
      :mFirmTotalAmount;
    TotalAmount = TotalAmount + mFirmTotalAmount;
    For
      Select
        A.ID
      From
        Firms A
      Where
        A.Firm_ID = :mFirmID
      Into
        :mFirmID2
    do begin
      mFirmTotalAmount = 0;
      Select
        Coalesce(Sum(LocalAmount - LocalPaidAmount - (LocalCreditAmount - LocalPaidCreditAmount)), 0)
      From
        IssuedInvoices II
      Where
        (II.Firm_ID = :mFirmID2) and
        (:InDocDateUsed <> 'A' or (II.DocDate$Date >= :InDocDateFrom and II.DocDate$Date < :InDocDateTo)) and
        (:InDueDateUsed <> 'A' or (II.DueDate$Date >= :InDueDateFrom and II.DueDate$Date < :InDueDateTo)) and
        ((LocalAmount - LocalPaidAmount) >  (LocalCreditAmount - LocalPaidCreditAmount))
      Into
        :mFirmTotalAmount;
      TotalAmount = TotalAmount + mFirmTotalAmount;
    end
  end
  suspend;
end;  

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