Procedura-PayDestinationsByAmountPos

Popis:
Procedura se bude přepisovat v jiných projektech (Pos), ale volá se v tomto projektu.

Parametry:

NázevPopisDatový typ
ACreditChar(1)
AAmountNumeric(13, 2)
ACurrency_IDChar(10)
AAmountTypeInteger
AFirm_IDChar(10)

Návratové hodnoty:

NázevPopisDatový typ
DocumentTypeChar(2)
IDChar(10)

Tělo:

BEGIN
  /* kreditni platby dle lokalni castky*/    
  IF ((:ACredit = 'A') AND (:ACurrency_ID is NULL)) THEN BEGIN
    /* výdeje z pokladního místa */
    DocumentType = 'CP' ;
    FOR
      SELECT
        ID
      FROM
        POSCashPaid
      WHERE
          (
          ((:AAmountType = 0) AND (LocalAmount = :AAmount) ) /* kdyz je zadanä cástka shodna s cástku na dokladu */
        OR
          ((:AAmountType = 1) AND ((LocalAmount - LocalPaidAmount) = :AAmount) )  /* kdyz je zadanä cástka shodna s nesplaceno */
        OR
          ((:AAmountType = 2) AND (LocalAmount >= :AAmount) ) /* kdyz je zadanä cástka shodna s cástku na dokladu */
        OR
          ((:AAmountType = 3) AND ((LocalAmount - LocalPaidAmount) >= :AAmount) )  /* kdyz je zadanä cástka shodna s nesplaceno */
          )
        AND
          (
          (:AFirm_ID = '0000000000') 
        OR 
          (Firm_ID = :AFirm_ID)
          )
      INTO
        :ID
    DO
      SUSPEND;
  END
  /* debetni platby dle lokalni castky */
  IF ((:ACredit = 'N') and (:ACurrency_ID is NULL)) THEN BEGIN
    /* vkladu do pokladního místa */
    DocumentType = 'CR' ;
    FOR
      SELECT
        ID
      FROM
        POSCashReceived
      WHERE
          (
          ((:AAmountType = 0) AND (LocalAmount = :AAmount)) 
        OR
          ((:AAmountType = 1) AND ( (LocalAmount - LocalPaidAmount) = :AAmount))
        OR
          ((:AAmountType = 0) AND (LocalAmount >= :AAmount)) 
        OR
          ((:AAmountType = 1) AND ( (LocalAmount - LocalPaidAmount) >= :AAmount))
          )
        AND
          (
          (:AFirm_ID = '0000000000') 
        OR 
          (Firm_ID = :AFirm_ID)
          )
      INTO
        :ID
    DO
      SUSPEND;
  END
  /* kreditni platby dle castky a meny */
  IF ((:ACredit = 'A') and (:ACurrency_ID is Not NULL)) THEN BEGIN
    /* výdeje z pokladního místa */
    DocumentType = 'CP' ;
    FOR
      SELECT
        ID
      FROM
        POSCashPaid
      WHERE
        ( 
          ( (:AAmountType = 0) AND (Amount = :AAmount) ) 
          OR
          ( (:AAmountType = 1) AND ( (Amount - PaidAmount) = :AAmount) )
          OR
          ( (:AAmountType = 2) AND (Amount >= :AAmount) ) 
          OR
          ( (:AAmountType = 3) AND ( (Amount - PaidAmount) >= :AAmount) )
        )  
        AND 
        (Currency_ID = :ACurrency_ID)
        AND
        ((:AFirm_ID = '0000000000') 
        OR 
        (Firm_ID = :AFirm_ID))
      INTO
        :ID
    DO
      SUSPEND;
  END
  /* debetni platby dle castky a meny */
  IF ((:ACredit = 'N') and (:ACurrency_ID is Not NULL)) THEN BEGIN
    /* vkladu do pokladního místa */
    DocumentType = 'CR' ;
    FOR
      SELECT
        ID
      FROM
        POSCashReceived
      WHERE
        ( 
          ( (:AAmountType = 0) AND (Amount = :AAmount) ) 
          OR
          ( (:AAmountType = 1) AND ( (Amount - PaidAmount) = :AAmount) )
          OR
          ( (:AAmountType = 2) AND (Amount >= :AAmount) ) 
          OR
          ( (:AAmountType = 3) AND ( (Amount - PaidAmount) >= :AAmount) )
        )  
        AND 
        (Currency_ID = :ACurrency_ID)
        AND
        ((:AFirm_ID = '0000000000') 
        OR 
        (Firm_ID = :AFirm_ID))
      INTO
        :ID
    DO
      SUSPEND;
  END
END;

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