Елемент заряду значення не перенаправляється елемент книга запис (ILE), якщо рахунок-фактура елемент заряду рядок після того, як рахунок-фактура відповідного замовлення на придбання в Microsoft Dynamics NAV 2009

Застосовується до
Dynamics NAV 2009

Ця стаття стосується корпорації Майкрософт для всіх країн і всіх мов.

Ознаки

Припустімо, що опублікувати рахунок-фактура для замовлення на придбання в Microsoft Dynamics NAV 2009. Потім рахунок-фактура елемент заряду рядок, який має значення кількості, указаної для замовлення на придбання. У цій ситуації під час перегляду елемента книга запис для замовлення на придбання, кількість значення для елемента заряду рядка не зареєстровано. Ця проблема виникає в таких продуктах:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 із пакетом оновлень 1

      

Спосіб усунення проблеми

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

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

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

            
          

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

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

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

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

Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:

  • Дозвіл на змінення об'єкта, який буде змінюватися.
  • Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.

                
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.

Зміни коду

Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:

  1. Змініть код у тригері OnRun у коді Sales-Post кодоуніті (80), як виконайте наведені нижче дії.
    Наявний код 1

    ...
    TempPrePmtAmtToDeduct@1003 : Decimal;
    TransactionLogEntryNo@1024 : Integer;
    BEGIN
    IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN
    ...
    

    Код заміни 1

    ...
    TempPrePmtAmtToDeduct@1003 : Decimal;
    TransactionLogEntryNo@1024 : Integer;
    
    // Add the following line.
    SalesLineForCharge@1025 : Record 37;
    
    BEGIN
    IF PostingDateExists AND (ReplacePostingDate OR ("Posting Date" = 0D)) THEN BEGIN
    ...
    

    Наявний код 2

    ...
    ClearItemChargeAssgntFilter;
                            TempItemChargeAssgntSales.SETCURRENTKEY("Applies-to Doc. Type");
    
    // Delete the following line.
                            TempItemChargeAssgntSales.SETFILTER("Applies-to Doc. Type",'<>%1',"Document Type"); 
    
           TempItemChargeAssgntSales.SETRANGE("Document Line No.",SalesLine."Line No.");
                            IF TempItemChargeAssgntSales.FINDSET THEN
    ...
    

    Код заміни 2

    ...
    ClearItemChargeAssgntFilter;
                            TempItemChargeAssgntSales.SETCURRENTKEY("Applies-to Doc. Type");
                            TempItemChargeAssgntSales.SETRANGE("Document Line No.",SalesLine."Line No.");
                            IF TempItemChargeAssgntSales.FINDSET THEN
    ...
    

    Наявний код 3

    ...
    CASE TempItemChargeAssgntSales."Applies-to Doc. Type" OF
    TempItemChargeAssgntSales."Applies-to Doc. Type"::Shipment:
    
    // Delete the following lines.
    PostItemChargePerShpt(SalesLine);
    TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Receipt":
    PostItemChargePerRetRcpt(SalesLine);
    END;
    TempItemChargeAssgntSales.MARK(TRUE);
    // End of the lines.
    
    UNTIL TempItemChargeAssgntSales.NEXT = 0;
    END;
    END;
    ...
    

    Код заміни 3

    ...
    CASE TempItemChargeAssgntSales."Applies-to Doc. Type" OF
    TempItemChargeAssgntSales."Applies-to Doc. Type"::Shipment:
    
    // Add the following line
    BEGIN
    PostItemChargePerShpt(SalesLine);
    TempItemChargeAssgntSales.MARK(TRUE);
    END;
    TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Receipt":
    BEGIN
    PostItemChargePerRetRcpt(SalesLine);
    TempItemChargeAssgntSales.MARK(TRUE);
    END;
    TempItemChargeAssgntSales."Applies-to Doc. Type"::Order,
    TempItemChargeAssgntSales."Applies-to Doc. Type"::Invoice:
    BEGIN
    IF SalesLineForCharge.GET(
    TempItemChargeAssgntSales."Applies-to Doc. Type",
    TempItemChargeAssgntSales."Applies-to Doc. No.",
    TempItemChargeAssgntSales."Applies-to Doc. Line No.")
    THEN
    IF (SalesLineForCharge."Qty. to Ship (Base)" = 0) AND
    (SalesLineForCharge."Qty. to Invoice (Base)" = 0)
    THEN
    ERROR(Text054);
    END;
    TempItemChargeAssgntSales."Applies-to Doc. Type"::"Return Order",
    TempItemChargeAssgntSales."Applies-to Doc. Type"::"Credit Memo":
    BEGIN
    IF SalesLineForCharge.GET(
    TempItemChargeAssgntSales."Applies-to Doc. Type",
    TempItemChargeAssgntSales."Applies-to Doc. No.",
    TempItemChargeAssgntSales."Applies-to Doc. Line No.")
    THEN
    IF (SalesLineForCharge."Return Qty. to Receive (Base)" = 0) AND
    (SalesLineForCharge."Qty. to Invoice (Base)" = 0)
    THEN
    ERROR(Text054);
    END;
    END;
    // End of the lines.
    
    UNTIL TempItemChargeAssgntSales.NEXT = 0;
    END;
    END;
    ...
    

    Наявний код 4

    ...
    Text052@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.';
    Text053@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.';
    PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date);
    BEGIN
    ...
    

    Код заміни 4

    ...
    Text052@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.';
    Text053@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.';
    
    // Add the following line.
    Text054@1102601002 : TextConst 'ENU=The order line that the item charge has originally been assigned to has been partially or fully posted. You must reassign the item charge to the posted receipt or shipment instead.'; 
    
    PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date);
    BEGIN
    ...
    
  2. Змініть код в тригері OnRun в Purch.-Post codeunit (90), як виконайте наведені нижче дії.
    Наявний код 1

    ...
    ICInboxPurchHdr@1012 : Record 436;
    SalesHeader@1041 : Record 36;
    UpdateAnalysisView@1002 : Codeunit 410;
    UpdateItemAnalysisView@1008 : Codeunit 7150;
    ...
    

    Код заміни 1

    ...
    ICInboxPurchHdr@1012 : Record 436;
    SalesHeader@1041 : Record 36;
    
    // Add the following line.
    PurchLineForCharge@1042 : Record 39;
    
    UpdateAnalysisView@1002 : Codeunit 410;
    UpdateItemAnalysisView@1008 : Codeunit 7150;
    ...
    

    Наявний код 2

    ...
    ClearItemChargeAssgntFilter;
                            TempItemChargeAssgntPurch.SETCURRENTKEY("Applies-to Doc. Type");
    
    // Delete the following line.
                            TempItemChargeAssgntPurch.SETFILTER("Applies-to Doc. Type",'<>%1',"Document Type");  
    
                            TempItemChargeAssgntPurch.SETRANGE("Document Line No.",PurchLine."Line No.");
                            IF TempItemChargeAssgntPurch.FINDSET THEN
    ...
    

    Код заміни 2

    ...
    ClearItemChargeAssgntFilter;
                            TempItemChargeAssgntPurch.SETCURRENTKEY("Applies-to Doc. Type");
                            TempItemChargeAssgntPurch.SETRANGE("Document Line No.",PurchLine."Line No.");
                            IF TempItemChargeAssgntPurch.FINDSET THEN
    ...
    

    Наявний код 3

    ...
    CASE TempItemChargeAssgntPurch."Applies-to Doc. Type" OF
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::Receipt:
    
    // Delete the following lines.
    PostItemChargePerRcpt(PurchLine);
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Transfer Receipt":
    PostItemChargePerTransfer(PurchLine);
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Shipment":
    PostItemChargePerRetShpt(PurchLine);
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Sales Shipment":
    PostItemChargePerSalesShpt(PurchLine);
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Receipt":
    PostItemChargePerRetRcpt(PurchLine);
    END;
    TempItemChargeAssgntPurch.MARK(TRUE);
    // End of the lines.
    
    
    UNTIL TempItemChargeAssgntPurch.NEXT = 0;
    END;
    END;
    ...
    

    Код заміни 3

    ...
    CASE TempItemChargeAssgntPurch."Applies-to Doc. Type" OF
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::Receipt:
    
    // Add the following lines.
    BEGIN
    PostItemChargePerRcpt(PurchLine);
    TempItemChargeAssgntPurch.MARK(TRUE);
    END;
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Transfer Receipt":
    BEGIN
    PostItemChargePerTransfer(PurchLine);
    TempItemChargeAssgntPurch.MARK(TRUE);
    END;
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Shipment":
    BEGIN
    PostItemChargePerRetShpt(PurchLine);
    TempItemChargeAssgntPurch.MARK(TRUE);
    END;
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Sales Shipment":
    BEGIN
    PostItemChargePerSalesShpt(PurchLine);
    TempItemChargeAssgntPurch.MARK(TRUE);
    END;
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Receipt":
    BEGIN
    PostItemChargePerRetRcpt(PurchLine);
    TempItemChargeAssgntPurch.MARK(TRUE);
    END;
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::Order,
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::Invoice:
    BEGIN
    IF PurchLineForCharge.GET(
    TempItemChargeAssgntPurch."Applies-to Doc. Type",
    TempItemChargeAssgntPurch."Applies-to Doc. No.",
    TempItemChargeAssgntPurch."Applies-to Doc. Line No.")
    THEN
    IF (PurchLineForCharge."Qty. to Receive (Base)" = 0) AND
    (PurchLineForCharge."Qty. to Invoice (Base)" = 0)
    THEN
    ERROR(Text061);
    END;
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Return Order",
    TempItemChargeAssgntPurch."Applies-to Doc. Type"::"Credit Memo":
    BEGIN
    IF PurchLineForCharge.GET(
    TempItemChargeAssgntPurch."Applies-to Doc. Type",
    TempItemChargeAssgntPurch."Applies-to Doc. No.",
    TempItemChargeAssgntPurch."Applies-to Doc. Line No.")
    THEN
    IF (PurchLineForCharge."Return Qty. to Ship (Base)" = 0) AND
    (PurchLineForCharge."Qty. to Invoice (Base)" = 0)
    THEN
    ERROR(Text061);
    END;
    END;
    // End of the lines.
    
    UNTIL TempItemChargeAssgntPurch.NEXT = 0;
    END;
    END;
    ...
    

    Наявний код 4

    ...
    Text059@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.';
    Text060@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.';
    PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date);
    ...
    

    Код заміни 4

    ...
    Text059@1102601000 : TextConst 'ENU=You must assign item charge %1 if you want to invoice it.';
    Text060@1102601001 : TextConst 'ENU=You can not invoice item charge %1 because there is no item ledger entry to assign it to.';
    
    // Add the following line.
    Text061@1102601002 : TextConst 'ENU=The order line that the item charge has originally been assigned to has been partially or fully posted. You must reassign the item charge to the posted receipt or shipment instead.';
    
    PROCEDURE SetPostingDate@1(NewReplacePostingDate@1000 : Boolean;NewReplaceDocumentDate@1001 : Boolean;NewPostingDate@1002 : Date);
    ...
    

          

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

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

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 із пакетом оновлень 1

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

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

Стан

Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".

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