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;