Procedura-PayDestinationsByVarSymb

Popis:
Vrací doklady dohledané podle variabilního symbolu (pomocí operátoru LIKE)

Parametry:

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

Návratové hodnoty:

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

Závislosti:

NázevPopisTřída
PayDestinationsByVarSymbPosProcedura se bude přepisovat v jiných projektech (Pos), ale volá se v tomto projektu.Procedures
PayDestinationsByVarSymbWageProcedura se bude přepisovat v jiných projektech (Mzdy), ale volá se v tomto projektu.Procedures

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
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
        AND (Amount - CreditAmount - PaidAmount + PaidCreditAmount) >= 0
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* penalizační faktury vydane */
    DocumentType = '17' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
          PenaltyInvoices
      WHERE
        VarSymbol LIKE :VarSymbol
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* dobropisy faktur prijatych */
    DocumentType = '61' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
          ReceivedCreditNotes
      WHERE
        VarSymbol LIKE :VarSymbol
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* zalohove listy vydane */
    DocumentType = '10' ;
    FOR 
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DueDate$Date
      FROM
          IssuedDInvoices
      WHERE
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
    /* danove zalohove listy vydane (pro CH) */
    DocumentType = '62' ;
    FOR
      SELECT
        ID, Amount - PaidAmount, Currency_ID, DocDate$Date
      FROM
          VATIssuedDInvoices
      WHERE
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        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
        VarSymbol LIKE :VarSymbol
        AND
        ((:Firm_ID = '0000000000') 
        OR 
        (Firm_ID = :Firm_ID))
        AND (Amount - CreditAmount - PaidAmount + PaidCreditAmount) < 0 
      INTO
        :ID, :Amount, :Currency_ID, :DueDate$Date
    DO
      SUSPEND ;
  END
  /* Volani procedury z jinych projektu  - POS*/
  FOR
    SELECT
      DocumentType, ID, Amount, Currency_ID, DueDate$Date
    FROM
      PayDestinationsByVarSymbPos(:Credit, :VarSymbol, :Firm_ID)
    INTO
      :DocumentType, :ID, :Amount, :Currency_ID, :DueDate$Date
  DO
    SUSPEND;
  /* Volani procedury z jinych projektu  - Mzdy*/
  FOR
    SELECT
      DocumentType, ID, Amount, Currency_ID, DueDate$Date
    FROM
      PayDestinationsByVarSymbWage(:Credit, :VarSymbol, :Firm_ID)
    INTO
      :DocumentType, :ID, :Amount, :Currency_ID, :DueDate$Date
  DO
    SUSPEND;
END;

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