Procedura-PaymentAmountsForICreditNote

Popis:
Vrátí pro danou fakturu zaplacenou částku z dobropisů vydaných

Parametry:

NázevPopisDatový typ
ASource_IDChar(10)
AEndDateFloat(0, 0)

Návratové hodnoty:

NázevPopisDatový typ
PAmountNumeric(15, 3)
LocalPAmountNumeric(15, 3)
AmountNumeric(15, 3)
LocalAmountNumeric(15, 3)
AmountWithoutVATNumeric(15, 3)
LocalAmountWithoutVATNumeric(15, 3)

Závislosti:

NázevPopisTřída
PaymentsForDocumentVrací souhrn platících dokladů pro placený dokument (včetně zaplacených částek)Procedures
PaymentsForDocumentOnlyERDVrací souhrn kurzových rozdílů pro placený dokumentProcedures

Tělo:

BEGIN
  PAmount = 0;
  LocalPAmount = 0;
  Amount = 0;
  LocalAmount = 0;
  AmountWithoutVAT = 0;
  LocalAmountWithoutVAT = 0;
  FOR SELECT
    A.ID, B.TAmount as Amount, B.LocalTAmount as LocalAmount, B.TAmountWithoutVAT as AmountWithoutVAT, B.LocalTAmountWithoutVAT as LocalAmountWithoutVAT, B.ID
  FROM
    IssuedCreditNotes A
  JOIN
    IssuedCreditNotes2 B ON B.Parent_Id = A.ID
  WHERE
    (B.RSourceParent_ID = :ASource_ID)
    AND ( (A.AccDate$DATE <= :AEndDate) OR (:AEndDate = 0) )
  INTO 
    mID, mAmount, mLocalAmount, mAmountWithoutVAT, mLocalAmountWithoutVAT, mRowID
  DO BEGIN
    if (mAmount IS NOT NULL) THEN
      Amount = Amount + mAmount;
    if (mLocalAmount IS NOT NULL) THEN
      LocalAmount = LocalAmount + mLocalAmount;
    if (mAmountWithoutVAT IS NOT NULL) THEN
      AmountWithoutVAT = AmountWithoutVAT + mAmountWithoutVAT;
    if (mLocalAmountWithoutVAT IS NOT NULL) THEN
      LocalAmountWithoutVAT = LocalAmountWithoutVAT + mLocalAmountWithoutVAT;
    SELECT SUM(Amount), SUM(LocalAmount)
    FROM Payments P
    WHERE (P.PDocumentType = '60') AND (P.PDocument_ID = :mID) AND (P.Row_ID IS NOT NULL) AND (P.Row_ID = :mRowID)
      AND EXISTS (SELECT FIRST 1 1 FROM PAYMENTSFORDOCUMENT_VIEW V
                  WHERE (V.DocumentType = P.DocumentType) AND (V.ID = P.Document_ID) AND ((V.DocDate$DATE <= :AEndDate) OR (:AEndDate = 0)))
    INTO
      mPAmount, mLocalPAmount;
    if (mPAmount IS NOT NULL) THEN
      PAmount = PAmount + mPAmount;
    if (mLocalPAmount IS NOT NULL) THEN
      LocalPAmount = LocalPAmount + mLocalPAmount;
       
  END
  FOR SELECT A.ID, A.VatAlgorithm, A.RoundingAmount, A.LocalRoundingAmount, A.Amount, A.LocalAmount, A.CurrRate, A.RefCurrRate
  FROM
    IssuedCreditNotes A
  WHERE
    (A.Source_ID = :ASource_ID)
    AND ( (A.AccDate$DATE <= :AEndDate) OR (:AEndDate = 0) )
  INTO 
    mID, mVatAlgorithm, mRoundingAmount, mLocalRoundingAmount, mAmount, mLocalAmount, mCurrRate, mRefCurrRate
  DO BEGIN
    IF (mVatAlgorithm IS NOT NULL) THEN BEGIN
      IF (mVatAlgorithm = 0) THEN BEGIN
        Amount = Amount + mRoundingAmount;
        LocalAmount = LocalAmount + mLocalRoundingAmount;
        AmountWithoutVAT = AmountWithoutVAT + mRoundingAmount;
        LocalAmountWithoutVAT = LocalAmountWithoutVAT + mLocalRoundingAmount;
      END
    END
    
    SELECT ToleranceForPaidStatus FROM GLOBDATA 
    INTO mTolerance;
    IF (mTolerance > 0) THEN
    BEGIN 
            mLocalTolerance = mTolerance;
            if (mRefCurrRate <> 0) THEN
               mLocalTolerance = mTolerance * mCurrRate / mRefCurrRate;
	    mCorrectionAmount = 0;
	    mLocalCorrectionAmount = 0;
	    SELECT sum(B.TAMOUNT), sum(B.LocalTAMOUNT) 
	    FROM ISSUEDCREDITNOTES2 B
	    WHERE B.PARENT_ID = :mID 
	    INTO mCorrectionAmount, mLocalCorrectionAmount;
	    mCorrectionAmount = mAmount - mCorrectionAmount;
	    mLocalCorrectionAmount = mLocalAmount - mLocalCorrectionAmount;
	    IF (mVatAlgorithm = 0) THEN 
	    BEGIN
	      mCorrectionAmount = mCorrectionAmount - mRoundingAmount;
	      mLocalCorrectionAmount = mLocalCorrectionAmount - mLocalRoundingAmount;  
	    END
	    IF ((mCorrectionAmount <> 0) AND (abs(mCorrectionAmount) <= mTolerance)) THEN 
	      Amount = Amount + mCorrectionAmount;  
	    IF ((mLocalCorrectionAmount <> 0) AND (abs(mLocalCorrectionAmount) <= mLocalTolerance)) THEN  
	      LocalAmount = LocalAmount + mLocalCorrectionAmount; 
    END
    SELECT SUM(Amount), SUM(LocalAmount)
    FROM Payments P
    WHERE (P.PDocumentType = '60') AND (P.PDocument_ID = :mID) AND (P.Row_ID IS NULL)
      AND EXISTS (SELECT FIRST 1 1 FROM PAYMENTSFORDOCUMENT_VIEW V
                  WHERE (V.DocumentType = P.DocumentType) AND (V.ID = P.Document_ID) AND ((V.DocDate$DATE <= :AEndDate) OR (:AEndDate = 0)))
    INTO
      mPAmount, mLocalPAmount;
    if (mPAmount IS NOT NULL) THEN
      PAmount = PAmount + mPAmount;
    if (mLocalPAmount IS NOT NULL) THEN
      LocalPAmount = LocalPAmount + mLocalPAmount;
    SELECT
      SUM(LocalPAmount)
    FROM
      PaymentsForDocumentOnlyERD('60', :mID, :AEndDate)
    INTO
      mLocalPAmount;
    if (mLocalPAmount IS NOT NULL) THEN
      LocalPAmount = LocalPAmount + mLocalPAmount;
  END
  SUSPEND;
END;

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