У звіті про переказ відображається неправильні відомості, коли ви публікуєте часткові платежі рахунків-фактур EFT банку та постачальника в північноамериканської версії Microsoft Dynamics NAV 2009 із пакетом оновлень 1

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

Ця стаття стосується Microsoft Dynamics NAV для локалізації північноамериканських мов (na).

Ознаки

Припустімо, що параметр Summarize для постачальника у формі запропонувати постачальника Платежі північноамериканської версії Microsoft Dynamics NAV 2009 із пакетом оновлень 1. Коли ви публікуєте часткову оплату рахунків-фактур для EFT банку та постачальника, ви помітите, що пов'язані грошові звіти відображається неправильні відомості.

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

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

Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, ми радимо дочекатися наступного 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. Змініть код у тригері OnAfterGetRecord gen. Рядок журналу dataitem у звіті експорт електронної Платежі (10083), як виконайте такі дії:
    Exsiting code

    ...
          VendLedgEntry.CALCFIELDS("Remaining Amt. (LCY)");
        IF (VendLedgEntry."Pmt. Discount Date" >= SettleDate) AND
      (VendLedgEntry."Remaining Pmt. Disc. Possible" <>0) AND
    
           (-(ExportAmount + VendLedgEntry."Remaining Pmt. Disc. Possible") >= -VendLedgEntry."Remaining Amt. (LCY)")
    
        THEN BEGIN
          DiscountTaken := -VendLedgEntry."Remaining Pmt. Disc. Possible";
    
          AmountPaid := -(VendLedgEntry."Remaining Amt. (LCY)" - VendLedgEntry."Remaining Pmt. Disc. Possible");
        END ELSE IF -ExportAmount > -VendLedgEntry."Remaining Amt. (LCY)" THEN
          AmountPaid := -VendLedgEntry."Remaining Amt. (LCY)"
    
        ELSE
          AmountPaid := -ExportAmount;
      END;
    ...
        CustLedgEntry.CALCFIELDS("Remaining Amt. (LCY)");
        IF (CustLedgEntry."Pmt. Discount Date" >= SettleDate) AND
           (CustLedgEntry."Remaining Pmt. Disc. Possible" <>0) AND
    
           (-(ExportAmount - CustLedgEntry."Remaining Pmt. Disc. Possible") >= -CustLedgEntry."Remaining Amt. (LCY)")
    
        THEN BEGIN
          DiscountTaken := -CustLedgEntry."Remaining Pmt. Disc. Possible";
    
          AmountPaid := -(CustLedgEntry."Remaining Amt. (LCY)" - CustLedgEntry."Remaining Pmt. Disc. Possible");
        END ELSE IF -ExportAmount > -CustLedgEntry."Remaining Amt. (LCY)" THEN
          AmountPaid := -CustLedgEntry."Remaining Amt. (LCY)"
    
        ELSE
          AmountPaid := -ExportAmount;
      END;    
    ...
    
    

    Код заміни

    ...
          VendLedgEntry.CALCFIELDS("Remaining Amt. (LCY)");
        IF (VendLedgEntry."Pmt. Discount Date" >= SettleDate) AND
           (VendLedgEntry."Remaining Pmt. Disc. Possible"  <> 0) AND
    
    //Add the following line.
           (-(ExportAmount + VendLedgEntry."Remaining Pmt. Disc. Possible") >= -VendLedgEntry."Amount to Apply")
    //End of the added line.
    
        THEN BEGIN
          DiscountTaken := -VendLedgEntry."Remaining Pmt. Disc. Possible";
    
    //Add the following lines.
          AmountPaid := -(VendLedgEntry."Amount to Apply" - VendLedgEntry."Remaining Pmt. Disc. Possible");
        END ELSE IF -ExportAmount > -VendLedgEntry."Amount to Apply" THEN
          AmountPaid := -VendLedgEntry."Amount to Apply"
    //End of added lines.
    
        ELSE
          AmountPaid := -ExportAmount;
      END;
    ...
        CustLedgEntry.CALCFIELDS("Remaining Amt. (LCY)");
        IF (CustLedgEntry."Pmt. Discount Date" >= SettleDate) AND
           (CustLedgEntry."Remaining Pmt. Disc. Possible"  <> 0) AND
    
    //Add the following line.
           (-(ExportAmount - CustLedgEntry."Remaining Pmt. Disc. Possible") >= -CustLedgEntry."Amount to Apply")
    //End of the added line.
    
        THEN BEGIN
          DiscountTaken := -CustLedgEntry."Remaining Pmt. Disc. Possible";
    
    //Add the following lines.
          AmountPaid := -(CustLedgEntry."Amount to Apply" - CustLedgEntry."Remaining Pmt. Disc. Possible");
        END ELSE IF -ExportAmount > -CustLedgEntry."Amount to Apply" THEN
          AmountPaid := -CustLedgEntry."Amount to Apply"
    //End of the added lines.
    
        ELSE
          AmountPaid := -ExportAmount;
      END;        
    ...
    
    
  2. Змініть код в тригер OnAfterGetRecord Cust. Ledger Entry dataitem у звіті експорт електронної Платежі (10083), як виконайте такі дії:
    Exsiting code

    ...
        CALCFIELDS("Remaining Amt. (LCY)");
    IF ("Pmt. Discount Date" >= SettleDate) AND
       ("Remaining Pmt. Disc. Possible" <>0) AND
    
       ((-ExportAmount - TotalAmountPaid) - "Remaining Pmt. Disc. Possible" >= -"Remaining Amt. (LCY)")
    
    THEN BEGIN
      DiscountTaken := -"Remaining Pmt. Disc. Possible";
    
      AmountPaid := -("Remaining Amt. (LCY)" - "Remaining Pmt. Disc. Possible");
    
    END ELSE BEGIN
      DiscountTaken := 0;
    
      IF (-ExportAmount - TotalAmountPaid) > -"Remaining Amt. (LCY)" THEN
        AmountPaid := -"Remaining Amt. (LCY)"
    
      ELSE
        AmountPaid := -ExportAmount - TotalAmountPaid;
    END;
    
    TotalAmountPaid := TotalAmountPaid + AmountPaid;
    ...
    
    

    Код заміни

    ...
     CALCFIELDS("Remaining Amt. (LCY)");
    IF ("Pmt. Discount Date" >= SettleDate) AND
       ("Remaining Pmt. Disc. Possible" <> 0) AND
    
    //Add the following line.
       ((-ExportAmount - TotalAmountPaid) - "Remaining Pmt. Disc. Possible" >= -"Amount to Apply")
    //End of added line.
    
    THEN BEGIN
      DiscountTaken := -"Remaining Pmt. Disc. Possible";
    
    //Add the following line.
      AmountPaid := -("Amount to Apply" - "Remaining Pmt. Disc. Possible");
    //End of added line.
    
    END ELSE BEGIN
      DiscountTaken := 0;
    
    //Add the following lines.
      IF (-ExportAmount - TotalAmountPaid) > -"Amount to Apply" THEN
                                     AmountPaid := -"Amount to Apply"
    //End of added lines.
    
      ELSE
        AmountPaid := -ExportAmount - TotalAmountPaid;
    END;
    
    TotalAmountPaid := TotalAmountPaid + AmountPaid;      
    ...
    
    
  3. Змінити код в onAfterGetRecord тригер постачальника Ledger запис dataitem в експорт електронного Платежі звіту (10083), як виконайте такі дії:
    Exsiting code

    ...
        CALCFIELDS("Remaining Amt. (LCY)");
    IF ("Pmt. Discount Date" >= SettleDate) AND
       ("Remaining Pmt. Disc. Possible" <>0) AND
       ((-ExportAmount - TotalAmountPaid) - "Remaining Pmt. Disc. Possible" >= -"Remaining Amt. (LCY)")
    
    THEN BEGIN
      DiscountTaken := -"Remaining Pmt. Disc. Possible";
      AmountPaid := -("Remaining Amt. (LCY)" - "Remaining Pmt. Disc. Possible");
    
    END ELSE BEGIN
      DiscountTaken := 0;
      IF (-ExportAmount - TotalAmountPaid) > -"Remaining Amt. (LCY)" THEN
        AmountPaid := -"Remaining Amt. (LCY)"
    
      ELSE
        AmountPaid := -ExportAmount - TotalAmountPaid;
    END;
    
    TotalAmountPaid := TotalAmountPaid + AmountPaid;
    
    ...
    
    

    Код заміни

    ...
     CALCFIELDS("Remaining Amt. (LCY)");
    IF ("Pmt. Discount Date" >= SettleDate) AND
       ("Remaining Pmt. Disc. Possible" <> 0) AND
    
       ((-ExportAmount - TotalAmountPaid) - "Remaining Pmt. Disc. Possible" >= -"Amount to Apply")
    
    THEN BEGIN
      DiscountTaken := -"Remaining Pmt. Disc. Possible";
    
      AmountPaid := -("Amount to Apply" - "Remaining Pmt. Disc. Possible");
    
    END ELSE BEGIN
      DiscountTaken := 0;
    
      IF (-ExportAmount - TotalAmountPaid) > -"Amount to Apply" THEN
        AmountPaid := -"Amount to Apply"
    
      ELSE
        AmountPaid := -ExportAmount - TotalAmountPaid;
    END;
    
    TotalAmountPaid := TotalAmountPaid + AmountPaid;
    ...
    
    
  4. Змініть код у тригер OnAfterGetRecord незастосований dataitemin експорт електронного Платежі звіту (10083), як описано нижче.
    Exsiting code

    ...
     AmountPaid := ExportAmount - TotalAmountPaid;
    ...
    
    

    Код заміни

    ...
     AmountPaid := -ExportAmount - TotalAmountPaid;
    ...
    
    

          

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

Щоб застосувати це виправлення, потрібно мати північноамериканської версії Microsoft Dynamics NAV 2009 із пакетом оновлень 1.

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

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

Стан

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

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