Стойността "Advances (LCY)" е неправилна във визитка на клиент, когато публикувате авансова фактура за клиента чрез чуждестранна валута в унгарската версия на Microsoft Dynamics NAV 2009 R2

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

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

Симптоми

Да приемем, че сте приложили предплатени горещи TFS326659 в унгарската версия на Microsoft Dynamics NAV 2009 R2. Когато публикувате авансова фактура за клиент в чуждестранна валута, стойността на авансовите плащания (LCY) в картата на клиента е 0,01. Очаквате стойността на авансовите задания (LCY) да бъде нула.
За повече информация относно TFS326659 за гореща поправка за предплащане вижте следната информация:

TFS326659 Актуализация за предплащане за Microsoft Dynamics NAV 2009 R2 – Унгария

Решение

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

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

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

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

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

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

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

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

  • Разрешението за промяна за обекта, който ще променяте.

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

    обект.

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

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

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

За да решите този проблем, използвайте следните стъпки:

  1. Промяна на кода във функцията PostCust в поколението Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код 1

    ...
    CustLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Delete the following lines.
    IF CustLedgEntry.Prepayment AND
    (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Payment) AND
    (CustLedgEntry."Prepayment Type" = CustLedgEntry."Prepayment Type"::Advance)
    // End of the deleted lines.
    
    THEN BEGIN
    ...
    

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

    ...
    CustLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Add the following lines.
    IF IsAdvancePrepayment(CustLedgEntry.Prepayment,CustLedgEntry."Prepayment Type") AND
    (CustLedgEntry."Document Type" = CustLedgEntry."Document Type"::Payment)
    // End of the added lines.
    
    THEN BEGIN
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    CustLedgEntry.Prepayment AND (CustLedgEntry."Prepayment Type" = CustLedgEntry."Prepayment Type"::Advance);
    // End of the deleted line.
    
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(CustLedgEntry.Prepayment,CustLedgEntry."Prepayment Type");
    // End of the added line.
    
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ...
    
  2. Промяна на кода в PostVend функцията в Gen. Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код 1

    ...
    VendLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Delete the following lines.
    IF VendLedgEntry.Prepayment AND
    (VendLedgEntry."Document Type" = VendLedgEntry."Document Type"::Payment) AND
    (VendLedgEntry."Prepayment Type" = VendLedgEntry."Prepayment Type"::Advance)
    // End of the deleted lines.
    
    THEN BEGIN
    ...
    

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

    ...
    VendLedgEntry."Prepayment Type" := "Prepayment Type";
    
    // Add the following lines.
    IF IsAdvancePrepayment(VendLedgEntry.Prepayment,VendLedgEntry."Prepayment Type") AND
    (VendLedgEntry."Document Type" = VendLedgEntry."Document Type"::Payment)
    // End of the added lines.
    
    THEN BEGIN
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    VendLedgEntry.Prepayment AND (VendLedgEntry."Prepayment Type" = VendLedgEntry."Prepayment Type"::Advance);
    // End of the deleted line.
    
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(VendLedgEntry.Prepayment,VendLedgEntry."Prepayment Type");
    // End of the added line.
    
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ...
    
  3. Променете кода във функцията CalcCurrencyRealizedGainLoss във функцията Gen. Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    CVLedgEntryBuf.Prepayment AND (CVLedgEntryBuf."Prepayment Type" = CVLedgEntryBuf."Prepayment Type"::Advance);
    // End of the deleted line.
    
    IF RealizedGainLossLCY < 0 THEN BEGIN
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(CVLedgEntryBuf.Prepayment,CVLedgEntryBuf."Prepayment Type");
    // End of the added line.
    
    IF RealizedGainLossLCY < 0 THEN BEGIN
    ...
    
  4. Променете кода във функцията CalcApplication във функцията Gen. Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код 1

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    OldCVLedgEntryBuf.Prepayment AND (OldCVLedgEntryBuf."Prepayment Type" = OldCVLedgEntryBuf."Prepayment Type"::Advance);
    // End of the deleted line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,OldCVLedgEntryBuf,FALSE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(OldCVLedgEntryBuf.Prepayment,OldCVLedgEntryBuf."Prepayment Type");
    // End of the added line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,OldCVLedgEntryBuf,FALSE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Delete the following line.
    NewCVLedgEntryBuf.Prepayment AND (NewCVLedgEntryBuf."Prepayment Type" = NewCVLedgEntryBuf."Prepayment Type"::Advance);
    // End of the deleted line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf,FALSE);
    ...
    

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

    ...
    DtldCVLedgEntryBuf.Advance :=
    
    // Add the following line.
    IsAdvancePrepayment(NewCVLedgEntryBuf.Prepayment,NewCVLedgEntryBuf."Prepayment Type");
    // End of the added line.
    
    InsertDtldCVLedgEntry(DtldCVLedgEntryBuf,NewCVLedgEntryBuf,FALSE);
    ...
    
  5. Променете кода във функцията CalcAmtLCYAdjustment във Gen. Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код

    ...
    DtldCVLedgEntryBuf."Entry Type"::"Correction of Remaining Amount";
    DtldCVLedgEntryBuf."Amount (LCY)" := AdjustedAmountLCY - CVLedgEntryBuf."Remaining Amt. (LCY)";
    ...
    

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

    ...
    DtldCVLedgEntryBuf."Entry Type"::"Correction of Remaining Amount";
    
    // Add the following lines.
    DtldCVLedgEntryBuf.Advance :=
    IsAdvancePrepayment(CVLedgEntryBuf.Prepayment,CVLedgEntryBuf."Prepayment Type");
    // End of the added lines.
    
    DtldCVLedgEntryBuf."Amount (LCY)" := AdjustedAmountLCY - CVLedgEntryBuf."Remaining Amt. (LCY)";
    ...
    
  6. Променете кода във функцията PostDtldCustLedgEntries във функцията Gen. Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код 1

    ...
    GenJnlLine."Posting Group",
    
    // Delete the following lines.
    GenJnlLine.Prepayment AND
    (GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance));
    // End of the deleted lines.
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    

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

    ...
    GenJnlLine."Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(GenJnlLine.Prepayment,GenJnlLine."Prepayment Type"));
    // End of the added line.
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    

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

    
    
    ...
    
    
    GenJnlLine."Posting Group",
    
    // Delete the following lines.
    GenJnlLine.Prepayment AND
    (GenJnlLine."Prepayment Type" = GenJnlLine."Prepayment Type"::Advance));
    // End of the deleted lines.
    
    
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    

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

    
    
    ...
    
    
    GenJnlLine."Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(GenJnlLine.Prepayment,GenJnlLine."Prepayment Type"));
    // End of the added line.
    
    
    
    IF CustLedgEntryInserted OR (TotalAmountLCY <> 0) OR
    ...
    
  7. Променете кода във функцията GetReceivablesAccNo в генерацията. Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код

    ...
    CustLedgEntry."Customer Posting Group",
    
    // Delete the following lines.
    CustLedgEntry.Prepayment AND
    (CustLedgEntry."Prepayment Type" = CustLedgEntry."Prepayment Type"::Advance)));
    // End of the deleted lines.
    
    END;
    ...
    

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

    ...
    CustLedgEntry."Customer Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(CustLedgEntry.Prepayment,CustLedgEntry."Prepayment Type")));
    // End of the added line.
    
    END;
    ...
    
  8. Променете кода във функцията GetPayablesAccNo във функцията Gen. Jnl.-Post Line Codeunit (12), както следва:
    Съществуващ код

    ...
    VendLedgEntry."Vendor Posting Group",
    
    // Delete the following lines.
    VendLedgEntry.Prepayment AND
    (VendLedgEntry."Prepayment Type" = VendLedgEntry."Prepayment Type"::Advance)));
    // End of the deleted lines.
    
    END;
    

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

    ...
    VendLedgEntry."Vendor Posting Group",
    
    // Add the following line.
    IsAdvancePrepayment(VendLedgEntry.Prepayment,VendLedgEntry."Prepayment Type")));
    // End of the added line.
    
    END;
    ...
    

          

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

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

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

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

Състояние

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

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