Procedura-PayDestinationsByExternalNum

Popis:
Vrací doklady dohledané podle Externího čísla (pomocí operátoru LIKE)

Parametry:

NázevPopisDatový typ
CreditChar(1)
ExternalNumberVarChar(30)
Firm_IDChar(10)

Návratové hodnoty:

NázevPopisDatový typ
DocumentTypeChar(2)
IDChar(10)
AmountNumeric(13, 2)
Currency_IDChar(10)
DueDate$DateFloat(0, 0)

Tělo:

BEGIN
  /* dohledam generovane variabilni symboly */ 
  IF (:Credit = 'A') THEN BEGIN
    /* ostatni prijmy */
    DocumentType = '01' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DocDate$Date
      FROM
          OtherIncomes
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        (PDocument_ID IS NULL OR ElectronicPayment = 'A')
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* faktury vydane */
    DocumentType = '03' ;
    FOR 
      SELECT
        ID, Amount - CreditAmount - PaidAmount + PaidCreditAmount, Currency_ID, DueDate$Date
      FROM
          IssuedInvoices
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* penalizaení faktury vydane */
    /* dobropisy faktur prijatych */
    DocumentType = '61' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
          ReceivedCreditNotes
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* dobropisy danovych zalohovych listu prijatych */
    DocumentType = '65' ;
    FOR
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DocDate$Date
      FROM
          VATReceivedDCreditNotes
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
  /* dohledam zadane variabilni symboly */
  END ELSE BEGIN
    /* ostatni vydaje */
    DocumentType = '02' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
        OtherExpenses
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        (PDocument_ID IS NULL OR ElectronicPayment = 'A')
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
      DO
        SUSPEND ;
    /* faktury prijate */
    DocumentType = '04' ;
    FOR 
      SELECT
        ID, Amount - CreditAmount - PaidAmount + PaidCreditAmount, Currency_ID, DueDate$Date
      FROM
        ReceivedInvoices
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* JCD */
    DocumentType = '12' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
        CustomsDeclarations
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* dobropisy faktur vydanych */
    DocumentType = '60' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
        IssuedCreditNotes
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* zalohove listy prijate */
    DocumentType = '11' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
        ReceivedDInvoices
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* dobropisy dan.zal.listu vydanych */
    DocumentType = '63' ;
    FOR
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
        VATIssuedDCreditNotes
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* faktury vydane */
    DocumentType = '03' ;
    FOR 
      SELECT
        ID, -1*(Amount - CreditAmount - PaidAmount + PaidCreditAmount), Currency_ID, DueDate$Date
      FROM
          IssuedInvoices
      WHERE
        ExternalNumber LIKE :ExternalNumber
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
  END
  /* Volani procedury z jinych projektu  - POS*/
  /* Volani procedury z jinych projektu  - Mzdy*/
END;

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