Повідомлення про помилку, при спробі надіслати дані на придбання кредитною приміток, використовує розміри Португальська версії Microsoft Dynamics NAV 4.0 SP3 для: "операцію неможливо виконати, оскільки це призведе до невідповідності головної книги запису таблиці"


У цій статті стосуються Microsoft Dynamics NAV у мовних параметрах в Португальська (Португалія).

Причини


Португальський версія Microsoft Dynamics NAV 4.0 з пакетом оновлень 3 (SP3) Припустімо, значення типу обчислення ПДВ "Звичайний ПДВ" а також змініть значення ПДВ, податок на додану вартість (ПДВ) у публікації налаштування. При спробі надіслати дані придбання кредитних приміток, який використовує розміри, з'являється таке повідомлення про помилку, відповідно:
Не вдалося завершити операцію, оскільки це призведе до невідповідності головної книги запис таблиці.
Перевірте, де і як ПОСЛІДОВНІ функція використовується в транзакції знайти причину помилки.
Зверніться до системного адміністратора.
Таблиці можна позначено як несумісні під час комплексний завдання, наприклад повідомлення. Це запобігає даних оновлюється неправильно.

Вирішення


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

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

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



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

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

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

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

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


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

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії.
  1. Додайте наведену нижче глобальну змінну в з генералом Jnl.-повідомлення рядка, codeunit (12):
    • Ім'я: TempVATAmount
    • Тип даних: десятковий

  2. Змін у функції InitVat , у полі генералом Jnl.-повідомлення рядка codeunit (12), як описано нижче:
    Додайте такі локальну змінну.
    • Ім'я: TempVATDAmount
    • Тип даних: десятковий
    Код-Exsiting 1
    ...                     GLEntry.Amount := "VAT Base Amount (LCY)" + "VAT Difference";
    GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount;

    GLEntry.Amount :=
    GLEntry.Amount + ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT N.D. %" / VATPostingSetup."VAT %")

    + "ND Difference" - "VAT Difference";
    ...

    Код на заміну 1
    ...                      GLEntry.Amount := "VAT Base Amount (LCY)" + "VAT Difference";
    GLEntry."VAT Amount" := "Amount (LCY)" - GLEntry.Amount;

    TempVATDAmount := ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT D. %" / VATPostingSetup."VAT %");
    GLEntry.Amount :=
    GLEntry.Amount + GLEntry."VAT Amount" - TempVATDAmount

    + "ND Difference" - "VAT Difference";
    ...


    Exsiting з кодом 2
    ...                     + "ND Difference" - "VAT Difference";  

    GLEntry."VAT Amount" :=
    GLEntry."VAT Amount" - ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT N.D. %" / VATPostingSetup."VAT %")

    + "VAT Difference";

    GLEntry."Additional-Currency Amount" := "Source Curr. VAT Base Amount";
    ...

    Код на заміну 2
    ...                                 + "ND Difference" - "VAT Difference";

    GLEntry."VAT Amount" := TempVATDAmount

    + "VAT Difference";

    GLEntry."Additional-Currency Amount" := "Source Curr. VAT Base Amount";
    ...


    Код-Exsiting 3
    ...     //--PT----
    IF VATPostingSetup."VAT D. %" > 0 THEN BEGIN


    GLEntry."VAT Amount" := ROUND(GLEntry.Amount * VATPostingSetup."VAT D. %" / 100);


    AddCurrGLEntryVATAmt :=
    ROUND(
    GLEntry."Additional-Currency Amount" * VATPostingSetup."VAT D. %" / 100,
    ...

    Код на заміну 3
    ...    //--PT----
    IF VATPostingSetup."VAT D. %" > 0 THEN BEGIN


    TempVATAmount := ROUND(GLEntry.Amount * VATPostingSetup."VAT %" / 100);
    GLEntry."VAT Amount" := ROUND(GLEntry.Amount * VATPostingSetup."VAT D. %" / 100);
    TempVATDAmount := GLEntry."VAT Amount";


    AddCurrGLEntryVATAmt :=
    ROUND(
    GLEntry."Additional-Currency Amount" * VATPostingSetup."VAT D. %" / 100,
    ...


    Exsiting з кодом 4
    ...                                     ROUND(
    GLEntry."Additional-Currency Amount" * VATPostingSetup."VAT D. %" / 100,
    AddCurrency."Amount Rounding Precision");
    END ELSE BEGIN
    GLEntry."VAT Amount" := ROUND(GLEntry.Amount * VATPostingSetup."VAT N.D. %" / 100);
    AddCurrGLEntryVATAmt :=
    ...

    Заміна з кодом 4
    ...                                    ROUND(
    GLEntry."Additional-Currency Amount" * VATPostingSetup."VAT D. %" / 100,
    AddCurrency."Amount Rounding Precision");

    // Add the following line.
    GLEntry.Amount := ROUND(GLEntry.Amount + TempVATAmount - TempVATDAmount);
    // End of the added line.

    END ELSE BEGIN
    GLEntry."VAT Amount" := ROUND(GLEntry.Amount * VATPostingSetup."VAT N.D. %" / 100);
    AddCurrGLEntryVATAmt :=
    ...


    Exsiting код, 5
    ...                                      GLEntry."Additional-Currency Amount" * VATPostingSetup."VAT N.D. %" / 100,
    AddCurrency."Amount Rounding Precision");
    GenJnlLine."UE Aquisition Not Accep." := TRUE;
    END;
    ...

    Код на заміну 5
    ...                                     GLEntry."Additional-Currency Amount" * VATPostingSetup."VAT N.D. %" / 100,
    AddCurrency."Amount Rounding Precision");
    GenJnlLine."UE Aquisition Not Accep." := TRUE;

    // Add the following lines.
    GLEntry.Amount :=
    ROUND(
    GLEntry.Amount * (1 + VATPostingSetup."VAT N.D. %" / 100));
    // End of the added lines.

    END;
    ...


    Exsiting код, 6
    ...                              END;

    GLEntry.Amount :=
    ROUND(
    GLEntry.Amount * (1 + VATPostingSetup."VAT N.D. %" / 100));

    GLEntry."Additional-Currency Amount" :=
    ROUND(
    GLEntry."Additional-Currency Amount" * (1 + VATPostingSetup."VAT N.D. %" / 100));
    ...

    Код на заміну 6
    ...                                  END;


    GLEntry."Additional-Currency Amount" :=
    ROUND(
    GLEntry."Additional-Currency Amount" * (1 + VATPostingSetup."VAT N.D. %" / 100));
    ...


    Код-Exsiting 7
    ...                    GLEntry."VAT Amount" := "VAT Amount (LCY)";

    //--PT----

    IF VATPostingSetup."VAT %"<>0 THEN BEGIN
    GLEntry.Amount := GLEntry.Amount +
    (GLEntry."VAT Amount" - ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT D. %" / VATPostingSetup."VAT %")) +
    "ND Difference";


    IF VATPostingSetup."VAT Calculation Type" = VATPostingSetup."VAT Calculation Type"::"Reverse Charge VAT" THEN BEGIN
    ...

    Код на заміну 7
    ...                    GLEntry."VAT Amount" := "VAT Amount (LCY)";

    //--PT----

    TempVATAmount := GLEntry."VAT Amount";
    IF VATPostingSetup."VAT %" <>0 THEN BEGIN
    TempVATDAmount := ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT D. %" / VATPostingSetup."VAT %");
    GLEntry.Amount := GLEntry.Amount + GLEntry."VAT Amount" - TempVATDAmount + "ND Difference";


    IF VATPostingSetup."VAT Calculation Type" = VATPostingSetup."VAT Calculation Type"::"Reverse Charge VAT" THEN BEGIN
    ...


    Код-Exsiting 8
    ...   
    IF VATPostingSetup."VAT Calculation Type" = VATPostingSetup."VAT Calculation Type"::"Reverse Charge VAT" THEN BEGIN

    IF "ND Difference" > 0 THEN BEGIN
    IF VATPostingSetup."VAT D. %" > 0 THEN
    GLEntry."VAT Amount" :=
    ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT D. %" / VATPostingSetup."VAT %") - "ND Difference"
    ELSE BEGIN
    GLEntry."VAT Amount" :=
    ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT N.D. %" / VATPostingSetup."VAT %") - "ND Difference";
    "UE Aquisition Not Accep." := TRUE;
    END;
    END ELSE BEGIN
    IF VATPostingSetup."VAT D. %" > 0 THEN
    GLEntry."VAT Amount" :=
    ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT D. %" / VATPostingSetup."VAT %")
    ELSE BEGIN
    GLEntry."VAT Amount" :=
    ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT N.D. %" / VATPostingSetup."VAT %");
    "UE Aquisition Not Accep." := TRUE;
    END;
    END;

    END ELSE BEGIN
    IF "ND Difference" > 0 THEN
    IF VATPostingSetup."VAT D. %" > 0 THEN
    ...

    Код на заміну 8
    ...  
    IF VATPostingSetup."VAT Calculation Type" = VATPostingSetup."VAT Calculation Type"::"Reverse Charge VAT" THEN BEGIN

    IF VATPostingSetup."VAT D. %" > 0 THEN
    GLEntry."VAT Amount" := TempVATDAmount
    ELSE
    "UE Aquisition Not Accep." := TRUE;
    IF "ND Difference" > 0 THEN
    GLEntry."VAT Amount" := GLEntry."VAT Amount" - "ND Difference";

    END ELSE BEGIN
    IF "ND Difference" > 0 THEN
    IF VATPostingSetup."VAT D. %" > 0 THEN
    ...


    Exsiting код, 9
    ...                           GLEntry."VAT Amount" :=
    ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT D. %" / VATPostingSetup."VAT %")
    ELSE

    GLEntry."VAT Amount" :=
    GLEntry."VAT Amount" - ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT N.D. %" / VATPostingSetup."VAT %")
    + "VAT Difference";

    END;
    END;
    ...

    Код на заміну 9
    ...                           GLEntry."VAT Amount" :=
    ROUND(GLEntry."VAT Amount" * VATPostingSetup."VAT D. %" / VATPostingSetup."VAT %")
    ELSE

    GLEntry."VAT Amount" := TempVATDAmount + "VAT Difference";

    END;
    END;
    ...

  3. Змін у функції InsertVAT , у полі генералом Jnl.-повідомлення рядка codeunit (12), як описано нижче:
    Exsiting код
    ...                           InitGLEntry(
    VATPostingSetup."Return VAT account (Sales)",
    // -GLEntryVATAmount - VATBase * VATPostingSetup."VAT N.D. %" / 100,

    ROUND(-GLEntryVATAmount - VATBase * VATPostingSetup."VAT N.D. %" / 100),

    // -SrcCurrGLEntryVATAmt - SrcCurrVATBase * VATPostingSetup."VAT N.D. %" / 100,
    ROUND(-SrcCurrGLEntryVATAmt - SrcCurrVATBase * VATPostingSetup."VAT N.D. %" / 100),
    TRUE,TRUE);
    ...

    Заміна код
    ...                            InitGLEntry(
    VATPostingSetup."Return VAT account (Sales)",
    // -GLEntryVATAmount - VATBase * VATPostingSetup."VAT N.D. %" / 100,

    -TempVATAmount,

    // -SrcCurrGLEntryVATAmt - SrcCurrVATBase * VATPostingSetup."VAT N.D. %" / 100,
    ROUND(-SrcCurrGLEntryVATAmt - SrcCurrVATBase * VATPostingSetup."VAT N.D. %" / 100),
    TRUE,TRUE);
    ...




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

Потрібно мати Португальська версії Microsoft Dynamics NAV 4.0 з пакетом оновлень 3 (SP3) для застосування цього виправлення.

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

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

Стан


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