Откривате, че публикуваното предплащане остава отворено, след като публикувате окончателната фактура за поръчка за продажба или за поръчка за покупка в източноевропейската версия на Microsoft Dynamics NAV 2009 R2 с приложени 2546442 на горещи поправки и 2672643 актуални поправки

Отнася се за
Microsoft Dynamics NAV 2009 R2

Тази статия се отнася за Microsoft Dynamics NAV за региона Източна Европа (ЕЕ).

Симптоми

Разгледайте следния сценарий в източноевропейската версия на Microsoft Dynamics NAV 2009 R2:

  • Прилагате 2546442 за горещи поправки и 2672643 за горещи поправки.
  • Генерирате предплащане за поръчка за продажба или за поръчка.
  • Начислявате част от сумата за авансово плащане.
  • Публикувате останалата част от сумата за авансово плащане.
  • Публикувате окончателната фактура за поръчката за продажба или за поръчката за покупка.

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

2672643 Съобщение за грешка "Има непубликувани суми за предплащане по поръчката [номер]", когато публикувате частична доставка за поръчка за продажба в източноевропейската версия на Microsoft Dynamics NAV 2009 R2 За повече информация относно 2546442 за гореща поправка щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2546442 Съобщение за грешка "Има непубликувани суми за предплащане в поръчката [номер на поръчка]", когато публикувате окончателна фактура в сценария за предсрочно плащане в източноевропейската версия на Microsoft Dynamics NAV 2009

Решение

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

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

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

            
          

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

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

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

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

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

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

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

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

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

  1. Променете кода във функцията CalcLinkedPmtAmountToApply във Sales-Post Advances codeunit (26585). За да направите това, изпълнете следните стъпки:

    1. Добавете глобална променлива и след това задайте променливата, както следва:

      • Име: SumAmountToApply
      • Тип данни: Десетичен
    2. Променете кода по следния начин:
      Съществуващ код 1

      ...
      IF TotalAmountToApply = 0 THEN
      EXIT;
      SetCurrencyPrecision(LetterLine."Currency Code");
      ...
      

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

      ...
      
      // Add the following line. 
      SumAmountToApply := SumAmountToApply + TotalAmountToApply;
      
      IF TotalAmountToApply = 0 THEN
      EXIT;
      SetCurrencyPrecision(LetterLine."Currency Code");
      ...
      

      Съществуващ код 2

      ...
      TotAmt := TotAmt + TotalAmountToApply *
      Link.Amount / (CustLedgEntry.Amount - CustLedgEntry."Remaining Amount to Link") *
      (CustLedgEntry."Remaining Amount" - CustLedgEntry."Remaining Amount to Link") /
      
      // Delete the following lines. 
      (LetterLine."Amount Linked" - LetterLine."Amount Deducted" + TotalAmountToApply);
      AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded;
      // End of the deleted lines.
      
      TotAmtRnded := TotAmtRnded + AmountToApply;
      ...
      

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

      ...
      TotAmt := TotAmt + TotalAmountToApply *
      Link.Amount / (CustLedgEntry.Amount - CustLedgEntry."Remaining Amount to Link") *
      (CustLedgEntry."Remaining Amount" - CustLedgEntry."Remaining Amount to Link") /
      
      // Add the following lines. 
      (LetterLine."Amount Linked" - LetterLine."Amount Deducted" + SumAmountToApply); 
      AmountToApply := TotAmt - TotAmtRnded;
      // End of the added lines. 
      
      TotAmtRnded := TotAmtRnded + AmountToApply;
      ...
      
  2. Променете кода във функцията CalcLinkedPmtAmountToApply в Purchase-Post Advances codeunit (26586). За да направите това, изпълнете следните стъпки:

    1. Добавете глобална променлива и след това задайте променливата, както следва:

      • Име: SumAmountToApply
      • Тип данни: Десетичен
    2. Променете кода по следния начин:
      Съществуващ код 1

      ...
      IF TotalAmountToApply = 0 THEN
      EXIT;
      
      SetCurrencyPrecision(LetterLine."Currency Code");
      Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
      Link.SETRANGE("Document No.",LetterLine."Letter No.");
      ...
      

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

      ...
      IF TotalAmountToApply = 0 THEN
      EXIT;
      
      // Add the following line. 
      SumAmountToApply := SumAmountToApply + TotalAmountToApply;
      
      SetCurrencyPrecision(LetterLine."Currency Code");
      Link.SETRANGE("Entry Type",Link."Entry Type"::"Link To Letter");
      Link.SETRANGE("Document No.",LetterLine."Letter No.");
      ...
      

      Съществуващ код 2

      ...
      TotAmt := TotAmt + TotalAmountToApply *
      Link.Amount / (VendLedgEntry.Amount - VendLedgEntry."Remaining Amount to Link") *
      (VendLedgEntry."Remaining Amount" - VendLedgEntry."Remaining Amount to Link") /
      
      // Delete the following lines. 
      (LetterLine."Amount Linked" - LetterLine."Amount Deducted" + TotalAmountToApply);
      AmountToApply := ROUND(TotAmt,Currency."Amount Rounding Precision") - TotAmtRnded;
      // End of the deleted lines.
      
      TotAmtRnded := TotAmtRnded + AmountToApply;
      ...
      

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

      ...
      TotAmt := TotAmt + TotalAmountToApply *
      Link.Amount / (VendLedgEntry.Amount - VendLedgEntry."Remaining Amount to Link") *
      (VendLedgEntry."Remaining Amount" - VendLedgEntry."Remaining Amount to Link") /
      
      // Add the following lines. 
      (LetterLine."Amount Linked" - LetterLine."Amount Deducted" + SumAmountToApply);
      AmountToApply := TotAmt - TotAmtRnded;
      // End of the added lines. 
      
      TotAmtRnded := TotAmtRnded + AmountToApply;
      ...
      

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

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

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

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

Състояние

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

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