Системи не відображає вручну відсоток сума ПДВ, коли загальні журнал Словацька версії або чеською версії Microsoft Dynamics NAV 5.0 з пакетом оновлень 1

Застосовується до: Microsoft Dynamics NAV 5.0

Ця стаття відноситься до Microsoft Dynamics NAV таких країнах і мови.
  • Словацька (Словаччина)
  • Чеська (cz)

Причини


Припустімо, що створюється новий рядок у журналі загальні Словацька версії або чеською версії Microsoft Dynamics NAV 5.0 з пакетом оновлень 1 (SP1). Після того, як установити значення ПДВ обсяг вручну, і повідомлення загальні журнал системи переобчислення суми податок на додану вартість (ПДВ) на розміщення журнал і замінює скоригована ПДВ суми за допомогою обчислене значення.

Вирішення


Відомості про виправлення

Корпорація Майкрософт випустила підтримуване виправлення доступна. Однак, застосовувати лише для вирішення проблеми, описаної в цій статті. Він придатний лише для систем, які зазнають цієї конкретної проблеми. Те, що це виправлення може потребувати додаткового тестування. Таким чином, якщо ви не завдає значної, рекомендовано почекати до виходу чергового пакета оновлень Microsoft Dynamics NAV, 5.0 або наступної версії Microsoft Dynamics NAV, що містить це виправлення.

Примітка. В окремих випадках оплату звернення до служби підтримки може бути скасовано якщо технічної підтримки професійного для Microsoft Dynamics і пов'язані продукти визначає телефонів служби. Плата стягується на додаткові питання і проблеми, які не пов'язані з оновленням.


Відомості про інсталяцію

Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації, без гарантій – прямих або інших. Це включає, але не обмежується, будь-яких гарантій придатності до продажу та придатності для певної мети. У цій статті припускається, що ви знайомі з, що демонструє мову програмування та інструменти, які використовуються для створення та налагодження процедури. Співробітники служби підтримки корпорації Майкрософт можуть пояснити функціональні особливості кожної конкретної процедури, але вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів.

Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі Microsoft Navision-клієнт відключився системи. Пакет оновлень містить Microsoft Navision застосунок служби (NAS) клієнта користувачів. Ви повинні тільки клієнт користувача, який увійшов до системи, під час виконання цього виправлення.

Щоб застосувати це виправлення, потрібно мати ліцензію для розробників.

Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows, вхід вікна або у вікні бази даних входи призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено роль ID "Супер", необхідно переконатися, що обліковий запис користувача, має такі дозволи:
  • Змінити дозвіл об'єкт, який буде змінити.
  • Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт а також системи об'єкт з Ідентифікатором 9015 об'єкта.


Примітка. Маєте відповідних прав у сховища даних, якщо не потрібно виконати дані відновлення не потрібно.

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії.
  1. Змінити код у тригер ПДВ % - OnValidate генералом журналу рядка таблиці (81) наступним чином:
    Наявний код
    ...  CASE "VAT Calculation Type" OF
    "VAT Calculation Type"::"Normal VAT",
    "VAT Calculation Type"::"Reverse Charge VAT":

    // Delete the following lines.
    BEGIN
    GLSetup.GET;
    IF GLSetup."Round VAT Coeff." THEN BEGIN
    GLSetup.GetRoundingParamenters(Currency,RoundingPrecision,RoundingDirection);
    "VAT Amount" :=
    ROUND(
    Amount * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"),
    RoundingPrecision,
    RoundingDirection);
    "VAT Base Amount" := Amount - "VAT Amount";
    END ELSE BEGIN
    "VAT Base Amount" :=
    ROUND(Amount / (1 + "VAT %" / 100),Currency."Amount Rounding Precision");
    "VAT Amount" :=
    ROUND(Amount - "VAT Base Amount",Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    END;
    END;
    // End of the deleted lines.

    "VAT Calculation Type"::"Full VAT":
    BEGIN
    IF ("Prepayment Type" = "Prepayment Type"::Advance) AND NOT "System-Created Entry" AND
    ...

    Заміна код
    ...  CASE "VAT Calculation Type" OF
    "VAT Calculation Type"::"Normal VAT",
    "VAT Calculation Type"::"Reverse Charge VAT":

    // Add the following line.
    CalcVATAmount(Amount,"VAT Amount","VAT Base Amount","VAT %");

    "VAT Calculation Type"::"Full VAT":
    BEGIN
    IF ("Prepayment Type" = "Prepayment Type"::Advance) AND NOT "System-Created Entry" AND
    ...
    ...

  2. Змінити код у тригер бал. ПДВ % - OnValidate генералом журналу рядка таблиці (81) наступним чином:
    Наявний код
    ...  CASE "Bal. VAT Calculation Type" OF
    "Bal. VAT Calculation Type"::"Normal VAT",
    "Bal. VAT Calculation Type"::"Reverse Charge VAT":

    // Delete the following lines.
    BEGIN
    GLSetup.GET;
    IF GLSetup."Round VAT Coeff." THEN BEGIN
    GLSetup.GetRoundingParamenters(Currency,RoundingPrecision,RoundingDirection);
    "Bal. VAT Amount" :=
    ROUND(
    -Amount * ROUND("Bal. VAT %" / (100 + "Bal. VAT %"),GLSetup."VAT Coeff. Rounding Precision"),
    RoundingPrecision,
    RoundingDirection);
    "Bal. VAT Base Amount" := -Amount - "Bal. VAT Amount";
    END ELSE BEGIN
    "Bal. VAT Base Amount" :=
    ROUND(-Amount / (1 + "Bal. VAT %" / 100),Currency."Amount Rounding Precision");
    "Bal. VAT Amount" :=
    ROUND(-Amount - "Bal. VAT Base Amount",Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    END;
    END;
    // End of the deleted lines.

    "Bal. VAT Calculation Type"::"Full VAT":
    "Bal. VAT Amount" := -Amount;
    "Bal. VAT Calculation Type"::"Sales Tax":
    ...

    Заміна код
    ...  CASE "Bal. VAT Calculation Type" OF
    "Bal. VAT Calculation Type"::"Normal VAT",
    "Bal. VAT Calculation Type"::"Reverse Charge VAT":

    // Add the following line.
    CalcVATAmount(-Amount,"Bal. VAT Amount","Bal. VAT Base Amount","Bal. VAT %");

    "Bal. VAT Calculation Type"::"Full VAT":
    "Bal. VAT Amount" := -Amount;
    "Bal. VAT Calculation Type"::"Sales Tax":
    ...

  3. Створіть нову функцію локального CalcVATAmount генералом журналу рядка таблиці (81) наступним чином:
      LOCAL PROCEDURE CalcVATAmount@1220000(Amount@1220000 : Decimal;VAR VATAmount@1220001 : Decimal;VAR VATBase@1220002 : Decimal;VATPercent@1220003 : Decimal);  VAR
    RoundingPrecision@1220004 : Decimal;
    RoundingDirection@1220005 : Text[1];
    BEGIN
    GLSetup.GET;
    IF GLSetup."Round VAT Coeff." THEN BEGIN
    GLSetup.GetRoundingParamenters(Currency,RoundingPrecision,RoundingDirection);
    VATAmount :=
    ROUND(
    Amount * ROUND(VATPercent / (100 + VATPercent),GLSetup."VAT Coeff. Rounding Precision"),
    RoundingPrecision,
    RoundingDirection);
    END ELSE
    VATAmount :=
    ROUND(
    Amount * VATPercent / (100 + VATPercent),
    Currency."Amount Rounding Precision",Currency.VATRoundingDirection);
    VATBase := Amount - VATAmount;
    END;

  4. Змін у функції InitVat в полі генералом Jnl.-повідомлення рядка, codeunit (12). Щоб це зробити, виконайте такі дії:
    1. Видалення локального таких змінних:
      • CalculatedVATAmtLCY: десятковий
      • RoundingPrecisionLCY: десятковий
      • RoundingDirectionLCY: Текст [1]
    2. Додавання нового змінну і вкажіть змінна наступним чином:
      • Ім'я: VATAmtLCY
      • DataType:Decimal
    3. Змінити код таким чином:
      Наявний код 1
      ...    ELSE
      AddCurrGLEntryVATAmt := CalcLCYToAddCurr(GLEntry."VAT Amount");
      END ELSE BEGIN

      // Delete the following line.
      GLEntry.Amount := ROUND("Amount (LCY)" / (1 + VATPostingSetup."VAT %" / 100)) +
      // End of the deleted line.

      GenJnlLine."VAT Amount LCY (Non Deduct.)";
      GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount;
      ...

      Код на заміну 1
      ...    ELSE
      AddCurrGLEntryVATAmt := CalcLCYToAddCurr(GLEntry."VAT Amount");
      END ELSE BEGIN

      // Add the following lines.
      GLEntry.Amount :=
      "Amount (LCY)" - ROUND("Amount (LCY)" * VATPostingSetup."VAT %" / (100 + VATPostingSetup."VAT %")) +
      //End of the added lines.

      GenJnlLine."VAT Amount LCY (Non Deduct.)";
      GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount;
      ...

      Наявний код 2
      ...    GenJnlLine."VAT Amount LCY (Non Deduct.)";
      GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount;

      // Delete the following lines.
      GLSetup.GET;
      GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY);
      IF GLSetup."Round VAT Coeff." THEN
      CalculatedVATAmtLCY :=
      ROUND(
      "Amount (LCY)" * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"),
      RoundingPrecisionLCY,
      RoundingDirectionLCY)
      ELSE
      CalculatedVATAmtLCY :=
      ROUND(
      "Amount (LCY)" - ROUND("Amount (LCY)" / (1 + "VAT %" / 100),RoundingPrecisionLCY),
      RoundingPrecisionLCY,
      RoundingDirectionLCY);
      IF ("VAT Amount (LCY)" <> CalculatedVATAmtLCY) AND
      ("Currency Code" <> '')
      THEN BEGIN
      // End of the deleted lines.

      GLEntry.Amount := "VAT Base Amount (LCY)";
      GLEntry."VAT Amount" := "VAT Amount (LCY)";
      END;
      ...

      Код на заміну 2
      ...    GenJnlLine."VAT Amount LCY (Non Deduct.)";
      GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount;

      // Add the following lines.
      VATAmtLCY := CalculatedVATAmountLCY;
      IF ("VAT Amount (LCY)" <> VATAmtLCY) AND ("Currency Code" <> '') THEN BEGIN
      //End of the added lines.
      GLEntry.Amount := "VAT Base Amount (LCY)";
      GLEntry."VAT Amount" := "VAT Amount (LCY)";
      // Add the following lines.

      END ELSE
      IF GLSetup."Round VAT Coeff." THEN BEGIN
      GLEntry."VAT Amount" := VATAmtLCY - "VAT Amount LCY (Non Deduct.)";
      GLEntry.Amount := "Amount (LCY)" - GLEntry."VAT Amount";
      //End of the added lines.
      END;
      ...

  5. Змін у функції InsertVAT в полі генералом Jnl.-повідомлення рядка, codeunit (12). Щоб це зробити, виконайте такі дії:
    1. Видалення локального таких змінних:
      • CalculatedVATAmtLCY: десятковий
      • RoundingPrecisionLCY: десятковий
      • RoundingDirectionLCY: Текст [1]
    2. Змінити код таким чином:
      Наявний код
      ...            "Posting Date","Currency Code","VAT Difference",
      CurrExchRate.ExchangeRate("Posting Date","Currency Code")));

      // Delete the following lines.
      GLSetup.GET;
      GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY);
      IF GLSetup."Round VAT Coeff." THEN
      CalculatedVATAmtLCY :=
      ROUND(
      "Amount (LCY)" * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"),
      RoundingPrecisionLCY,
      RoundingDirectionLCY)
      ELSE
      CalculatedVATAmtLCY :=
      ROUND(
      "Amount (LCY)" - ROUND("Amount (LCY)" / (1 + "VAT %" / 100),RoundingPrecisionLCY),
      RoundingPrecisionLCY,
      RoundingDirectionLCY);
      IF ("VAT Amount (LCY)" <> CalculatedVATAmtLCY) AND
      ("Currency Code" <> '')
      THEN
      VATDifferenceLCY := "VAT Amount (LCY)" - CalculatedVATAmtLCY;
      // End of the deleted lines.

      IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN
      IF TaxJurisdiction.Code <> TaxDetail."Tax Jurisdiction Code" THEN
      ...

      Заміна код
      ...                    "Posting Date","Currency Code","VAT Difference",
      CurrExchRate.ExchangeRate("Posting Date","Currency Code")));

      // Add the following lines.
      IF "VAT Amount (LCY)" <> CalculatedVATAmountLCY THEN
      VATDifferenceLCY := "VAT Amount (LCY)" - CalculatedVATAmountLCY;
      //End of the added lines.

      IF "VAT Calculation Type" = "VAT Calculation Type"::"Sales Tax" THEN BEGIN
      IF TaxJurisdiction.Code <> TaxDetail."Tax Jurisdiction Code" THEN
      ...

  6. Створіть нову функцію локального CalculatedVATAmountLCY в з генералом Jnl.-повідомлення рядка codeunit (12), як описано нижче:
      LOCAL PROCEDURE CalculatedVATAmountLCY@1220009() : Decimal;  VAR
    CalculatedVATAmtLCY@1220002 : Decimal;
    RoundingPrecisionLCY@1220001 : Decimal;
    RoundingDirectionLCY@1220000 : Text[1];
    BEGIN
    WITH GenJnlLine DO BEGIN
    IF "Currency Code" = '' THEN
    EXIT("VAT Amount (LCY)");
    GLSetup.GET;
    GLSetup.GetRoundingParamentersLCY(Currency,RoundingPrecisionLCY,RoundingDirectionLCY);
    IF GLSetup."Round VAT Coeff." THEN
    CalculatedVATAmtLCY :=
    ROUND(
    "Amount (LCY)" * ROUND("VAT %" / (100 + "VAT %"),GLSetup."VAT Coeff. Rounding Precision"),
    RoundingPrecisionLCY,
    RoundingDirectionLCY)
    ELSE
    CalculatedVATAmtLCY :=
    ROUND(
    "Amount (LCY)" - ROUND("Amount (LCY)" / (1 + "VAT %" / 100),RoundingPrecisionLCY),
    RoundingPrecisionLCY,
    RoundingDirectionLCY);
    EXIT(CalculatedVATAmtLCY);
    END;
    END;

Попередні вимоги

Ви повинні мати одну з таких продуктів, щоб застосувати це виправлення:
  • Словацька версії Microsoft Dynamics NAV 5.0 з пакетом оновлень 1
  • Чеська версія Microsoft Dynamics NAV 5.0 з пакетом оновлень 1
Крім того, необхідно інсталювати виправлення 2527241, для застосування цього виправлення.
Щоб отримати додаткові відомості, клацніть номер статті в базі знань Microsoft:

2527241 додано сума ПДВ у ПДВ запис, який неправильно відображається під час використання функції "Круглий ПДВ Coeff" чеською версії Microsoft Dynamics NAV 5.0 SP1 із пакетом оновлень 1 функція

Відомості про видалення

Це виправлення не можна видалити.

Стан


Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".
Примітка. Це "Швидка публікація" статті, надана службою підтримки корпорації Майкрософт. Відомості в цій статті надано без змін у відповідь на повідомлення про проблеми. З огляду на швидкість публікації матеріали можуть містити орфографічні помилки. Їх може бути змінено в будь-який час без повідомлення. Щоб отримати додаткові відомості, див. Умови використання.