Отчетът за парични плащания показва неправилна информация, когато публикувате частични плащания по фактури за EFT банка и доставчик в северноамериканската версия на Microsoft Dynamics NAV 2009 Service Pack 1

Отнася се за
Dynamics NAV 2009 Service Pack 1

Тази статия се отнася за Microsoft Dynamics NAV за езиково-географската променлива за език Северна Америка (na).

Симптоми

Да предположим, че сте разрешили параметъра "Обобщаване по доставчик" във формуляра "Предлагане на плащания за доставчик" в северноамериканската версия на Microsoft Dynamics NAV 2009 Service Pack 1. Когато публикувате частични плащания във фактури на EFT банка и доставчик, ще забележите, че свързаният отчет за парични преводи показва неправилна информация.

Решение

Информация за горещи поправки

Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV 2009 или следващата версия на Microsoft Dynamics NAV, която съдържа тази гореща корекция.

Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.

            
          

Информация за инсталиране

Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжка на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура, но няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.

Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.

За да приложите тази гореща корекция, трябва да имате лиценз за разработчик.

Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:

  • Разрешението за промяна за обекта, който ще променяте.
  • Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.

                
Забележка: Не е необходимо да имате права за хранилищата за данни, освен ако не трябва да извършите поправка на данни.

Промени в кода

Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да решите този проблем, изпълнете следните стъпки:

  1. Променете кода в превключвателя OnAfterGetRecord на ген. Дневник Ред данниелемент в доклада за експортиране на електронни плащания (10083), както следва:
    Съществуващ код

    ...
          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 на магазина. Елемент от данни за въвеждане в главна книга в отчета за експортиране на електронни плащания (10083), както следва:
    Съществуващ код

    ...
        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 на елемента на данни за въвеждане на главна книга на доставчиците в отчета за експортиране на електронни плащания (10083), както следва:
    Съществуващ код

    ...
        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 на елемента на неприложените данни в отчета за експортиране на електронни плащания (10083), както следва:
    Съществуващ код

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

    Код за подмяна

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

          

Предварителни изисквания

Трябва да имате инсталирана северноамериканската версия на Microsoft Dynamics NAV 2009 Service Pack 1, за да приложите тази гореща корекция.

Информация за премахване

Не можете да премахнете тази гореща корекция.

Състояние

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.

Забележка: Това е статия "FAST PUBLISH", създадена директно от организацията за поддръжка на Microsoft. Информацията, съдържаща се тук, е предоставена както е в отговор на възникващи проблеми. В резултат на бързината на предоставянето им, материалите могат да включват печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте условията на използване за други съображения.