Procedura-PaymentsForDocument

Popis:
Vrací souhrn platících dokladů pro placený dokument (včetně zaplacených částek)

Parametry:

NázevPopisDatový typ
APDocumentTypeChar(2)
APDocument_IDChar(10)
AEndDateFloat(0, 0)

Návratové hodnoty:

NázevPopisDatový typ
IDChar(10)
DocumentTypeChar(2)
DocDate$DATEFloat(0, 0)
AmountNumeric(15, 3)
LocalAmountNumeric(15, 3)
PAmountNumeric(15, 3)
Currency_IDVarChar(10)
CashDesk_IDVarChar(10)
BankAccount_IDVarChar(10)
OrdNumberInteger
DocQueue_IDChar(10)
Period_IDChar(10)
LocalPAmountNumeric(15, 3)

Závislosti:

NázevPopisTřída
PaymentsAmountForDocumentZjistí placenou částku pro placený doklad z jeho platících dokladů (tabulka Payments)Procedures
PaymentsForDocument_VIEWZachycuje platební doklady, kterými byly placeny doklady PDocumentType, PDocument_ID. Vzniklo vyjmutím obsahu všech selectů z procedury PaymentsForDocuments. Lze pomocí něho lépe filtrovat, protože procedura PaymentsForDocuments navíc sčítala zaplacené částky z tabulky Payments.Views

Tělo:

BEGIN
  --veskere selecty se presunuly do view, ze ktereho se nove taha (view lze mnohem lepe pouzit pro filtrovani)
  FOR
    SELECT
      DocumentType, ID, DocDate$DATE, Amount, LocalAmount, Currency_ID,
      CashDesk_ID, BankAccount_ID, OrdNumber, DocQueue_ID, Period_ID,
      Profit
    FROM
      PaymentsForDocument_VIEW A
    WHERE
      A.PDocumentType = :APDocumentType AND A.PDocument_ID = :APDocument_ID
      AND ( (A.DocDate$DATE < :AEndDate + 1) OR (:AEndDate = 0) )
    INTO
      DocumentType, ID, DocDate$DATE, Amount, LocalAmount, Currency_ID,
      CashDesk_ID, BankAccount_ID,
      OrdNumber, DocQueue_ID, Period_ID, Profit
  DO BEGIN
    IF (:DocumentType IN ('13', '14')) THEN BEGIN
      PAmount = 0;
      LocalPAmount = 0;
      IF (:Profit = 'A') THEN
        LocalPAmount = LocalAmount * -1;
      ELSE
        LocalPAmount = LocalAmount;
      IF (APDocumentType IN ('02', '04', '11', '12', '60', '64', '63')) THEN
        LocalPAmount = LocalPAmount * -1;
      SUSPEND;
    END ELSE BEGIN
      EXECUTE PROCEDURE PaymentsAmountForDocument :APDocumentType, :APDocument_ID,
      :DocumentType, :ID
      RETURNING_VALUES PAmount, LocalPAmount;
      SUSPEND;
    END
  END
  /* V pripade ze hledame do Data nemuzeme vracet NULL sloupce kvuli reportum */
  IF ( (AEndDate <> 0) AND ((Amount IS NULL) OR (LocalAmount IS NULL)) ) THEN BEGIN
    Amount =0;
    LocalAmount =0;
    PAmount =0;
    SUSPEND;
  END
END;

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