Ця стаття відноситься до Microsoft Dynamics NAV всі країни і всі мови.

Причини

Під час оновлення Microsoft Dynamics NAV, 2009 для Dynamics NAV 2013 року, в Prepmt. З. сума ПДВ (LCY) відсутнє в продажу та придбання рядків. Якщо час створення кредитних приміток, для оплати рахунку-фактури за рахунок оплати Опубліковано перед оновленням, з'являється повідомлення про несумісність публікуючи оплати кредитною-приміток.

Вирішення

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

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

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

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

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

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

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

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

  • Змінити дозвіл об'єкт, який буде змінити.

  • Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт і, код 9015 системи-об'єкт

    об'єкт.

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

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютерів.

Щоб вирішити цю проблему, виконайте такі дії.

  1. Змінити код оновлення функції в оновлення нові версії Codeunit (104048), у наступним чином:
    Наявний код

    ...UpdateItemLedgerEntry(StateIndicator);
    UpdateDOCreditCard(StateIndicator);
    UpdateSalesOrderDate(StateIndicator);
    UpdateOutlookSynchFilter(StateIndicator);
    UpdateOutlookSynchField(StateIndicator);
    DeleteRemovedPermissions(StateIndicator);
    ...

    Заміна код

    ...UpdateItemLedgerEntry(StateIndicator);
    UpdateDOCreditCard(StateIndicator);
    UpdateSalesOrderDate(StateIndicator);

    // Add the following lines.
    UpdateSalesLines(StateIndicator);
    UpdatePurchLines(StateIndicator);
    // End of the added lines.

    UpdateOutlookSynchFilter(StateIndicator);
    UpdateOutlookSynchField(StateIndicator);
    DeleteRemovedPermissions(StateIndicator);
    ...
  2. Додайте такі функції:

    LOCAL PROCEDURE UpdateSalesLines@62(VAR StateIndicator@1000 : Record 104037);VAR
    SalesLine@1001 : Record 37;
    LastDocumentNo@1002 : Code[20];
    PrepmtInvReminderAmount@1003 : Decimal;
    BEGIN
    WITH SalesLine DO
    IF StateIndicator.UpdateTable(TABLENAME) THEN BEGIN
    TimeLog.TimeLogInsert(TimeLog,TABLENAME,TRUE);
    SETCURRENTKEY("Document Type","Document No.","Line No.");
    IF FINDSET THEN
    REPEAT
    StateIndicator.Update;
    IF ("Document Type" = "Document Type"::Order) AND ("Prepayment Amount" <> "Prepmt. Amt. Incl. VAT") THEN BEGIN
    IF "Document No." <> LastDocumentNo THEN BEGIN
    LastDocumentNo := "Document No.";
    PrepmtInvReminderAmount := 0;
    END;
    IF ("Prepmt. Amount Inv. (LCY)" <> 0) AND ("Prepmt. VAT Amount Inv. (LCY)" = 0) THEN BEGIN
    "Prepmt. VAT Amount Inv. (LCY)" :=
    CalcRndedAmount("Prepmt. Amount Inv. (LCY)","Prepayment VAT %" / 100,PrepmtInvReminderAmount);
    MODIFY;
    END;
    END;
    UNTIL NEXT = 0;
    TimeLog.TimeLogInsert(TimeLog,TABLENAME,FALSE);
    StateIndicator.EndUpdateTable(TABLENAME);
    END;

    LOCAL PROCEDURE UpdatePurchLines@63(VAR StateIndicator@1000 : Record 104037);
    VAR
    PurchaseLine@1001 : Record 39;
    LastDocumentNo@1002 : Code[20];
    PrepmtInvReminderAmount@1003 : Decimal;
    BEGIN
    WITH PurchaseLine DO
    IF StateIndicator.UpdateTable(TABLENAME) THEN BEGIN
    TimeLog.TimeLogInsert(TimeLog,TABLENAME,TRUE);
    IF FINDSET THEN
    REPEAT
    StateIndicator.Update;
    IF ("Document Type" = "Document Type"::Order) AND ("Prepayment Amount" <> "Prepmt. Amt. Incl. VAT") THEN BEGIN
    IF "Document No." <> LastDocumentNo THEN BEGIN
    LastDocumentNo := "Document No.";
    PrepmtInvReminderAmount := 0;
    END;
    IF ("Prepmt. Amount Inv. (LCY)" <> 0) AND ("Prepmt. VAT Amount Inv. (LCY)" = 0) THEN BEGIN
    "Prepmt. VAT Amount Inv. (LCY)" :=
    CalcRndedAmount("Prepmt. Amount Inv. (LCY)","Prepayment VAT %" / 100,PrepmtInvReminderAmount);
    MODIFY;
    END;
    END;
    UNTIL NEXT = 0;
    TimeLog.TimeLogInsert(TimeLog,TABLENAME,FALSE);
    StateIndicator.EndUpdateTable(TABLENAME);
    END;

    LOCAL PROCEDURE CalcRndedAmount@64(LineAmount@1000 : Decimal;Ratio@1001 : Decimal;VAR Reminder@1002 : Decimal) RndedAmount : Decimal;
    VAR
    Amount@1003 : Decimal;
    BEGIN
    Amount := Reminder + LineAmount * Ratio;
    RndedAmount := ROUND(Amount);
    Reminder := Amount - RndedAmount;
    END;


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

Потрібно мати Microsoft Dynamics NAV 2013, щоб застосувати це виправлення.

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

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

Стан

Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".

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

Потрібна додаткова довідка?

Отримуйте нові функції раніше за інших
Приєднатися до Microsoft оцінювачів

Ця інформація корисна?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?

Дякуємо за відгук!

×