BEGIN
CorrectionAmount = 0;
LocalCorrectionAmount = 0;
CorrectionAmountWithoutVAT = 0;
LocalCorrAmountWithoutVAT = 0;
mDateCreditAmount = 0;
mDateCreditAmountWithoutVAT = 0;
mDateUsedAmount = 0;
mDateUsedAmountWithoutVAT = 0;
mDateAmount = 0;
mDateAmountWithoutVAT = 0;
mDateLocalCreditAmount = 0;
mDateLocCrAmountWithoutVAT = 0;
mDateLocalUsedAmount = 0;
mDateLocUsedAmountWithoutVAT = 0;
mDateLocalAmount = 0;
mDateLocalAmountWithoutVAT = 0;
mSumDateCreditAmount = 0;
mSumDateCrAmountWithoutVAT = 0;
mSumDateLocalCreditAmount = 0;
mSumDateLocCrAmountWithoutVAT = 0;
mSumDateUsedAmount = 0;
mSumDateUsedAmountWithoutVAT = 0;
mSumDateLocalUsedAmount = 0;
mSumDateLocUsedAmWithoutVAT = 0;
if (AEndDate <> 0) then begin
/* slozite pro zpetne k datu */
mIsCompletelyUsed = 'A';
mCounter = 0;
FOR
SELECT A.TAmount, A.TAmountWithoutVAT, A.ID FROM VATIssuedDInvoices2 A
WHERE (A.Parent_ID = :ASource_ID)
INTO mTAmount, mTAmountWithoutVAT, mRowID
DO BEGIN
mCounter = mCounter + 1;
if (mIsCompletelyUsed = 'A') then begin
select Amount, AmountWithoutVAT, LocalAmount, LocalAmountWithoutVAT
from
RowAmountsForVATICrNote(:mRowID, :AEndDate)
into
mDateCreditAmount, mDateCreditAmountWithoutVAT, mDateLocalCreditAmount, mDateLocCrAmountWithoutVAT;
select UsedAmount, UsedAmountWithoutVAT, LocalUsedAmount, LocalUsedAmountWithoutVAT
from
UsedAmountsForVATDInvoice(:mRowID, :AEndDate, 'A')
into
mDateUsedAmount, mDateUsedAmountWithoutVAT, mDateLocalUsedAmount, mDateLocUsedAmountWithoutVAT;
if ((:mTAmount <> (:mDateCreditAmount + :mDateUsedAmount)) and
(:mTAmountWithoutVAT <> (:mDateCreditAmountWithoutVAT + :mDateUsedAmountWithoutVAT))) then
begin
mIsCompletelyUsed = 'N';
end
if (mDateCreditAmount IS NOT NULL) THEN
mSumDateCreditAmount = mSumDateCreditAmount + mDateCreditAmount;
if (mDateCreditAmountWithoutVAT IS NOT NULL) THEN
mSumDateCrAmountWithoutVAT = mSumDateCrAmountWithoutVAT + mDateCreditAmountWithoutVAT;
if (mDateLocalCreditAmount IS NOT NULL) THEN
mSumDateLocalCreditAmount = mSumDateLocalCreditAmount + mDateLocalCreditAmount;
if (mDateLocCrAmountWithoutVAT IS NOT NULL) THEN
mSumDateLocCrAmountWithoutVAT = mSumDateLocCrAmountWithoutVAT + mDateLocCrAmountWithoutVAT;
if (mDateUsedAmount IS NOT NULL) THEN
mSumDateUsedAmount = mSumDateUsedAmount + mDateUsedAmount;
if (mDateUsedAmountWithoutVAT IS NOT NULL) THEN
mSumDateUsedAmountWithoutVAT = mSumDateUsedAmountWithoutVAT + mDateUsedAmountWithoutVAT;
if (mDateLocalUsedAmount IS NOT NULL) THEN
mSumDateLocalUsedAmount = mSumDateLocalUsedAmount + mDateLocalUsedAmount;
if (mDateLocUsedAmountWithoutVAT IS NOT NULL) THEN
mSumDateLocUsedAmWithoutVAT = mSumDateLocUsedAmWithoutVAT + mDateLocUsedAmountWithoutVAT;
end
end
if ((mIsCompletelyUsed = 'A') and (mCounter > 0)) then begin
select
(Amount - RoundingAmount) as DateAmount,
(AmountWithoutVAT - RoundingAmount) as DateAmountWithoutVAT,
(LocalAmount - LocalRoundingAmount) as DateLocalAmount,
(LocalAmountWithoutVAT - LocalRoundingAmount) as DateLocalAmountWithoutVAT
from VATIssuedDInvoices where
(ID = :ASource_ID)
into
mDateAmount, mDateAmountWithoutVAT, mDateLocalAmount, mDateLocalAmountWithoutVAT;
CorrectionAmount = mDateAmount - mSumDateUsedAmount - mSumDateCreditAmount;
LocalCorrectionAmount = mDateLocalAmount - mSumDateLocalUsedAmount - mSumDateLocalCreditAmount;
CorrectionAmountWithoutVAT = mDateAmountWithoutVAT - mSumDateUsedAmountWithoutVAT - mSumDateCrAmountWithoutVAT;
LocalCorrAmountWithoutVAT = mDateLocalAmountWithoutVAT - mSumDateLocUsedAmWithoutVAT - mSumDateLocCrAmountWithoutVAT;
end
end else
begin
/* a snadno, pokud datum neresime */
SELECT
(A.Amount - A.UsedAmount - A.CreditAmount - A.RoundingAmount) as CorrAmount,
(A.LocalAmount - A.LocalUsedAmount - A.LocalCreditAmount - A.LocalRoundingAmount) as LocalCorrAmount,
(A.AmountWithoutVAT - A.UsedAmountWithoutVAT - A.CreditAmountWithoutVAT - A.RoundingAmount) as CorrAmountWithoutVAT,
(A.LocalAmountWithoutVAT - A.LocalUsedAmountWithoutVAT - A.LocalCreditAmountWithoutVAT - A.LocalRoundingAmount) as LocalCorrAmountWithoutVAT
FROM
VATIssuedDInvoices A
WHERE
(A.ID = :ASource_ID) AND (A.Usable = 'N')
INTO
mCorrectionAmount, mLocalCorrectionAmount, mCorrectionAmountWithoutVAT, mLocalCorrAmountWithoutVAT;
if (mCorrectionAmount IS NOT NULL) THEN
CorrectionAmount = mCorrectionAmount;
if (mLocalCorrectionAmount IS NOT NULL) THEN
LocalCorrectionAmount = mLocalCorrectionAmount;
if (mCorrectionAmountWithoutVAT IS NOT NULL) THEN
CorrectionAmountWithoutVAT = mCorrectionAmountWithoutVAT;
if (mLocalCorrAmountWithoutVAT IS NOT NULL) THEN
LocalCorrAmountWithoutVAT = mLocalCorrAmountWithoutVAT;
end
SUSPEND;
END;