Procedura-CorrectionAmountForVATDDInv

Parametry:

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

Návratové hodnoty:

NázevPopisDatový typ
CorrectionAmountNumeric(15, 3)
LocalCorrectionAmountNumeric(15, 3)
CorrectionAmountWithoutVATNumeric(15, 3)
LocalCorrAmountWithoutVATNumeric(15, 3)

Závislosti:

NázevPopisTřída
RowAmountsForVATICrNoteProcedures
UsedAmountsForVATDInvoiceProcedures

Tělo:

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;

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